مقدمه
مدلاسیون پهنای پالس (PWM) تکنیکی است که در آن فرکانس ثابت نگه داشته شده و پهنای پالس تغییر میکند. این مدولاسیون روشی برای تولید سیگنال آنالوگ با استفاده از یک منبع دیجیتال میباشد.
یک سیگنال PWM شامل دو مولفه اساسی به نامهای duty cycle و فرکانس است که رفتارش را مشخص میکنند.
Duty cycle سیگنال
یک دوره تناوب یک پالس شامل یک سیکل ON (۵ ولت) و یک سیکل OFF (صفر ولت) میباشد. حاصل تقسیم سیکل ON بر روی دوره تناوب، duty cyle نامیده میشود.
مثال: یک پالس با دوره تناوب ۱۰ میلیثانیه که به مدت ۲ ثانیه بالا میماند را در نظر بگیرید. Duty cycle این سیگنال برابر با D = 2ms / 10ms = 20% خواهد بود.
از طریق تکنیک PWM، میتوان توان تحویل داده شده به یک بار را با استفاده از سیگنال ON-OFF کنترل کرد. سیگنالهای PWM را برای کنترل سرعت موتورهای DC و تغییر شدت نور LED به کار میگیرند.
چند سیگنال مدوله شده با پهنای پالس با duty cycleهای مختلف در شکل زیر آورده شده است.
فرکانس سیگنال
فرکانس یک سیگنال مشخص میکند یک PWM با چه سرعتی یک چرخه را طی میکند. (مثلاً ۱۰۰۰ هرتز به معنی ۱۰۰۰ چرخه در ثانیه میباشد) که به این معنی است که با چه سرعتی بین حالتهای ON (بالا) و OFF (پایین) سوییچ میکند. با تکرار این الگوی ON-OFF در یک نرخ به اندازه کافی سریع، و با یک duty cyle مشخص، خروجی به صورت یک ولتاژ آنالوگ ثابت نمایان میشود و توان مورد نیاز دستگاهها را فراهم میآورد.
مثال: اگر بخواهیم یک سیگنال ۲ ولت آنالوگ برای یک منبع دیجیتال که میتوان در ۵ ولت ON و در صفر ولت OFF باشد ایجاد کنیم، میتوان یک PWM با duty cycle چهل درصد استفاده کنیم. این سیگنال برای ۴۰ درصد زمانها خروجی ۵ ولت تولید میکند. اگر سیگنال دیجیتال به اندازه کافی سریع باشد، ولتاژ دیده شده در خروجی همانند یک ولتاژ میانگین به نظر میرسد. اگر low دیجیتالی صفر ولت باشد (که معمولا هم هست) آنگاه ولتاژ میانگین را میتوان با ضرب مقدار high دیجیتال در duty cycle محاسبه کرد، یعنی 5V * 0.4 = 2V.
حال اجازه دهید PWM را در آردوینو مشاهده کنیم.
پینهای PWM در آردوینو
آردوینو Uno دارای ۶ کانال ۸ بیتی PWM میباشد. پینهایی با علامت «~» از PWM پشتیبانی میکنند. این پینهای PWM در شکل زیر نشان داده شدهاند.
توابع آردوینو مورد استفاده در PWM
(analogWrite (pin, duty cycle: این تابع برای تولید PWM یا خروجی آنالوگ در یک کانال PWM مشخص به کار میرود.
Pin: پینی که میخواهیم روی آن PWM یا سیگنال آنالوگ تولید کنیم.
Duty cycle: بین صفر (0%، همیشه OFF) و ۲۵۵ (100%، همیشه ON) نوشته میشود.
مثال:
analogWrite (3, 127) //generates pwm of 50% duty cycle
محو کردن LED با استفاده از PWM آردوینو
اجازه دهید یک برنامه کوچک بنویسیم و led را به صورت پیوسته محو کنیم. این برنامه محوکنندهی led به عنوان دکوراسیون در فستیوالها و آیینهای رسمی به کار میرود.
دیاگرام اتصالات
اسکچ برای محو کردن LED با استفاده از PWM آردوینو
int led = 6; // the PWM pin the LED is attached to int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by void setup() { pinMode(led, OUTPUT); // declare pwm pin to be an output: } void loop() { analogWrite(led, brightness); // set the brightness of led // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } delay(30); // wait for 30 milliseconds to see the dimming effect }
کنترل روشنایی LED با استفاده از پتانسیومتر
حال میخواهیم برنامهای بسازیم و در آن روشنایی یک led را با استفاده از آردوینو و با تغییر پیچ پتانسیومتر کنترل کنیم. بنابراین وقتی که پیچ پتانسیومتر را میچرخانیم، ADC آردوینو این سیگنال آنالوگ را خواهد خواند. سپس یک سیگنال PWM متناسب با سیگنال آنالوگ تولید میکند.
دیاگرام اتصالات
اسکچ برای کنترل روشنایی LED
int ledPin = 6; // LED connected to digital pin 9 int analogPin = A0; // potentiometer connected to analog pin 3 int val = 0; // variable to store the read value void setup() { pinMode(ledPin, OUTPUT); // sets the pin as output } void loop() { val = analogRead(analogPin); // read the input pin analogWrite(ledPin, val / 4);// analogRead values go from 0 to 1023, analogWrite values from 0 to 255 }
منبع: ترجمه از سایت electronicwings.com
امیدوارم آموزش «PWM در آردوینو» براتون مفید واقع شده باشه. توصیه میکنم پروژههای آردوینو را هم مطالعه کنید.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام تشکر از مطالب pwm دیمر led