آموزش AVRپروژه 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 انجام می شود.

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

4.4 (9 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

8 نظر

  1. اگه بخوایم استپر موتور رو با آرم کد بزنیم هم از همین منطق میشه استفاده کرد؟

  2. سلام خدمت مهندس عزیز و همکاران ، مهندس جان مطلبی که هست بنده می خوام سه رو موتور رو با استفاده از ریموت کنترل و با زدن دکمه راست گرد و در آخر ایست و با زدن دوباره همان کلید چپ گرد بشه و به حالت اولش برگرده و در اونجا ایست کنه ، و مطلب بعدی با زدن یک دکمه به صورت لحظه ای که در فیلم هم هست باز و با زدن دکمه بعدی به صورت لحظه ای برگشت داده بشه ، این آموزش نه در دوره آموزش avr موجود بود ونه در این فیلم ، از شما تقاضا دارم تا فیلم آموزشی این مدار رو نیز بسازید و در دوره آموزش AVR یا به صورت جدا آموزش بدهید . مطلب دیگر هم در مورد ماژول RXC6 اصلا مطلبی نبود . ممنون و متشکر

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

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

    1. سلام جناب. دقیقا نمیدونم پروژتون چطور هست اما سروو موتور هایی با دقت بسیار بالا در بازار موجود هستند.

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

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