خانه / چگونه بسازیم / الکترونیکی / کنترل سرعت موتور DC با PWM در AVR Atmega32

کنترل سرعت موتور DC با PWM در AVR Atmega32

استفاده از PWM (مدولاسیون پهنای پالس) برای کنترل دستگاه به عنوان یک روش معمول در سیستم های مختلف است.برای مثال از آن برای کنترل شدت نور یک LED یا کنترل سرعت موتور DC می توانید استفاده کنید. در این مقاله، ما توضیح خواهیم داد که چگونه PWM را از AVR Atmega32 بدست آورید و بایدPWM  خروجی را به یک موتور DC کوچک برای تغییر سرعت آن اعمال کنید.

برای دریافت خروجی موج PWM از AVR، باید از تایمر شمارنده های داخلی میکرو های AVR استفاده کنید. این ماژول می تواند در چندین حالت برای تولید سیگنال های PWM مختلف با مشخصات متفاوت استفاده شود. در اینجا توضیح خواهیم داد که چگونه از شمارنده داخلی در حالت” Phase Correct PWM” استفاده کنید. ATmega32 دارای سه timer/counter است که ما از timer/counter 0 استفاده می کنیم.

در حالت” Phase Correct PWM”، شمارنده تعداد دفعات از صفر تا مقدار حداکثر آن (۰xFF) را می شمارد و سپس از مقدار حداکثر به مقدار صفر باز می گردد. پین خروجی (OC0) هنگامی که شمارنده رو به بالا می رود به مقدار معینی به نام” Compare value” می رسد،صفر می شود و زمانی که شمارنده با همان مقدار در حال شمارش روبه پایین می رسد یک می شود. این مقدار مقایسه شده(Compare value) به وسیله نرم افزار در یک رجیستر به نام OCR0(Output Compare Register) set شده است، در حالی که مقدار شمارشگر خود در یک رجیستر به نام TCNT0 ذخیره می شود. زمانی که مقدار TCNT0 با OCR0 یکی می شود را یک Compare Match می نامند. نمودار زمانی زیر این عملیات را نشان می دهد.

نمودار PWM برای تنظیم Duty Cycle برای کنترل سرعت موتور DC
نمودار PWM برای تنظیم Duty Cycle برای کنترل سرعت موتور DC

شما هم چنین می توانید PWM خروجی را با تغییر مقادیر بیت های ) COM00 و COM01) در رجیستر TCCR تغییر دهید. در این نمونه، پین خروجی) OC0) زمانی که شمارشگر بالای Compare Matchاست یک می شود و زمانی که شمارشگر پایین  Compare Matchاست صفر می شود و شکل موج در نمودار زمانی زیر نشان  داده شده است.

در ساختنی بخوانید :  آموزش ساخت چراغ راهنمایی با آردوینو [Arduino]

 

در اینجا می توانیم دیوتی سایکل PWM را با استفاده از فرمول زیرمحاسبه کنیم:

در این مقاله، ما از ۳ دیوتی سایکل متفاوت با تغییر مقدار مقایسه (OCR0) بر اساس push buttonهای فشار داده شده توسط کاربر استفاده خواهیم کرد و تغییر در سرعت موتور را مشاهده خواهیم کرد.

پیکربندی اولیه PWM در دو مرحله ساده انجام می شود:

  1. پیکربندی رجیستر TCCR0
  2. تنظیم مقدار مقایسه در OCR

۱-پیکربندی رجیستر TCCR0

W R/W R/W R/W R/W R/W R/W R/W
FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00
  • بیت های WGM00 و WGM01 را به ترتیب ۱ و ۰ قرار دهید. این کار مد phase correct PWM را فعال می کند.
  • بیت های COM00 و COM01 را به ترتیب ۰ و ۱ قرار دهید. این به این معنی است که PWM تولید شده PWM معکوس خواهد بود.
  • بیت های CS00 و CS01 و CS02 را به ترتیب ۱، ۰ و ۱ بدهید. این به این معنی است که کلاک شمارنده ، کلاک سیستم تقسیم بر ۱۰۲۴ خواهد بود.

۲- تنظیمات مقدار مقایسه در رجیستر OCR

همان که در بالا گفته شد دیوتی سایکل توسط فرمول Duty Cycle =  بدست می آید.

  • بنابراین تنظیم OCR0= 178 یک PWM با دیوتی سایکل ۳۰% نتیجه می دهد.
  • تنظیم OCR0= 102 یک PWM با دیوتی سایکل ۶۰% نتیجه می دهد.
  • تنظیم OCR0= 25 یک PWM با دیوتی سایکل ۹۰% نتیجه می دهد.

در برنامه، کارهای زیر را انجام خواهیم داد

  • خواندن سه push button متصل به پین های(۰، ۱ و۲) PORTD
  • اگر push button اول فشار داده شود، OCR0=25 تنظیم می کنیم. چرخه کاری ۹۰% است- موتور با سرعت بالا می چرخد.
  • اگر push button دوم فشار داده شود، OCR0=102 تنظیم می کنیم. چرخه کاری ۶۰% است- موتور با سرعت متوسط می چرخد.
  • اگر push button سوم فشار داده شود، OCR0=178 تنظیم می کنیم. چرخه کاری ۳۰% است- موتور با سرعت پایین می چرخد.
در ساختنی بخوانید :  آموزش ساخت سرعت سنج دوچرخه با برد آردوینو و میکروکنترلر Atmega 328p

و باید ببینیم که سرعت موتور متفاوت خواهد بود.

موتور الکتریکی DC

هنگام اتصال موتور DC به یک MCU، نباید موتور را از یکی از پین های MCU تغذیه کنید چون جریان بالا و افزایش ولتاژ ناگهانی موتور، ممکن است به MCU آسیب برساند. در عوض باید موتور را به یک منبع تغذیه متصل کنید و سپس منبع تغذیه(روشن/ خاموش) را با استفاده از PWM به پایه یک ترانزیستور Darlington( که معمولاً ترانزیستور راه انداز موتور نامیده می شود) وصل کنید. به این ترتیب سرعت موتور بر اساس دیوتی سایکل PWM متفاوت است. اتصال کلی مدار در شماتیک زیر نشان داده شده است. توجه داشته باشید که پین OC0، PB3 است(پورت B، پین ۳).

دیاگرام مدار کنترل سرعت موتور DC با ATMEGA32

در نهایت در زیر کد برنامه، تصویر مدار و یک ویدیو که عملکرد مدار را نشان می دهد آمده است.

برنامه نویسی- کنترل سرعت موتور DC با استفاده از PWM در AVR:

 

در اینجا ساختنی نحوه کنترل سرعت موتور DC توسط میکرو کنترلر avr به پایان می رسد. اگر مشکلی در اجرای این ساختنی داشتید در قسمت نظرات سول خودتان را مطرح کنید.

منبع

خلاصه مطلب
کنترل سرعت موتور های DC با مایکرو کنترلر های AVR
عنوان مطلب
کنترل سرعت موتور های DC با مایکرو کنترلر های AVR
توضیح کوتاه
با استفاده از میکرو کنترلر ATMEGA32 موتور های DC را کنترل کنید.
نویسنده
ساختنی
ساختنی

بیشتر بخوانید:

آموزش ساخت موتور براشلس یا بدون جاروبک برای پهپادها... موتور براشلس یا بدون جاروبک یکی از اجزای اصلی هر پهپاد یا هوای بدون سرنشین است. فرقی نمی کند بخواهید تری کوپتر یا کوادکوپتر بسازید، انتخاب موتور براشل...
آموزش ساخت پروگرامر ISP برای میکروکنترلرهای ATmega32... میکروکنترلرهای ATmega32 از سه روش برنامه ریزی پشتیبانی می کنند: برنامه ریزی موازی ،برنامه ریزی در سیستم، برنامه ریزی ISP یا سریال پروگرامینگ و برنامه ...
فانشن ژنراتور یا تولید کننده شکل موج بسازید !... اگر دانشجوی رشته الکترونیک ، یکی از دوست داران پروژه های الکترونیکی و یا در حال آموزش الکترونیک هستید و یا اگر دوست دارید در کارگاه شخصی خودتان یک دست...
با برد ATtiny85 یک توان سنج یا پاورمتر ساده و کاربردی بسازید... در این ساختنی طرز ساخت توان سنج یا پاورمتر با برد ATtiny85 را یاد می گیرید. این توان سنج قابلیت اندازه گیری ولتاژ (V)، جریان(mA) و مصرف انرژی انباشته ...
یک تاس الکترونیکی با تراشه میکرو کنترلر Attiny84 بسازید... در این ساختنی یاد می‌گیرید با تراشه اتمل Attiny84 یک تاس الکترونیکی بسازید. اگر اهل بازی با تاس باشید، قطعاً با تاس معمولی راحت‌تر خواهید بود. اما ساخ...
دستگاه تست باتری بسازید و ظرفیت باتری‌های قابل‌شارژ را اندازه بگیرید... اگر زیاد با دستگاه ها و پروژه های الکترونیکی کار می کنید، احتمالاً یک جعبه پر از باتری دارید. پیدا کردن باتری های قابل استفاده یا قابل شارژ بین بین آن...

درباره سید علی طلاکش

سید علی طلاکش
سید علی طلاکش ، مهندس الکترونیک و نویسنده وبسایت ساختنی است .

پیشنهاد می کنیم

نوسان ساز IPWM بسازید

ساخت ژنراتور نوسان ساز IPWM با استفاده از آردوینو

مدولاسیون پهنای پالس (PWM) مبنایی برای کنترل در الکترونیک قدرت است. اکثردستگاه های قدرت نیمه …

پاسخ دهید