最初に「PWM」とは何かを理解します。
PWMとは
PWMとは「Pulse Width Modulation」の略で、変調方式の一種です!
って感じで説明を始めてみましたが、「何を言っているのかさっぱり…」って感じですよね。
ということで、「PWM」とは何か?、簡単な例から始めて理解していきたいと思います。
LEDの明るさを変える方法
基礎編の第8回で、PICマイコンを使った製作に入る前に、LEDと抵抗、電池だけを使ってLEDを点灯する回路を製作しました。
ブレッドボードに組み立てるとこんな感じになりましたよね。
この回路で使用している電池ボックスにはスイッチが付いています。
当然ですが、スイッチをOFFにするとLEDは消灯、ONにすると点灯します。最近のLEDは発光効率がいいので、このような回路で点灯させるとかなり明るく光ります。
では、上の回路でLEDの明るさをちょっと暗くするにはどうしたらいいでしょうか。
一つの方法として、抵抗を変える、という方法があります。
例えば上の画像の回路で使用している抵抗は330Ωです。抵抗の値が大きくなると電流が流れにくくなりますので、例えば10kΩの抵抗に入れ替えるとLEDは暗く光ります。
他の方法としては、電池の本数を減らす、という方法もあります。
上の回路では電池を4本使用していますが、例えば2本用の電池ボックスを使用して電圧を下げると暗く点灯することができます。
では、抵抗や電池を変えない、つまり、上の画像の回路のままでLEDの明るさを変更するにはどうしたらよいでしょうか。
そんな方法絶対になさそうですよね。
でも一つ方法があるんです。
スイッチ制御で明るさを変える方法
上の画像の回路では実現は難しいのですが、思いっきり早くスイッチをバチバチしてOFF/ONを繰り返すと明るさを変えることができるんです。
小さい頃、部屋の照明のスイッチをバチバチやって怒られた経験がある方もいらっしゃるかもしれませんが、照明器具のスイッチをバチバチやっても明かりが点滅するだけでしたよね。
でも、このバチバチをものすごく早くやると、人間の目にはLEDは点滅していないように見えるんです。
この点滅を1秒間にだいたい100〜200回以上行うと、人間の目には早すぎて点滅として認識できなくなります。
このバチバチですが、横軸に時間軸をとって点滅の状態を図示すると次のようになります。

この図では、LEDをONにする時間とOFFにする時間は同じにしています。
ON/OFFの繰り返し1回分のうち、50%をON、50%をOFFにしています。つまり、LEDをずっとONにした状態に比べると、半分の時間しか点灯していません。
このような点滅制御をしているLEDを人間が見ると、LEDは半分ぐらいの明るさで光って見えるようになります。(実際には人間の目の特性により半分よりは明るく見えますが、ここでは半分ぐらい、としておきます)
ONとOFFの時間を同じにすると、半分の時間しか点灯しなくなって半分ぐらいの明るさに見える、ということは、ONの時間をOFFの時間より短くするとどうなるのでしょうか。
例えば次のような感じでLEDの点滅を制御します。

全体で見ると、20%の時間をON、残りの80%の時間をOFFにしています。
この場合、先ほどのONの時間が50%の場合より、さらにLEDが点灯している時間が20%と短くなるわけですから、より暗く光っているように見えます。
当然ながら、次のようにONの時間をOFFの時間より長くすると、ON/OFFの時間が同じ場合より明るく見えます。

このように、スイッチをバチバチやる時にONの時間とOFFの時間の比率を変えると明るさが調整できる、ということになります。
この制御方法のポイントをまとめると次のようになります。
- LEDを高速に点滅すると、人間の目には点滅しているように見えない
- LEDのONとOFFの時間の割合を変えて、全体の点灯時間を調整することによりLEDの明るさを変える(実際にLED点灯時の明るさが変わっているわけではなく、人間の目に明るさが変わったように見えるだけ)
PWM制御とは?
これが「PWM」制御です。
「PWM」とは「Pulse Width Modulation」の略です。
日本語に無理やり訳すと「パルスの幅の調整」という感じです。
なぜこのような用語で呼ばれるかもう少し補足します。

この図のような、一定時間だけONになる信号は「パルス信号(Pulse Signal)」と呼ばれています。
「Pulse」とは「鼓動」などの意味です。
ちょっと話がそれますが、宇宙には面白い星があります。基礎編で作ったタイマー回路のLEDのように、周期的にピカッ、ピカッ、と光る星があります。このような星のことをパルス状の光を発する、ということで「パルサー星(Pulsar)」と呼ばれています。
LEDをバチバチ制御するとき、このパルス(Pulse)の時間幅(Width)を変えることにより制御しました。
この制御は、パルスの時間幅を変えて、あたかもアナログ制御をしています。
このようにアナログ制御をするために、パルス幅を変えたON/OFFの信号で制御するなどのように、アナログ値を電気信号に変換することを、一般に「変調」と呼ばれていて、英語では「Modulation」と呼ばれています。
そこで、このような制御方法を「PWM制御」と呼んでいます。

ここまでの説明で、PWM制御、というのはどのようなものか概要はつかめたでしょうか。
なお、LEDをPWM制御すると明るさを変えることができますが、モーターをPWM制御すると回転速度の制御ができます。
このように、PWM制御の場合、一つの電圧でアナログ的な制御ができるのでいろいろな場面で使われています。
これから、PICマイコンでプログラム制御することによりLEDをPWM制御して明るさを調整してみます。
マイコンでPWM制御する際、いろいろな言葉が出てきますので、実際の制御方法を考える前にPWM制御ついてもうちょっと詳しく説明します。
PWM制御で出てくる用語
PWM制御では、普段聞き慣れない用語が出てきますので、確認しておきましょう。
PWM制御をする場合、何が決まれば信号のパターンが決まるでしょうか?
信号のパターンは2種類の時間を決めるとパターンが決まります。
ひとつは「1回分のON/OFFの時間」、もうひとつは「ONを継続する時間」です。これらが決まると次のようにPWM制御信号が生成できます。

この2つは、PWMの信号パターンを決める重要な値ですので、名前が付けられています。
PWM制御では、「1回分のON/OFFの時間」を「周期」と呼んでいます。単位は「秒」です。
次に、「ONの時間」は「パルス幅」と呼んでいます。単に「ON時間」と呼ぶこともあるようです。
この2つの用語について、次の図で理解しておきましょう。

また、「1秒間に繰り返すON/OFFの回数」を「周波数」と呼んでいます。単位は「Hz(ヘルツ)」です。
なんだかいろいろ出てきてお腹いっぱいという感じですが、これで最後です。
「周期に対するパルス幅の割合」は「デューティー比」や「デューティサイクル」と呼ばれています。
「デューティ」って普段あまり使わないので、イメージしづらい言葉ですよね。
「デューティー(Duty)」には「仕事」とか「任務」などという意味があります。
「デューティー比」を無理やり日本語にしてみると「仕事をしている割合」という感じでしょうかね。
PWM制御では、ONというのはなんとなく働いている、という感じがしませんか?
そう考えると「ON時間の割合」というのは、「仕事をしている割合」=「デューティー比」と考えるとイメージしやすいかもしれません。
最後に今までの用語を具体例で確認しておきましょう。

このようにLEDをPWM制御する場合、「周期」は10ms、「パルス幅」は7msです。
また、デューティー比は、7ms ÷ 10ms = 0.7 = 70%ということになります。
周波数は、1回のON/OFFが10msですので、1秒 ÷ 10ms = 1000ms ÷ 10ms = 100Hzになります。
このように、デューティー比というのは仕事をしている割合、というような意味ですので、日常の会話でも「今日はちょっと勉強をサボろうかな」という代わりに「今日はちょっとデューティ比を低くしようかな」なんて言い方をしたほうがサボってる感がなくなります。自己肯定感を下げないためにも使ってみてください。
次回は基礎編で作ったブレッドボードを使用して、LEDのPWM制御をしてみます。
更新履歴
日付 | 内容 |
---|---|
2016.12.18 | 新規投稿 |
2024.7.26 | 「デューティーサイクル」の説明が間違っていたため修正。 |
2025.4.27 | 説明内容整理 |
お久しぶりです。
先生のお陰で、PWMの方、大分理解が進みました。
一つリクエストがあります。
多分、自分以外にも要望される方はいると思います。
DACについて、講義をお願いします。
コメントどうもありがとうございます。
DACの説明もしたいところですが、なかなか時間がないので解説記事を書くのがなかなか難しいところが悩みです。
シリーズ記事ですと書くのに時間がかかるので、単発記事で電子部品の使い方などを書こうかな、と思っています。その中でDACも取り上げることを検討してみようと思います。
すごいくわかりやすいです
コメントどうもありがとうございます。
これから先はちょっと難しくなりますので、不明点ありましたらご質問ください。