برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی

برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

داده هایی در مورد برق، الکترونیک، الکتروتکنیک، مکاترونیک، پزشکی، کشاورزی و

تبلیغات
آخرین نظرات

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

ShahBaz | يكشنبه, ۳ دی ۱۳۹۶، ۱۰:۲۶ ب.ظ

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

در این پروژه با استفاده از میکروکنترلر AVR Atmega32 و LCD متنی سروموتور SG90 را راه اندازی نموده ایم. این پروژه به زبان C و در کامپایلر CodeVision AVR نوشته شده است. سروو موتور SG90 که در این پروژه استفاده شده است یک سرو موتور کوچک است که تنها ۹ گرم وزن دارد. این سرو موتور ، یکی از سروو موتور های اقتصادی موجود در بازار است که با قیمتی کمتر از ۱۰ هزارتومان ( بین ۲ الی ۳ دلار ) در بازار قابل تهیه است. از این سرو موتور به دلیل وزن پایینش در ساخت هواپیما های مدل استفاده می شود. البته از این سرو موتور برای کارهایی که نیاز به دقت زیاد و قدرت بالا دارند نمی توان استفاده نمود.

راه اندازی سرو موتور SG90

پالس استاندارد سروو موتور ها دارای دیوتی سایکل بین ۱ الی ۲ میلی ثانیه در دوره ۲۰ میلی ثانیه است ( فرکانس ۵۰ هرتز ) اما در عمل سروو موتور SG90 با پالس ۷۶۰ میکرو ثانیه در موقعیت ۰ و با پالس ۲۵۶۰ میکرو ثانیه در موقعیت MAX قرار می گرفت. اعداد موجود در کد اعداد استاندارد هستند ، اما اعداد عملی برای SG90 در ادامه همان خط از برنامه ب صورت کامنت نوشته شده است.

در این پروژه از Timer1 میکرو کنترلر ATmega32 که یک تایمر ۱۶ بیتی است برای ایجاد PWM در مد phase and frequency correct pwm mode استفاده شده است. فرکانس این تایمر ۱ مگاهرتز در نظر گرفته شده و مقدار بالای شمارش ( ICR1 ) برابر با ۱۰٫۰۰۰ در نظر گرفته شده است. اما شاید بخواهید بدانید این اعداد چگونه انتخاب شده اند ؟! این اعداد با توجه به فرمول زیر که از دیتاشیت ATmega32 استخراج شده است محاسبه شده اند. همانطور که می دانید فرکانس استاندارد کنترل سرو موتور ۵۰ هرتز است و فرکانس میکرو را بر روی ۸ مگاهرتز تنظیم نموده ایم و با در نظر گرفتن prescaler 8 ( فرکانس PWM را ۱ مگاهرتز در نظرگرفتیم ، در نتیجه N یا ضریب تقسیم فرکانس اصلی میکرو برابر ۸ خواهد بود ) بنا بر این باید با استفاده از فرمول زیر مقدار TOP که همان ICR1 است را به دست آوریم :

این مطلب را از دست ندهید  راه اندازی ماژول WiFi ESP8266 (قسمت دوم)

۵۰=۸٫۰۰۰٫۰۰۰/(۲*۸*TOP) => 50=8.000.000/(16*TOP) => TOP=10.000

 

فرمول محاسبه فرکانس PWM

با انجام این کار ما یک تایمر ۲۰ میلی ثانیه ای خواهیم داشت که در ۲۰ میلی ثانیه از ۰ تا ۱۰٫۰۰۰ را می شمارد ، بنابراین هر واحد شمارش این تایمر ، ۲ میکرو ثانیه زمان خواهد برد.

همانطور که می دانید برای مشخص کردن Duty Cycle خروجی OC1A ( پورت D5 ) از رجیستر OCR1A استفاده می نماییم. بر اساس توضیحات فوق هر یک واحد شمارش ۲ میکرو ثانیه زمان خواهد برد بنابر این اگر قصد داریم دیوتی سایکل ۱۰۰۰ میکرو ثانیه ( ۱ میلی ثانیه ) داشته باشیم کافیست OCR1A را برابر ۵۰۰ قرار دهیم. در صورتی که OCR1A را برابر ۷۵۰ قرار دهیم دیوتی سایکل ۱٫۵ میلی ثانیه خواهد بود.

با تعیین دیوتی سایکل بین ۱ میلی ثانیه و ۲ میلی ثانیه می توانید موقعیت سرو را تعیین کنید. به فرض مثال ۱ میلی ثانیه زاویه ۰ و ۲ میلی ثانیه زاویه ۱۸۰ ( برای یک سروو موتور ۱۸۰ درجه ) بنا بر این ۱۸۰ درجه در ۱۰۰۰ میکرو ثانیه مقدار دهی می شوند بنا بر این برای هر درجه باید ۵٫۵ میکرو ثانیه به دیوتی سایکل اضافه نمایید بدین سان با اعمال دیوتی سایکل ۱۰۵۵ میکرو ثانیه ای ، سرو در زاویه ۱۰ درجه قرار می گیرد و با اعمال دیوتی سایکل ۱۳۳۳ در موقعیت ۶۰ درجه قرار خواهد گرفت.

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

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


دانلود فایل با لینک مستقیم

  • ShahBaz

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی