آردوینوپروژه آردوینو

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

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

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

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

۱ برد آردوینو Uno R3 راه اندازی سروو موتور با آردوینو
۲ برد بورد راه اندازی سروو موتور با آردوینو
۳ خازن ۱۰۰ میکرو فاراد راه اندازی سروو موتور با آردوینو
۴ پتانسیومتر ۱۰ کیلو اهم
۵ سروو موتور راه اندازی سروو موتور با آردوینو
۶ جامپر

آرایش برد بورد برای آزمایش جاروب

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

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

سروو موتور دارای سه پایه می باشد. رنگ پایه های سروو موتورها ممکن است با یکدیگر متفاوت باشند اما همواره پایه قرمز رنگ  به پایه ۵ ولت تغذیه و یکی از دو سر مشکی یا قهوه ای زمین می باشد. سر دیگر آن هم پایه کنترلی سروو موتور است که معمولا به یکی از دو رنگ زرد یا نارنجی می باشد. این پایه کنترلی در این درس به پایه شماره ۹ متصل شده است.

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

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

اگر سروو موتور حرکت های نابجا انجام دهد؟

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

اگر این اتفاق افتاد ، شما می توانید با گزاشتن یک خازن ولتاژ بالا (۴۷۰uF یا بیشتر) بین دو سر ۵ولت و زمین، از این اتفاق جلوگیری نمایید.

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

خازن مانند یک منبع ذخیره الکتریکی برای تامین الکتریسیته موتور عمل می کند. بنابراین موتور جریان مورد نیاز خود را از خازن و منبع تغذیه آردوینو به صورت همزمان می گیرد.

پایه بلند تر خازن سر مثبت آن است که بایستی به سر ۵ ولتی متصل شود. سر منفی آن که نیز معمولا با منفی نمایش داده می شود ، به زمین متصل می گردد.

برنامه آردوینو برای آزمایش جاروب

برنامه ای که درزیر آمده است را در آردوینو خود بارگزاری نمایید. خواهید دید که بلافاصله سروو موتور شروع به چرخش به یک جهت کرده و دوباره جهت خود را عوض کرده و باز می گردد.

این برنامه بر اساس برنامه استاندارد جاروب که درکتابخانه آردوینو و در زیر مجموعه مثال های سروو موجود است ، صورت گرفته است. شما می توانید در صورت تمایل همان برنامه را اجرا کنید.

  /*
    Adafruit Arduino - Lesson 14. Sweep
    */
     
    #include <Servo.h> 
     
    int servoPin = 9;
     
    Servo servo;  
     
    int angle = 0;   // servo position in degrees 
     
    void setup() 
    { 
      servo.attach(servoPin); 
    } 
     
     
    void loop() 
    { 
      // scan from 0 to 180 degrees
      for(angle = 0; angle < 180; angle++)  
      {                                  
        servo.write(angle);               
        delay(15);                   
      } 
      // now scan back from 180 to 0 degrees
      for(angle = 180; angle > ۰; angle--)    
      {                                
        servo.write(angle);           
        delay(15);       
      } 
    } 
 

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

تشریح کد

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

#include <Servo.h>

در این جا ما متغیر ‘servoPin’ را برای مشخص کردن پایه کنترل سروو موتور  معرفی می نماییم.

Servo servo;  

خط دستوری بالا متغیری به نام ‘servo’ و از جنس ‘Servo’ می باشد که نماینده یک سروو موتور در مدار می باشد. کتابخانه سروو موتور برای ما نوع جدید از متغیر ها را به نام ‘Servo’ مشخص می کند.  این نوع متغیر مانند متغیرهای ‘int’  و  ‘float’  برای معرفی پارامترها به کار می رود. شما می توانید با استفاده از این موضوع تا ۸ سروو را برای مدار تعریف کنید. به طور مثال اگر شما دو سروو در مدار خود داشته باشید ، برای معرفی آن ها مانند زیر عمل می کنیم :

Servo servo1;
Servo servo2;

در تابع راه اندازی باید متغیر ‘servo’  را مانند دستور زیر به پایه کنترل کننده سروو متصل نماییم.

 servo.attach(servoPin); 

متغیر ‘angle’  حاوی مکان سروو که به واحد درجه است ، می باشد . در تابع حلقه ما از دو تابع ‘for’ استفاده کردیم. اولین مورد درجه مورد نظر را افزایش می دهد که از ۰ شروع شده و به ۱۸۰ ختم می شود . سپس در دومین تابع ‘for’ درجه را از ۱۸۰ کاهش داده تا به صفر برسیم.

servo.write(angle);

دستور بالا  پس از هر تغییر زاویه متغیر ‘angle’ را به پایه کنترلی انتقال می دهد. در نتیجه این عمل موتور از یک جهت و به طور پیوسته می چرخد و وقتی که به طور کامل چرخید، دوباره همان مسیر را بر می گردد.

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

مرحله بعدی کار ما این است که یک پتانسیومتر به مدار اضافه کنیم تا با کنترل آن ، وضعیت سروو موتور را تغییر داده و آنرا بچرخانیم.

به این منظور کافیست آن را مطابق شکل قرار داده و پایه وسط یا جاروب آن را به پایه A0  متصل نمایید.

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

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

برنامه ای که طی آن کنترل سروو توسط پتانسیومتر صورت گیرد به مراتب از برنامه جاروب سروو موتور راحت تر است.


    /*
    Adafruit Arduino - Lesson 14. Knob
    */
     
    #include <Servo.h> 
     
    int potPin = 0;  
    int servoPin = 9;
    Servo servo; 
     
    void setup() 
    { 
      servo.attach(servoPin);  
    } 
     
    void loop() 
    { 
      int reading = analogRead(potPin);     // 0 to 1023
      int angle = reading / 6;              // 0 to 180-ish
      servo.write(angle);  
    } 
 

در اینجا ما متغیر دومی به نام ‘potPin’ داریم.

برای تنظیم وضعیت سروو موتور، در ابتدا باید مقدار پایه آنالوگ A0 که مربوط به پتانسیومتر هست را بخوانیم. همانطور که قبلا گفته شد ، دامنه تغییرات این پایه بین ۰ تا ۱۰۲۳ می باشد. از آنجا که سروو موتور تنها ۱۸۰ درجه می چرخد، باید این دامنه را با تقسیم آن بر ۶ کاهش دهیم. در نتیجه دامنه جدید ما مقداری بین ۰ تا ۱۷۰ می باشد که قابل قبول است.

سروو موتور

موقعیت سروو موتور ها متناسب با طول پالس ها تنظیم می گردند. سروو موتور ها انتظار دارند که هر پالس را در دوره زمانی ۲۰ میلی ثانیه دریافت نمایند. اگر پالس دریافتی برای ۱ میلی ثانیه در هر ۲۰ میلی ثانیه باشد HIGH باشد ، آنگاه زاویه سروو موتور برابر صفر می باشد. اگر این میزان ۱.۵ میلی ثانیه باشد ، در زاویه ۹۰ درجه و اگر ۲ میلی ثانیه باشد در زاویه ۱۸۰ درجه قرار می گیرند.

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

دامنه تغییرات واقعی هر سروو در عمل چیزی حدود ۱۷۰ درجه می باشد. البته این دامنه نسبت به نوع سروو موتور ممکن است تغییر کند. سروو موتور هایی وجود دارند که می توانند به طور پیوسته به اندازه ۳۶۰ درجه بچرخند.

مواظب باشید که اگر شما سروو خود را باز کنید ، آنگاه سر هم کردن دوباره آن به شکل اول کار دشواری می باشد.

برنامه جاروب سروو موتور را باز کنید و به جای تاخیر ۱۵ میلی ثانیه ای از تاخیر ۵ ثانیه ای استفاده نمایید. خواهید دید که سروو موتور سریع تر می چرخد.

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

نکته: برای اینکه برنامه بتواند درجه را از روی سریال مانیتور بخواند شما باید از تابع Serial.parseInt() استفاده نمایید. این تابع اعداد را از سریال مانیتور می خواند.

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

برچسب ها
نمایش بیشتر

پاسخی بگذارید

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

دکمه بازگشت به بالا
بستن