「PWM」の解説

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
2018年07月07日 更新。
用語:PWM
用語の読み方:ピー・ダブリュー・エム
略語の完全な表記:pulse width modulation
同義語・類義語:パルス幅変調
このページで解説している他の用語:デューティ比チョッパ回路チョッパ制御

PWMパルス幅変調とも呼ばれ、一定間隔で発生するパルスの幅を変化する事により平均電圧を制御する、パルス波の変調方式の事です。

PWMはPDM(パルス密度変調)の一種です。周波数が一定のPDMを特にPWMと呼びます。

PWMを利用すると、電力効率を落とすことなく出力制御する事ができるため、パワーエレクトロニクスの分野では、モーターの出力調整や照明機器の明るさの調整などに使われます。またPWM信号をLPF(ローパスフィルタ)でフィルタリングするとアナログ信号が得られ、かつPWM信号の生成回路はデジタル回路だけで構成できるため、マイコン等のデジタル回路において、D/A変換器出力の代わりにPWM出力が用いられる事が良くあります。

PWMの事をPWM変調と呼ぶ事もありますが、PWMのM自体が変調(modulation)を表わしており、冗語です。

目次

1. PWMの波形と平均電圧 … 1ページ
2. 通信への応用 … 1ページ
3. 電力制御への応用(チョッパ回路) … 1ページ
4. 時間軸方向に離散化されたPWM信号 … 1ページ
5. 簡易型D/Aコンバータとしての応用 … 1ページ
6. アナログ方式のPWM変調回路 … 1ページ
7. デジタル方式のPWM変調回路 … 1ページ
広告

1.PWMの波形と平均電圧

PWMの信号は、図1に示す様に、一定周期T[s]のパルス波形ですが、パルス幅TP[s]が場所により異なります。

図1、PWM信号と平均電圧
↑ 画像をクリックすると拡大
図1、PWM信号と平均電圧

PWM信号の周波数f[Hz]は、式(1)に示す様に、周期Tの逆数を指します。言い換えれば、1秒間に発生するパルスの数です。

f=1T ・・・ (1)

PWM信号のデューティー比Dは、パルス幅TPと周期Tの比で定義されます。デューティ比は無次元量なので、単位はありません。また、100倍して百分率(パーセント)表記される事もしばしばあります。

D=TPT ・・・ (2)

パルス電圧をVP[V]とすると、1周期内の平均電圧VM[V]は次の様に求まります。

VM=TPTVP=DVP ・・・ (3)

この様に、デューティ比Dを変化させることで、パルス電圧VPを変えることなく、平均電圧VMを制御する事ができます。

2.通信への応用

PWMは、デューティ比Dを滑らかに(無段階に)変化させることにより、アナログ信号の通信に使う事ができます。

例えば音声信号をPWMによりパルス波として伝送する場合、図2の様に、変調したい音声信号の電圧が高い所ほどパルス幅が広くなるように変調します。

図2、音声信号のPWMによる変調
↑ 画像をクリックすると拡大
図2、音声信号のPWMによる変調

この場合、図3(a)の様にPWM信号にノイズが乗っても、ノイズ電圧がパルス電圧VPよりも十分小さく、かつパルスの立ち当たり時間と立下り時間が十分に短いという条件では、例えばVP2の閾値で2値化処理を行う事により、図3(b)の様に元のPWM信号が復元できます。この様にPWMは、アナログ信号の伝送時に、ノイズの影響を低減するために利用する事ができます。

一方で、伝えたい信号の帯域に比べて、PWM信号の帯域がかなり広くなるという欠点もあります。

図3、2値化処理によるPWM信号の復元
↑ 画像をクリックすると拡大
図3、2値化処理によるPWM信号の復元

3.電力制御への応用(チョッパ回路)

図4の様に、負荷抵抗RLにかかる平均電圧を、スイッチのON・OFFの制御によりコントロールする場合を考えます。

図4、チョッパ回路
↑ 画像をクリックすると拡大
図4、チョッパ回路

スイッチSW1が周期Tで周期的にON・OFFを繰り返して、かつONになっている時間が1周期当たりTPである場合、図1に示したのと同じ電圧波形がRLに加わります。この場合、平均電圧VM式(3)で得られ、デューティ比D(式(2)参照)に比例する事が分かります。

この様に、スイッチ制御のデューティ比により負荷に加わる平均電圧をコントロールする電源回路の事を、チョッパ回路といいます。また、チョッパ回路により電源の出力を調整する制御方式をチョッパ制御といいます。

チョッパ回路にはジュール熱を発生する要素がないため、理論的には100%の電力効率で、負荷電圧を制御する事ができます。

注:実際には、スイッチで若干の電圧降下が生じるため、電力効率は完全には100%になりません。

ところで、出力電圧の制御は、図5に示す分圧回路によっても行う事ができます。

図5、分圧回路による出力電圧の制御
↑ 画像をクリックすると拡大
図5、分圧回路による出力電圧の制御

この回路の場合、直流の電圧が出力されますが、その電圧VOUTは次の式で与えられます。

VOUT=RLRV+RLVP ・・・ (4)

この分圧回路でも、可変抵抗の値RVを調節する事により、出力電圧VOUTを0~VPの範囲で調節できますが、負荷電流がRVにも流れるため、そこでジュール熱が発生し、電力損失が発生します。

例えば、出力電圧を半分(VP2)にする場合では、RVRLと同じジュール熱が発生し、電力効率が50%になります。また出力電圧が半分より小さい場合には、負荷RLに供給される電力よりも、RVで消費される電力の方が多くなり、電力効率は50%未満になります。

この様にチョッパ制御は、分圧回路による出力電圧の制御に比べ、電力効率の点で優れています。また、式(3)から分かる様に、出力電圧が負荷抵抗の影響を受けないという点でも、分圧回路を使う方式より優れています。

4.時間軸方向に離散化されたPWM信号

マイコンやFPGAなどのデジタル回路でPWM信号を発生する場合は、通常、発生したPWM信号が時間軸方向に離散化(標本化)されてしまいます。この時間軸方向への離散化の概念を表わしたのが図6です。

図6、時間軸方向に離散化されたPWM信号の例
↑ 画像をクリックすると拡大
図6、時間軸方向に離散化されたPWM信号の例

時間軸方向に離散化されたPWM信号は、一定周期のクロック波形の立ち上がりエッジ(場合によっては立下りエッジ)に同期して、電圧が変化します。

図6の様にPWM信号の周期が10クロックに設定されている場合は、0.1単位でしかデューティ比が設定できません。例えばデューティ比を0.35に設定したい場合でも、0.3または0.4で近似する必要があります。この場合、デューティ比に0.05の誤差が発生します。

ただし、ある程度長期の時間内の平均的なデューティ比が目的の値に近ければ、短期的なデューティ比の誤差が発生しても問題がない場合が多くあります。例えば、前述のチョッパ回路でヒーターの温度を制御する場合は、ヒーターなどに熱容量があるため、短期的に電圧が変動しても、ヒーターの温度はほとんど変わりません。

短期的なデューティ比の誤差が問題にならなくて、長期の平均的なデューティ比の目標値が0.35の場合、図7に示す様に、PWM信号の1周期ごとにデューティ比を0.3と0.4に交互に切り替えれば、平均的なデューティ比は0.35になります。 この様に、短期的な誤差(周波数の高いノイズ)を許容する事で、長期的な誤差(周波数の低いノイズ)を減らす手法をノイズシェーピングといいます。

図7、デューティ比が0.3と0.4の周期を交互に繰り返して疑似的にデューティ比0.35のPWM信号を生成した例
↑ 画像をクリックすると拡大
図7、デューティ比が0.3と0.4の周期を交互に繰り返して疑似的にデューティ比0.35のPWM信号を生成した例

5.簡易型D/Aコンバータとしての応用

マイコンやFPGAなどのデジタル回路で、アナログ的な制御を行う場合、出力をD/A変換器でアナログ値に変換する必要があります。この場合、デジタルICにD/Aコンバータなどのアナログ回路を混載するとコストが上昇するという問題が発生します。

そこで、図8に示す様に、タイマ回路を使ってPWM信号を発生し、その出力をLPF(ローパスフィルタ)により平滑化する事で、簡易型のD/A変換器を構成する事が良くあります。

図8、タイマ回路により発生したPWM信号をLPFで処理した簡易型D/A変換器
↑ 画像をクリックすると拡大
図8、タイマ回路により発生したPWM信号をLPFで処理した簡易型D/A変換器

例えばArduinoanalogWrite関数は、実際にはアナログ信号を発生するのではなく、PWM信号を発生します。アナログ信号を得るためには、外部にLPFを設ける必要があります。

注:Arduino DueやArduino M0など、一部のD/A変換器を搭載したArduinoでは、analogWrite関数により直接アナログ信号を得る事ができます。

PWM信号からアナログ信号を再生する場合に使うLPFのカットオフ周波数は、PWM信号の周波数よりも十分低く、かつアナログ信号の上限周波数よりも十分高く設定する必要があります。

PWMをLEDの明るさの制御に用いる場合、網膜で発生する残像が、実質的に平滑化処理を行うため、LPFを省略する事ができます。また、DCモーターの回転数制御に使う場合は、機械系の慣性が実質的に平滑化処理を行うため、やはりLPFを省略する事ができます。この様に、応用する分野によっては、図8の中のLPFを省略してしまう場合が良くあります。

6.アナログ方式のPWM変調回路

アナログ信号をPWMによりパルス変調するアナログ回路の構成について説明します。

図9にアナログ方式のPWM変調回路の構成を、図10にこの回路の各部の電圧波形を示します。

図9、典型的なアナログ方式のPWM変調回路
↑ 画像をクリックすると拡大
図9、典型的なアナログ方式のPWM変調回路
図10、アナログ方式のPWM変調回路の各部の信号波形(ノコギリ波を参照信号に使った場合)
↑ 画像をクリックすると拡大
図10、アナログ方式のPWM変調回路の各部の信号波形(ノコギリ波を参照信号に使った場合)

図9では、変調したいアナログ信号とノコギリ波がコンパレータ(電圧比較器)に入力されている様子が分かります。

図10の青い線で示した様に、ノコギリ波は、ノコギリの歯の様な形をした交流信号です。このノコギリ波がPWM信号の周波数や、取り扱うアナログ波の最大振幅を規定します。このPWM変調回路で生成されるPWM信号の周波数は、ノコギリ波の周波数と同じになります。また、変調したいアナログ信号の振幅は、ノコギリ波の振幅以下でなければなりません。

コンパレータは、2つの入力電圧の大小比較を行う回路です。+の記号が付いた入力端子を非反転入力端子、-の記号が付いた入力端子を反転入力端子と呼びます。コンパレータは、非反転入力端子の電圧(変調したいアナログ信号の電圧)が反転入力端子の電圧(ノコギリ波の電圧)よりも高い場合は、出力端子に一定の高い電圧(1またはHと呼ぶ)を出力します。逆に非反転入力端子の電圧が反転入力端子の電圧よりも低い場合は、出力端子に一定の低い電圧(0またはLと呼び、0Vに設定される事が多い)を出力します。

図10を見ると、赤い線で示した変調したいアナログ信号の電圧が、青い線で示したノコギリ波の電圧よりも高い時には、黒い線で示したPWM変調回路の出力に1が出てきて、そうでない時は0が出てくる様子が分かります。

この様に、変調したい信号をノコギリ波とコンパレータで比較すれば、PWM信号が得られますが、ノコギリ波の代わりに三角波を使っても、PWM信号が得られます。図11に、三角波を参照信号に使ってPWM信号を生成した例を示します。

図11、三角波を参照信号に使った場合のアナログ方式のPWM変調回路の各部の信号波形
↑ 画像をクリックすると拡大
図11、三角波を参照信号に使った場合のアナログ方式のPWM変調回路の各部の信号波形

図9のアナログ方式のPWM変調回路では、時間軸方向に離散化されていないPWM信号が得られるため、この後に説明するデジタル方式のPWM変調回路よりも、多い情報を送る事ができます。

広告

7.デジタル方式のPWM変調回路

たいていのマイコンには、タイマと呼ばれる、PWM信号の生成に使える周辺回路が内蔵されています。また、FPGAでも、同様の回路を生成するのは容易です。

タイマは、PWM信号の生成以外にも、2つの出来事の時間差(例えば1番ピンに信号が入ってから2番ピンに信号が入ってくるまでの時間)を計測したり、一定周期でCPUに割り込みを掛けるなど、多用途に使える様に設計されていますが、ここでは、PWM信号の生成に関連した機能だけを紹介します。

図12に、マイコンのタイマを用いたPWM変調回路の構成を示します。また図13に、この回路のタイミングチャートを示します。

図12、マイコンのタイマを用いたPWM変調回路の基本的な構成
↑ 画像をクリックすると拡大
図12、マイコンのタイマを用いたPWM変調回路の基本的な構成
図13、マイコンのタイマを用いたPWM変調回路のタイミングチャート
↑ 画像をクリックすると拡大
図13、マイコンのタイマを用いたPWM変調回路のタイミングチャート
CPUのデータバスに"X"と書いてある部分がありますが、この部分のデータバスの値は、回路の動作に影響を与えない事(Don't care)を表わしています。

図12の2ビットフリーランカウンタは、クロック発振器から供給されるクロックのパルスを数えます。2ビット構成ですから、表せる数字の最小値は0、最大値は3です。0→1→2→3→0→1→2→・・・と、3まで数えたら次に0に戻ります。数えた数は、2ビットのバスを通じて、3ビット大小比較回路に伝えられます。

3ビットレジスタは、データバスを通じてCPUから送られて来た数を保存する装置です。CPUから来た制御信号が0になると、その時CPUがデータバスに出力していた数を3ビットレジスタが記憶します。レジスタが記憶した値は、3ビットのバスを通じて、3ビット大小比較回路に伝えられます。

3ビット大小比較回路は、ポートAとポートBの2つの3ビットバスから入力された数の大きさを比較します。ポートAの数がポートBの数より小さければ1を出力し、そうでなければ0を出力します。

ポートAの最上位ビットは0に固定されており、下位2ビットが、2ビットフリーランカウンタの出力につながっています。またポートBは、3ビットレジスタの出力につながっています。

図13は、図12の回路のタイミングチャートです。フリーランカウンタの値が3ビットレジスタの値より小さい時だけPWM出力に1が出力され、そうでなければ0が出力されている様子が、この図から分かります。

この動作の結果、デューティ比が3ビットレジスタの値を4で割った値となるPWM信号が出力されます。例えばCPUが3ビットレジスタに2を書き込めば、それ以降、次に別の値を書き込むまではデューティ比が2/4になります。同様に、3ビットレジスタに1を書き込めば、別の値を書き込むまではデューティ比が1/4になります。

注:CPUが3ビットレジスタに書き込む値は、0~4の範囲に限定します。

この回路では、CPUが3ビットレジスタに一度値を書き込めば、再度値を更新するまで、指定したデューティ比のPWM信号が自動的に生成されます。そのため、デューティ比の変更があまり頻繁ではない場合は特に、この回路を使ってPWM信号を生成すると、CPUの負担が少なくて済みます。

参考:1周期ごとにデューティ比を更新する場合でも、GPIOを使ってCPUがPWM信号を全部作る場合に比べると、図12の回路を使う方がかなりCPUの負担が減ります。

ただし、タイマが対応していないチャネル数のPWM出力が必要な場合や、タイマが対応していない低い周波数のPWM出力が必要な場合など、特殊な事情があれば、まれにCPUでソフトウェア的にPWMの波形を作る事があります。(ピカピカ光るクリスマスツリーおばけの製作(5)参照)

図12の回路構成は、実際のマイコンのタイマ回路を用いたPWM変調回路よりも、かなり単純化されている事に注意が必要です。実際のタイマは、前述の様に多用途に使われるため、かなり多くのレジスタを内蔵しています。またレジスタやカウンタのビット数も、3ビットや2ビットという事はなく、最低でも8ビット、多ければ32ビットあります。図12の回路ではデューティ比を0/4、1/4、2/4、3/4、4/4の5段階にしか設定できませんが、実際のマイコンでは、はるかに細かいデューティ比の調整が可能です。また大小比較器の出力も、図12ではクロックと非同期に出力されていますが、実際のマイコンでは、CPUクロックなどに同期して出力されます。

注:大小比較器の出力を非同期にしてしまうと、PWM出力にグリッジが発生する恐れがあります。

図9のアナログ方式のPWM変調回路の様に、アナログ信号を基に変調したPWM信号を、マイコンのタイマを用いて生成するには、変調したいアナログ信号を、いったんA/D変換器でデジタルデータに変換してから、タイマを用いてPWM信号を生成する必要があります。(図14参照)

図14、マイコンのタイマを用いてアナログ信号をPWMにより変調する場合の回路構成
↑ 画像をクリックすると拡大
図14、マイコンのタイマを用いてアナログ信号をPWMにより変調する場合の回路構成

関連用語

関連ページ

Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。