مبتدی⏱ 13 دقیقه مطالعه
PWM (مدولاسیون پهنای پالس) روشی است برای شبیهسازی خروجی آنالوگ با استفاده از یک سیگنال دیجیتال که بهسرعت روشن و خاموش میشود. با تغییر «درصد زمان روشن بودن» (Duty Cycle)، میتوانیم روشنایی LED یا سرعت موتور DC را کنترل کنیم.
ایجاد یک سیگنال PWM
PYTHON
from machine import Pin, PWM
from time import sleep
pwm_led = PWM(Pin(2))
pwm_led.freq(1000) # فرکانس ۱ کیلوهرتز
# نرم شدن و کمنور شدن تدریجی LED
while True:
for duty in range(0, 1024, 10):
pwm_led.duty(duty)
sleep(0.01)
for duty in range(1023, -1, -10):
pwm_led.duty(duty)
sleep(0.01)
در میکروپایتون ESP32، مقدار duty معمولاً بین ۰ (خاموش کامل) تا ۱۰۲۳ (روشن کامل) تنظیم میشود (در برخی نسخهها با duty_u16 بازهٔ ۰ تا ۶۵۵۳۵ نیز در دسترس است).
💡 نکته
برای کنترل سروموتور نیز از همین کلاس PWM استفاده میشود، اما با فرکانس ۵۰ هرتز و duty متناسب با زاویهٔ موردنظر.
مثال: کنترل روشنایی با پتانسیومتر
در درس بعدی با ADC آشنا میشوید و میتوانید مقدار پتانسیومتر را بخوانید و مستقیماً به duty سیگنال PWM نگاشت کنید تا روشنایی LED را با چرخاندن یک پیچ کنترل کنید.
❓ بازهٔ معمول مقدار duty در PWM دهبیتی ESP32 چقدر است؟
طراحی و توسعه: امین شیخ نجدی — glcd.ir