نوع پست: آموزشی
تهیه شده توسط گروه آموزشی استان کرمانشاه
گردآوری: فرهاد سپهریان
قسمت ششم
مدلاسیون پهنای پالس (PWM) تکنیکی است که در آن فرکانس ثابت نگه داشته شده و پهنای پالس تغییر میکند. این مدولاسیون روشی برای تولید سیگنال آنالوگ با استفاده از یک منبع دیجیتال میباشد.
یک سیگنال PWM شامل دو مولفه اساسی به نامهای duty cycle و فرکانس است که رفتارش را مشخص میکنند.
Duty cycle سیگنال
یک دوره تناوب یک پالس شامل یک سیکل ON (۵ ولت) و یک سیکل OFF (صفر ولت) میباشد. حاصل تقسیم سیکل ON بر روی دوره تناوب، duty cyle نامیده میشود.
فرکانس سیگنال
فرکانس یک سیگنال مشخص میکند یک PWM با چه سرعتی یک چرخه را طی میکند. (مثلاً ۱۰۰۰ هرتز به معنی ۱۰۰۰ چرخه در ثانیه میباشد) که به این معنی است که با چه سرعتی بین حالتهای ON (بالا) و OFF (پایین) سوییچ میکند. با تکرار این الگوی ON-OFF در یک نرخ به اندازه کافی سریع، و با یک duty cyle مشخص، خروجی به صورت یک ولتاژ آنالوگ ثابت نمایان میشود و توان مورد نیاز دستگاهها را فراهم میآورد.
پینهای PWM در آردوینو
آردوینو Uno دارای ۶ کانال ۸ بیتی PWM میباشد. پینهایی با علامت «~» از PWM پشتیبانی میکنند. این پینهای PWM در شکل نشان داده شدهاند.
توابع آردوینو مورد استفاده در PWM
analogWrite (pin, duty cycle);
این تابع برای تولید PWM یا خروجی آنالوگ در یک کانال PWM مشخص به کار میرود.
ه Pin: پینی که میخواهیم روی آن PWM یا سیگنال آنالوگ تولید کنیم.
ه Duty cycle: بین صفر (۰%، همیشه OFF) و ۲۵۵ (۱۰۰%، همیشه ON) نوشته میشود.
مثال:analogWrite (3, 127)
//generates pwm of 50% duty cycle
#نکته: همانطور که در توضیح پین ها آمده است، از ۸ بیت استفاده میشود و این تعداد بیت میتواند محدوده ۰ تا ۲۵۵ از اعداد را پوشش دهد به همین دلیل است که محدوده اعداد قابل انتخاب برای پارامتر Duty cycle در تابع analogWrite در این محدوده قابل انتخاب است و اگر از بردی استفاده کردید که تعداد این بیت ها متفاوت بود محدوده این پارامتر هم تغییر خواهد کرد(مثل برد esp32)
با دو مثال ساده در ادامه با کارکرد پایه های PWM آشنا خواهیم شد:
۱- محو کردن LED با استفاده از PWM آردوینو
۲- کنترل روشنایی LED با استفاده از پتانسیومتر