
PWM چیست؟ کنترل نور و صدا با روشنوخاموشِ خیلی سریع
پایههای دیجیتالِ یک میکروکنترلر فقط دو حرف بلدند: روشن و خاموش. صفر و یک. نه «کمی روشن»، نه «هفتاد درصد». پس این همه چراغِ کمنور، صدای زیر و بم، و موتورِ آرامچرخ از کجا میآیند؟
از یک کلکِ قدیمی و درخشان: اگر نمیتوانی کمنور بدهی، سریعتر از چشمْ خاموش و روشن کن. اسم این کلک PWM است — Pulse Width Modulation، یعنی «مدولاسیون پهنای پالس». اسمش سنگین است، خودش نه.
چشم و گوش را میشود فریب داد
یک LED را در نظر بگیر که هزار بار در ثانیه روشن و خاموش میشود. چشم انسان چنین سرعتی را نمیبیند — همانطور که ۲۴ فریمِ جداگانهٔ سینما را «فیلمِ پیوسته» میبیند. چیزی که چشم درک میکند، میانگین است:
- اگر LED در هر چرخه ۹۰٪ زمان روشن باشد → چشم یک چراغِ پرنور میبیند.
- اگر ۵۰٪ روشن باشد → نورِ متوسط.
- اگر ۱۰٪ → یک چراغ کمسو.
به آن درصدِ «چه کسری از هر چرخه روشنیم» میگویند duty cycle (چرخهٔ کار). این تنها عددی است که در PWM باید بفهمی:
PWM یعنی کلیدزنیِ خیلی سریع؛ duty cycle یعنی چند درصدِ هر چرخه، کلید روشن است. میانگینِ خروجی همان چیزی است که دنیا حس میکند.
میانگین ولتاژ = ولتاژ کامل × duty cycle
روی برد ESP32 که ۳٫۳ ولت میدهد، duty cycle پنجاه درصد یعنی بهطور مؤثر 3.3 × 0.5 = 1.65 ولت — بدون اینکه حتی یک لحظه ولتاژی غیر از صفر یا ۳٫۳ روی پایه بوده باشد.
دو دستگیرهٔ PWM: پهنا و فرکانس
PWM دو پارامتر دارد و هر کدام شغل خودش را:
| پارامتر | یعنی | چه چیزی را عوض میکند |
|---|---|---|
| duty cycle | چند درصدِ چرخه روشنیم | «چقدر» — نور، توان، سرعت |
| فرکانس | چند چرخه در ثانیه | «چند بار» — برای LED فقط باید آنقدر بالا باشد که سوسو نزند |
برای کمنورکردن LED، فرکانس را یک بار انتخاب میکنی (مثلاً هزار هرتز) و دیگر کاری با آن نداری؛ بازی همهاش با duty cycle است. اما یک استثنای جالب هست: بازر پیزو. آنجا ماجرا برعکس میشود — گوش، برخلاف چشم، خودِ کلیدزنی را «میشنود» و فرکانسِ آن را بهصورت زیر و بمیِ صدا درک میکند: ۲۶۲ هرتز میشود نتِ دو، ۴۴۰ هرتز میشود لا. اگر میخواهی بدانی آن قطعهٔ کوچک چطور از پالس صدا میسازد، نوشتهٔ بازر پیزو را بخوان.
سه جایی که PWM را میبینی
۱. نورِ LED. همان مثال بالا — از چراغِ نفسکش لپتاپ تا نور پسزمینهٔ همین نمایشگری که داری میخوانی. اگر با خود LED آشنا نیستی، LED چطور کار میکند نقطهٔ شروع خوبی است.
۲. صدا. بازر با فرکانس PWM نُت عوض میکند؛ آژیر و ملودی همینطوری ساخته میشوند.
۳. موتورها. سرعتِ یک موتور DC با میانگینِ توانی که میگیرد بالا و پایین میرود — یعنی دقیقاً duty cycle. رباتهایی که نرم راه میافتند و نرم میایستند، پشت صحنه PWM دارند. سرووموتور هم داستان شیرینِ خودش را دارد: پهنای پالس را نه بهعنوان توان، بلکه بهعنوان زاویه میخواند — که در نوشتهٔ سروو بازش کردهایم.
یک نکتهٔ مهم: PWM خروجی است، ADC ورودی
این دو را زیاد کنار هم میبینی و نباید قاطی شوند. ADC (مبدل آنالوگ به دیجیتال) راهِ خواندنِ دنیای پیوسته است — مثلاً خواندنِ ولتاژِ وسطِ یک پتانسیومتر. PWM راهِ ساختنِ اثرِ پیوسته با خروجیِ دوحالته است. یکی گوش است، یکی حنجره.
خودت امتحانش کن — بدون هیچ قطعهای
بهترین راه فهمیدن PWM دیدنش است: در شبیهساز آزمایشگاه یادستان یک برنامهٔ واقعی MicroPython اجرا میشود که با تغییر duty cycle یک LED را نفسکش میکند — کد را همانجا عوض کن و نتیجه را ببین. این آزمایش بخشی از دورهٔ رباتیک آیرو است که در آن از همین PWM برای نور، صدا، سروو و سرعتِ موتورِ ربات استفاده میکنیم.
جمعبندی: PWM هنرِ ساختن «بینِ صفر و یک» است با قطعهای که فقط صفر و یک بلد است. یک کلید که بهجای تو هزار بار در ثانیه زده میشود — و duty cycle، دستگیرهای که میگوید هر چرخه چند درصدش «یک» باشد.


