こんにちは、組み込みエンジニア歴20年以上のtomozoです。
今回は、
私の組み込み開発経験も交えながら
マイコンの基本機能の一つである
【PWM制御】
について徹底解説します。
この記事は
PWM制御について詳しく知りたい新人組み込みエンジニアの方
向けの記事です。
マイコンのPWM制御を使うために
情報を調べているところではないでしょうか?
新人の頃はマイコンのマニュアルを読んでみても、
ページ数が多くて分からないことばかりなので
もう少し簡単に知りたいところだけ分かればなあって思いますよね。
私も新人の頃に先輩からマニュアルみたら分かるよって言われたこと
ありましたが、それはある程度色々知っている人の意見であって
分からない人からしたらさっぱり分からないってこともあります。
この記事を読めば
- マイコンのPWM制御について
- 組み込み機器での使用例
が分かるようになります。
このページを足掛かりにして
しっかり基本を理解してもらえたらうれしいです。
それでは早速解説をはじめます。
目次
マイコンのPWM制御とは
マイコンのPWM(Pulse(パルス) Width(幅) Modulation(変調))制御とは、
ある一定周期の中でHighとLowの出力を行う期間の比率を持って
出力される電力を制御することです。
周期に占めるHighの比率をDuty(デューティ)比といいます。
図で書くと以下のようになります。
黒線が入力パルスで赤線が出力電圧です。
図.入力パルスと出力電圧の関係
T:周期
τ:Highの区間
デューティ比 D = τ/Τ
図.周期とデューティ比
デューティ比 | 出力電圧 |
大(Highの割合が多い) | 大 |
小(Lowの割合が多い) | 小 |
早い周期でHigh/Lowの切り替えを行うことで
Highのパルス幅に比例した任意の電力に制御することが可能です。
例として周期10msでduty100%、duty50%、duty20%の図を書くと以下のようになります。
duty100%
duty50%
duty20%
デューティ比 | 周期[ms] | High[ms] | 出力電圧 |
100% | 10 | 10 | 大 |
50% | 10 | 5 | 中 |
20% | 10 | 2 | 小 |
PWM制御は増幅素子にとってONでもOFFでもない中間状態は損失が多く
ON/OFF状態が最も損失が少ないことを
利用した電力制御方式となります。
tomozo
組み込み機器でのPWM制御の実用例
組み込み機器でPWM制御を使った実例としては
以下のようなものがあります。
- DCモーターの回転制御
- LEDの点灯制御
- サーボモータの制御
- オーディオアンプ
この中からDCモーターのPWM制御を取り上げて解説していきます。
DCモーターをPWM制御
まず最初にこれ一つを理解しておけば
他のデバイスも同じように制御できるので
多くの組み込み制御に役立ちます。
DCモーターに印可する電圧と回転の関係は
以下の表のようになります。
印可電圧 | 回転 |
高い | 速い |
低い | 遅い |
乾電池で動くDCモーターを使ったおもちゃでも
電池が減ってくる(=印可電圧が低くなる)と
徐々に遅くなって最後に動かなくなるのはご存じではないでしょうか。
具体例としては24V定格のDCモーターであれば24V印可で
定格通りの回転数が得られて、
印可電圧を12Vにすればだいたい半分の回転数になります。
組み込み機器でマイコンからの出力電圧を変えるのは
簡単にはいかずハードルが高くなります。
具体的な問題点としては
- 専用のハードウェアが必要になりコストが上がる
- 無駄な熱が発生して効率も悪くなる
そこで組み込み機器では回転数を制御するのにPWM制御を利用します。
デューティ100%であれば100%の回転数、
デューティ50%であれば約半分の回転数にすることができ
上述の24V定格のモーターを12Vで回したのと同等な制御
を簡単に行うことができます。
デューティ―比 | 回転数 |
大 | 速い |
小 | 遅い |
初心者あん
マイコンでPWM制御をするには一般的に
タイマーカウンタを利用します。
周期とタイミング(パルス幅)を設定してから動作を開始すれば
停止するまで自動的に同じ周期でPWM出力してくれる
便利な機能が備わっています。
例えばカウンタ値と比較するためのレジスタAとBがあって
Aを500、Bを1000に設定したとします。
時間とともに1ずつ加算するカウンタ値がAで設定した500になったらLを出力
Bで設定した1000になったらHを出力してからカウンタ値をクリア
するPWMモードに設定すると以下の図のような青線のパルス波になります。
タイマーカウンタについてはこちらの記事で詳しく解説しています。
興味のある方は読んでみてもらえると嬉しいです。

PWM制御と直接関係ありませんが、
DCモーターには慣性があるので
電圧をLowにすればすぐに止まるというものではないので
注意してくださいね。
ブレーキ回路があれば惰性で回ることはかなり防げますが
それでも狙った位置で安定して止めるのは難しいです。
今回は詳しく紹介しませんでしたが、
LEDをつないでPWM制御すれば、
ぼやっと点灯・消灯するといった制御や
明暗加減を調整したりすることができます。
PWM機能を利用したプログラミングの実例を
こちらの記事で詳しく紹介しています。
よければ読んでみてください。

PWM制御で注意すること
PWM制御を使用する時はハードウェアに合わせた周期にする必要があります。
例えば
①周期2msで1msON/1msOFF、
②周期2usで1usON/1usOFF
どちらの場合もデューティ比は50%となります。
ハードウェアによって①が適切な場合もあれば②が適切な場合があります。
DCモーターを制御する時であれば、デューティ比が
ドライバやモーターの仕様を満たしているか確認が必要となります。
短すぎると反応しない(全然回らない)
長すぎるとスムーズに回らない(少し回転して止まるということを繰り返す)
ということがあります。
tomozo
組み込みエンジニアの判断だけでは間違っている可能性も
ありますので、詳しい担当者に確認したり
メーカーに問い合わせるようにしてくださいね。
まとめ
マイコンのPWM制御とは
- ある一定周期の中でHighとLowの出力を行う期間の比率を持って出力される電力を制御すること
- 最も損失が少ないことを利用した電力制御方式
PWM制御の実用例
- DCモーターの回転制御
- LEDの点灯制御
- サーボモータの制御
- オーディオアンプ
マイコンのタイマー機能で実現可能
PWM制御で注意すること
ハードウェアに合わせた周期設定にすること
設定は長すぎても短すぎてもダメ
参考になったとか、もっとここが知りたいなど一言でも
コメント、意見などいただけると励みになります。
こちらの記事でマイコンの基本機能についてまとめています。
もしよければご覧ください。

組み込み以外にこのサイトでは
学校や友人、一般の親は教えてくれない
資産運用の重要性についても紹介しています。
できるだけ早く自分の将来のために勉強しておかないと
もっと早く知っておけば良かったって後悔しますよ。
興味があればこの記事を読んでみてください。
