HOME >> 鉄道模型工作室 >  ポイントのスローアクション駆動 サーボモータの波形を観察

鉄道模型工作室 ポイントのスローアクション駆動 サーボモータの波形を観察

 Nゲージのポイントを実際のポイントの様にスローアクションで駆動させようと挑戦しています。 先回はサーボモータ方式で駆動させましたが、システムの作動中における電圧と電流の動きについて、オシロを持ち出してきて観察してみることにしました。

 

  .

■ オシロによる波形観察回路

 Nゲージのポイントをスローアクションで駆動させようと挑戦しています。 そこで、サーボモータが作動中における電圧と電流の動きについて、オシロを持ち出してきて観察してみることにしました。

 サーボモータに供給される電圧と、その時に流れる電流を観察するため、サーボモータの供給電源回路の中に、オシロ用測定回路をを挿入し観察することにしました。 回路図を右にしめします。 また、この時の実験の様子を下に示します。

 先回報告した回路より、10KΩのプルダウン抵抗を追加してポートの浮き状態を防止する配慮をしています。

 使用したオシロ用測定装置は、「KATOのパワーパック スタンダードSXを導入」(2021/6/8)にて使用していたものです。 使用したシャント抵抗は、0.2Ωの1W抵抗です。

 また、電流測定時の電圧ゲインが小さいためノイズが酷く、0.1μFのパスコンを取付けましたが、あまり効果はありませんでした。 定常的なパルス波形を測定する場合なら多数の測定値の平均を計測するようにセットすればよいのですが、単発的なパルスなのでこの方法を使用しませんでした。 おおよその傾向が分かれば良しとしました。

 

■ 観察結果

 実際の作動状態を観察してみましょう。 

● 基本波形を見る

 オシロの端子の接続状況は、CH1の黄色線はPWM 信号線に、CH2 の青色線はシャント抵抗による電圧降下量を示す I 端子に接続しています。 GND はGND端子としています。 待機状態から作動した時の様子を下左に示します。 ポート9からはPWM信号た常に出力されているのが分かります。

 その待機状態時の波形を拡大して測定した時のオシロ画面を下中央に示します。 そしてこの画面よりパルス波形の情報を読取ることが出来ます。 さらに、サーボモータが作動している時の拡大波形を下右側に示します。 電流側のCH2 が反応していることが分かります。 

 待機状態のPWM信号は、50HzでDuty比は7.21%です。 綺麗なパルス波です。 作動中はDuty比が増加し電流もパルス状に発生していますが、PWM信号とは同期していません。 この時の画面右側に示された測定データは、変化するパルスのどこ時点を測定したのか、また平均値なのか不明なため、参考に出来ませんでした。

● 電流の様子を見る

 波形の大まかな様子が分かったので、今度は、Auto状態で波形を流しておき、ここぞという時にストップを掛け、画像のハードコピーを取ってから、時間軸を拡大したり場所を移動させてその時の画面をハードコピーしています。 下左はストップ時の画面で、右側がその拡大画面です。 こうすると、ポイントを定めた状態の波形を観察することが出来ました。

 

 電流は、15msec毎のパルス状に立ち上がっており、その値は 120mV程度です。 電流に換算すると、120mV/0.2Ω = 600mA と計算されます。 瞬間的ではあるますが、Nゲージのモータと比べて、結構大きな電流が流れているのですね。  また、電流のパルス幅は一定していませんね。

 また、サーボ作動中のDuty比を観察しようとしたのですが、値はどんどん変化していたので記録できませんでした。 パルス幅の変化をなんとか記録できないか調べたのですが、その方法が判りません。 画面をカメラで撮影するしかないようですが・・・・・・・・。

 サーボモータ作動中のPWM 信号は、Duty比を少しづつ変化させて発信されていました。 この変化に対応してサーボモータが追従作動していると考えられますね。 この変化の速さは、スケッチの中の myservo.write(110,10,true); の命令に従って処理されていると理解しました。

● 全体の様子を見る

 オシロのスイープ時間を遅くして、作動の全体を記録してみました。 オシロのデータ記録時間内に作動時間が収まるように何度かトライして記録しました。 この時の記録状態を下に示します。 左の画面は、画面表示する時に時間軸を大きくして全単体の記録状態を確認したものです。 下中央の画面は、時間軸を短くしてパルスの様子を見ています。 さらに時間軸を小さくするとパルスの波形が観察されます。 下右の画面。 そろそろ測定刻みの限界に近づいているので波形が三角波に近づいてきましたので、この辺が表示の限界ですね。

● 供給電圧を見る

 意外と大きな電流が流れていたので、今度は供給電圧を観察してみました。 CH1の黄色線を供給電圧を示す E 端子に、CH2の青色線をシャント抵抗による電圧降下量を示す I 端子に接続しました。 供給電圧は 5volt 一定でしたが、サーボが作動中は 1volt程度低下していました。 ピーク to ピークの値が1.28v ですので、ひげを考慮して1.2ボルトは低下しているものと考えられます。

 水平時間軸を拡大して波形の具合を見てみます。 5msでは三角波になってしまっているのでこの条件での表示の限界です。

 そこで、測定時のスイープ時間の設定を細かくして、波形重視の観察を実施してみました。 

   

 今度は波形の様子が詳しく観察できました。 電流が流れている時間、即ちモータへの電力供給時間は最大でも 1msec 程度のパルスとなっていますし、立上り時間は、0.2〜0.3msec 掛かっているようです。 この電流の流れに同期して電圧降下も発生しています。 当然ですかね。 また、上右の写真は、最初のパルスを狙って記録したものですが、電流が少し高めとなっています。

 このデータより、電流は、120mV/0.2Ω = 600mAですので 、電圧降下より配線抵抗が 2.0Ω、サーボモータの内部抵抗が 6.3Ωと計算されます。 モータの消費電力は、0.6A×3.8volt = 2.3 W と計算されます。  どうやら模型用のマブチモータと同程度と考えられます。

 

■ 待機状態を中止する

 今回の波形観察より、サーボモータへの信号は、待機状態と言えども常時発信されていることが分かりました。 なんだか無駄の様な気がして、必要な時に初めてポートを作動させるようにすることにしました。 さらに、実験中、何もしていないのにギギとちょっとだけ作動してような状態に、たびたび遭遇したからです。 おそらくノイズによる反応と考えており、その防止策にもなると考えたからです。

 レイアウトでの実際の制御回路では、ポイント駆動制御部分を関数化する予定です。 操作スイッチ、あるいはシーケンス制御によって、定位あるいは反位に移動するように作動させるのですが、そのチャンスと時間は少ないと考えています。

 そして、この関数が呼び出されて時に始めて、サーボ変数をピンに割り当てます。 即ち、関数内で、attach(pin) 命令を実行させ、作動完了後は detach() 命令でピンを解放させます。 このようなシステムを模擬して記述したスケッチを右にしめします。

// サーボモータを使う その4

#include <VarSpeedServo.h>

VarSpeedServo myservo;
int point;
int pos;

void setup() {
  pinMode(2,INPUT);
  Serial.begin(9600);
}

void tei_i(){
  myservo.attach(9);
  myservo.write(110,10,true);
  myservo.detach();
}

void han_i(){
  myservo.attach(9);
  myservo.write(87,10,true);
  myservo.detach();
}

void loop() {
  point = digitalRead(2);
  pos = myservo.read();

  if (point == HIGH  && pos <95 ){
    Serial.println(point);
    Serial.println(pos);
    tei_i();
  }
  else if (point == LOW  && pos >92 ){
    Serial.println(point);
    Serial.println(pos);
    han_i();
  }
  delay(500);
}

● スケッチ変更後の波形

 右に示すスケッチ その4を走らせた場合の波形を下に示します。

 上の写真はPWMパルスの先頭部分から終りの部分までです。 PWM信号が入ってからしばらくして電流が流れ始めていますが、終了時はほぼ同時です。 この先頭部分と終了部分部分を拡大したのが下の写真です。

 この傾向は、他の場合でも同じでした。

 関数を呼び出さない場合は、信号はLOW 状態を維持しており、もくろみ通りの結果です。 待機状態の時や作動中の状態を再確認しておきます。

 

■ まとめ

 サーボモータの消費電流は0.6Aと意外と大きく、ArduinoのVCCピンは200mAが絶対最大定格のようですとの情報もあるので、別電源から供給するのは必須のようです。 また、待機状態が長い場合は、ノイズによる誤作動の心配もあるので、必要時に始めてサーボ変数をピンに割り当てるのどの工夫が必要となるでしょう。

   *****************************************************************

 今回の実験を通して思った事がありあます。 このPWM信号によるサーボモータの制御は、デジタル制御なのか、アナログ制御なのかと考えたことです。 パルスによって制御しているのでデジタル制御のようですが、デューティ比というアナログ量を使っているのでアナログ制御ですよね。 それも、その変化量はわずかです。 これでサーボの角度を制御しているとは? 精度が期待できないような気がします。

 このシステムでは折角デジタル通信の機能があるのですから、シリアル通信などの手段をつかって精度の高い角度制御が出来そうな気がしますが、そのようなニーズが無いのでしょうね。 精度の高い角度制御を求める場合は、ステップモータを使えということですかね。 こちらはパルス数で角度を制御しているのでデジタル制御ですね。

 結論として、サーボモータを使用する時は、装置が簡単ですがアナログ制御であり、ステップモータを使う時は装置が複雑になるけれどもデジタル制御で実施されているということを勉強しました。

ページトップへ戻る  .


 2022/10/7