آموزش AVRپروژه AVRپروژه اتمل استودیو

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

سلام. پروژه راه اندازی LED با PWM را در کامپایلر Atmel Studio اتمل استودیو آماده کردیم .

آموزش راه اندازی PWM در اتمل استودیو

در این پروژه میخواهیم از یکی از ویژگی های میکروکنترلر مگا 32 برای تنظیم میزان روشنایی LED 1W استفاده کنیم. روش ما برای تنظیم PWM است. ما PWM را آموزش میدهیم.

شماتیک مدار ایجاد PWM با اتمل استودیو

شماتیک مدار ایجاد PWM با اتمل استودیو

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

قطعات مورد نیاز برای پروژه PWM با AVR

  • میکروکنترلر Atmega 32 ( دیتاشیت مگا 32 )
  • منبع تغذیه 5 ولت
  • ال ای دی 1 وات
  • TIP127 ترانزیستور
  • دکمه ( دو عدد )
  • خازن 100 نانو فاراد
  • خازن 100 پیکو فاراد
  • مقاومت 100 اهم
  • مقاومت 1 کیلو اهم
  • کامپایلر اتمل استودیو ورژن 6.1 به بالا ( دانلود اتمل استودیو )
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

PWM چیست ؟

PWM اتمل استودیو
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 وجود دارد:

  1. فاز صحیح PWM
  2. PWM سریع

در این پروژه میخواهیم همه چیز را ساده نگه داریم یعنی میخواهیم از روش دوم یعنی fast PWM برای تولید سیگنال پی وی ام استفاده کنیم.

اول باید فرکانس PWM را  انتخاب کنیم. این معمولا به برنامه بستگی دارد زیرا هر فرکانسی که بیشتر از 50Hz باشد میتواند اجرا بشود.

به همین دلیل پریکالار (Precalar) کانتر کلاک را 1MHz انتخاب میکنیم. بنابراین ، هیچ مدل دیگری را انتخاب نمیکنیم. پریکالار یک عدد است که برای یک کانتر کلاک کمتر انتخاب میشود. به عنوان مثال اگر نوسان کلاک 8 مگاهرتز باشد میتوانیم یک پریکالار 8 را انتخاب کنیم تا کلاک 1 مگاهرتز را برای مقابله با آن دریافت کنیم. پریکالار بر اساس فرکانس انتخاب میشود  یعنی اگر ما میخواهیم پالس های زمانی بیشتری داشته باشیم باید از پریکالار های بیشتر استفاده کنیم.

حالا برای دریافت PWM FAST از کلاک 50Hz از میکروکنترلمان، باید بیت های مناسب را در رجیستر “TCCR0” فعال کنیم. این تنها رجیستری است که ما باید برای ایجاد PWM سریع 8 بیت فعال کنیم.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

توضیحات فعال سازی PWM

کانتر کنترل رجیستر
کانتر کنترل رجیستر


1. پریکالار CS00 ، CS01 ، CS02 (زرد) را برای کانتر کلاک انتخاب کنید. جدول پیشفرض و مناسب در جدول زیر نشون داده شده است. بنابراین CS00 = 1 و دو بیت دیگر صفر است.
انتخاب کلاک

انتخاب کلاک

2. WGM01 و WGM00 برای تغییر حالت های تولید موج، بر اساس جدول زیر، برای PWM Fast تغییر می کنند.
WGM00 = 1 و WGM01 = 1 را داریم .
موج
موج

3. حالا میدانیم که PWM یک سیگنال است که وظیفه آن روشن و خاموش کردن تعداد های مختلف است. تا به حال فرکانس و نوع PWM مان را  انتخاب کردیم. موضوع اصلی این پروژه الان شروع میشود برای گرفتن چرخه وظیفه های مختلف میخواهیم مقدار بین 0 و 255 (بدلیل استفاده از 8 بیت) انتخاب کنیم.

پایانی

برای مثال میخواهیم یک مقدار بین 0 و 180 انتخاب کنیم، این مقدار میتواند معکوس یا تکراری نشدنی باشد. به این ترتیب میتوانیم بگیویم که خروجی میتواند در هنگام رسیدن به حد نساب به شمارش کشیده بشود.

این انتخاب تغییر به بالا یا پایین توسط بیت CM00 و CM01 انتخاب میشود.
همانطور که در جدول نشان داده شده، خروجی برای مقایسه بالا و خروجی تا حداکثر مقدار (همانطور که در شکل پایین نشان داده شده) باقی میماند. باید این کار را انجام بدهیم تا COM00 = 1؛ COM01 = 1.

خروجی
خروجی

همانطور که در شکل زیر نشان داده شده ، OCR0 (Output Compare Register 0) بایت هستند که ارزشش را کاربر انتخاب می کند. بنابراین اگر OCR0 = 180 انتخاب کنیم ، میکروکنترلر باعث تغییر (به بالا) میشود وقتی که شمارنده از 180 به 0 می رسد.

OCR
OCR
در حال حاضر ، برای تغییر میزان روشنایی ال ای دی  باید چرخه وظیفه (DUTY RATIO) از سیگنال PWM را تغییر بدهیم. باید مقدار OCR0 را تغییر بدهیم. وقتی که این مقدار را تغییر میدهیم، شمارنده ما زمان زیادی را برای رسیدن به OCR0 لازم دارد. بنابراین کنترل کننده، خروجی را در زمان های مختلف بالا میبرد.
بنابراین برای چرخه های مختلف کاری PWM باید مقدار OCR0 را تغییر بدهیم.
در مدار دو دکمه داریم، یک دکمه برای افزایش OCR0 است و آن یکی دیگر برای کاهش این مقدار.

موارد موجود در فایل : سورس کامل

4.2 (5 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

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