شما به اینترنت متصل نیستید.
آموزش آردوینو: درس چهاردهم (سروو موتور)
نویسنده:
امتیاز دهید

آموزش آردوینو: درس چهاردهم (سروو موتور)

سری آموزش آردوینو: درس چهاردهم

در این درس یادخواهید گرفت که چگونه یک سروو موتور را توسط آردوینو کنترل کنید.

آموزش آردوینو: درس سیزدهم(موتورDC-یخش اول)

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

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

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

برد آردوینو UNO R3
برد آردوینو و کابل رابط
1 عدد
برد بورد
1 عدد
مقاومت متغییر 10 کیلو اهم
1 عدد
سروو موتور SG90
سروو موتور
1 عدد
خازن 100 میکرو فاراد
1 عدد

اتصالات مدار برای حرکت رفت و برگشتی:

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

مدار اتصال سروو موتور به آردوینو (شکل 1)

سروو موتور دارای 3 سیم می باشد. رنگ بندی این سیم ها در موتورهای مختلف، متفاوت است، اما رنگ قرمز همیشه برای +5V و رنگ مشکی یا قهوه ای برای GND می باشد. سیم دیگر که مربوط به کنترل وضعیت است، معمولا زرد یا نارنجی خواهد بود. سیم کنترل به پین 9 متصل شده است.

ممکن است که سروو موتور شما پس از اتصال به صورت نامنظم کار کند، زمانی که به پورت USBمتصل است. دلیل آن این است که زمانی که سروو موتور شروع به کار می کند، توان زیادی می کشد، که این توان زیاد ناگهانی وقتی به برد آردوینو وارد می شود باعث ریست شدن آن خواهد شد. در این صورت شما می توانید از طریق اضافه کردن یک خازن با ظرفیت بالا (470میکرو فاراد یا بالاتر) بین پایه های GND و +5V بر روی بردبورد این مشکل را حل کنید.

مدار اتصال سروو موتور به آردوینو (شکل 2)

خازن به عنوان یک منبع انرژی برای موتور عمل می کند، به این صورت که زمانی که موتور شروع به کار کرد، توانش ابتداییش را از خازن دریافت می کند.

پایه بلند خازن، پایه مثبت بوده و باید به +5V متصل شود. در کنار پایه منفی نیز معمولا یک علامت – روی بدنه مشخص شده است.

کد آردوینو برای حالت رفت و برگشتی:

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

#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 > 0; angle--)   

  {                               

    servo.write(angle);          

    delay(15);      

  }

}

نحوه عملکرد برنامه فوق را در فیلم زیر مشاهده می کنید:

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

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

#include <Servo.h>

پس از آن پین مربوط به کنترل سروو موتور را servopin معرفی کنید.

در خط بعدی یک متغییر جدید از نوع servo معرفی کنید.

Servo servo; 

این کتابخانه به شما امکان معرفی کردن متغییری جدید از نوع servo را می دهد. متغییری مانند متغییرهای int یا float. این امکان وحود دارد که هشت متغییر از این نوع را معرفی کنید، به طور مثال برای دو مورد به صورت زیر عمل کنید:

Servo servo1;

Servo servo2;

در بخش setup لازم است که متغییر servo را به پین مربوط به کنترل سروو موتور مرتبط کنیم.

  servo.attach(servoPin);

متغییر angle برای تعیین موقعیت دقیق سروو برحسب درجه می باشد. در حلقه Loop از دو حلقه for استفاده شده است. یکی زاویه چرخش را افزایش می دهد و دیگری این زاویه را کاهش خواهد داد.

دستور زیر هم باعث می شود تا مکان خود را با توجه به زاویه تعیین شده تنظیم کند:

   servo.write(angle);  

نحوه اتصالات مدار برای کنترل دستی:

در این مرحله یک پتانسیومتر اضافه خواهد شد تا موقعیت سروو موتور از طریق آن کنترل شود.

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

مدار اتصال سروو موتور به آردوینو (شکل 3)

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

#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 خوانده می شود، که عددی بین 0 تا 1023 خواهد بود، در حالی که سروو موتور فقط تا 180 درجه قابلیت چرخش دارد. در این صورت می توان با تقسیم مقادیر ورودی آنالوگ بر 6، رنج عدد را بین 0 تا 170 تنظیم کرد، که مطلوب می باشد.

سرو موتور چیست ؟

سروو موتور

سرو موتور ( Servo Motor ) متشکل از یک موتور الکتریکی ساده است که در کنار موتور تعدادی المان الکترونیکی به منظور کنترل زاویه ، سرعت و یا شتاب به شفت موتور متصل می شوند و کلیه المان ها به همراه موتور در یک پکیج واحد ارائه می شوند. سرو موتور ها ممکن است دارای گیربکس یا فاقد گیربکس باشد و اندازه های بسیار کوچک برای مصارف ساخت تجهیزات مکاترونیکی مانند ربات ها و هواپیما های مدل تا اندازه های بزرگ برای دستگاه های صنعتی ساخته می شوند. در حوزه میکروکنترلر ، آنچه که از سروو موتور مشاهده می نماییم معمولا یک موتور DC جاروبک دار است که به کمک یک سری چرخدنده ( گیربکس ) به یک پتانسیومتر داخلی وصل شده است و خروجی گیربکس نیز از طرف دیگر خارج شده است. پتانسیومتر فقط وضعیت خروجی را کنترل می کند و کاری به وضعیت موتور ندارد.

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

در شکل زیر نمای کلی اجزای داخلی سرو موتور نمایش داده شده است:

مشاهده تصویر
اجزای سروو موتور

برد کنترل سرو موتور یک فرمان را به صورت یک پالس PWM با فرکانس 50 هرتز ( دوره تناوب : 20 میلی ثانیه ) دریافت می کند و بر اساس عرض پالس دریافتی ، زاویه ای که باید شافت در آن قرار بگیرد یا به عبارتی مقدار مقاومت مطلوب پتانسیومتر را مشخص می نماید. ( معمولا در صورتی که عرض پالس 1 میلی ثانیه باشد ، زاویه 0 و در صورتی که عرض پالس 2 میلی ثانیه باشد زاویه ماکزیمم در نظر گرفته می شود ، در مورد برخی از موتور ها ممکن است عرض پالس بازه متفاوتی مانند 0.5 تا 2.5 میلی ثانیه را داشته باشد ، اما روش کار به یک شکل است ) پس از مشخص شدن مقدار مقاومت مطلوب پتانسیومتر ، کنترلر موتور DC را روشن می کند و مادامی که مقدار مقاومت پتانسیومتر به مقدار مطلوب نرسیده است ، موتور را روشن نگه می دارد ، تعیین جهت موتور بر اساس مقدار فعلی پتانسیومتر و مقدار مطلوب ، توسط کنترلر تعیین می شود.

سرو موتور ها معمولا دارای 3 سیم هستند و 2 سیم مربوط به تغذیه است و همواره باید متصل باشد و یک سیم مربوط به PWM ( مدولاسیون عرض پالس ) است که با دریافت پالس معتبر ، کنترلر موتور را روشن می کند و در وضعیت جدید قرار می دهد ، در غیر اینصورت موتور وضعیت قبلی را حفظ می کند.

مشاهده تصویر
موقعیت سروو موتور با عرض پالس تنظیم می شود

نقطه پایانی چرخش سروو موتور می تواند در موتورهای مختلف متفاوت باشد، ولی در اکثر سروو موتورها 170 درجه می باشد. در صورت استفاده از سروو موتور های continuous امکان چرخش تا 360 نیز وجود دارد.

کارهای دیگری که می توانید انجام دهید:

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

برای اینکه برنامه شما اعداد را به درجه از نمایشگر سریال بخواند، می توانید از دستور ()serial.parslnt استفاده کنید. این دستور اعداد را از نمایشگر سریال می خواند.

آموزش آردوینو: درس پانزدهم(موتورDC-یخش دوم)

آموزش آردوینو: درس پانزدهم (موتور DC - بخش دوم)
آموزش آردوینو: درس پانزدهم (موتور DC - بخش دوم)
سری آموزش آردوینو: درس پانزدهم در این درس شما یاد خواهید گرفت که چگونه جهت چرخش و سرعت یک موتور DC کوچک را از طریق برد آردوینو و تراشه درایور موتور L2...
زمان مطالعه: 8 دقیقه

نظرات شما باعث بهبود محتوای آموزشی ما می‌شود. اگر این آموزش را دوست داشتید، همین‌طور اگر سوالی در مورد آن دارید، از شنیدن نظراتتان خوشحال خواهیم شد.

ترجمه شده و تکمیل توسط اتومی | منابع: .adafruit.com - diginic.net

آیا این مطلب برایتان مفید بود؟
بله خیر
تاکنون هیچ نظری ثبت نشده است.
برای ثبت نظر وارد حساب کاربری خود شوید.