パルス幅変調(PWM)は、デジタル信号の一種を指す専門用語です。PWMは、複雑な制御回路を含む様々なアプリケーションで使用されています。SparkFunでは、RGB LEDの調光やサーボの方向制御にPWMをよく使用しています。PWMは、信号がハイレベルになる時間をアナログ的に変化させることができるため、これらのアプリケーションの両方で様々な結果を得ることができます。信号は、ある時点ではハイレベル(通常は5V)かローレベル(グランド)のどちらかしか存在しませんが、一定の時間間隔内で、信号がハイレベルになる時間とローレベルになる時間の割合を変化させることができます。
信号がハイのとき、それを「オンタイム」と呼びます。「オンタイム」の長さを表すために、デューティ サイクルの概念を使用します。デューティ サイクルはパーセンテージで測定されます。デューティ サイクルのパーセンテージは、間隔または周期内でデジタル信号がオンになっている時間の割合を具体的に表します。周期は波形の周波数の逆数です。デジタル信号が半分の時間オンで、残りの半分がオフになっている場合、そのデジタル信号のデューティ サイクルは 50% であると言われます。これは理想的な矩形波に似ています。パーセンテージが 50% を超える場合、デジタル信号はロー状態よりもハイ状態の方が長くなり、デューティ サイクルが 50% 未満の場合はその逆になります。次の図は、これら 3 つのケースを示しています。

デューティサイクル100%は、電圧を5ボルト(高電圧)に設定するのと同じです。デューティサイクル0%は、信号をグランドに接続するのと同じです。
例
デューティ サイクルを調整することで LED の明るさを制御できます。

RGB (赤、緑、青) LED では、3 色の明るさを異なる量で調整することで、混合される各色の量を制御できます。

3つすべてを同じ量で点灯すると、白色光の色合いが変化します。同様に青と緑を混ぜると、青みがかった緑色になります。もう少し複雑な例として、赤を完全に点灯し、緑を50%のデューティサイクルで完全に点灯し、青を完全に消灯するとオレンジ色になります。

LEDを制御する場合、適切な調光効果を得るには、矩形波の周波数を十分に高くする必要があります。1Hzで20%のデューティサイクルの波形であれば、点灯と消灯がはっきりと目で確認できますが、20Hz以上で100%のデューティサイクルであれば、完全に点灯しているときよりも暗く見えます。基本的に、LEDで調光効果を得たい場合は、周期が長すぎるのは良くありません。また、パルス幅変調(PWM)を使用して、ロボットアームなどの機械装置に接続されたサーボモーターの角度を制御することもできます。サーボモーターには、制御線に基づいて特定の位置に回転するシャフトがあります。当社のサーボモーターは約180度の範囲で回転します。
周波数/周期は特定のサーボの制御に固有のものです。一般的なサーボモーターは、20ミリ秒ごとに更新され、パルス幅は1ミリ秒から2ミリ秒です。つまり、50Hzの波形でデューティサイクルは5%から10%です。1.5ミリ秒のパルスでは、サーボモーターは自然な90度の位置にあります。1ミリ秒のパルスではサーボは0度、2ミリ秒のパルスでは180度の位置にあります。サーボをその間の値に更新することで、全可動範囲を実現できます。
パルス幅変調は様々な用途、特に制御に利用されています。LEDの調光やサーボモーターの角度制御に使えることがわかったので、他の用途についても調べてみましょう。もし迷っているなら、パルス幅変調を使ったサンプルコードが収録されているSparkFun Inventor's Kitをぜひチェックしてみてください。Arduinoをお持ちで、すぐにコーディングを始めたいという方は、こちらのPWMコーディングサンプルコードをご覧ください。
投稿日時: 2025年7月31日


