آردوینو Arduinoآموزش آردوینو

آموزش کنترل سروو موتور با آردوینو Due

سلام. آموزش کنترل سروو موتور با آردوینو Due – جلسه سوم را آماده کردیم.

پروژه کنترل سروو موتور با برد آردوینو Due

برد آردوینو Due یک برد با پردازنده مرکزی ARM است که برای مهندسین الکترونیک و علاقمندان این عرصه طراحی شده است. معماری آرم در الکترونیک مدرت بسیرا تاثیر گذار بوده است. ما در همه جا از کنترلر های مبتنی بر ARM استفاده میکنیم. به طور مثال در موبایل، آیپد، لپ تاپ و …

توجه داشته باشید از کد های این آموزش میتوان برای انواع برد های آردوینو استفاده کرد.

برای کسب اطلاعات بیشتر، بقیه قسمت های آموزش آردوینو را مشاهده کنید.

از این برد DUE می توان برای ساخت دستگاه های CNC ، پرینترهای سه بعدی ، بازوهای روباتیک و … استفاده کرد. همه این پروژه ها یک ویژگی مشترک دارند که عبارت است از کنترل دقیق سروو موتور های ان. ما در این آموزش Arduino قصد داریم یک سروو موتور را با آردوینو دیو کنترل کنیم.

در قسمت قبل آموزش آردوینو Due ما با ایجاد سیگنال PWM آشنا شدیم : آموزش راه اندازی PWM با آردوینو Due

برای یادگیری کامل آردوینو (برنامه نویسی حرفه ای، ارتباط با اندروید، ساخت ربات) ، روی دوره آموزش آردوینو کلیک کنید.

همچنین اگر میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید، روی دوره آموزش الکترونیک کلیک کنید.

میتوانید همه آموزش آردوینو را در قسمت آموزش های Arduino ببینید. لینک آن قسمت در منوی بالای سایت قرار داده شده است.

سروو موتور و PWM

سروو موتور ترکیبی از موتور DCT سیستم کنترل موقعیت و چرخ دنده ها است. سروو ها در دنیای مدرن کاربردهای زیادی دارند و به همین دلیل در شکل ها و اندازه های مختلفی در دسترس هستند. ما در این آموزش از سروو موتور SG90  استفاده خواهیم کرد که یکی از محبوب ترین و ارزان ترین سروو ها است. SG90 یک سروو 180 درجه است. بنابراین با این سروو می توانیم محورها را از 0 تا 180 درجه قرار دهیم.

کنترل سروو موتور با Arduino due

یک سروو موتور به طور کلی دارای سه سیم است، یکی برای ولتاژ مثبت ، دیگری برای GND و دیگری برای تنظیم موقعیت است. سیم قرمز به برق متصل شده است، سیم قهوه ای به gnd وصل می شود و سیم زرد (یا سفید) به سیگنال ورودی وصل میشود.

در سروو ، ما یک سیستم کنترل داریم که سیگنال PWM را از پین سیگنال می گیرد. این سیگنال را رمزگشایی می کند و چرخه وظیفه را از آن دریافت می کند. پس از آن، این نسبت را با مقادیر موقعیتهای از پیش تعریف شده مقایسه می کند. اگر اختلاف در مقادیر وجود داشته باشد، موقعیت سروو را بر این اساس تنظیم می کند. بنابراین موقعیت محور سروو موتور بر اساس چرخه وظیفه PWM در پین سیگنال است.

نیاز به توضیحات بیشتر دارید؟ مقاله سروو موتور چیست را بخوانید.

فرکانس سیگنال PWM براساس نوع سروو موتور متفاوت است. برای SG90 فرکانس سیگنال PWM حدود 50 هرتز است. برای فهمیدن فرکانس عملکرد سروو خود، دیتاشیت مدل مربوطه را بررسی کنید. پس از انتخاب فرکانس ، نکته مهم دیگر در اینجا DUTY RATIO سیگنال PWM است.

مطلب پیشنهادی:  پروژه راه اندازی و اتصال ماژول RFID به آردوینو

جدول زیر موقعیت Servo را برای چرخه وظیفه خاص نشان می دهد. با انتخاب مقدار مناسب، می توانید سروو را در هر زاویه ای قرار دهید. مثلا برای 45º ، نسبت وظیفه باید 5 یا 5٪ باشد.

موقعیت چرخه وظیفه
0 درجه 2.5
90 درجه 7.5
180 درجه 12.5

آموزش را با اجرای یک پروژه ادامه میدهیم.

مدار کنترل سروو موتور با برد آردوینو Due

تصویر زیر مدار این پروژه را نمایش میدهید. همانطور که میبیند این مدار بسیار ساده است و فقط باید سیم کنترل سروو موتور را به پین 2 PWM متصل میکنیم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

پروژه کنترل سروو موتور با برد Arduino Due

قطعات مورد نیاز

  1. برد آردوینو Due
  2. منبع تغذیه (5 ولت)
  3. سروو موتور

برنامه نویسی سروو موتور با آردوینو Due

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

دستورات زیر برای کنترل سروو موتور استفاده میشوند.

پرونده Servo.h شامل کلیه عملکردهای مورد نیاز ما می باشد، پس از فرخوانی آن، دیگر لازم نیست نگران فرکانس PWM و DUTY RATIO باشیم. با این کار شما می توانید موقعیت سروو موتور را به سادگی تنظیم کنید.

اسم برای سروو با استفاده از “Servo myservo” انتخاب می شود، در اینجا myservo انتخاب شده است. بنابراین برای کنترل موقعیت سروو موتور از این نام استفاده میکنیم.

#include <Servo.h>
Servo myservo;

برای اعلام کردن  پین PWM از کد زیر استفاده میکنیم :

myservo.attach (2); // اعلام پین 2 برای سیگنال PWM

همچنین برای تغییر موقعیت سروو از دستور زیر استفاده میکنیم. ما می خواهیم موقعیت سروو را روی 45 درجه تنظیم کنیم. با این دستور سروو 45 درجه حرکت می کند. اگر 45 را به 175 تغییر دهیم ، محور سروو به 175 درجه می رود و در آنجا می ماند. پس از آن ، هر زمان که نیاز به تغییر موقعیت سروو داشته باشیم، فقط باید دستور “myservo.write (درجه)” را قرار دهیم.

myservo.attach (2); // اعلام پین 2 برای سیگنال PWM

در برنامه ، ما با استفاده از حلقه ها قصد داریم زاویه ها را افزایش و کاهش دهیم. بنابراین سروو از 0 تا 180 ، سپس از 180 به 0 می رود. کنترل سروو  موتور به اینصورت در کد زیر توضیح داده شده است.

کد کامل :

#include <Servo.h>
Servo myservo; // انتخاب یک نام
int angle = 0; // تنظیم موقعیت اولیه سروو موتور
void setup() {
  myservo.attach(2);// سروو موتور را به پین 2 متصل میکنیم
}
void loop() {
  for (angle = 0; angle <= 180; angle += 1) {
   // موقعیت سروو از 0 تا 180 تغییر میکند
    myservo.write(angle);
  // سروو موتور به موقعیتی که در متغیر angle است میرود
    delay(15); // تاخیر 15 میلی ثانیه
  }
  for (angle = 180; angle >= 0; angle -= 1) {// موقعیت سروو از 180 تا 0 درجه تغییر میکند
    myservo.write(angle);    
 // سروو موتور به موقعیتی که در متغیر angle است میرود          
    delay(15); // تاخیر 15 میلی ثانیه
  }
}

فیلم عملکرد مدار

فیلم زیر نحوه عملکرد کد بالا را نشان میدهد. در فیلم زیر مشاهده میکنید سروو موتور به طور مداوم از 0 به 180 و از 180 به 0 میرود.

مطلب پیشنهادی:  برقراری ارتباط سریال RS485 بین دو برد آردوینو

جلسه بعد : بزودی …

میخواهید آردوینو را به صورت فیلم، و پروژه محور یاد بگیرید؟

دوره آموزش آردوینو

میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید؟

دوره آموزش الکترونیک
برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید
محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

2 نظر

  1. عالی بود ، ممنون از زحماتتون و لطفی که برای ترویج علم میکنید .
    امیدوارم که بزودی بتونم از جلسات بعدی هم بهره ببرم
    سلامت و شاد باشید 🙏

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *