LEDをマイコンでPWM調光する【STM32 Nucleo】
![](https://depfields.com/wp-content/uploads/2020/08/LED-dimming-1.jpg)
マイコンのデジタル出力を使ってLEDを調光するにはどうすればいいのでしょうか。調光するというあたかもアナログ的に明るさを連続でコントロールするのにマイコンのデジタル出力を使って行う手品のような種あかしを解説していきます。
![](https://depfields.com/wp-content/uploads/2020/05/instructor.jpg)
タイマの応用アプリケーションとしてLED点灯をPMW出力をつかった調光をおこなってみましょう。通常LEDの発光はマイコン出力のON/OFFを切り替えるだけで点灯・消灯ができるデジタル出力の典型的なものです。
![](https://depfields.com/wp-content/uploads/2020/05/instructor.jpg)
マイコンのデジタル出力を使って、LEDを調光するにはどうすればいいのでしょうか。調光するというあたかもアナログ的に明るさを連続でコントロールするのにデジタル出力を使って行うのは手品みたいなものですがマイコンを使うと簡単にできてしまうのです。それでは種明かしをしていきましょう。
![](https://depfields.com/wp-content/uploads/2020/05/instructor.jpg)
通常、LED点灯はマイコン出力をONすると回路がつながり点灯します。LEDを使った製品で明るさを調整して節電したり、センサに内蔵したLEDなどでは光強度を調整する機能をもたせたりするためにパルス出力で点灯をします。
![](https://depfields.com/wp-content/uploads/2020/06/tim-dimming1.jpg)
![](https://depfields.com/wp-content/uploads/2020/05/instructor.jpg)
LEDへの出力がパルスでも100Hz程度ではほぼ連続で点灯してみえます。このパルス出力の有利な点はパルスのON/OFF期間の比率(duty比)を変えることで明るさの強度を調整することができることと、OFFになる時間を調整することで節電ができることです。
![](https://depfields.com/wp-content/uploads/2020/05/instructor.jpg)
これまでタイマ機能のうちPWM出力については解説しました。LEDの調光はこのPWMを応用したものです。このアプリケーション例では100Hzの出力パルスのON/OFF期間を調整してLEDの明るさを調整しています。
![](https://depfields.com/wp-content/uploads/2020/08/tim-dimming2.jpg)
![](https://depfields.com/wp-content/uploads/2020/08/led-dimming.jpg)
![](https://depfields.com/wp-content/uploads/2020/08/tim-dimming-pwmsetting.jpg)
![](https://depfields.com/wp-content/uploads/2020/05/instructor.jpg)
このアプリ例ではRTOSを利用して1500msごとにLEDをON/OFFするタスクと10msごとにPWMのduty比をセットするタスクを実行しています。
![](https://depfields.com/wp-content/uploads/2020/08/pwm-duty-setting.png)
PWMのduty値を変えるとLEDを調光できますので、例えば、アナログボリュームを入力に追加して得られたアナログ値に比例してduty値を変化させるとボリュームで調光できるようになります。シリアル通信により外部から与えた数値にduty値を対応させるとリモートコントロールで調光できるようになります。ちょっとした工夫と基礎の組み合わせでいろいろなアプリに発展させることができますので挑戦してみてください。
STM32タイマのPWMに関しましてはタイマ・カウンタ【STM32の高機能・汎用タイマ詳細】のPWMモード出力で解説しています。
1.5s毎に点滅を繰り返すタイプ
ユーザーSWを押した時だけ点灯するタイプ