تالار گفتگوی کیش تک/ kishtech forum
مد PWM در تایمرهای AVR (بخش اول) - نسخه‌ی قابل چاپ

+- تالار گفتگوی کیش تک/ kishtech forum (http://forum.kishtech.ir)
+-- انجمن: پردیس فناوری کیش (http://forum.kishtech.ir/forumdisplay.php?fid=1)
+--- انجمن: مهندسی الکترونیک و الکتروتکنیک (http://forum.kishtech.ir/forumdisplay.php?fid=169)
+--- موضوع: مد PWM در تایمرهای AVR (بخش اول) (/showthread.php?tid=38359)



مد PWM در تایمرهای AVR (بخش اول) - saedi1361 - 12-01-2020

[تصویر:  c2lh_01-2000px-pwm.svg_-800x667.png]
مد دیگری که تایمرهای AVR می توانند در آن کار کنند، مد PWM است. PWM که مخفف عبارت Pulse Width Modulation و به معنای مدولاسیون پهنای پالس می باشد، یک تکنیک رایج در انتقال اطلاعات و کنترل توان است. در این بحث یاد می گیریم که چگونه به آسانی این مدولاسیون را به وسیله ی میکروکنترلرهای AVR پیاده سازی نماییم. در این جلسه تمامی مفاهیم تئوری مرتبط با PWM گفته خواهد شدبرای معرفی مدولاسیون PWM از یک مثال ساده شروع می کنیم. فرض کنید همان طور در شکل زیر نمایش داده شده است، یک موتور DC به یک منبع تغذیه متصل شده باشد.
 
[تصویر:  hvhu_02-dc-motor.png]

مقادیر نامی این موتور به صورت  ۱۲ ولت و ۳۰۰ دور بر دقیقه است. یعنی اگر ولتاژ ۱۲ ولت به آن اعمال گردد با ۳۰۰ دور بر دقیقه کار می کند. حال اگر به این موتور ولتاژ ۶ ولت اعمال کنیم در ۱۵۰ دور بر دقیقه کار خواهد کرد. واضح است که اگر ولتاژ صفر به آن اعمال شود کلا در حال توقف باقی خواهد ماند. حال فرض کنید ولتاژ زیر را به موتور اعمال کنیم:
 
[تصویر:  brdz_03-50perc-duty-cycle-pwm.png]

با این ولتاژ موتور به چه صورت عمل خواهد کرد؟ آیا برای مدتی کار می کند و سپس مدتی متوقف می شود؟ در جواب باید گفت: هرگاه ولتاژ به موتور اعمال شود شروع به چرخیدن می کند، و هرگاه ولتاژ اعمالی صفر شود رو به توقف می رود اما فوراً متوقف نمی شود، بلکه مدتی طول می کشد تا به طور کامل بایستد. اما قبل از این که کاملا متوقف شود، دوباره ولتاژی به موتور اعمال شده و شروع به چرخیدن می نماید. اما باز هم نیاز به زمانی دارد تا به سرعت نهایی برسد ولی قبل از آن دوباره ولتاژ صفر می شود و این روال به همین ترتیب تکرار و تکرار می شود. در نهایت تاثیر چنین ولتاژی بر روی موتور بدین صورت است که موتور همواره در حال چرخش است ولی در سرعتی کمتر از سرعت نهایی اش. در این حالت سرعت موتور دقیقا با حالتی که یک ولتاژ ۶ ولت dc به آن اعمال گردد، یکی است. یعنی ۱۵۰ دور بر دقیقه.
حال اگر سیگنال ولتاژ ورودی را به صورتی که در شکل زیر نشان داده شده است، تغییر دهیم:
 
[تصویر:  j6fd_04-25perc-duty-cycle-pwm.png]

فکر می کنید چه اتفاقی بیفتد؟ اتفاقی که می افتد این است که چون زمان روشن بودن موتور کم می شود سرعت مؤثر موتور نیز کاهش خواهد یافت. در این حالت به ۷۵ دور بر دقیقه کاهش می یابد (چون زمان خاموشی سه برابر  زمان روشن بودن است و بنابراین: ۷۵ = ۳۰۰/۴). همان طور که قبلا نیز اشاره شد، مدولاسیون PWM مدولاسیونی است در آن پهنای پالس حامل، طبق سیگنال پیام آنالوگ تغییر می کند. همان طور که گفتیم این مدولاسیون در کنترل توان ورودی وسایل الکترونیکی از جمله موتور، LED ، اسپیکر و کاربرد دارد.

تولید موج PWM

ساده ترین راه برای تولید یک موج PWM به وسیله ی مقایسه ی یک شکل موجِ از قبل تعریف شده با سطح ولتاژی ثابت امکان پذیر است. این روش در شکل زیر نشان داده شده است.
 
[تصویر:  iw3y_06-compare-pwm.png]

در شکل بالا یک موج دندان اره ای از قبل تعریف شده ای داریم که با سطح ثابت DC مقایسه می شود. می توان سه نوع عملکرد برای مدهای خروجی مقایسه تعریف نمود:
مد معکوس: در این مد در صورتی که مقدار شکل موج بزرگ تر از سطح مقایسه باشد، خروجی “۱” شده و در غیر این صورت خروجی برابر با “۰” خواهد بود. این مد در شکل بالا با برچسب «الف» نشان داده شده است.
مد غیر معکوس: در این مد هنگامی که مقدار سطح مقایسه از مقدار شکل موج بیشتر باشد خروجی “۱” و در غیر این صورت خروجی برابر با “۰” خواهد شد. این مد نیز با برچسب «ب» در شکل بالا نشان داده شده است.
مد تغییر وضعیت: در این مد هر بار که تطبیقی در مقایسه رخ دهد خروجی تغییر وضعیت می دهد. یعنی اگر خروجی “۱” باشد صفر می شود و بالعکس.
البته ضرورتی ندارد که حتما مقدار مقایسه یک سطح dc ثابت باشد. گاهی در مخابرات آنالوگ/دیجیتال حالت هایی پیش می آید که نیاز به مقایسه ی موج دندان اره ای از پیش تعریف شده با یک موجی سینوسی داریم. شکل زیر این حالت را نشان می دهد:
 
[تصویر:  8tc2_07-pwmmodulation.jpg]

چرخه ی کار

چرخه ی کار یک موج PWM به صورت زیر تعریف می شود:
 
[تصویر:  zbif_d-cycle-formula.jpg]

این فرمول در شکل زیر روشن تر بیان شده است:
 
[تصویر:  yy98_08-duty-cycle-explained.png]

بررسی مفاهیم تایمر در رابطه با PWM

در این بخش برخی از مفاهیم مهم و اساسی تایمرها در رابطه با مد PWM را توضیح می دهیم. دیاگرام تایمر زیر را در نظر بگیرید:
 
[تصویر:  ztjs_09-timer-pwm.png]

همان طور که می دانیم میکروکنترلر AVR هر دو نوع تایمرهای ۸ و ۱۶ بیتی را در اختیار ما قرار می دهد. تایمرهای ۸ بیتی از ۰ تا ۲۵۵ می شمارند و دوباره صفر شده و دوباره به همین ترتیب به شمارش ادامه می دهند. تایمرهای ۱۶ بیتی از صفر تا ۶۵۵۳۵ شمرده و سپس صفر می شوند. بنابراین برای تایمر هشت بیتی حداکثر مقدار ۲۵۵ و برای تایمر ۱۶ بیتی ۶۵۵۳۵ می باشد.
تایمر همیشه از صفر تا مقدار TOP  (حد بالا) می شمرد و دوباره به صفر باز می گردد. در شکل «الف» نشان داده شده در بالا، ” ماکزیمم = حد بالا ” می باشد. درمد CTC هنگامی که در عمل مقایسه تطبیق رخ می دهد تایمر صفر می شود. در این حالت چون تطبیق در مقایسه قبل از سرریز شدن تایمر رخ می دهد مقدار TOP (حد بالا) کاهش می یابد. (به عنوان مثال اگر بخواهیم مقدار تایمر با عدد ۱۸۰ مقایسه شود، هنگامی که مقدار تایمر به ۱۸۰ رسید ریست می شود و بنابراین مقدار TOP برابر با ۱۸۰ می شود. )
در شکل بالا در قسمت «ب» کاهش یافتن “حد بالا” در مد CTC نشان داده شده است. خط زرد رنگ نشان می دهد که مقدار تایمر در صورتی که در مد نرمال باشد تا کجا بالا می رود. حال مد CTC می تواند به گونه ای توسعه یابد که TOP متغیر باشد (مانند شکل «ج» ). توجه کنید که مقدار TOP هیچ گاه از مقدار ماکزیمم بیشتر نخواهد شد. اکنون که با اصلاحات حد بالا (TOP) و  ماکزیمم (MAX)  و حد پایین (BOTTOM)  و تعاریف آن ها آشنا شدید، می توانیم مدهای کاری دیگری را نیز تعریف کنیم:

مدهای کاری PWM

به طور کلی سه نوع مد کاری در PWM داریم:

PWM سریع

PWM تصحیح فاز

PWM تصحیح فاز و فرکانس

PWM سریع

شکل زیر را در نظر بگیرید:
 
[تصویر:  35cn_10-fast-pwm.png]

یک شکل موج دندان اره ای داریم و آن را با مقداری ثابت مقایسه می کنیم (مثلا در شکل بالا مقدار «الف»). و در نتیجه خروجی PWM که در شکل بالا با برچسب «الف» و به رنگ قرمز نشان داده شده است را خواهیم داشت. حال فرض کنید که مقدار مقایسه را زیاد کنیم تا به سطح «ب» برسیم. در این حالت همانطور که در شکل نیز قابل مشاهده است، پهنای پالس کاهش می یابد و در نتیجه چرخه ی کار (duty cycle) نیز کم می شود. در شکل بالا PWM با چرخه ی کار کمتر با برچسب «ب» و با رنگ زرد مشخص شده است. اگر به شکل بالا دقت کنید متوجه می شوید که هر دو پالس تولید شده ی «الف» و «ب» دارای زمان پایان یکسان و زمان شروع متفاوت می باشند. در این مد از یک موج دندان اره ای استفاده می شود و رجیستر تایمر/کانتر TCNTn (که n می تواند ۰ یا ۱ و یا ۲ باشد) از مقدار «حد پایین» شروع به شمارش کرده و هنگامی که به مقدار «حد بالا» رسید می تواند سرریز شود و یا پس از تطبیق مقایسه ریست گردد و دوباره به مقدار «حد پایین» برگردد.

مد PWM تصحیح فاز

به دیاگرام های شکل زیر بنگرید:
 
[تصویر:  sc48_11-phase-correct-pwm.png]

در این مد به جای استفاده از شکل موج دندان اره ای از شکل موج مثلثی استفاده می شود. دیده می شود که در این جا نیز با افزایش مقدار سطح مقایسه چرخه ی ی کار (Duty Cycle) کاهش می یابد. ولی برخلاف مد PWM سریع ، در این مد فاز پالس تغییری نکرده و مانند قبل باقی می ماند. به همین دلیل است که به این مد، مد PWM سرتصحیح فاز می گویند. با مقایسه ی شکل های دو مد PWM سریع و مد PWM تصحیح فاز متوجه می شوید که فرکانس پالس PWM سریع دو برابر فرکانس پالس PWM تصحیح فاز می باشد.

مد PWM تصحیح فاز و فرکانس

عملا مد PWM تصحیح فاز و مد PWM تصحیح فاز و فرکانس، یکی هستند البته در صورتی که مقدار «حد بالا» یا همان TOP ثابت باقی بماند. اگر مقدار TOP متغیر داشته باشیم، فرکانس موج خروجی همان طور که در شکل زیر نیز نشان داده شده است متغیر خواهد بود. شکل زیر این مد را نشان می دهد:
 
[تصویر:  z110_12-frequency-and-phase-correct-pwm-description.png]

با توجه به این که در اغلب اوقات مقدار TOP (حد بالا) ثابت است، اهمیتی ندارد که از بین مد تصحیح فاز و تصحیح فرکانس و فاز کدام یک را انتخاب کنیم.

مد PWM و میکروکنترلر AVR

اکنون مفاهیم پایه ای PWM را می دانیم، این تصمیم گیری به عهده ی ما است که :
کدام تایمر را انتخاب کنیم؟
کدام مد کاری را انتخاب کنیم؟
کدام مد خروجی مقایسه انتخاب کنیم؟

انتخاب تایمر

در میکروکنترلر AVR مد PWM در هر سه تایمر موجود است. «تایمرهای صفر و دو» دقت ۸ بیتی را برای ما فراهم می آورند در حالی که «تایمر یک» دقت ۱۶ بیتی را در اختیارمان قرار می دهد. در دقت ۸ بیتی ۲۵۶ گام جداگانه موجود است در حالی که در دقت ۱۶ بیتی ۶۵۵۳۶ گام جداگانه وجود دارد. حال فرض کنید که می خواهیم سرعت یک موتور DC را کنترل کنیم. در این مورد داشتن ۶۵۵۳۶ گام کاملا بی استفاده است. به همین خاطر از یک تایمر ۸ بیتی برای این کار استفاده می کنیم. هرچند برای این کاربرد  ۸ بیت هم بیش از حد زیاد است ولی انتخاب دیگری برایمان باقی نمی ماند. واضح است که تفاوت چندانی بین ۱۲۳/۲۵۶ سرعت موتور و ۱۲۴/۲۵۶ سرعت موتور وجود ندارد. اما هنگامی که داریم از سروموتور استفاده می کنیم باید از تایمر ۱۶ بیتی استفاده کنیم که در جلسات آتی در مورد آن صحبت خواهیم کرد.

انتخاب مد کاری

اگر بخواهیم سرعت یک موتور DC و یا نور یک LED را کنترل کنیم، می توان از هریک از مدهای کاری استفاده کرد. ولی در صورتی که بخواهیم از تایمر برای کارهای انتقال اطلاعات و یا نمونه برداری استفاده کنیم باید مد PWM سریع را به کار ببریم. البته برای کاربردهای عمومی مد PWM تصحیح فاز بهتر است.

انتخاب مدهای خروجی مقایسه

بین سه مد معکوس، غیرمعکوس و تغییر وضعیت، مد غیرمعکوس منطقی ترین مد است. به این دلیل که با افزایش سطح مقایسه، چرخه ی کار افزایش می یابد. گرچه می توان هریک از این سه مد را انتخاب نمود.