پروژه اتمل استودیوپروژه الکترونیکپروژه های AVRپروژه های تابلو روان

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

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

پروژه راه اندازی PWM اتمل استودیو

پروژه راه اندازی PWM اتمل استودیو
پروژه راه اندازی PWM اتمل استودیو

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

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

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

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

PWM چیست ؟

PWM اتمل استودیو
PWM اتمل استودیو

در تصویر بالا اگر سوئیچ به طور مداوم وصل باشد لامپ هم به طور مداوم روشن خواهد ماند. اگر در یک دوره ی 10 میلی ثانیه ای، 8 ثانیه سوئیچ را متصل و 2 ثانیه قطع کنیم، لامپ 80% نور میدهد. یعنی از 80% ولتاژ باتری استفاده کرده ایم.

تصویر را ببینید اگر سوئیچ را 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 در اتمل استودیو

در میکروکنترلر ما چند راه برای تولید 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 بیت) انتخاب کنیم.

حتما ببینید :  پروژه سرعت سنج GPS با آردوینو و نمایشگر OLED

پایانی

برای مثال میخواهیم یک مقدار بین 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 است و آن یکی دیگر برای کاهش این مقدار.

فیلم عملکرد مدار : کلیک کنید !

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

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

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

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

دکمه بازگشت به بالا