راه اندازی PWM دیمر در میکروکنترلر AVR با اتمل استودیو
محتویات
سلام. پروژه راه اندازی LED با PWM را در کامپایلر Atmel Studio اتمل استودیو آماده کردیم .
آموزش راه اندازی PWM در اتمل استودیو
در این پروژه میخواهیم از یکی از ویژگی های میکروکنترلر مگا 32 برای تنظیم میزان روشنایی LED 1W استفاده کنیم. روش ما برای تنظیم PWM است. ما PWM را آموزش میدهیم.
شماتیک مدار ایجاد PWM با اتمل استودیو
خازن ها به دو عدد دکمه وصل هستند تا از نویز جلوگیری کنند. هر بار که دکمه را فشار میدهیم بعضی نویز ها در داخل دکمه بوجود می آیند. هر چند که این نویز ها در میلی ثانیه تثبیت شده اند ولی برای میکروکنترلر بهتر است که در این زمینه هم ثبات داشته باشد. میتوانیم نویز را با استفاده از نرم افزار و سخت افزار حذف کنیم. در این پروژه از روش سخت افزار استفاده میکنیم و برای هر دکمه یک خازن میگذاریم. خازن ها اثر نویز دکمه ها را خنثی می کنند.
قطعات مورد نیاز برای پروژه PWM با AVR
- میکروکنترلر Atmega 32 ( دیتاشیت مگا 32 )
- منبع تغذیه 5 ولت
- ال ای دی 1 وات
- TIP127 ترانزیستور
- دکمه ( دو عدد )
- خازن 100 نانو فاراد
- خازن 100 پیکو فاراد
- مقاومت 100 اهم
- مقاومت 1 کیلو اهم
- کامپایلر اتمل استودیو ورژن 6.1 به بالا ( دانلود اتمل استودیو )
PWM چیست ؟
در تصویر بالا اگر سوئیچ به طور مداوم وصل باشد لامپ هم به طور مداوم روشن خواهد ماند. اگر در یک دوره ی 10 میلی ثانیه ای، 8 ثانیه سوئیچ را متصل و 2 ثانیه قطع کنیم، لامپ 80% نور میدهد. یعنی از 80% ولتاژ باتری استفاده کرده ایم.
پیشنهاد میکنم جهت یادگیری کامل PWM، مقاله PWM چیست را مشاهده کنید.
تصویر را ببینید اگر سوئیچ را 5 میلی ثانیه متصل و 5 ثانیه غیر متصل کنیم، در یک دوره ی 10 میلی ثانیه ای، متوسط ولتاژ خروجی 50% خواهد شد. اگر باتری 5 ولتی باشد و متوسط خروجی 50% باشد، ولتاژ خروجی 2.5 ولت میشود.
و دوباره تصویر را ببینید در اینجا 2 میلی ثانیه سوئیچ را متصل کردیم. و 8 میلی ثانیه قطع بوده است. پس یعنی متوسط ولتاژ خروجی 20% می باشد.
در ATMEGA32A چهار کانال PWM وجود دارد. یعنی OC0، OC1A، OC1B و OC2. در اینجا قصد داریم از کانال PWM OC0 برای تغییر روشنایی LED استفاده کنیم.
در میکروکنترلر مگا 32 .4 کانال PWM ، چهار پین را تعیین میکند. میتوانیم خروجی پی وی ام را فقط در این پین ها بگیریم. از آنجایی که از PWM0 استفاده میکنیم باید سیگنال PWM را در پین OC0 (پورت B3) بگیریم. همانطور که در تصویر پایین میبینید، پایه ترانزیستور را به پین OC0 متصل میکنیم تا به ال ای دی قدرت بدهیم. در اینجا ما دو کانال PWM هشت بیتی داریم. میخواهیم فقط از یکی از کانال های PWM هشت بیتی استفاده کنیم.
ایجاد موج PWM در اتمل استودیو و AVR
در میکروکنترلر ما چند راه برای تولید PWM وجود دارد:
- فاز صحیح PWM
- PWM سریع
در این پروژه میخواهیم همه چیز را ساده نگه داریم یعنی میخواهیم از روش دوم یعنی fast PWM برای تولید سیگنال پی وی ام استفاده کنیم.
اول باید فرکانس PWM را انتخاب کنیم. این معمولا به برنامه بستگی دارد زیرا هر فرکانسی که بیشتر از 50Hz باشد میتواند اجرا بشود.
به همین دلیل پریکالار (Precalar) کانتر کلاک را 1MHz انتخاب میکنیم. بنابراین ، هیچ مدل دیگری را انتخاب نمیکنیم. پریکالار یک عدد است که برای یک کانتر کلاک کمتر انتخاب میشود. به عنوان مثال اگر نوسان کلاک 8 مگاهرتز باشد میتوانیم یک پریکالار 8 را انتخاب کنیم تا کلاک 1 مگاهرتز را برای مقابله با آن دریافت کنیم. پریکالار بر اساس فرکانس انتخاب میشود یعنی اگر ما میخواهیم پالس های زمانی بیشتری داشته باشیم باید از پریکالار های بیشتر استفاده کنیم.
حالا برای دریافت PWM FAST از کلاک 50Hz از میکروکنترلمان، باید بیت های مناسب را در رجیستر “TCCR0” فعال کنیم. این تنها رجیستری است که ما باید برای ایجاد PWM سریع 8 بیت فعال کنیم.
توضیحات فعال سازی PWM
1. پریکالار CS00 ، CS01 ، CS02 (زرد) را برای کانتر کلاک انتخاب کنید. جدول پیشفرض و مناسب در جدول زیر نشون داده شده است. بنابراین CS00 = 1 و دو بیت دیگر صفر است.
انتخاب کلاک
3. حالا میدانیم که PWM یک سیگنال است که وظیفه آن روشن و خاموش کردن تعداد های مختلف است. تا به حال فرکانس و نوع PWM مان را انتخاب کردیم. موضوع اصلی این پروژه الان شروع میشود برای گرفتن چرخه وظیفه های مختلف میخواهیم مقدار بین 0 و 255 (بدلیل استفاده از 8 بیت) انتخاب کنیم.
پایانی
برای مثال میخواهیم یک مقدار بین 0 و 180 انتخاب کنیم، این مقدار میتواند معکوس یا تکراری نشدنی باشد. به این ترتیب میتوانیم بگیویم که خروجی میتواند در هنگام رسیدن به حد نساب به شمارش کشیده بشود.
این انتخاب تغییر به بالا یا پایین توسط بیت CM00 و CM01 انتخاب میشود.
همانطور که در جدول نشان داده شده، خروجی برای مقایسه بالا و خروجی تا حداکثر مقدار (همانطور که در شکل پایین نشان داده شده) باقی میماند. باید این کار را انجام بدهیم تا COM00 = 1؛ COM01 = 1.
همانطور که در شکل زیر نشان داده شده ، OCR0 (Output Compare Register 0) بایت هستند که ارزشش را کاربر انتخاب می کند. بنابراین اگر OCR0 = 180 انتخاب کنیم ، میکروکنترلر باعث تغییر (به بالا) میشود وقتی که شمارنده از 180 به 0 می رسد.
بنابراین برای چرخه های مختلف کاری PWM باید مقدار OCR0 را تغییر بدهیم.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود