در این آموزش میخواهیم یک سروو موتور را با استفاده از برد آردوینو راه اندازی کرده و از طریق یک پتانسیومتر زاویه چرخش آن را کنترل کنیم.
سروو موتور (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
{
که بجای علامت سوال باید زاویه مورد نظر خود را تایپ نمایید.