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

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

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

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

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

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

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

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

حتما ببینید :  آموزش کامل پروژه IoT سیستم حضور و غیاب اثر انگشت اینترنتی با آردوینو (آنلاین)

پایانی

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

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

موارد موجود در فایل : شماتیک کامل ، فایل سورس ، و …

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

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

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

محمد رحیمی

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

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

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

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