SL鉄道模型ポイント電動化(arduino編)
2012年12月26日
2012年12月27日/2013年2月25日改訂
前回は講談社の週刊SL鉄道模型の電動ポイントをレイアウトに設置しました。
今まではポイントをandroid携帯やWindows PCでコントロールしていましたが今回は通常のNゲージのようにメカニカルスイッチで切り替える方法を試してみます。
arduinoというマイコン基板を使用します。
今回はこちらの機種を使用しました。
もう少し安い機種もありますがUSBが装備されているのでプログラムを入れるのにUSBケーブル1本でそのままPCに接続できます。
なおarduinoは日本語の開発環境が整っているのでプログラムを入れるのは簡単に行えます。
今回使用しているロボゼロ用のサーボはコマンドによる制御以外にPWMによる制御もサポートしています。
arduinoでこのPWMのパルスを生成してサーボを制御します。
arduinoのデジタル入力端子を使ってこの端子のレベルのLOW/HIGHTを切り替えて生成するパルスの幅を変更して制御します。
まず配線作業を行います。
サーボのGND(黒)をボードのGNDにサーボの電源(中赤)をボードの5Vにサーボの信号線(端赤)をDIGITAL3に接続します。
今回使うスイッチはON/OFFを切り替る2Pのトグルスイッチです。(3Pの場合は片方のON端子は使いません)
スイッチの端子をボードのGNDにスイッチのもう片方の端子を1KΩの抵抗を介してボードの5Vに接続します。
抵抗を付けた方の端子はボードのDIGITAL8に接続します。
この抵抗はプルアップ抵抗でスイッチが解放になった時に5V(HIGHレベル)を入力端子に供給するためのものです。
arduinoに内蔵されているプルアップ抵抗を使う事により外付けのプルアップ抵抗は不要となります。
スケッチでpinMode(digitalPin, INPUT_PULLUP)と定義しておくとその端子のプルアップ抵抗が有効になります。
サーボのGNDとスイッチのGNDを別々の端子に接続していますが両方を接続して同じ端子に接続しても構いません。
またサーボが異常な動きをするとポイントが壊れる恐れがあるので動作確認が終わるまでポイントからサーボを外してサーボに負荷のかからない状態で行ってください。
arduinoにプログラムを転送します。
これらの作業はWindows PCを使って行います。
プログラムの転送に先だってarduino関連のソフトウェアのインストール作業が必要です。
またarduinoとWindows PCを接続するためにUSBケーブルが必要です。
今回使うUSBケーブルはType-Bといってプリンタなどで良く使われる先が正方形のような形をしたケーブルです。
Windows PCのソフトウェアのインストールはこちらのサイトに分かりやすく書かれています。
サンプルプログラムでarduinoのLEDが点滅する所までやってみてください。
arduinoの場合プログラムの事をスケッチと言うそうですがまずこちらを開いてください。
開いたら全体を選択(マウス操作または編集メニュの全てを選択コマンド)してください。
続いてコピー(マウス右ボタンまたは編集メニュのコピーコマンド)してください。
次にWindows PCにインストールしたarduinoを立ち上げておいて空白の画面がある場合は編集メニューの貼付けコマンドを実行してください。
空白の画面がない場合はファイルメニューの新規作成ファイルコマンドで空白の画面を開いてそこで貼付けコマンドを実行してください。
後は画面の転送アイコン(上の画面の白くなっている右矢印)をクリックしてプログラムを転送してください。
転送に先立ってUSBケーブルが接続されている事を確認してください。
転送が終わってしばらく経つとプログラムが自動的に実行されますのでスイッチのON/OFFでサーボが動くはずです。
なお転送の前に左隣のチェックアイコンをクリックする事によってプログラムの書き間違いがないかチェックする事ができます。
スケッチの1750と250はPWMのパルス幅を決める値でこれによりサーボの角度が決まります。
サーボの角度を変えたい時はこの値を変更してください。
変更は通常のキーボード操作で行えます。
変更した時はファイルメニューの保存コマンドで保存しておくと次回から変更したものが使えます。
一度転送したプログラムはarduinoからUSBケーブルを抜いても消えません。
次にarduinoに電源を入れた時に自動的にプログラムは動き出します。
プログラム転送後はUSBケーブルでパソコンにつなぐ必要がなく5VのACアダプタを使って電源が供給できます。
中が+のコネクターでarduinoの電源に接続します。
また電源としてはPCとUSBケーブルで接続したりUSB出力型のACアダプタとUSBケーブルで接続して電源を供給する事もできます。
次に2台のポイントを動かす方法を考えてみます。
簡単な方法として2台同時に同じ角度で構わなければサーボを並列に2台つなげば同時に動かす事ができます。
この場合はスケッチは1台の時と同じで動きます。
出力端子を分けると違った角度や反対の動きをさせる事ができます。
4番端子はPWM出力ができないのでひとつ飛ばして5番端子にサーボ2の信号線を接続します。
この場合スケッチはこのようになります。
この例はサーボを反対方向に動かす場合です。
ふたつのサーボの角度を変える場合は1750と250の数字を変えてください。
次にふたつのサーボをバラバラに動かす方法です。
スイッチ回路をもうひとつ作って片方の端子をDIGTAL9に接続します。
この場合スケッチはこのようになります。
このサーボはPWMの制御の他にコマンド制御もサポートされています。
今までWindows PCやandroidからはコマンド制御で動かしています。
arduinからもコマンド制御で動かす事ができます。
配線はサーボの信号線をDIGITAL1番(右から2番目)に変更するだけです。
このPINはシリアル端子(Tx)でコマンドをデバイスにシリアル送信するのに使います。
サーボひとつを動かす場合はこちらスケッチになります。
1000と-1000はサーボのポジションの値でニュートラル(中間位置)に対しての角度で表します。
角度は通常の角度数を10倍した値で-1500(-150度)〜1500(150度)が指定できます。
必要に応じてこの値を変更してください。
サーボが複数の場合はサーボを並列につなぎます。
信号線も同じDIGTAL1に接続します。
先程のスケッチでは両方のサーボは同じ方向に同じ角度に動きます。
ふたつのバラバラに動かすにはサーボIDを変更する必要があります。
こちらのスケッチは片方のサーボのサーボIDを2にした場合です。
サーボIDはこちらスケッチで変更する事ができます。
サーボIDを変更したサーボをARDUINOに接続してこのスケッチの最初の行を目的のサーボIDに変更してはARDUINOに転送します。
サーボIDが書き換えが終了したらARDUINOのLEDが点滅します。
スイッチの配線はPWM制御の時と同じになります。
メカニカルスイッチでの切替なら通常の電磁式電動ポイントに置き換えれば済むだけの事ですが、今回arduinoを使ったのは転車台に活用できないかと考えました。
転車台は今までのポイントの電動化と同じやり方でWindows PCやandroidを使えば制御できそうですが、これらを使わないやり方を模索していました。
今回arduinoが使えそうな事が分かったので次回は転車台への転用を踏まえて転車台の電動化の実験を行いたいと思います。
転車台の場合、サーボの角度の精度が要求されますのでPWM制御よりコマンド制御の方が適している思われます。
今回行った改造はポイントやサーボの破損を伴うのであくまでも自己責任という事でお願いします。
目次に戻る