آموزش راه اندازی سروو موتور SG5010
آموزش راه اندازی سروو موتور SG5010
در این آموزش ابتدا در مورد سروو موتورها توضیحات مختصری آمده و سپس مشخصات سروو موتور SG 5010 و سپس نحوه راه اندازی آن با میکرو کنترلر Atmega32 با استفاده از کامپایلر Atmel Studio 6.2 صحبت کرده ایم. و در پایان سورس کد و شماتیک پروژه نیز قرار داده شده است.
سروو موتور چیست؟
سروو برگرفته از یک کلمه یونانی به نام servus که به معنی خدمتکار است.این سیستم نیز که تحت این نام کار می کند را سیستم سروو می گویند.بدین دلیل که مستقیما به فرامین پاسخ می دهد.
سروموتور به انگلیسی: Servomotor یا موتور کنترل به انگلیسی: Control motor نوعی از موتورهای الکتریکی است که با هدف بکارگیری در سیستمهای کنترل فیدبک طراحی میشود. لختی (اینرسی) در این موتورها پایین بوده و در نتیجه تغییر سرعت در این موتورها بسیار سریع است. معمولا قطر این موتورها کم اما درازای آنها زیاد میباشد.
در کاربردهای مـدرن ، واژه سرو یا مکانیــسم سرو به یک سیستم کنـترلی فیدبک که متغیر کنترل شونده ، موقعیت یا مشتق موقعیت مکانیکی به عنوان سرعت و شتاب است، محدود می شود.
یک سیستم کنترلی فیدبک ، سیـستم کنـترلی است که به نگهـداشتن یک رابطه مفروض بین یک کمیت کنـترل شده و یک کمیـت مرجع ، با مقایسه توابع آنها و اسـتفاده از اختلاف به عنوان وسیله کنترل منجر می شود.
سیستم کنـترلی فیدبک الکتریکی ، عموما برای کار به انرژی الکتـریکی تکیه می کند . مشخصـات مهمی که معمولا برای چنین کنترلی مورد نیاز است ، عبارتند از :
1- پاسخ سریع ،
2- دقت بالا ،
3- کنترل بدون مراقبت و
4- کارکرد از راه دور .
تعریف عمومی سرو موتور بدین شکل است: سرو موتور یک دستگاه کوچکی است که یک محور (shaft) خروجی دارد. این محور قادر است تا در یک موقعیت و زاویه ای خاص با ارسال سیگنال رمزی قرار گیرد. در واقع چگونگی حرکت وموقعیت های زاویه ای این محور خروجی توسط دسته ای از سیگنالهای رمزی که برای سیم کنترل آن تعریف می شودکنترل می شود. برای طول مدت زمانیکه یک سیگنال فعال بوده و یک پالس برروی خط ورودی آن قرار دارد این محور خروجی در موقعیت خاص زاویه ای که مختص آن سیگنال است قرار می گیرد و با تغییر سیگنال رمزی موقعیت زاویه ای تغییر می کند. در عمل سرو موتورها در صنایع رباتیک وتولیدات صنعتی مانند موتورهای کنترل کننده هواپیماها کنترل موقعیت سطوح ( مانند آسانسورها و … ) و… کاربرد وسیعی دارند .
مقایسه سرو موتور با استپر موتور:
در واقع یک استپر موتور از طریق پالسی که دریافت می کند به موتور دستور میدهد که طبق یک درجه خاص بچرخد اما ممکن است این چرخش به مقدار کافی دقیق نباشد که این اختلاف چرخش در پروژه های حساس مشکل آفرین است.اما سروو موتور یک نوع استپر موتوراست که از یک طرف به انکودر متصل می باشد و در هر لحظه میزان چرخش موتور توسط انکودر اندازه گیری می شود(احتمالا از طریق یک پالس در جهت معکوس ) و یک فیدبک از درجه موجود به موتور ارسال می گردد و موتور با دقت مناسب در درجه مشخص شده متوقف می گردد.
مشخصات سرو SG5010::
SG-5010 یک سرو موتور محصول شرکت Tower Pro است که مناسب برای ساخت روباتهای پیشرفته و دقیق ،استفاده در هواپیماهای مدل و انواع بازوهای صنعتی می باشد.این سرو موتور دارای قابلیت چرخش 180 درجه می باشد. این موتور دارای سه پین برای تغذیه و کنترل است. مشخصات کلی این سرو به شرح ذیل است:
توضیحات سرو |
|||
4.8 – 6 | ولتاژ (V) | SG5010 | مدل |
0.16sec @ 4.8v 0.2sec @ 6v | سرعت (Deg/sec) | 5.2kg.cm@ 4.8v 6kg.cm@ 6v | گشتاور (kg.cm) |
4 | پهنای باند (usec) | تایوان | کشور سازنده |
coreless motor | تیپ موتور | پلاستیکی | جنس گیربکس |
180 | زاویه چرخش(درجه) | 0 – 50 | محدوده دمای کاری(C) |
40 | طول (mm) | دارد | سخت افزار جانبی |
36.5 | ارتفاع (mm) | 20 | عرض (mm) |
ست کردن رجیسترهای ATtmega32 برای راه اندازی سرو SG5010 :
با استفاده از خاصیت PWM در میکروکنترلرها می توان با ارسال پالس مناسب به سروو، آنها را کنترل کرد. مقدار پالس مناسب در دیتاشیت هر سروو موتورآمده است. برای تولید پالس مناسب در ATtmega32 می توان از تایمر استفاده کرد. بنابراین با استفاده از تایمر 16 بیتی شماره یک میکروکنترلر ATtmega32 و مقدار دهی رجیستر OCR1A می توان پالس دلخواه را ایجاد کرد.
مثلا اگر بخواهیم سرو در درجه 70 درجه منوقف شود باید محاسبات انجام گیرد و سپس بر اساس این محاسبات رجیستر OCR1A مقدار دهی شود.
برای انجام این محاسبات تایمر یک به صورت زیر مقدار دهی می شود.
فرکانس کاری میکروکنترلر 8 مگاهرتز و clock value تایمر1 را برابر 1000 کیلوهرتز قرار میدهیم. مابقی رجیسترهای تایمر یک را به صورت زیر انجام می دهیم:
برای مقدار دهی رجیستر ICR1 به صورت زیر عمل می کنیم:
ابتدا با استفاده از رابطه بالا مقدار TOP را محاسبه کرده و سپس رجیستر را با مقدار TOP مقدار دهی می کنیم.توجه داشته باشید رجیستر ICR1 ، 16 بیتی است پس برای مقدار دهی 8 بیت پرارزش ICR1 از رجیستر 8 بیتی ICR1H و برای مقدار دهی 8 بیت کم ارزش از رجیستر ICR1L استفاده می کنیم.
Fpwm فرکانس سرو موتور و برابر 50 هرتز است.
Fcpu فرکانس کاری میکروکنترلر و برابر 8 مگاهرتز است.
N مقدار تقسیم کلاک است و برابر است با 8
بنابر این :
نحوه کنترل سروو موتورها با AVR : (به دست آوردن عدد مناسب برای مقدار دهی رجیستر OCR1A)
همانطور که در دیتاشیت سروو SG 5010 آمده، حداقل پالس برای چرخش سروو به ترتیب برابر 600 میکروثانیه و حداکثر 2400 میکروثانیه می باشد. SG 5010 می تواند از صفر تا 180 درجه بچرخد لذا 600 میکرو ثانیه برای تنظیم روی صفر درجه و 2400 میکروثانیه برای تنظیم روی 180 درجه می باشد.
پس 600 تقسیم بر 2 برابر 300 میکروثانیه برای 0 درجه و 2400 تقسیم بر 2 برابر 1200 میکروثانیه برای 180 درجه.
پالس لازم برای اختلاف یک درجه از رایطه زیر محاسبه می شود:
به عنوان مثال برای تنظیم روی یک درجه مقدار پالس لازم برابر 5 + 300 = 305 میکروثانیه می باشد. پس رجیستر OCR1A را با عدد 305 مقدار دهی می کنیم.
برای تنظیم روی n درجه مقدار پالس لازم برابر 300 + (n * 5) می باشد.
کدهای پروژه در اتمل استودیو (Atmel Studio6.2) :
شماتیک مدار نیز به صورت زیر است:
دقت کنید در تنظیمات مدل سروو باید مقادیر به شکل بالا باشند تا شبیه سازی درستی از سروو SG 5010 در پروتئوس داشته باشید.
فایل های اصلی پروژه به همراه شماتیک و سورس کد:
دانلود پروژه این مطلبموفق باشید.
نظر یادتون نره
======================
درباره حمید زارع
دانشجوی ارشد نرم افزار فارغ التحصیل مهندسی کامپیوتر دانشگاه شیراز علاقه مندی ها:برنامه نویسی،AVR، نجوم،رویت هلال،عکاسی،Game Design، 3D Modeling Image Processing
- ۰ نظر
- ۰۴ مرداد ۹۴ ، ۱۶:۴۳