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

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

 Nゲージのポイントを、実際のポイントの様にスローアクションで駆動させようと挑戦しています。 ステップモータでのポイントを駆動に続き、今度はサーボモータで駆動させました。

 

■ サーボモータについて

 使用したサーボモータは、Tower Pro 製のMicro Servo Digital 9g SG90 です。 

 電源電圧はDC5volt、制御角±90°、配線は茶がGND、赤が電源、橙が制御信号です。 配線はこの3本だけであり、制御信号は5vのPWM信号を使用して、Duty比を変えて制御角を指示します。 このため、ステップモータやDCモータ使用のように、モータドライバは不要なのです。 ただし、電源はArduino とは別電源を使用した方がよいとのアドバイスもありましたので、参考にしました。 ただし、PWM信号線の電圧ライン調整のために、GNDラインは共通にしておく必要がありますね。

 一方、制御方法はPWM信号のDuty比を制御する必要があるのですが、Arduino では使いやすいライブラリがあるので、角度を指定すれば良いだけです。 このように、使いやすいシステムです。

 

■ サーボモータの取付

 ポイントとへの取付けのために、先回と同様に簡単なベニヤ板を使いました。 まず、ポイントをベース板に取付け、ポイントの操作爪の近くに、サーボモータの取付け用の穴を開けました。 サーボモータの軸部は2重円形状ですので、それに合わせてダルマさんの様な穴を開けました。 回り止めを考慮した形状ですね。

 参考にしたサイトでは、作動レバーの取付にいろいろな工夫をされていましたが、今回はΦ0.5mm のリン青銅線を使用し、Φ0.3mm の銅線を使って固定しました。

 実験がうまく行ったら、工夫してみたいと思います。

 サーボモータは、ベース板の穴に押し込んだ状態で取付けています。 穴の加工が上手(?)だったのか、ピッタリであったので、何もしなくてもしっかりとはまっています。 揺動レバーの位置合わせに戸惑いましたが、最終的にはプログラム上で修正することにしました。

 

■ 回路構成

 サーボモータの場合の回路構成は簡単です。 ただし、モータ用の電源は、別置きの安定化電源から供給してArduino の負担を軽減しています。 そして、ポイントの操作指令のためにオルタネイト動作方式のプッシュスイッチを設けました。

  

 装置のセット具合を上右の写真にしめします。

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

#include <VarSpeedServo.h>

VarSpeedServo myservo;
int point;
int pos;

void setup() {
  myservo.attach(9);
  pinMode(2,INPUT);
  Serial.begin(9600);
  myservo.write(90);
}

void loop() {
  point = digitalRead(2);
  pos = myservo.read();
  Serial.println(point);
  Serial.println(pos);
  
  if (point == HIGH  && pos <95 ){
    myservo.write(110,10,true);
  }
  else if (point == LOW  && pos >85 ){
    myservo.write(87,10,true);
  }
  delay(500);
}

 

■ スケッチの記述

● テストその1: 

 最初は、定番のライブラリ Servo.h を使用して実験を始めました。 サーボモータの作動が確認できたので、スイッチ回路の情報処理を使って右回転と左回転の動作を確認しました。 また、ポイントレバーの振れ幅を調整しました。 しかし、アームは素早く作動するので、スローアクションとは言えません。

 

● テストその2:

 がおうさんの「はんなり華鐵記」に紹介されていたスケッチを参考にして、for ループを使って速度を調整しました。 でも作動は、ギクギクとした動きでした。 これではスローアクションとは言えません。 レバーが長いため、レバーの触れ角度が 約 23°と小さかったようです。 このため荒い動きとなってしまいました。 改善するためには、レバーを短くして振れ幅を60°程度まで上げる必要があるようです。

 

● テストその3:

 参考にしたサイトで紹介されていた速度調整が可能な別のライブラリを使ってみることにしました。 使用したライブラリは、VarSpeedServo.h です。 for ループを使って速度を調整する必要がなく、コマンドの中で速度が指定できるのです。 そのスケッチの内容を右に示します。

    myservo.write(110,10,true);

 このたった1行だけのコマンドで、指定の角度、その速度、および、作動完了まで処理を待っているなどの機能を指定できるのです。 また、シリアル通信を使用していますが、これは作動の状態をモニタリングするもので、本番になれば必要の無い記述です。

 作動状態を動画で紹介します。

 作動音が気になりますが、動作スピードや時間もOKのようです。

 

■ まとめ

 ステップモータ方式とサーボモータ方式を検討しましたが、細工や制御システムの構成はサーボモータ方式が簡単で、取扱が容易なシステムと判断します。 ポイントのスローアクション駆動用としては、こちらの方式を採用することにします。

 でも、実験屋として、このシステムの作動中における電圧と電流の動きがどうしても気になります。 オシロを持ち出してきて観察してみることにしましょう。

 

ページトップへ戻る  .


 2022/10/3