arrow-right hamburger logo-mark social-facebook social-github social-twitter

PWM制御

Pulse Width modulation

PWM(Pulse Width Modulation)とは日本語で「パルス幅変調」といい、PWM制御はオンとオフを繰り返しきりかえることで出力される電力を制御するというものです。

理解するうえで大事な用語

▲ PWMを示した図

パルス幅

まず、パルスとは短時間に立ち上がる変化をする信号のことを言います。PWMでは図のように山と谷のある波形となり、その電圧がもっとも高くなる山の幅をパルス幅といい、その単位[s(秒)]は時間となります。

周期

図で示す山と山、つまりパルス同士の間隔を周期といいます。 また周期の逆数をとったものを周波数と呼び、単位を[Hz]もしくは[1/s]で表します。 これは、ある周期の波形が1秒の間に何回あられるかを意味しています。 例えば、1[Hz]:1秒間に1つの波形、100[Hz]:1秒間に100回の波形、といった具合です。

デューティー比

パルス幅を周期で割り算したものをデューティー比といい、単位はパーセント[%]で表します。つまり、「デューティー比=パルス幅/周期」と表します。

デューティー比と実効電圧

実行電圧とは、見かけ上の電圧をさします。 また、この実行電圧は電圧の最大値とデューティー比の積で表すことができます。 図からわかるようにデューティー比を変えることで入力電圧を変えずに電圧を制御できます。

PWM制御の使用例

DC(直流)モータ

DCモータの仕組みは非常にシンプルで、2つの端子から電流を流せば回転を始めます。そして、DCモータにかける電圧を強くすれば速く回り、小さくすれば遅く回ります。しかし電圧を自在に変化させることは大変で、それ専用の回路が必要になります。

そこでPWM制御を用いるとどのくらいの時間、電圧をHighにするかを決めて実効電圧をコントロールすることができ、断然楽です。わざわざ電圧を上げたり下げたりすることなくDCモータを制御することができます。

サーボモータ

サーボモータは制御信号に与えられた(入力された)パルス幅によって決められた角度に回転するモータです。

サーボモータのSG-90を例にとってみます。主な仕様を見ると、下記のように書いてあります。

  • PWMサイクル(周期):20[ms]
  • 制御パルス:0.5~2.4[ms]
    • 2.4[ms]:時計回りに90°回転(+90°)
    • 1.45[ms]:0°
    • 0.5[ms]:反時計回りに90°回転(-90°)
  • 制御角:±約90°(180°)

この仕様を図に表すとこのようになります。 サーボモータはパルス幅、つまり、制御パルスを変えることで任意の角度に変えることができます。

Nefry BTでのPWM制御

Nefry BTでPWMを使うには以下の2つの方法があります。

  • PWM出力に対応したディジタル入出力ピン(D0~D5)をつかう(参照:Nefry説明書
  • ESP32のPWM用ライブラリ「esp32-hal-ledc.h」をつかう
Last edited on 2018.01.18 by たくろーどん

PWM制御

Pulse Width modulation

PWM(Pulse Width Modulation)とは日本語で「パルス幅変調」といい、PWM制御はオンとオフを繰り返しきりかえることで出力される電力を制御するというものです。

理解するうえで大事な用語

▲ PWMを示した図

パルス幅

まず、パルスとは短時間に立ち上がる変化をする信号のことを言います。PWMでは図のように山と谷のある波形となり、その電圧がもっとも高くなる山の幅をパルス幅といい、その単位[s(秒)]は時間となります。

周期

図で示す山と山、つまりパルス同士の間隔を周期といいます。 また周期の逆数をとったものを周波数と呼び、単位を[Hz]もしくは[1/s]で表します。 これは、ある周期の波形が1秒の間に何回あられるかを意味しています。 例えば、1[Hz]:1秒間に1つの波形、100[Hz]:1秒間に100回の波形、といった具合です。

デューティー比

パルス幅を周期で割り算したものをデューティー比といい、単位はパーセント[%]で表します。つまり、「デューティー比=パルス幅/周期」と表します。

デューティー比と実効電圧

実行電圧とは、見かけ上の電圧をさします。 また、この実行電圧は電圧の最大値とデューティー比の積で表すことができます。 図からわかるようにデューティー比を変えることで入力電圧を変えずに電圧を制御できます。

PWM制御の使用例

DC(直流)モータ

DCモータの仕組みは非常にシンプルで、2つの端子から電流を流せば回転を始めます。そして、DCモータにかける電圧を強くすれば速く回り、小さくすれば遅く回ります。しかし電圧を自在に変化させることは大変で、それ専用の回路が必要になります。

そこでPWM制御を用いるとどのくらいの時間、電圧をHighにするかを決めて実効電圧をコントロールすることができ、断然楽です。わざわざ電圧を上げたり下げたりすることなくDCモータを制御することができます。

サーボモータ

サーボモータは制御信号に与えられた(入力された)パルス幅によって決められた角度に回転するモータです。

サーボモータのSG-90を例にとってみます。主な仕様を見ると、下記のように書いてあります。

  • PWMサイクル(周期):20[ms]
  • 制御パルス:0.5~2.4[ms]
    • 2.4[ms]:時計回りに90°回転(+90°)
    • 1.45[ms]:0°
    • 0.5[ms]:反時計回りに90°回転(-90°)
  • 制御角:±約90°(180°)

この仕様を図に表すとこのようになります。 サーボモータはパルス幅、つまり、制御パルスを変えることで任意の角度に変えることができます。

Nefry BTでのPWM制御

Nefry BTでPWMを使うには以下の2つの方法があります。

  • PWM出力に対応したディジタル入出力ピン(D0~D5)をつかう(参照:Nefry説明書
  • ESP32のPWM用ライブラリ「esp32-hal-ledc.h」をつかう

Last edited on 2018.01.18

by たくろーどん

Basics-index-