شِفر (کود) جستجو

نحوه اندازهگیری زاویه شیب با استفاده از حساس(حس کننده) زاویه SCA60C و اقدام بر اساس زاویه

نحوه اندازهگیری زاویه شیب با استفاده از حساس(حس کننده) زاویه SCA60C و اقدام بر اساس زاویه

این آموزش به بررسی حساس(حس کننده) زاویه SCA60C می‌پردازد، روشی مقرون‌به‌صرفه برای اندازه‌گیری شیب و جهت در پروژه‌های رباتیک و الکترونیکی شما. حساس(حس کننده) یک خروجی ولتاژ آنالوگ متناسب با زاویه خود ارائه می‌دهد که آردوینو می‌تواند آن را خوانده و به اندازه‌گیری دقیق درجه بین ۰ تا ۱۸۰ درجه تبدیل کند. این پروژه برای افزودن آگاهی از موقعیت به طیف گسترده‌ای از کاربردها عالی است.

SCA60C-tilt-Sensor-1

در اینجا چند روش کاربردی برای استفاده از این حساس(حس کننده) در ساخت‌های خود آورده شده است:

  • کنترل بازوی رباتیک: موقعیت هر مفصل را برای اطمینان از حرکت دقیق و ایمن نظارت کنید.
  • سیستم‌های تراز: یک پلتفرم خودتراز برای دوربین‌ها، پنل‌های خورشیدی یا سایر تجهیزات حساس ایجاد کنید.
  • آلارم‌های فعال‌شونده با حرکت: زمانی که یک دستگاه یا شیء از موقعیت اولیه و کالیبره‌شده خود جابه‌جا می‌شود، تشخیص دهید.
  • هنر تعاملی: قطعه‌ای بسازید که رفتار یا نمایش خود را بر اساس نحوه کج شدن تغییر دهد.
  • بازخورد جهت: بازخورد بصری بلادرنگ بر روی صفحه نمایش برای شیب یا چرخش یک دستگاه ارائه دهید.
SCA60C_wiring-2

این راهنما شما را از طریق عملکرد حساس(حس کننده)، نحوه اتصال آن به آردوینو و نحوه استفاده از شِفر (کود) ارائه‌شده برای خواندن و عمل بر روی داده‌های زاویه راهنمایی می‌کند.

سخت‌افزار و قطعات

برای دنبال کردن این پروژه، به قطعات زیر نیاز دارید:

  • برد آردوینو (Uno، Nano، Mega و غیره)
  • ماجیول حساس(حس کننده) زاویه SCA60C
  • بردبورد و سیم جامپر
  • دو LED (اختیاری، برای نمایش آلارم)
  • دو مقاومت ۲۲۰ اهمی (اختیاری، برای LEDها)

حساس(حس کننده) SCA60C یک ماجیول فشرده است که ولتاژی متناسب با زاویه شیب خود خروجی می‌دهد. همانطور که در ویدیو نشان داده شده است، ماجیول همچنین شامل یک آپ‌امپ داخلی (LM393) و دو پتانسیومتر است که می‌توان از آن‌ها برای تنظیم آستانه‌های آلارم استفاده کرد و خروجی‌های دیجیتال D1 و D2 را هدایت می‌کند. (در ویدیو در ۰۳:۲۰)

راهنمای اتصال

S02-11-Angle_Sensor_SCA60C_wiring

اتصال حساس(حس کننده) SCA60C ساده است. لطفاً برای راهنمای بصری به نمودار زیر مراجعه کنید.

در اینجا فرآیند اتصال گام‌به‌گام آمده است:

  1. برق: پایه VCC روی حساس(حس کننده) را به پایه 5V روی آردوینو خود وصل کنید. پایه GND را به GND آردوینو وصل کنید.
  2. سیگنال: پایه Vout (پایه وسط) را به پایه ورودی آنالوگ A0 آردوینو وصل کنید. این پایه اصلی برای خواندن زاویه است. (در ویدیو در ۰۵:۲۵)
  3. خروجی‌های آلارم (اختیاری): ماجیول دارای دو خروجی دیجیتال اضافی، D1 و D2 است. اگر می‌خواهید از ویژگی‌های آلارم استفاده کنید، این‌ها را به ترتیب به پایه‌های A1 و A2 آردوینو وصل کنید. (در ویدیو در ۰۵:۳۰)

اگر به ویژگی‌های آلارم نیاز ندارید، می‌توانید پایه‌های D1 و D2 را بدون اتصال رها کنید و پایه‌های آنالوگ A1 و A2 را برای سایر سنسورها آزاد بگذارید. (در ویدیو در ۱۲:۰۰)

توضیح شِفر (کود)

شِفر (کود) ارائه‌شده برای خواندن ولتاژ آنالوگ از حساس(حس کننده) و تبدیل آن به زاویه بر حسب درجه طراحی شده است. مهم‌ترین بخش‌های شِفر (کود) که باید تغییر دهید، متغیرهای پیکربندی در بالای اسکچ هستند.

const int anglePin =A0;
int angle =0;
const int angleCompensate =0;

const int d1Pin =A1;
int d1State =LOW;
int d1Delay =0;//watch 

const int d2Pin =A2;
int d2State =LOW;
int d2Delay =0;
SCA60C-tilt-Sensor-4

در اینجا توضیح هر متغیر قابل پیکربندی آمده است:

  • anglePin: این پایه آنالوگ روی آردوینو را تعریف می‌کند که به پایه Vout حساس(حس کننده) متصل است. اگر نیاز به استفاده از پایه آنالوگ دیگری دارید، می‌توانید این را تغییر دهید.
  • angleCompensate: این یک متغیر حیاتی برای کالیبراسیون است. حساس(حس کننده) زمانی که کاملاً صاف است، ۰ درجه خروجی می‌دهد. اگر برنامه شما نیاز به نصب حساس(حس کننده) در یک زاویه دارد، می‌توانید یک افست درجه در اینجا اضافه کنید. به عنوان مثال، تنظیم این مقدار روی 20 باعث می‌شود حساس(حس کننده) زمانی که به صورت فیزیکی در زاویه ۲۰ درجه کج شده است، ۰ درجه بخواند. (در ویدیو در ۰۶:۲۴)
  • d1Pin و d2Pin: این‌ها پایه‌های آنالوگ مورد استفاده برای خواندن وضعیت خروجی‌های آلارم حساس(حس کننده) را تعریف می‌کنند. اگر از ویژگی آلارم استفاده نمی‌کنید، می‌توانید این‌ها را نادیده بگیرید.
  • d1Delay و d2Delay: این متغیرها یک تأخیر بر حسب میلی‌ثانیه پس از فعال شدن آلارم ایجاد می‌کنند. این می‌تواند برای حذف اغتشاش (نویز) یا اطمینان از تداوم یک وضعیت آلارم برای حداقل مدت زمان مفید باشد. (در ویدیو در ۰۶:۴۸)

شما همچنین می‌توانید آرایه lables[] را تغییر دهید تا متن چاپ‌شده روی Serial Monitor تغییر کند. برای مثال، می‌توانید "Angle" را به "Robot Arm Position" تغییر دهید تا با پروژه شما بهتر هماهنگ شود. (در ویدیو در 07:08)

نمایش زنده پروژه

SCA60C_arduino_showing_angle

در ویدیو، حساس(حس کننده) با حرکت دادن آن در محدوده حرکتی‌اش نشان داده می‌شود در حالی که Serial Monitor زاویه مربوطه را نمایش می‌دهد. ارائه‌دهنده نشان می‌دهد که حساس(حس کننده) وقتی صاف است صفر درجه می‌خواند و چگونه می‌تواند تا 90 درجه در یک جهت و 90- درجه در جهت دیگر را اندازه‌گیری کند. (در ویدیو در 08:05)

این نمایش همچنین ویژگی هشدار را برجسته می‌کند. با تنظیم پتانسیومترهای روی برد، خروجی‌های D1 و D2 می‌توانند طوری پیکربندی شوند که وقتی حساس(حس کننده) از موقعیت صفر درجه‌ای خود کج می‌شود، فعال شوند. شِفر (کود) این خروجی‌های دیجیتال را می‌خواند و وضعیت آن‌ها (HIGH یا LOW) را روی Serial Monitor نمایش می‌دهد، که می‌تواند برای فعال‌سازی اقدامات دیگر در پروژه شما استفاده شود. (در ویدیو در 10:29)

SCA60C-tilt-Sensor--2-dimensions

فصل‌ها

  • [00:00] معرفی حساس(حس کننده) زاویه SCA60C
  • [00:52] کاربردها و موارد استفاده برای اندازه‌گیری زاویه
  • [02:19] آشنایی با ماجیول SCA60C و اجزای آن
  • [04:56] راهنمای سیم‌کشی حساس(حس کننده) SCA60C
  • [06:09] توضیح شِفر (کود) و متغیرهای پیکربندی
  • [08:05] نمایش زنده اندازه‌گیری زاویه و کالیبراسیون
  • [10:29] نمایش ویژگی‌های هشدار D1 و D2
  • [13:17] نتیجه‌گیری

تصاویر

SCA60C-tilt-Sensor-3
SCA60C-tilt-Sensor-3
SCA60C-tilt-Sensor--2-dimensions
SCA60C-tilt-Sensor--2-dimensions
SCA60C-tilt-Sensor-1
SCA60C-tilt-Sensor-1
SCA60C-tilt-Sensor-4
SCA60C-tilt-Sensor-4
S02-11-Angle_Sensor_SCA60C_wiring
S02-11-Angle_Sensor_SCA60C_wiring
SCA60C_arduino_showing_angle
SCA60C_arduino_showing_angle
SCA60C_wiring-2
SCA60C_wiring-2
553-Lesson 18, Robojax Arduino Step-by-Step Course: Using Tilt Angle Sensor SCA60C1
زبان: C++
/*
 *  Robojax Arduino Step By Step Course
 * Tilt Angle Sensor SCA60C1 SCA60C N1000060
 * It displays the angle from 0 to 180 degrees.
 * 
  Please watch video instruction here https://youtu.be/hkhepVzWyWE
Download and resource page https://robojax.com/RJT874
Download and resource page https://robojax.com/RJT18


 

 * 
Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 
 
 * in Ajax, Ontario, Canada. www.robojax.com


If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

const int anglePin =A0;
int angle =0;
const int angleCompensate =0;

const int d1Pin =A1;
int d1State =LOW;
int d1Delay =0;//watch 

const int d2Pin =A2;
int d2State =LOW;
int d2Delay =0;

char *lables[]={"Angle","Alarm D1","Alarm D2"};

void setup()

{

  Serial.begin(9600);          //  setup serial
  Serial.println("Robojax SCA60C Angle Sensor");

}



void loop(){
  //Robojax Tilt Angle Sensor
  	//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
  getAngle();
  d1Alarm();
  d2Alarm();
  
  
  // print out the value you read:
  Serial.print(lables[0]);// 
  Serial.print(":");
  Serial.print(angle);
  Serial.println("\xC2\xB0");//degree symbol
//  Serial.print("\t");
//  Serial.print(lables[1]);
//  Serial.print(":");  
//  Serial.print(d1State);
//  Serial.print("\t");
//  Serial.print(lables[2]);
//  Serial.print(":");
//  Serial.println(d2State);  
//  Serial.println("======");
  delay(100);
//Robojax Tilt Angle Sensor
}

void getAngle()
{
 
   angle =map(analogRead(A0), 96, 927, -90, 90) + angleCompensate; 
 
}

/**************************************/
/*! 
    @brief  Get the state of the D1 alarm. HIGH if triggered.
    @param  no parameter
    @returns returns nothing
    Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 in Ajax, Ontario, Canada.
*/
/**************************************/
void d1Alarm()
{
  	//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
  //
  float vo = analogRead(d1Pin) * (5.0 / 1023.0);
  if(vo < 3.5)
  {
    d1State =HIGH;
    delay(d1Delay);    
  }else{
    d1State =LOW;    
  }

}//d1Alarm() end


/**************************************/
/*! 
    @brief  Get the state of the D1 alarm. HIGH if triggered.
    @param  no parameter
    @returns returns nothing
    Written by Ahmad Shamshiri on Mar 17, 2020 at 20:20 in Ajax, Ontario, Canada.
*/
/**************************************/
void d2Alarm()
{
  	//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
  //
  float vo = analogRead(d2Pin) * (5.0 / 1023.0);

  if(vo < 3.5)
  {
    d2State =HIGH;
    delay(d2Delay);    
  }else{
    d2State =LOW;    
  }  

}//d1Alarm() end

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

برگه مشخصات (pdf)