マニアのメモ帳

ポイントマシンにサーボモーターを

ひとつの実験的試み

近頃のポイントマシンはモーターを使ったスローアクションが流行らしい。昔はカワイや天賞堂のソレノイド式のバチッと切り替わるやつだった。これの動作は実物の電空転轍機に似ているがこれも近頃見かけない。電動式に取って代わられたのだろう。

さて、件のスローアクションマシンンだが現在フルグレックス社から製品が出ている。これが結構いい値段だし必ずしも安定供給されていないようで、これに代わる良いものはと探していたら某動画サイトでサーボモーターの応用例を見つけた。ラジコンやロボットでお馴染みのサーボモーターをマイコンで制御するやつだ。

というわけで早速実験開始。とは言うもののマイコンは扱ったことがない。作例で使っていたAVRマイコンが手っ取り早そうなのでアルディーノを導入することにした。技術情報は全てネットから仕入れる。

・今回新規導入したものは・・・
・Arduino UNO
・中華製Arduino NANO互換機・・・実装してマイコンへの書き込み機を製作
・AVRマイコン(ATtiny13A)ほか
・サーボモーター(SG90)、及びその他電子部品

さて先ずは、クラブレイアウトで使っているレマコ社のポイントマシンの代替品を想定して実験。(レマコ廃業後フルグレックスが継承)
使用条件は電源DC12V、極性切替2線式なのでこれに合わせる。

roomlight

ブレッドボードに組んだ回路でテスト

ブレッドボード上左側にある大半の部品は降圧回路。5V電源を使用すればマイコンチップ、プルダウン抵抗、サーボモーターとノイズ対策用のコンデンサだけで出来てしまう。LEDは通電確認用なので下記回路図には記載せず。

出来れば安価に作りたいのでとりあえず実験用に400円のサーボモーターに50円のマイコンという構成にした。他に電源の仕様に合わせるために降圧回路が必要だが、全部合わせても1000円でお釣りがくるくらいだろう。

大まかな仕組は・・・
DC12V電源からブリッジダイオード経由、レギュレータで5Vに降圧、サーボモーターの駆動とマイコンに供給する。電源の極性切替でマイコンに指令するので片方の線からダイオード経由でレギュレータで5Vに降圧、マイコンへ接続。マイコンでパルス信号を生成しサーボモータの信号線へ送信。

roomlight

テスト回路(実験には手持ちの部品を使用したので数値は参考まで)

当初L7805出力側(ATtiny13A信号入力)にも電解コンデンサを入れたがLOW切替時に放電時間分だけ反応が遅れるので撤去。信号用のダイオード以外は整流用。

プログラムはArduino言語を使用、これはほぼC++と同等とのこと。C言語はもう何十年も前に一口だけ齧ったことがある。というのも当時コンピュータグラフィックスに興味があってプログラムで実現しようとあれやこれやとやっていた時期があったのだ。もう殆ど忘れてしまったが今頃役に立とうとは思わなかった。

ハードの構成は手馴れているので簡単に出来たが問題はソフトだ。小さなマイコンに収めるにはアルディーノのライブラリにある函数は大きすぎて使えないことが判明。ATtiny13Aのメモリは1キロバイトしかない。ネットの情報を頼りに手探りでやっているので条件分岐のところで迷路にハマるも何とか動く状態のものが出来た。たったこれだけのステップ数だが初心者故思いの外時間が掛ってしまった。

// サーボ(SG90)でポイント切り替え(スロー)
void setup() {
pinMode(0,OUTPUT);//5番ピンを出力
pinMode(3,INPUT);//2番ピンを入力
}

unsigned int q=1450;//パルス幅(初期値を中点に設定)

void Slow(){
//スローアクション函数
digitalWrite(0, HIGH); delayMicroseconds(q);
digitalWrite(0, LOW); delayMicroseconds(10000-q);
digitalWrite(0, LOW); delayMicroseconds(10000);
delay(5);
}

void loop() {
unsigned int p;
//角度のステップ

if(digitalRead(3)==HIGH && q>=1450){//極性と動作の判定
while(p<=95){
q=1925-p*10;
Slow();
p++;
}
}else if(digitalRead(3)==LOW && q<=1450){
while(p<=95){
q=975+p*10;
Slow();
p++;
}
}
}

プログラム(Arduinoではスケッチと呼ぶ)

この作例では45度から135度の間の90度回転するように設定、数値はSG90の仕様に合わせてある。サーボホーンとポイントのトングレールを連結すればポイントマシンとして機能するだろう。これで約2秒かけてゆっくりと転換する。上記画像のような机上の実験では問題なく動作することが確認された。

12V電源の使用を想定しているが8V位から安定動作する。大きなレイアウトの場合、電源から遠い場所では電圧降下するがこれなら問題はなさそうだ。

これを実際レイアウトに設置するとどうなるだろうか。車両のモーターからのノイズを拾って誤作動する可能性もある。エレクトロニクスは案外脆弱なのだ!

当鉄道では全てサーボモーターのポイントマシンにする予定・・・って、マイレイアウトはいつになるやら。
Click here to go to the top page