پروژه راه اندازی سروو موتور با میکروکنترلر AVR

0

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

سروو موتورها دارای تفاوت هایی در ولتاژ کاری, زاویه چرخش, گشتاور, سرعت و… می باشند و به همین دلیل دارای انوع مختلفی هستند و ما باید بسته به نیاز خود یکی از انها را انتخاب کنیم. ولی راه اندازی همه انها تقریبا مشابه است, در ادامه در مورد راه اندازی انها بیشتر توضیح خواهم داد. در زیر شکل ظاهری یک سروو موتور را مشاهده می کنید :

MG90S-Servo-Motor-emic

همانطور که مشاهده می کنید, سروو موتور ها دارای 3 سیم می باشند. دو سیم برای اتصال تغذیه سروو موتور می باشد و سیم سوم برای اعمال سیگنال کنترل به سروو موتور است. سیم مثبت تغذیه سروو معمولا قرمز رنگ است و رنگ سیم منفی تغذیه سروو معمولا سیاه یا قهوه ای است. رنگ سیم مربوط به سیگنال کنترل نیز معمولا نارنجی است. البته در برخی از سروو موتورها ممکن است رنگ ها تفاوت داشته باشد و سیم ها دارای رنگ های دیگری باشند که حتما قبل از استفاده از سروو از اینکه سیم های مثبت و منفی و سیگنال کدام یک هستند اطمینان پیدا کنید.

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

همانطور که گفته شد سروو موتورها دارای مدل های مختلفی هستند که ما در این پروژه سروو موتور مدل MG90S را راه اندازی می کنیم. شما توسط همین پروژه می توانید دیگر سروو موتورها را هم راه اندازی کنید و فقط ممکن است نیاز به یک تغییر جزئی در برنامه پروژه باشد که در ادامه بیشتر توضیح خواهم داد.

مهم ترین مشخصه های یک سروو موتور که برای راه اندازی به انها نیاز داریم یکی ولتاژ کاری سروو می باشد که به عنوان مثال برای سروو مدل MG90S ولتاژ کاری 4.8 تا 6 ولت DC است. ما باید سیم های مثبت و منفی تغذیه سروو موتور را به ولتاژی در محدوده 4.8 تا 6 ولت متصل کنیم. همانطور که گفته شد برای دیگر مدل های سروو ممکن است محدوده ولتاژ کاری متفاوت باشد که حتما بررسی کنید.

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

همانطور که گفته شد برای سروو مدل 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 ما از واحد تایمر/کانتر میکروکنترلر استفاده می کنیم. در ادامه می توانید شماتیک این پروژه را مشاهده کنید.

AVR-prj-servo-motor-test-emic

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

همانطور که گفته شد ما توسط واحد تایمر/کانتر میکروکنترلر می توانیم یک سیگنال PWM ایجاد کنیم. میکروکنترلر ATmega16 دارای 3 واحد تایمر/کانتر می باشد, که به انها تایمر/کانتر صفر, تایمر/کانتر یک و تایمر/کانتر دو می گویند. تایمر/کانتر صفر و دو 8 بیتی هستند و تایمر/کانتر یک 16 بیتی است. برای راه اندازی سروو موتور ما از تایمر/کانتر یک که 16 بیتی است استفاده می کنیم.

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

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

P-AVR-prj-servo-motor-test-emic

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

در این پروژه فرکانس میکروکنترلر 1 مگاهرتز تنظیم شده است. در زیر برنامه نوشته شده به زبان C و کامپایلر کدویژن را مشاهده می کنید:

توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می توانید در قسمت نظرات مطرح کنید. همانطور که در بالا توضیح دادم این پروژه برای سروو موتور مدل MG90S می باشد که البته برای دیگر سروو موتورها هم قابل استفاده می باشد. در صورتی که دوره تناوب و یا محدوده عرض پالس سروو موتور مورد استفاده شما مقادیر دیگری بود به راحتی می توانید دوره تناوب را در خط 33 از برنامه تغییر دهید. محدوده عرض پالس را هم که در برنامه از 400 تا 2400 تعریف شده به راحتی می توانید تغییر دهید فقط کافی است در خط 34 از برنامه بجای 400 حداقل عرض پالس سروو خود را بنویسید و در خط 38 و 42 نیز مقادیر حداقل و حداکثر عرض پالس را به مقادیر مورد نظر خود تغییر دهید.

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

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

 

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

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

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

ارسال دیدگاه

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