【初心者向】マイコン基本機能【PWM制御】現役エンジニアが徹底解説

こんにちは、組み込みエンジニア歴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制御のほかにDuty制御やパルス制御っていう人もいます

 

組み込み機器でのPWM制御の実用例

組み込み機器でPWM制御を使った実例としては

以下のようなものがあります。

  • DCモーターの回転制御
  • LEDの点灯制御
  • サーボモータの制御
  • オーディオアンプ

 

この中からDCモーターのPWM制御を取り上げて解説していきます。

DCモーターをPWM制御

まず最初にこれ一つを理解しておけば

他のデバイスも同じように制御できるので

多くの組み込み制御に役立ちます。

 

DCモーターに印可する電圧と回転の関係

以下の表のようになります。

印可電圧 回転
高い 速い
低い 遅い

乾電池で動くDCモーターを使ったおもちゃでも

電池が減ってくる(=印可電圧が低くなる)と

徐々に遅くなって最後に動かなくなるのはご存じではないでしょうか。

 

具体例としては24V定格のDCモーターであれば24V印可で

定格通りの回転数が得られて、

印可電圧を12Vにすればだいたい半分の回転数になります。

 

組み込み機器でマイコンからの出力電圧を変えるのは

簡単にはいかずハードルが高くなります

具体的な問題点としては

  • 専用のハードウェアが必要になりコストが上がる
  • 無駄な熱が発生して効率も悪くなる

 

そこで組み込み機器では回転数を制御するのにPWM制御を利用します。

デューティ100%であれば100%の回転数、

デューティ50%であれば約半分の回転数にすることができ

上述の24V定格のモーターを12Vで回したのと同等な制御

を簡単に行うことができます。

デューティ―比 回転数
速い
遅い
PWM制御ってマイコンではどうやるの?

初心者あん

マイコンでPWM制御をするには一般的に

タイマーカウンタを利用します。

 

周期とタイミング(パルス幅)を設定してから動作を開始すれば

停止するまで自動的に同じ周期でPWM出力してくれる

便利な機能が備わっています。

 

例えばカウンタ値と比較するためのレジスタAとBがあって

Aを500、Bを1000に設定したとします。

時間とともに1ずつ加算するカウンタ値がAで設定した500になったらLを出力

Bで設定した1000になったらHを出力してからカウンタ値をクリア

するPWMモードに設定すると以下の図のような青線のパルス波になります。

 

タイマーカウンタについてはこちらの記事で詳しく解説しています。

興味のある方は読んでみてもらえると嬉しいです。

マイコン基本機能【タイマー・カウンタ】現役エンジニアが簡単解説

 

PWM制御と直接関係ありませんが、

DCモーターには慣性があるので

電圧をLowにすればすぐに止まるというものではないので

注意してくださいね。

ブレーキ回路があれば惰性で回ることはかなり防げますが

それでも狙った位置で安定して止めるのは難しいです。

 

今回は詳しく紹介しませんでしたが、

LEDをつないでPWM制御すれば、

ぼやっと点灯・消灯するといった制御や

明暗加減を調整したりすることができます。

 

PWM機能を利用したプログラミングの実例を

こちらの記事で詳しく紹介しています。

よければ読んでみてください。

【組み込み基礎】RL78でPWM出力制御プログラミングを徹底解説

 

PWM制御で注意すること

PWM制御を使用する時はハードウェアに合わせた周期にする必要があります。

 

例えば

①周期2msで1msON/1msOFF、

②周期2usで1usON/1usOFF

どちらの場合もデューティ比は50%となります。

ハードウェアによって①が適切な場合もあれば②が適切な場合があります。

 

DCモーターを制御する時であれば、デューティ比が

ドライバやモーターの仕様を満たしているか確認が必要となります。

短すぎると反応しない(全然回らない)

長すぎるとスムーズに回らない(少し回転して止まるということを繰り返す)

ということがあります。

 

tomozo

あくまでも目安ですが、私の経験ではDCモーターの場合20khz(50us)位の周期で試してから様子をみるようにします

 

組み込みエンジニアの判断だけでは間違っている可能性も

ありますので、詳しい担当者に確認したり

メーカーに問い合わせるようにしてくださいね。

 

まとめ

マイコンのPWM制御とは

  • ある一定周期の中でHighとLowの出力を行う期間の比率を持って出力される電力を制御すること
  • 最も損失が少ないことを利用した電力制御方式

PWM制御の実用例

  • DCモーターの回転制御
  • LEDの点灯制御
  • サーボモータの制御
  • オーディオアンプ

マイコンのタイマー機能で実現可能

PWM制御で注意すること

ハードウェアに合わせた周期設定にすること

設定は長すぎても短すぎてもダメ

 

参考になったとか、もっとここが知りたいなど一言でも

コメント、意見などいただけると励みになります。

 

こちらの記事でマイコンの基本機能についてまとめています。

もしよければご覧ください。

マイコン基本機能5選【初心者組み込みエンジニア必見】

 

組み込み以外にこのサイトでは

学校や友人、一般の親は教えてくれない

資産運用の重要性についても紹介しています。

 

できるだけ早く自分の将来のために勉強しておかないと

もっと早く知っておけば良かったって後悔しますよ。

興味があればこの記事を読んでみてください。

インデックス投資はおすすめ!厳選ファンド(商品)3つと利回り検証

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA