Contents
R-MSMのPWM制御
1.PWM制御とは
PWM(Pulse Width Modulation)制御とは、パルス幅変調という意味です。電気信号を周期一定のオンとオフの繰り返しにして、そのオンの時間の割合を変えることで、電力や電圧を制御する方法です。例えば、オンとオフの周期が1秒だとしたら、オンの時間が0.5秒なら50%、0.2秒なら20%、0.8秒なら80%というように、パルスの幅を変えることで出力を変えることができます。
工業用ドライブとしてPWM信号使用する場合は、2kHz~10kHz程度のレンジのPWM周波数が使用されるようです。周波数が高いとモータにおいて低損失、PWM周波数による可聴ノイズが無いといったメリットがありますが、インバータでのスイッチング損失の増加、放射無線周波数ノイズの増加といったデメリットがあります。
PWM制御は電力制御にもサーボモータ制御にも使われます。電力制御では、PWM信号を使って電子回路やLEDなどの負荷に電力を供給します。PWM信号の割合を高くすれば、負荷に流れる電流も大きくなります。PWM信号の割合を低くすれば、負荷に流れる電流も小さくなります。これによって、電力の消費や発熱を抑えることができます。
R-MSMのPWM出力は周波数f=50Hzです。オン時間の比率は、0%~100%まで1024段階で設定できます。
PWMのオン時間を変えた際のLEDの光の強さの変化を次に示します。0:オン比率10%、1:オン比率:30%、2:オン比率:100%
サーボモータ制御では、PWM信号を使ってモータの回転角度を制御します。PWM信号の割合に応じて、モータの回転角度が変わります。例えば、ロボットのアームやカメラのズームなどにサーボモータが使われています。PWM信号を送ることで、目的の位置や角度にモータを動かすことができます。
PWMのオン時間を変えた際のサーボモータ(SG90)の動作を次に示します。
以上がPWM制御の基本的な仕組みと応用例です。PWM制御はシンプルで効率的な制御方法であり、様々な分野で活用されています。
2.R-MSMでのPWM出力
R-MSMは、コネクタJ11から3本のPWM信号を出力することができます(参考HP:4-4) PWM出力の設定コマンド)。
信号の振幅が、オン電圧3.3V/オフ電圧0.0Vで、周波数が、50HzのPWM信号です。オンとオフの比率は、コマンドをシリアル信号で送ることで変えることができます。
設定値は、pwm0,1,2_val=0~1023(pwm0:J11の1pin出力、pwm1:J11の2pin出力、pwm2:J11の3pin出力)です。
設定値0の場合は、ずっとオフ(オン比率0%)になります。設定値1023の場合は、ずっとオン(オン比率100%)になります。設定値127の時は、オン比率(127+1)/1024 = 12.5%、設定値511の時は、オン比率(511+1)/1024 = 50%になります。次に、波形を示します。
3.Node-REDを使ったLEDの発光量の調整
PWMのオン比率を変えて、LEDの発光量を変えてみます。
3-1.回路図
コネクタJ11の4ピンがGNDですので、1ピン、2ピン、3ピンから2kΩの抵抗とLEDを介して4ピンに繋げます。
3-2.PDHのNode-REDのフロー
PDHのNode-REDのフローを次に示します。各ピン毎にsliderノードとtextノード、rangeノードとfunctionノードで構成されています。sliderノードは、オン比率0%~100%の間で10%単位で変えることができるように設定しています。そして、textノードで数値の表示を行います。並行して、rangeノードで、0%~100%の数値をpwmの設定値0~1023に変換します。最後のfunctionノードで、pwmのコマンドの形式に変換します。
“pwm0_value = 512”という形式に変換します。
msg.payload = "pwm0_value=" + parseInt(msg.payload,0);
return msg;
コマンドは、serial outノードから/dev/rfcomm0を介して、R-MSMに送信されます。pwm1, pwm2も同じ内容です。
3-3.動作確認
pwm0のオン比率=10%、pwm1のオン比率=30%、pwm2のオン比率=100%にした際のLEDの光量を次に示します。
LEDは人間の目には、オンしているときとオフしているときの明るさの平均で、明暗が見えますが、写真に撮ると、シャッタースピードが速いとオンかオフしかありません。
従って、長時間露光モードで撮影しています。
4.Node-REDを使ったサーボモータの駆動
PWMのオン比率を変えて、サーボモータSG90を動かしてみます。
4-1.回路図
コネクタJ4の1ピンが+3.3Vです。2ピンがGNDですので、J11の4ピンGNDと繋げます。PWMは、J11の1ピンを繋げます。
4-2.R-MSMのサーボモータSG90用コマンド
R-MSMのPWMポートには、SG90用のコマンドが準備されています。SG90の仕様を以下に示します。周期20msに対して、1.45msのオン期間があると、中間位置になり、0.5ms以下で-90°、2.4ms以上で90°となる仕様です。
そこで、0°を設定すると仕様の-90°の位置になるように、また、180°を設定すると仕様の90°になるようにオン期間を計算して設定するコマンドがあります。(参考HP:4-5) サーボモータ制御コマンド)
servo0,1,2_deg = 0~180と設定すると、PWMの設定値に換算して設定されます。
4-3.PDHのNode-REDのフロー
PDHのNode-REDのフローを次に示します。servo0を、sliderノードとtextノード、functionノードで構成しています。sliderノードで0度~180度まで10度ステップで変えることができるようにしています。そのsliderノードの出力をtextノードで表示しています。functionノードは、servo0_degコマンドの形式に変換しています。
“servo0_deg=180”という形式に変換します。
msg.payload = "servo0_deg=" + parseInt(msg.payload,0);
return msg;
コマンドは、serial outノードから/dev/rfcomm0を介して、R-MSMに送信されます。
4-4.動作確認
servo0のdegコマンド、servo0_deg=0~180を使って、SG90のサーボの軸を回転させています。
ダッシュボードのスライダを動かすとSG90のモータの軸が0°~180°の間で動きます。
写真は、servo0_deg=180の時の軸の位置です。