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

کنترل سروو موتور با میکروکنترلر AVR و اتمل استودیو

سلام. کنترل سروو موتور با میکروکنترلر AVR و اتمل استودیو (آموزش کامل اتصال Servo Motor) را آماده کردیم.

آموزش کنترل Servo Motor به میکروکنترلر های AVR

سروو موتور در موارد گسترده ای مورد استفاده قرار می گیرد كه نیاز به كنترل دقیق دارند مانند ربات ها ، ماشین های اتوماسیون ، بازوی رباتیک و … دامنه موتور سروو محدود به اینها نیست و در بسیاری از پروژه ها قابل استفاده است.

در این پروژه AVR سروو موتور را به وسیله میکروکنترلر AVR Atmega16 کنترل میکنیم. برنامه را با استفاده از Atmel Studio 7 نوشته و کامپایل میکنیم. موتور سروو ولتاژ کاری حدود 4.8 تا 6 ولت دارند. ما میتوانیم با استفاده از سیگنال PWM ، زاویه شافت Servo Motor را کنترل کنیم. توجه داشته باشید که سروو موتور ها نمیتوانند چرخش کامل 360 درجه ای داشته باشند. دامنه حرکت سروو موتور ها 0 تا 180 یا -90 تا +90 است.

قطعات مورد نیاز پروژه AVR

  1. میکروکنترلر AVR Atmega16
  2. سروو موتور SG90
  3. اسیلاتور بلوری 16 مگاهرتز
  4. خازن 100nf – دو عدد
  5. خازن 22pf – دو عدد
  6. دکمه

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

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

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

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

نحوه کنترل سروو موتور با PWM میکروکنترلر AVR

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

در تصویر زیر نحوه تنظیم شافت سروو موتور با استفاده از PWM را میبینید.

نحوه تنظیم شافت سروو موتور با استفاده از PWM

به طور مثال برای اینکه شافت به ساعت 3 منتقل شود ، زمان روشن بودن سیگنال باید 2ms باشد و زمان خاموش باید 16ms باشد. این نسبت توسط سیستم کنترل در سروو رمزگشایی می شود و موقعیت را بر اساس آن تنظیم می کند. PWM در پروژه با استفاده از میکرو مگا 16 تولید می شود.

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

کنترل سروو موتور با میکروکنترلر Atmega 16

کنترل سروو موتور با میکروکنترلر AVR و اتمل استودیو

برخلاف استپر موتور ، سروو موتور ها نیازی به درایور خارجی مانند L293D یا … ندارند. برای کنترل سروو موتور تنها موج PWM نیاز است. تولید سیگنال PWM با میکروکنترلر AVR بسیار آسان است. همانطور که می دانیم سروو موتور هر 20 دقیقه به دنبال پالس است و طول پالس مثبت زاویه چرخش موتور سروو را تعیین می کند.

فرکانس مورد نیاز برای بدست آوردن پالس 20ms طبق فرمول زیر 50 هرتز است.

(f = 1 / T) >> 50Hz =1/20ms

بنابراین برای این سرو موتور، مشخصات می گوید برایزاویه 0 درجه سروو موتور به 0.388ms نیاز داریم، برای 90 درجه به 1.264ms و برای 180 درجه به پالس 2.14ms نیاز داریم. (به تصویری که کمی بالاتر قرار دادیم دقت کنید)

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

برای تولید پالس های مشخص شده از تایمر 1 میکروکنترلر Atmega16 استفاده خواهیم کرد. فرکانس پردازنده 16 مگاهرتز است. Prescaler روی 1 تنظیم شده است. بنابراین کلاک 1 مگاهرتز است. از Timer1 به عنوان حالت سریع PWM استفاده می شود، یعنی حالت 14. شما می توانید از حالت های مختلف تایمر برای تولید پالس دلخواه استفاده کنید. تصویر زیر به شما در درک این مسئله کمک میکند.

کنترل سروو موتور با میکروکنترلر Atmega 16

برای استفاده از Timer1 به عنوان حالت Fast PWM به مقدار ICR1 نیاز داریم. برای پیدا کردن مقدار ICR1 از فرمول زیر استفاده میکنیم.

fpwm = fcpu / n x (1 + TOP)

فرمول ساده تری هم وجود دارد :

TOP = (fcpu / (fpwm x n)) – 1

در این فرمول ها n مقدار PreScaler و fcpu فرکانس پردازنده و fpwm نیز طول پالس PWM هنگامی که فرکانس 50 هرتز است.

حالا این مقدار را محاسبه میکنیم.

N = 1,  fcpu = 1MHz,  fpwm  = 50Hz

مقادیر بالا را در فرمول قرار میدهیم و جواب میشود ICR1 = 1999

یعنی برای دسترسی به حداکثر درجه (180) ، ICR1 باید 1999 شود.

برای کریستال 16MHz و Prescaler تنظیم شده روی 16 ، خواهیم داشت :

ICR1 = 4999

در اینجا ما از Atmega16 برای چرخش موتور سرو از 0 تا 180 استفاده میکنیم و دوباره از 180 به 0 باز می گردیم. این انتقال در 9 مرحله یعنی 0 – 45 – 90 – 135 – 180 – 135 – 90 – 45 – 0 انجام می شود.

فیلم عملکرد مدار

فیلم عملکرد مدار : کلیک کنید !

موارد موجود در فایل : شماتیک کامل مدار ، سورس کامل

پروژه ها رایگان هستند. برای دانلود فایل های پروژه باید در سایت عضو باشید. ثبت نام / ورود

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

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