آیرنکس موظف به پاسخگویی و رفع اشکال هر مطلب است
برای پشتیبانی از انجمن ، نظرات و تلگرام میتونید اقدام کنید | تلگرام : 09358790909
کانال تلگرام
اتمل استودیوپروژهتابلو روان

PWM اتمل استودیو (پروژه PWM در Atmel Studio)

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

سلام

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

توضیحات پروژه

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

PWM چیه ؟

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

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

PWM اتمل استودیو
بازم تصویر رو ببینید ، ما توی اینجا 2 میلی ثانیه متصل کردیم سوئیچ رو ، و 8 میلی ثانیه قطع بوده . پس یعنی متوسط ولتاژ خروجی ما 20% هستش !
در ATMEGA32A ما چهار کانال PWM داریم، یعنی OC0، OC1A، OC1B و OC2. در اینجا ما قصد داریم از کانال PWM OC0 برای تغییر روشنایی LED استفاده کنیم.

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

شماتیک پروژه PWM اتمل استودیو

توی میکروکنترلر مگا 32 ، ما 4 کانال PWM ، چهار پین رو تعیین کردیم . ما فقط میتونیم خروجی پی وی ام رو فقط توی این پین ها بگیریم . از اونجایی که ما از PWM0 استفاده میکنیم باید سیگنال PWM رو توی پین OC0 (پورت B3)  بگیریم. همونطور که توی تصویر پایین میبینید ، پایه ترانزیستور رو به پین OC0 متصل میکنیم تا به ال ای دی قدرت بدیم . توی اینجا ما دو کانال PWM هشت بیتی داریم . ما میخوایم فقط از یکی از کانال های PWM هشت بیتی استفاده کنیم .

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

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

موارد موجود توی فایل دانلودی : شماتیک ، سورس پروژه ، فایل هگز و …

[post_shop]

شماتیک

شماتیک
شماتیک

توی میکروکنترلر ما چند راه برای تولید 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 هستش و اون یکی دیگه برای کاهش این مقدار .
برای دانلود فایل های پروژه کلیک کنید !
[/post_shop]

 

ما برای هر پروژه زحمت زیادی میکشیم ، خواهشمندیم مطالب VIP رو منتشر نکنید . (پیگرد قانونی دارد)

همچنین هر سوالی دارید میتونید توی نظرات یا انجمن از ما بپرسید !

درحال ارسال
امتیاز دهی کاربران
5 (1 رای)
برچسب ها
اشتراک ویژه رایگان میخوای ؟ کلیک کن !

محمد رحیمی

محمد رحیمی هستم مدیر وبسایت آیرنکس ! در سال 1394 سایت ای وی آر استودیو رو طراحی کردم (ای وی آر استودیو رو حذف کردیم) . و در تیر ماه 1396 سایت آیرنکس رو طراحی کردم و در خدمت شمام !

مطالب مرتبط

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

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

درحال ارسال

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

بستن