مدولاسیون پهنای پالس یا PWM چیست؟
قبل از توضیحات و مطالعه ی این مقاله باید بگوییم که محتوای این بخش به صورتی تهیه شده است که برای تمامی سنین مناسب باشد. سوالات مخاطبان و پیشنهادات و انتقادات شما عزیزان باعث شد که ما از این پس مقالات را به نحوی تهیه کنیم که جوابگوی افراد مبتدی تا حرفه ای باشد لذا اگر مطالب پاراگرافی برای شما بسیار ساده و یا بالعکس بسیار پیچیده است از آن چشم پوشی کنید.
مقدمه و پیش نیاز PWM
ابتدا برای درک بهتر این مبحث مروری بر قواعد و قوانین پایه ی الکترونیک خواهیم کرد:
اختلاف پتانسیل: انرژی لازم برای شارش یک واحد بار بین دو نقطه اختلاف پتانسیل نام دارد که با ولت اندازه گیری میشود. یک ولت(V) به عنوان یک ژول کار انجام شده در هر کولن بار الکتریکی تعریف میشود.
با بیان ساده تر در یک مدار تفاوت ولتاژ بین دو نقطه اختلاف پتانسیل شناخته میشود و همین عامل است که باعث جابجایی بار الکتریکی بین دو نقطه میشود.
شدت جریان:به جاری شدن بار الکتریکی جریان الکتریکی میگویند با بیانی دیگر نرخ تغییر بار نسبت به زمان شدت جریان نام دارد که با نماد I نشان داده میشود.
قانون اهم: (در دمای ثابت) نسبت اختلاف پتانسیل دو سر جسمی به جریان عبوری از آن همواره مقداری ثابت است این معادله منجر به یک ثابت نسبی میشود که مقاومت الکتریکی آن جسم نامیده میشود.
توان مصرفی: ابتدا به رابطه ی بالا نگاهی بیاندازید، توان مصرفی عبارت است از مقدار انرژی الکتریکی مصرف شده در این مقاومت در واحد زمان.
مُدولاسیون پهنای پالس ( Pulse Width Modulation, PWM):
مدولاسیون عرض پالس ( PWM ) تکنیکی است که برای کنترل متوسط سطح ولتاژ اعمال شده به بار با روشن و خاموش کردن ولتاژ در فرکانس بالا استفاده می شود. عرض هر پالس (مدت زمانی که ولتاژ روشن است) برای کنترل سطح متوسط ولتاژ تغییر می کند. این تکنیک معمولا برای کنترل سرعت موتورها و روشنایی چراغ های LED استفاده می شود. یک موج مربعی با فرکانس بالا به نام موج حامل برای روشن و خاموش کردن ولتاژ در فرکانس بسیار بالاتری نسبت به بار که می تواند به آن پاسخ دهد استفاده می شود، بنابراین یک سطح ولتاژ متوسط تولید می شود که با عرض پالس تغییر می کند.
PWM معمولاً با استفاده از میکروکنترلرها یا مدارهای دیجیتال دیگر پیاده سازی می شود.
این عبارت به تکنیکی به نام مدولاسیون عرض پالس (PWM) اشاره دارد. PWM با کنترل مدت زمان روشن و خاموش شدن یک ولتاژ در یک دوره زمانی خاص (به عنوان چرخه وظیفه) کار می کند. با تغییر چرخه کار، می توان سطح ولتاژ متوسط اعمال شده به یک بار را کنترل کرد. این تکنیک معمولاً در دستگاههای الکترونیکی مانند کنترلکنندههای موتور یا دیمرهای LED برای تنظیم میزان برق عرضهشده به یک بار و در عین حال به حداقل رساندن اتلاف گرما و اتلاف انرژی استفاده میشود. هنگامی که با مدارهای الکتریکی سروکار داریم، سطح ولتاژ مهم است زیرا میزان توانی را که از دستگاه عبور می کند، تعیین می کند. به طور معمول، هنگام کار با یک منبع تغذیه پایدار، سطح ولتاژ ثابت است. با این حال، گاهی اوقات لازم است سطح ولتاژ را تغییر دهید – اینجاست که مدولاسیون عرض پالس ( PWM ) وارد می شود. PWM روشی برای تغییر سطح ولتاژ با تغییر عرض یک پالس است. در PWM یک ولتاژ ثابت به شکل یک سری پالس اعمال می شود. هر پالس از دو بخش تشکیل شده است – یک قسمت ولتاژ بالا (زمانی که ولتاژ روشن است) و یک قسمت ولتاژ پایین (زمانی که ولتاژ خاموش است) و عرض پالس (مدت زمانی که ولتاژ روشن است) مقدار را تعیین می کند. نیرویی که در حال تامین است. با تغییر عرض پالس می توان سطح ولتاژ متوسط را کنترل کرد. برای مثال، اگر پالسی با چرخه وظیفه (درصد زمان روشن بودن ولتاژ) 50 درصد داشته باشیم، سطح ولتاژ متوسط در نیمه راه بین سطوح ولتاژ بالا و پایین خواهد بود. اگر چرخه کار را به 75 درصد افزایش دهیم، سطح ولتاژ متوسط به سطح ولتاژ بالا نزدیکتر خواهد شد. اگر چرخه کار را به 25 درصد کاهش دهیم، سطح ولتاژ متوسط به سطح ولتاژ پایین نزدیکتر خواهد شد. بنابراین، به طور خلاصه، عرض هر پالس در PWM برای کنترل سطح ولتاژ متوسط متغیر است.
در مثال زیر یک کد برای نشان دادن PWM برای استفاده در آردوینو برای شما قرار داده شده است.
در این کد یک پین خروجی برای سیگنال PWM (pwmPin) و یک متغیر برای چرخه کاری جاری (dutyCycle) تعریف می کنیم. تابع setup() pwmPin را به عنوان خروجی و تابع حلقه() را تنظیم می کند: با استفاده از تابع analogWrite() که چرخه وظیفه PWM را بر روی pwmPin تنظیم می کند، چرخه کار را از 0 به 255 با افزایش 5 افزایش می دهد. سپس با استفاده از همان تابع و تاخیر، چرخه کار را از 255 به 0 با افزایش 5 کاهش می دهد. این یک سیگنال PWM نوسانی با چرخه کاری متفاوت ایجاد می کند که می تواند برای کنترل مواردی مانند سرعت موتور، روشنایی LED و غیره استفاده شود.
// PWM Example Code int pwmPin = 9; // output pin for PWM signal int dutyCycle = 0; // current duty cycle (0-255) void setup() { pinMode(pwmPin, OUTPUT); } void loop() { // increase duty cycle from 0 to 255 in increments of 5 for (dutyCycle = 0; dutyCycle <= 255; dutyCycle += 5) { analogWrite(pwmPin, dutyCycle); delay(50); } // decrease duty cycle from 255 to 0 in increments of 5 for (dutyCycle = 255; dutyCycle >= 0; dutyCycle -= 5) { analogWrite(pwmPin, dutyCycle); delay(50); } }
میتوانید برای ثبت نام در کلاس های روباتیک با ما در تماس باشید.
میتوانید در قسمت زیر نظرات پیشنهادات و انتقاد های خود را با ما در میان بگذارید: