مدولاسیون عرض پالس یا PWM در آردوینو

0
114
مدولاسیون عرض پالس یا PWM در آردوینو
مدولاسیون عرض پالس یا PWM در آردوینو

مدولاسیون عرض پالس یا PWM در آردوینو، مدولاسیون عرض پالس یا PWM یکی از تکنیک‌های متداول به منظور تغییر عرض پالس‌ها می‌باشد. PWM کاربردهای زیادی دارد، کنترل سروو موتورها و کنترل کننده‌های سرعت، تغییر توان موثر موتور و تغییر نور LED ها از جمله این کاربردها هستند.

اصول اولیه PWM

در تکنیک مدولاسیون عرض پالس مدت زمان یک و صفر بودن یک شکل موج مربعی را تغییر می‌دهیم. یک نمونه سیگنال PWM در شکل زیر نشان داده شده است:

مدولاسیون عرض پالس یا PWM در آردوینو
مدولاسیون عرض پالس یا PWM در آردوینو

اصطلاحاتی که در مورد تکنیک PWM به کار می‌روند عبارت‌اند از:

  • زمان روشن بودن (On-Time) : مدت زمان یک (High) بودن سیگنال
  • زمان روشن بودن (Off-Time) : مدت زمان صفر (Low) بودن سیگنال
  • دوره تناوب (Period) : عبارت است از مجموع مدت زمان یک بودن و صفر بودن سیگنال
  • زمان وظیفه (Duty Cycle) : عبارت است از مدت زمان یک بودن سیگنال نسبت به کل دوره تناوب سیگنال برحسب درصد

دوره تناوب :

همان طور که در شکل نشان داده شده است، Ton نشان دهنده مدت زمان یک بودن و Toff نشان دهنده مدت زمان صفر بودن سیگنال است. دوره تناوب سیگنال برابر است با مجموع مدت زمان یک بودن با مدت زمان صفر بودن سیگنال که طبق رابطه زیر محاسبه می‌شود:

Ttotal=Ton+Toff

دوره وظیفه :

دوره وظیفه یا دیوتی سایکل برمبنای مدت زمان یک بودن سیگنال محاسبه می‌شود. با محاسبه دوره تناوب با فرمول بالا، دوره وظیفه طبق رابطه زیر محاسبه می‌شود:

D=TonTon+Toff=TonTtotal

تابع analogWrite

تابع analogWrite یک مقدار آنالوگ (شکل PWM) را بر روی یک پایه ایجاد می‌کند. از این تابع می‌توان برای تغییر روشنایی LED یا تغییر سرعت یک موتور استفاده نمود.

پس از فراخوانی تابع analogWrite ، یک شکل موج مربعی ثابت با نرخ وظیفه مشخص بر روی پایه مورد نظر ایجاد می‌کند و تا زمانی که مجددا تابع analogWrite  یا توابع digitalRead  یا digitalWrite  بر روی همان پایه فراخوانی نشود این شکل موج بر روی پایه باقی خواهد ماند.

فرکانس شکل موج PWM تولید شده بر روی اکثر پایه‌ها برابر 490Hz است. در برد Uno و بردهای مشابه، فرکانس شکل موج تولید شده بر روی پایه‌های 5 و 6 حدود 490Hz است. همچنین بر روی پایه‌های 3 و 11 برد Leonardo این فرکانس برابر 980Hz است.

بر روی اکثر بردهای آردوینو (معمولا مبتنی بر میکروکنترلرهای ATmega168 و ATmega328)، این تابع بر روی پایه‌های 3 ، 5 ، 6 ، 9 و 10 کار می‌کند. در بردهای آردوینو Mega ، این تابع بر روی پایه‌های 2 الی 13 و 44 الی 46 کار می‌کند. بردهای آردوینو قدیمی تر با میکروکنترلرهای ATmega8 فقط بر روی پایه‌های 9 ، 10 و 11 از تابع analogWrite  پشتیبانی می‌کنند.

 

مدولاسیون عرض پالس یا PWM در آردوینو
مدولاسیون عرض پالس یا PWM در آردوینو

بردهای آردوینو Due از این تابع بر روی پایه‌های 2 تا 13 و پایه‌های DAC0 و DAC1 پشتیبانی می‌کند. برخلاف پایه‌های PWM، پایه‌های DAC0 و DAC1 پایه‌های مبدل دیجیتال به آنالوگ هستند  و به عنوان پایه‌های خروجی کاملا آنالوگ استفاده می‌شوند.

لازم به ذکر است پیش از استفاده از تابع analogWrite  نیازی به فراخوانی تابع pinMode  برای تنظیم پایه بر روی حالت خروجی وجود ندارد.

دستور نگارش تابع analogWrite :

analogWrite ( pin , value ) ;

مقدار (Value) – دوره وظیفه : بین صفر (همیشه خاموش یا صفر) تا 255 (همیشه روشن یا یک)

مثال :

int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // 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
}

 

جلسه PWM در آردوینو از آموزش آردوینو هم در اینجا به پایان رسید، امیدوارم این نوشته برایتان مفید باشد.

 

منبع:  میکرودیزاینرالکترونیک

 

مطلب قبلیتولید اعداد تصادفی در آردوینو
مطلب بعدیمشخصات خازن

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید