پنج شنبه, شهریور 29, 1403
ادامه منو
    خانهپروژه های اردوینو Arduinoپروژه با موتورها و درایورهاپروژه راه اندازی سروو موتور با برد آردوینو

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

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

    قبلا در پستی دیگر اموزش راه اندازی سروو موتور با میکروکنترلر AVR را قرار داده بودم که در ان پست در مورد سروو موتور و سیم های ان توضیح دادم, توصیه می کنم اگر در مورد سروو موتورها اطلاعات کافی ندارید حتما ان پست را مطالعه کنید.

    در این پروژه ما سروو موتور MG90S را با استفاده از برد اردوینو یونو (UNO) راه اندازی خواهیم کرد. ولتاژ کاری این سروو موتور 4.8 تا 6 ولت DC می باشد, بنابرای سیم های تغذیه سروو موتور را باید به ولتاژی در این محدوده متصل کنیم.

    سروو موتورها برای راه اندازی نیاز به یک سیگنال PWM با دوره تناوب و عرض پالس مشخصی دارند. سروو موتور MG90S نیاز به یک سیگنال PWM با دوره تناوب 20 میلی ثانیه و عرض پالس بین 400 تا 2400 میکرو ثانیه (0.4 تا 2.4 میلی ثانیه) دارد. ما با تغییر عرض پالس بین 400 تا 2400 میکرو ثانیه می توانیم زاویه محور سروو موتور را بین 0 تا 180 درجه تغییر دهیم. مثلا وقتی که عرض پالس سیگنال 400 میکرو ثانیه است سروو در زاویه 0 درجه قرار می گیرد. وقتی که عرض پالس سیگنال 1400 میکرو ثانیه باشد سروو در زاویه 90 درجه قرار می گیرد و با عرض پالس 2400 میکرو ثانیه سروو در زاویه 180 درجه قرار می گیرد. برای درک بهتر به تصویر زیر دقت کنید.

    Servo-Motor-Control-Signal-emic

    دوره تناوب سیگنال PWM برای اکثر سروو موتورها همان 20 میلی ثانیه می باشد و فقط ممکن است که عرض پالس مورد نیاز سروو های مختلف متفاوت باشد که در ادامه نحوه تنظیم عرض پالس برای سروو موتورهای مختلف را توضیح خواهم داد. شماتیک این پروژه به صورت زیر است :

    Arduino-prj-servo-motor-test-emic

    در شماتیک بالا سیم های مثبت و منفی تغذیه سروو (VCC و GND) به تغذیه متصل شده است و سیم سیگنال کنترل نیز به پایه 9 برد اردوینو متصل شده است. این پایه برد اردوینو خروجی تایمر/کانتر یک می باشد که در واقع پایه خروجی سیگنال PWM است.

    عملکرد پروژه به این صورت است که محور سروو موتور از 0 درجه شروع به چرخش می کند تا به 180 درجه برسد و پس از ان دوباره بصورت برعکس یعنی از 180 درجه شروع به چرخش می کند تا به 0 درجه برسد و این روند ادامه دارد. در انتهای مطلب می توانید کلیپ تست عملی پروژه را مشاهده کنید.

    P-Arduino-prj-servo-motor-test-emic

    تغذیه پروژه بالا را می توانید از خود برد اردوینو بگیرید, به این صورت که برد اردوینو را با استفاده از اداپتور راه اندازی کنید و از پایه های 5V و GND برای تغذیه استفاده کنید.

    برنامه اردوینو :

    برای راه اندازی سروو موتور ما از کتابخانه ان در اردوینو با نام Servo.h استفاده کرده ایم و به همین دلیل کتابخانه Servo.h در ابتدای برنامه فراخوانی شده است. در ادامه توابع و دستورات این کتابخانه که در برنامه از انها استفاده شده توضیح داده شده اند.

    تابع Servo

    توسط این دستور که در خط 3 برنامه استفاده شده ما یک شیء جدید از جنس سروو به نام servo1 ایجاد می کنیم. در واقع توسط این دستور برای هر یک از سروو موتورهایی که می خواهیم در پروژه استفاده کنیم یک نام انتخاب می کنیم. در این پروژه ما یک سروو موتور را می خواهیم راه اندازی کنیم, که نام ان را servo1 گذاشته ایم.

    تابع Servo.attach

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

    • pin : شماره پین اردوینو که سروو به ان متصل می شود
    • min : حداقل عرض پالس بر حسب میکرو ثانیه
    • max :حداکثر عرض پالس بر حسب میکرو ثانیه

    نکته : مقدار حداقل و حداکثر عرض پالس به صورت پیش فرض 544 و 2400 میکروثانیه در نظر گرفته شده اند.

    تابع Servo.write

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

    angle : عددی بین 0 تا 180 (برای سرووهای 180 درجه) می باشد که سروو در ان زاویه قرار می گیرد

    برنامه کامل این پروژه به صورت زیر است :

    توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. همانطور که در بالا گفته شد, سروو موتورهای مختلف ممکن است نیاز به عرض پالس متفاوتی برای راه اندازی داشته باشند که در برنامه بالا برای تغییر عرض پالس سیگنال PWM به راحتی می توانید در خط 7 برنامه مقادیر مورد نظر خود را وارد کنید. برای سروو موتور MG90S ما عرض پالس را حداقل 400 میکرو ثانیه و حداکثر 2400 میکرو ثانیه وارد کرده ایم.

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

    کلیپ تست عملی پروژه :

     

    دانلود فایل ها

    پسورد فایل زیپ : www.emic.ir

     

     

    نظر یادتون نره…

    عابد رازانی
    عابد رازانیhttps://emic.ir/
    فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, در حال حاضر به تولید محتوای آموزشی و طراحی و انجام پروژه مشغول هستم.

    2 نظرات

    1. سایت به این خوبی و با کیفیتی و معتبر چرا موقع لود صفحات، فوروارد میشه روی لینکهای مسخره مضحکه و نامعتبر؟
      هم رنکینگ میاد پایین و هم اعتبار و واقعا چرا

      • بله متوجه مشکل شدیم و در حال حاضر مشکل برطرف شده است. در صورتی که هر گونه مشکلی در سایت مشاهده کردید اطلاع دهید, حتماً بررسی میشود و در اسرع وقت برطرف خواهد شد.

    ارسال دیدگاه

    لطفا نظر خود را وارد کنید!
    لطفا نام خود را اینجا وارد کنید

    spot_img