آشنایی با سروو موتور و راه اندازی آن با AVR

آشنایی با سروو موتور و راه اندازی آن با AVR

مقدمه

سروو موتورها ( Servo Motor ) در پروژه هایی استفاده می شوند که نیاز به تنظیم زاویه دقیق، گشتاور بالا و سرعت تغییر زاویه بالا مورد نیاز باشد. بنابراین در کاربردهایی نظیر بال های هواپیما ، بازوهای رباتیک و … از آنها استفاده می شود.

 

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

سروو یک موتور گیربکس دار است که از محور خروجی آن فیدبک گرفته شده است و به همین علت میتوان موقعیت دقیق آن را تعیین کرد. لختی( اینرسی ) در این نوع موتورها پایین بوده و در نتیجه تغییر سرعت در این موتورها بسیار سریع است. سروو موتورها در انواع AC و DC وجود دارند و توسط مدولاسیون پهنای پالس ( PWM ) کنترل می شوند.

ServoMotor_1

 

پایه های سروو موتور

سروو موتورهای DC معمولا سه سیم دارند که دوتای آنها برای تغذیه مثبت و منفی (قرمز و قهوه ای) و دیگری (نارنجی) برای اعمال سیگنال کنترلی می باشد.

ServoMotor_3

سیم تغذیه Vcc به ولتاژی بین ۴٫۸ تا ۷٫۲ وصل می شود و سیم تغذیه Gnd نیز به ۰ ولت متصل می گردد. سیم سوم هم به پالسی با فرکانس ثابت ۵۰ هرتز و با دیوتی سایکل( DutyCycle ) متغیر ( بین ۶۰۰ تا ۲۲۰۰ میکروثانیه ) متصل می شود.

 

نحوه عملکرد سروو موتور

زاویه قرار گرفتن سروو موتور بسته به پالس اعمالی به آن بین ۰ تا ۱۸۰ درجه میتواند تغییر کند. شکل زیر نحوه تنظیم زاویه توسط سروو موتور را نشان می دهد.

ServoMotor_2

 

بررسی مشخصات یک سروو موتور نمونه

سروو موتورهای مختلفی در بازار وجود دارند، برای نمونه ، مدل XQ-S3009M یک سروو موتور ساخت شرکت XQ-Power می‏باشد که در شکل زیر نشان داده شده است و دارای مشخصات به صورت جدول زیر می باشد.

ServoMotor_4.png

 ویژگی  ۶V  ۷٫۲V
 ماکزیمم گشتاور  ۹٫۵kg.cm  ۱۱kg.cm
 جریان مصرفی در حالت بدون بار  ۱۲۰mA  ۱۵۰mA
 جریان مصرفی در حالت ماکزیمم بار  ۲۰۰۰mA  ۲۳۰۰mA
 سرعت جابجایی در حالت بدون بار  ۰٫۱۶sec/60°  ۰٫۱۴sec/60°

 

افزایش گشتاور سروو موتور

هر چه ولتاژ تغذیه سروو موتور به ۷٫۲ ولت نزدیک تر باشد گشتاور تولید شده توسط آن افزایش می یابد. سروو موتور ها معمولا در حالت عادی جریان چندانی مصرف نمی کنند(در حد چند میلی آمپر) اما در حالت دارای بار نهایتا تا ۲٫۵ آمپر جریان مصرف می کنند. بنابراین برای راه اندازی سروو موتور با حداکثر گشتاور نیاز به یک منبع تغذیه مناسب به همراه یک رگولاتور ولتاژ ۷٫۲ ولت می باشد. رگولاتورهای معمولی ۱A هستند و برای کار ما مناسب نخواهند بود. بنابراین از ماژول LM2596 استفاده خواهیم کرد. این ماژول با نام کامل LM2596 DC-DC Step-Down Module یک رگولاتور کاهنده ولتاژ قابل تنظیم است که دارای شکل و مشخصات به صورت زیر است:

LM2596

ویژگی

مقدار

محدوده ولتاژ ورودی

+۴ – ۴۰vDC

محدوده ولتاژ خروجی

+۱٫۲۳ – ۳۵vDC

بیشینه جریان خروجی

۳A with heatsink

 

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

بهترین گزینه برای راه اندازی سروو موتور استفاده از میکروکنترلر برای تولید پالس PWM است. بنابراین در میکروکنترلرهای AVR از واحد تایمر/کانتر برای سروو موتور استفاده می شود. به علت اینکه فرکانس PWM مورد نیاز برای راه اندازی سروو موتور پایین است (بین ۵۰ تا ۱۰۰ هرتز) و همچنین سیکل وظیفه عملکرد سروو در حد میکروثانیه می باشد، نیاز به یک PWM قوی در راه اندازی آن می باشد تا به درستی راه اندازی شده و کنترل بهتری روی آنها صورت گیرد.

بنابراین برای راه اندازی سروو موتور از واحد تایمر/کانتر ۱۶ بیتی پیشرفته و در حالت عملکرد زیر استفاده خواهیم کرد:

PWM, Phase and Frequency Corret TOP Value = ICR1

در این حالت تولید موج PWM با تفکیک بالا و فرکانس پایینتر نسبت به حالت Fast PWM در دسترس می باشد که برای راه اندازی سروو موتور مناسب است. همچنین در این حالت تایمر از مقدار ۰ تا مقداری که در رجیستر ICR1 تنظیم شود، شمارش می کند. بنابراین میتوان موج PWM با فرکانس متغیری وابسته به مقدار رجیستر تنظیم شده و فرکانس کاری واحد تایمر/کانتر روی پایه خروجی OCX طبق رابطه زیر داشت:

 ServoMotor_5

برای داشتن فرکانس ۵۰ هرتز کافی است تا مقدار مناسب برای رجیستر ICR1 را از رابطه فوق به صورت زیر بدست آوریم:

 ServoMotor_6

بنابراین با مقدار دهی رجیستر ICR1 به صورت ۴E1F فرکانسی معادل ۵۰ هرتز ( ۲۰ میلی ثانیه ) را تولید خواهیم کرد. بعد از تنظیم این رجیستر ، با استفاده از رجیسترهای OCR1A,OCR1B و OCR1C میتوان سیکل عملکرد ( Duty Cycle ) را تغییر داد. به طوری که به ازای هر واحد تغییر در هر یک از این سه رجیستر، زمان وظیفه به اندازه ۱ میکرو ثانیه تغییر خواهد کرد. بنابراین برای قرار گرفتن سروو موتور در زاویه ۰ درجه کافی است پهنای پالس موج تولید شده ۶۰۰us باشد بنابراین باید رجیستر مربوطه را به صورت زیر قرار دهیم:

OCR1A = 600 us/1us = 600

برای قرار دادن سروو در زاویه ۹۰ درجه نیز باید پهنای پالس ۱۵۰۰us باشد بنابراین باید:

OCR1A = 1500us/1us = 1500

برای قرار دادن سروو در زاویه ۱۸۰ درجه نیز باید پهنای پالس ۲۴۰۰us باشد بنابراین باید:

OCR1A =2400us/1us = 2400

 

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

ServoMotor_CodeWizard

برای آموزش بیشتر و دریافت سورس کامل این پروژه به همراه توضیحات آن به صورت PDF به لینک زیر مراجعه نمایید.


دانلود بهترین و کاملترین بسته آموزشی میکروکنترلرهای AVR

AmazingAVR


در صورتی که این آموزش مورد پسندتان بود لایک و اشتراک گذاری فراموش نشود.

این مطلب را با دوستانتان به اشتراگ بگذارید

دیدگاه (2)

  • عادل پاسخ

    دست درد نکنه عالی بود لایک داری

    ۱۰/۰۵/۱۳۹۵ در ۱۷:۰۱
  • مهدی پاسخ

    با تشکر از مطلب مفیدتون

    ۲۶/۱۰/۱۳۹۵ در ۱۶:۵۹

پاسخ دهید

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

پنج × چهار =