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

    اصول اولیه 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 تولید شده بر روی اکثر پایه ها برابر ۴۹۰Hz است. در برد Uno و بردهای مشابه، فرکانس شکل موج تولید شده بر روی پایه های ۵ و ۶ حدود ۴۹۰Hz است. همچنین بر روی پایه های ۳ و ۱۱ برد Leonardo این فرکانس برابر ۹۸۰Hz است.

    بر روی اکثر بردهای آردوینو (معمولا مبتنی بر میکروکنترلرهای ATmega168 و ATmega328)، این تابع بر روی پایه های ۳ ، ۵ ، ۶ ، ۹ و ۱۰ کار می کند. در بردهای آردوینو Mega ، این تابع بر روی پایه های ۲ الی ۱۳ و ۴۴ الی ۴۶ کار می کند. بردهای آردوینو قدیمی تر با میکروکنترلرهای ATmega8 فقط بر روی پایه های ۹ ، ۱۰ و ۱۱ از تابع analogWrite  پشتیبانی می کنند.

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

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

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

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

    analogWrite ( pin , value ) ;

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

    مثال :

    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 در آردوینو از آموزش آردوینو هم در اینجا به پایان رسید برای مطالعه جلسات قبلی و بعدی اینجا کلیک کنید. همچنین با ارسال نظرات خود در قسمت نظرات ما را در بهتر کردن روند آموزش ها یاری کنید.

    دیگر جلسات این آموزش

© تمامی حقوق مطالب برای وبسایت آلفا باکس محفوظ است و هرگونه کپی برداری بدون ذکر منبع ممنوع و شرعا حرام می باشد.
قدرت گرفته از : بک لینکس