مدولاسیون پهنای پالس (Pulse Width Modulation) یا PWM تکنیکی است که برای کنترل دستگاههای آنالوگ با استفاده از سیگنال دیجیتال استفاده میشود.
با استفاده از این تکنیک، میتوانیم موتورها، چراغها و تجهیزات دیگر را با استفاده از سیگنال PWM تولیدشده کنترل کنیم. نکته مهمی که در اینجا باید به آن توجه کرد این است که PWM یک سیگنال آنالوگ واقعی نیست. در واقع، PWM یک سیگنال دیجیتال است که به گونهای اصلاح شده که سیگنال آنالوگ باشد.
Pwm چیست؟
سیگنالهای دیجیتال سیگنالهایی هستند که میتوان آنها را با 0 یا 1 نمایش داد. از طرف دیگر، سیگنالهای آنالوگ دارای مقادیر بیشتری از مقادیر ممکن 0 یا 1 هستند. هر دوی این سیگنالها در الکترونیک استفاده میشوند. اگر نیاز به ورودی آنالوگ داشته باشیم، میتوانیم دادههای آنالوگ بلادرنگ را از یک سنسور دریافت کنیم و سپس با استفاده از مبدل آنالوگ به دیجیتال (ADC)، آن را به دادههای دیجیتال برای میکروکنترلر تبدیل کنیم.
اما اگر نیاز به کنترل یک دستگاه آنالوگ با استفاده از میکروکنترلر داشته باشیم، باید چه کنیم؟ برخی از میکروکنترلرها دارای مبدل دیجیتال به آنالوگ (DAC) داخلی برای خروجی سیگنال آنالوگ واقعی به منظور کنترل دستگاههای آنالوگ هستند و حتی میتوان از DAC خارجی نیز استفاده کرد. اما تولید DAC از نظر هزینه نسبتاً گران است و همچنین فضای فیزیکی سیلیکونی زیادی را اشغال میکند. برای غلبه بر این مسائل و دستیابی آسان به عملکرد DAC، میتوانیم از یک روش بسیار مقرون به صرفهتر، یعنی تکنیک PWM، استفاده کنیم.
PWM چیست؟
با قطعات الکتریکی میتوان جریان تحویلی مدار را کنترل کرد، حتی اگر تنها کنترلی که داریم روشن و خاموش کردن منبع تغذیه باشد. در واقع، برای کنترل جریان تحویلی به دستگاه، میتوانیم به سرعت منبع تغذیه را به صورت الگوی روشن و خاموش کنیم. روشن نگه داشتن منبع برای مدتی بیشتر از مدت زمان خاموش، میانگین سطح توان را افزایش میدهد و انجام عکس آن، سطح توان متوسط را کاهش میدهد.
میتوانیم طیف متنوعی از سرعتها (آنالوگ) را برای موتورها و سایر بارها تولید کنیم، حتی اگر در واقعیت فقط بین دو حالت ممکن روشن و خاموش (دیجیتال) سوئیچ کنیم. این دقیقاً همان مفهوم سیگنال PWM است.
با یک مثال، مفهوم PWM را واضحتر بیان میکنیم. تصور کنید یک پنکه سقفی در خانه خود دارید که بدون تنظیمکننده سرعت است و میتوانید آن را روشن کنید تا به تدریج به حداکثر سرعت برسد یا میتوانید آن را خاموش کنید. حال اگر از بخواهید فن را با حداکثر 50 درصد سرعتش روشن کنید باید چه کنید؟ آیا بدون تنظیمکننده سرعت این کار امکانپذیر است؟ در حالی که انجام این کار واقعاً توصیه نمیشود، میتوانید با کمی بازی با سوئیچ پنکه سقفی به این سرعت دست پیدا کنید.
میدانیم که پنکه در لحظهای که آن را روشن میکنیم فوراً به حداکثر سرعت نمیرسد و همچنین بلافاصله بعد از خاموش شدن متوقف نمیشود. سوئیچ را روشن کنید، صبر کنید تا ببینید فن به 50 درصد سرعت رسیده است و سپس آن را خاموش کنید. با کم شدن سرعت، دوباره آن را روشن کنید. با استفاده از این تأخیر، میتوانیم پنکه را روشن یا خاموش کنیم، آن را سریعتر یا کندتر کنیم تا به سرعتی که میخواهیم برسیم. نکته مهمی که در اینجا باید به آن توجه داشت این است که تعویض مداوم حالت روشن و خاموش پنکه باعث میشود که جریان زیادی را مصرف کند، بنابراین باز هم تکرار میکنیم که انجام این کار توصیه نمیشود و آنچه بیان شد تنها یک مثال برای آشنایی با مفهوم PWM بود.
روشن و خاموش شدن یک پالس (Pulse) است. مدت زمانی که پالس در حالت بالا (On یا روشن) نگه داشته میشود، عرض یا پهنای پالس (Pulse Width) نام دارد. پارامتر T کل زمان صرف شده برای تکمیل یک چرخه (Cycle) را نشان میدهد. مدولاسیون نیز به تغییر سیگنال اصلی برای دریافت سیگنال مورد نظر اشاره دارد. بنابراین، در واقع ما یک سیگنال یا پالس را طوری تغییر میدهیم که برای مدت زمانی که نیاز داریم، روشن باشد، و به همین دلیل است که به آن مدولاسیون پهنای پالس میگوییم.
کاربردهای PWM
میتوانیم توان تحویلی به دستگاههای الکتریکی را با استفاده از سیگنالهای مدولاسیون عرض پالس (PWM) کنترل کنیم. در حال حاضر، این تکنیک به دلیل راندمان بالا، تلفات توان کم و توانایی آن در کنترل دقیق توان، در بسیاری از کاربردها، مانند موارد زیر، مورد استفاده قرار میگیرد:
- کنترل سرعت موتورهای DC و سروو موتورها
- کاهش نور LED و چشمک زدن نرم
- رمزگذاری دادهها و انتقال از طریق خط داده در مخابرات
- ایجاد جلوههای صوتی مختلف
چرخه کاری PWM
در سیگنالها، ما منطق بالا را به عنوان “On” تعریف میکنیم. برای نشان دادن مدت زمان “On”، از مفهوم چرخه وظیفه یا چرخه کاری (Duty Cycle) استفاده می کنیم. به عبارت ساده، چرخه وظیفه درصد زمانی را نشان میدهد که یک سیگنال دیجیتال در یک بازه یا دوره “On” یا روشن است. چرخه وظیف به صورت درصد (%) یا عددی در بازه 0 تا 1 بیان میشود.
یک سیگنال با حداکثر ولتاژ 10 ولت را در نظر بگیرید. اگر سیگنال یک ثانیه طول بکشد تا یک چرخه کامل شود و سیگنال برای 0.5 ثانیه روشن و برای 0.5 ثانیه دیگر خاموش باشد، چرخه وظیفه 50٪ است و 5 ولت را به عنوان میانگین ولتاژ خروجی دریافت خواهیم کرد. اگر سیگنال برای 0.75 ثانیه روشن و برای 0.25 ثانیه دیگر خاموش باشد، چرخه کاری 75٪ و خروجی 7.5 ولت خواهد بود. تصویر زیر نشاندهنده سیگنالهایی با چرخههای کاری مختلف و میانگین ولتاژ تولید شده توسط آنها است.
چرخه کاری را میتوان طبق فرمول زیر محاسبه کرد:
D درصد چرخه وظیفه، Ton مدت زمان On بودن سیگنال و Period کل زمان یک سیکل (Ton + Toff) است.
پس از محاسبه چرخه وظیفه، میتوانیم ولتاژ متوسط سیگنال را با استفاده از فرمول زیر محاسبه کنیم:
که در آن، Vavg (ولتاژ متوسط سیگنال)، D (چرخه وظیفه برحسب درصد )و Vmax (حداکثر ولتاژ سیگنال ) است.
فرکانس PWM
درست مانند چرخه وظیفه، فرکانس نیز یک مؤلفه اصلی است که رفتار سیگنال PWM را تعریف میکند. تعداد دفعاتی که یک سیگنال در هر ثانیه تکرار میشود فرکانس است. فرکانس مورد نیاز بستگی به برنامه دارد. به عنوان مثال، اگر بخواهیم هنگام کنترل LEDها نور مناسبی داشته باشیم، فرکانس سیگنال PWM باید به اندازه کافی بالا باشد. هنگامی که LED در حال روشن و خاموش شدن است، چرخه کاری 20٪ در 1 هرتز برای چشم انسان خوشایند نیست. با این حال، اگر فرکانس را به 100 هرتز افزایش دهیم، شاهد کاهش نور مناسب LED خواهیم بود.
تولید PWM در میکروکنترلرها
راههای مختلفی برای تولید سیگنال PWM وجود دارد. میتوانیم از یک آی سی تایمر 555 یا حتی یک مدار مقایسهکننده برای تولید PWM استفاده کنیم. اما سادهترین راه برای مشاهده عملکرد PWM استفاده از میکروکنترلر است. میتوانیم یک سیگنال PWM را با بردهای میکروکنترلر معروف مانند Arduino Uno فقط با تایپ کردن چند خط در کدمان تولید کنیم.
مدارهای PWM موجود در میکروکنترلرها از تایمرها استفاده میکنند، اما به صورت داخلی به پینهای خاصی متصل هستند. برای مثال، اگر بخواهیم یک سیگنال PWM برای تغییر سرعت موتور DC با آردوینو Uno تولید کنیم، میتوانیم از تابع آنالوگ Write(pin, value) آردوینو استفاده کنیم. با این حال، نکته مهمی که در اینجا باید به آن توجه کرد این است که همه پینهای Arduino Uno قادر به تولید سیگنال PWM نیستند. در مورد آردوینو Uno، تنها 6 پایه ورودی/خروجی (3،5،6،9،10،11) وجود دارد که از تولید PWM پشتیبانی میکنند که با یک tilde (~) در جلوی شماره پین خود در برد مشخص شدهاند.
تابع ()analogWrite از مقادیر 0 تا 255 پشتیبانی میکند، که عبور از 0 نشاندهنده 0٪ چرخه کاری و 255 نشاندهنده یک چرخه کاری 100٪ است.
1 2 3 4 | analogWrite(PWM_PIN, 64); // 25% Duty Cycle or 25% of max speed analogWrite(PWM_PIN, 127); // 50% Duty Cycle or 50% of max speed analogWrite(PWM_PIN, 191); // 75% Duty Cycle or 75% of max speed analogWrite(PWM_PIN, 255); // 100% Duty Cycle or full speed |
سایر میکروکنترلرها میتوانند در اجرای خود پیچیدهتر باشند، اما در پایینترین سطح، معمولاً بر اساس همان اصول کار می کنند.
پرسشهای متداول درباره PWM
در این بخش، به چند پرسش رایج درباره PWM پاسخ میدهیم.
۱. تکنیک مدولاسیون پهنای پالس چیست؟
مدولاسیون پهنای پالس یا PWM یک تکنیک کنترلی رایج است که سیگنالهای آنالوگ را از قطعات دیجیتال مانند میکروکنترلرها تولید میکند. در تکنیک PWM، انرژی سیگنال به جای سیگنال پیوسته متغیر (آنالوگ)، از طریق یک سری پالس توزیع میشود.
۲. چرا از مدولاسیون پهنای پالس استفاده میشود؟
مدولاسیون پهنای پالس یک روش مؤثر است که برای کنترل مقدار توان تحویلی به یک بار بدون هدررفت انرژی استفاده میشود.
۳. تفاوت بین چرخه وظیفه و فرکانس سیگنال PWM چیست؟
فرکانس یک سیگنال PWM بیان میکند که سیگنال هر چند وقت یک بار بین ولتاژ بالا و پایین سوئیچ میشود (تغییر میکند). فرکانس با واحد هرتز بیان میشود. چرخه وظیفه درصد زمانی است که سیگنال در یک ولتاژ بالا باقی میماند و به عنوان درصد دوره بیان میشود.
منبع: CircuitBread