نحوه راه اندازی سروو موتور با استفاده از برد آردوینو

الکترونیک و رباتیک -> برد های توسعه 2857 سجاد میابی

در این آموزش می‌خواهیم یک سروو موتور را با استفاده از برد آردوینو راه اندازی کرده و از طریق یک پتانسیومتر زاویه چرخش آن را کنترل کنیم.

سروو موتور (servo motor) نوعی از موتورهای الکتریکی است که با هدف بکارگیری در سیستم‌های کنترل فیدبک طراحی شده‌اند. زاویه چرخش سروو موتورها بر اساس انواع و برند‌های مختلف متفاوت است و زاویه حرکت آن‌ها به صورت‌های متفاوتی از جمله ۰ تا ۹۰ درجه، ۰ تا ۱۸۰ درجه، ۰ تا ۲۷۰ درجه، ۰ تا ۳۶۰ درجه و… می‌باشد.

به علت پایین بودن میزان اینرسی و لختی سروو موتور‌ها سرعت واکنش بالایی دارند و با استفاده از این موتور ها می‌توان سرعت و گشتاور حرکت را کنترل کرد. با استفاده از میکرو‌کنترل‌ها و دادن پالس به آن می توانیم موقعیت شافت را بصورت دقیق مشخص کنیم. حال در این آموزش میخواهیم به راه اندازی سروو با استفاده از برد آردوینو بپردازیم.

لوازم مورد استفاده:

نحوه اتصالات:

  • سیم زرد سروو به پین ۹ آردوینو
  • سیم قرمز سروو به پین ۵ ولت آردوینو
  • سیم قهوه ای سروو به پین GND آردوینو
  • خروجی پتانسیومتر به پین A0 آردوینو

مطابق شکل زیر:

حال کد زیر را در محیط Arduino IDE کپی کرده و بعد از تنظیم port و نوع برد آردوینو، برنامه را روی برد آپلود می نماییم.

<include <Servo.h#
;Servo myservo
;int pot

} ()void setup
;(myservo.attach(9
{

}()void loop
;(pot = analogRead(A0
;(pot = map(pot, 0, 1023, 0, 180
;(myservo.write(pot
{

فراخوانی کتابخانه سروو جهت ارتباط برقرار کردن با سروو موتور. این کتابخانه را می‌توانید از اینجا دانلود نمایید.

<include <Servo.h#

ایجاد یک شی جدید از جنس سروو با نام myservo:

;Servo myservo

ایجاد یک متغیر با نام pot  برای خواندن پتانسیومتر:

;int pot

مشخص کردن نرخ تبادل اطلاعات:

;(pot = analogRead(A0

معرفی پایه ای که سروو به آن متصل است:

;(myservo.attach(9

خواندن مقدار آنالوگ پتانسیومتر (پین A0 آردوینو) و ریختن آن در رجیستر  pot:

;(pot = analogRead(A0

تناسب بندی توسط تابع map بین مقدار آنالوگ پتانسیومتر از ۰ تا ۱۰۲۳ بین درجه ی سروو بطور مثال از ۰ تا ۱۸۰:

;(pot = map(pot, 0, 1023, 0, 180

دستور دادن به سرووتوسط تابع write برای قرار گرفتن در زاویه ی مورد نظر توسط پتانسیومتر:

;(myservo.write(pot

حال اگر بخواهید بصورت دستی زاویه سروو را تعیین کنید کد زیر را روی برد آپلود کنید:

 

<include <Servo.h#
;Servo myservo
;int pot

} ()void setup
;(myservo.attach(9
{

}()void loop
;(?)myservo.write

{

که بجای علامت سوال باید زاویه مورد نظر خود را تایپ نمایید.