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

سرو موتورها یکی از کاربردی‌ترین موتورهای موجود در زمینه رباتیک هستند. در این پست قصد داریم به چگونگی راه‌اندازی سرو موتور MG90S با استفاده از برد آردوینو (Arduino Nano) بپردازیم.

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

Servo Motor یک موتور الکتریکی با سیستم کنترل فیدبک با دقت بسیار بالاست که می‌توان شافت آن را در جهت و زاویه دلخواه تنظیم کرد.

سرو موتورها در صنایع رباتیک و تولیدات صنعتی کاربرد وسیعی دارند. سرو موتورها به دو دسته کلی سرو موتورهای DC و سرو موتورهای AC تقسیم می‌شوند.

یک سرور موتور از یک موتور DC به همراه یک برد کنترل‌کننده و تعدادی چرخ‌دنده تشکیل شده است که نمای کلی آن را می‌توانید در تصویر زیر مشاهده کنید:

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

تفاوت‌های موتور DC و سرو موتور:

در موتورهای DC:

  • کم یا زیاد کردن سرعت موتور با استفاده از PWM و تعیین جهت چرخش موتور
  • امکان چرخش 360 درجه
  • ناممکن بودن تعیین درجه چرخش و خواندن مقدار درجه فعلی موتور

در سرو موتورها:

  • ناممکن بودن دور 360 درجه برای شافت (حداکثر 180 درجه امکان چرخش وجود دارد)
  • سرعت و جهت چرخش مطرح نیست
  • چرخش از 0 تا 180 درجه
  • امکان تعیین قرارگیری در چه درجه‌ای
  • امکان خواندن مقدار درجه فعلی موتور

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

سروها به‌طورمعمول دارای سه سیم ورودی هستند: دو سیم اول (رنگ‌های قهوه‌ای و قرمز) مربوط به تغذیه و سیم سوم (رنگ نارنجی) مربوط به ورود پالس PWM است.

دیتاشیت سرو موتور MG90s را می‌توانید از سایت https://engineering.tamu.edu/  مشاهده کنید.

 

تغذیه سرو موتور mg90s

در این پروژه برد استفاده‌شده جهت راه‌اندازی Servo Motor، آردوینو نانو است. جهت ارسال سیگنال PWM به سرو موتور نیز از پایه D9 برد نانو استفاده شده است. با توجه به اینکه ولتاژ تغذیه سرو موتور MG90S بین 4.8 تا 6 ولت است، جهت تغذیه موتور می‌توان از پایه 5V که بر روی برد قرار دارد، استفاده کرد.

 

دیاگرام اتصال سرو موتور به آردوینوکدهای آردینو جهت راه‌اندازی سرو موتور:

در خط 3 متغیری از نوع Servo با نام myservo تعریف شده است که جهت کنترل موتور از آن استفاده می‌شود. در خط 6 متغیر pos جهت میزان درجه شافت Servo Motor تعریف شده است. در خط 9 از تابع attach جهت تعیین شماره پایه برای ارسال سیگنال PWM به سرو موتور و از تابع write نیز در خطوط 15 و 19 جهت تنظیم زاویه موتور استفاده می‌شود. در این پروژه شافت سرو موتور ابتدا از صفر تا 180 درجه و سپس به‌صورت عکس به چرخش درمی‌آید که برای این منظور از دو حلقه for استفاده شده است. فاصله هر درجه چرخش با درجه بعدی 15 میلی‌ثانیه است.

 

 

حمایت از حامد عباسیان

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

حامد عباسیان

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

دیدگاه ها

4 دیدگاه

  • احمد
    ۲ اردیبهشت ۱۴۰۰

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

    اول اینکه سروو بصورت دایم چیزی در حدود 100mA جریان می کشه. یعنی وقتی سیم مثبت و منفی سروو رو وصل میکنیم، آمپر صفر هست. اما به محض اتصال سیم (نارنجی) PWM سروو حدود 100mA جریان میکشه. فرقی هم نمیکنه که تو چه زاویه ای باشه. (این جریان غیر از جریان هنگام چرخش زاویه سروو هست).
    آیا این طبیعی هست؟
    و از اون مهمتر، اگر طبیعی هست، راهی به نظر تون میرسه که این جریان کشی بی مورد رو حذف کنم؟
    چون میخوام پروژه نهایی رو با باطری راه اندازی کنم و مدیریت جریان خیلی برام اهمیت داره.

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

    برد آردوینو، هم Uno هم Mega دارم. اما عملکرد سروو با هر دو یک شکل هست.
    دستوراتی که برای تست اولیه و راه اندازی موقت سروو استفاده کردم به این شرح هست:

    #include
    int servopin3 = 3; //Servo signal pin is attached to pin 3
    Servo servo3; // define a servo No 2

    void setup() {
    servo3.attach (servopin3);
    }

    void loop() {
    servo3.write(0);
    delay (10000);
    servo3.write(105);
    delay (10000);
    }

    ممنون میشم اگه راهنمایی بفرمایید.

    • Zeus ‌
      zeus
      ۴ خرداد ۱۴۰۰

      سلام دوست عزیز
      در مورد جریان کشی زیاد مطمين نیستم
      اما در مورد تکان ها و صدا ها دو تا عامل میتونه داشته باشه یکی ثابت فرکانسی pwm هست که تاثیر داره
      و البته کیفیت خود سرور – همونطور که میدونید سرور از کنترل حلقه بسته استفاده میکنه و مدام موقعیت خودش رو اصلاح میکنه حالا اگر دقت adc یا پتانسومتر زاویه سنج کافی نباشه این مشکلات پیش میاد

  • آرش
    ۱۲ مرداد ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۱۸ شهریور ۱۳۹۹

      بله امکانش هست با استفاده از متد های شبیه سازی pwm این کار رو انجام داد ولی مساله که مطرح میشه باری است که بر روی cpu میذاره و البته ممکنه زیاد دقت نداشته باشه اگر بخواید چنین کاری رو انجام بدید.

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

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

Zeus ‌ Zeus ‌
  • 4 سال پیش

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

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 10 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک