Nゲージレイアウト国鉄露太本線建設記

運転よりシナリー重視コンセプトで、昭和40年代後半の風景再現を目指しレイアウトを製作中です。映像・画像を交えながら、製作記に加え、随想や旅行記も発信します。2016年9月より延伸線建設に着手しました。

Arduinoユーザー必見!倉元駅制御

倉元駅制御ハード回路設計が完了したので最後はコントローラArduino制御に関してです。 Arduinoをレイアウト制御に取り入れる方が増えてますが、使用上の注意事項を解説した先行事例が少ないので筆者知見をまとめました。

【生野駅夜景】


9.Arduino IN/OUTと制御論理
倉元駅制御では、ポイントサーボ駆動中止、列車通過センサー廃止、従属接続フィーダー切替制御PL-13化してArduino制御負荷を軽くしてます。

それでも全部で36端子必要です、入力はボタン11個のパルス入力、出力はポイント7個、信号機8基の切替信号でリレードライバーを介して12Vリレーを切り替えます。 それに加え選択表示ボタンLED駆動10端子が加わり全部で36端子になります。

入力側進路選択ボタン回路は上図の通りで、5V電源からボタンを押した間だけArduinoへ5Vを供給します。 B01信号機リセットは独立機能なので押した間だけLEDが点灯、他の10ボタンは押した後も選択状態表示の為にArduino出力で点灯させます。

11個のボタン入力に対する出力論理設計はこの様になります。
B00:選択表示LEDのみH出力でボタンLED点灯、ポイント/信号機は全てLでリレードライバーOFFしリレー非通電、この状態でコンデンサ放電となる様に配線します。
B01:信号機全てLにリセットして停止表示にする独立機能です。
他ボタン:B13/B23のみ同時押し許容論理で前操作をデフォルトへプリセットし、入力対応ポイント/信号機/ボタンLEDをH出力します。


上記制御論理表で4ボタンがポイント2個充電切替になります。 Pecoポイント連動切替用に18V/7A電源を用意していただいた『がおう☆』さんに申し訳ないのですが、大容量電源使わず秋月調達19V/3.4A電源+整流ダイオードで動作可能な工夫をしました。

【1基分電流容量電源でポイント連動させる裏技】
まずボタン入力時に反位⇒定位、進行⇒停止の放電切替プリセットを一斉に行います。 その後各ポイント制御信号出力時間を個々にディレイさせて決め、例えばスパン20msecならばP1/P3とP6/P7連動ポイント充電切替は時間差0.1秒になり、一方切替完了後に他方切替の形になります。 この制御にはArduino MEGAを使う予定です。

デジタルマイクロサーボSG-90もポイントサーボ駆動開発評価用に入手してます。 コンデンサ切替採用したので、可動ストラクチャ製作しなければ不良在庫になるでしょう。 つまり筆者自身はArduino/サーボ使用未経験でスケッチ設計勉強もこれからです。

【拙ブログ2018.07.20更新】
でも『た625』さんJAM出展品システム開発に2年間電気班として深く係ってます。 デジタル電子回路は比較的容易で動かす事はできても、Arduinoサーボ駆動は非常に難易度が高く、注意点を十分理解して使わないと以下の様な問題が多発すると思います。
◆サーボが暴れる、またはピクピク微動する。
◆上記以外にも異常動作が発生し、その現象がランダムで再現性がない。
筆者愛読ブログ『イノッチ』さんが自動踏切サーボ駆動でこの問題に直面されてます。 他にもお悩みの方居ると思いますので、筆者知見をまとめる事にしました。


10.Arduino使用上の注意点
10-1.取扱注意・・・静電気に極端に弱い
鉄道模型車両と走行電源は静電気への配慮が不要です、そもそも静電気に弱いデバイスが使われてません。 DCCには使われてもケース内基板実装で注意不要になってます。 それに対しArduinoの様なデジタルデバイスは静電気に非常に弱く取扱注意です。


パチンと飛ぶ静電気放電は数万Vです、Arduinoはその千分の1.数十Vで簡単に壊れる程デリケートで、完全破壊非動作なら良いのですが、絶縁膜ピンホール軟破壊という厄介な壊れ方をします。 動いたり動かなかったり異常動作したり判断は困難です。

倉元駅制御用Arduino MEGAです、写真撮影用に左の静電破壊防止袋から取り出し、撮影後元に戻しました。 ゴム製カッティングマット上に置くのが嫌で紙を敷いてます。 Arduinoはスケッチで動く様に見えますが、スケッチをプログラムに変換する翻訳機内蔵が特徴の、プログラミング技術不要にした使い易いコントローラです。

しかし静電気に弱い特性告知が不十分でモジュール裏面に端子が露出してます。 裏面に3-5mm足があれば良いのですが、誰もこちらを下に置きます。 袋から出した瞬間から静電破壊脅威に晒され、静電気が発生し易いプラや梱包マット上に置けば電源入れる前に静電破壊しても不思議でなく、ユーザーは「変だな~」と悩み続ける事になります。


詳細は控えますが、上記開発プロジェクトではArduino MEGAを様々なモードで壊し相当数を新品交換してます。 そこで静電破壊対策に係る最初の原則です。
原則1:Arduino基板を単体で置く場合は裏面を上にする。 
ブレッドボード取付前に部品面を上にして作業する必要がある場合は、導電マット上で行うか、基板裏端子部が浮く様な仮止めスペーサー使用をお薦めします。


10-2.H/LのLは0VでもGNDではない
鉄道模型車両の様に電圧に応じ速度が連続的に変化するのがアナログ、デジタルはH/Lの2値しかありません。 入力端子はスレッショルド電圧より高いか低いかでH/L判断し、出力端子Hは5VでLED点灯可能ですが、Lは0VでもGNDでなくオープンです。 入力端子と出力端子LのGND間抵抗は数M~数十MΩで電気的にブラブラ状態です。

【JAM2018出展開発品より】
Arduino基準クロック8MHz/16MHzは2・3・4・・・倍高調波を含んだ矩形波で、軽く100MHz以上のFM放送周波数帯まで伸びてます。 入出力端子配線は1m近い長さでFM波高感度受信アンテナになります。 そして配線に乗ったノイズがH/L判断に影響を与えると誤動作します、ノイズの乗り方は一定でなく誤動作はランダムに発生します。

ノイズ対策として入出力端子-GND間にプルダウン抵抗を設置します、図進路選択ボタン回路の33kΩがそれでボタン押さない状態の入力端子抵抗(インピーダンス)を約1/1000下げます。 ノイズアンテナ感度は1/1000になりませんが誤動作防止には十分です。 低くし過ぎると出力H時の無駄飯が増えるので22kΩ-68kΩが良いと思います。 


入出力端子と言いながら選択表示LED出力端子に入れてないのは、LEDは3V以上でないと点灯せず、また万一見えない程度点灯しても問題ないので省略してます。

【前号掲載図面に追記】
ポイント/信号機切替出力端子にはプルダウン抵抗が必須です、2SC1815ベースとGND間33kΩはノイズ考慮しなければ不要ですが、リレードライバーは数万倍の電流増幅回路なので、ノイズON防止の為に設置します、第2の原則はプルダウン抵抗です。
原則2:Arduino入出力端子にプルダウン抵抗を設置する。

【前号掲載図面に追記】
Arduino入出力でなくともノイズ対策は必要で、中継信号機回路リレーから右側2SC1815までの黒ラインはオープンでブラブラです、ノイズでトランジスタがONし右斜め下LED点灯防止する為にベースGND間33kΩでプルダウンしてます。


10-3.電源回路構成の注意点
デジタルデバイスArduinoは5V駆動です。 しかし電池駆動可能にして応用範囲を広げる目的だと思われますが推奨動作電圧7-12V、内部で5V作成する仕様が問題発生の一因になってます。 最初に基本的注意事項です。
◆Arduino でのサーボ駆動はお止めください、例え動いたとしてもArduinoが過大負荷で破損する可能性が高く、システム動作信頼性を確保できません。

Arduino用12V、サーボ用5V、それぞれON/OFFスイッチを付けてと、ついやってしまう回路構成は電源供給時間差により絶対NGです、何故かは以下の通りです。
5V先12V後ONの場合:
サーボが先に起動しますが角度指定信号が供給されないので、目一杯振り切る等の暴れやプルダウンしてないと信号線が拾ったノイズで異常動作します。 強度余裕があり機械的破損は起きない様ですが、ポイント壊す可能性はありますのでご注意を。
12V先5V後ONの場合:
サーボ起動前の角度指定信号供給です、電源0V時制御端子5Vは、起動時の制御端子10Vに相当し、Arduinoより静電気に強いサーボもデジタルデバイスなので逆耐圧は低く絶縁破壊が起きる可能性があります。 件のプロジェクトでも数回サーボ交換しており、確認してませんが逆耐圧絶縁破壊が含まれてた可能性が高いと考えてます。

従って上図の様に電源/スイッチ共1個、Arduinoとサーボ同時ON/OFFの電源回路構成が必要です。 第3の原則は複数デバイス構成システムの電源単一化です。
原則3:システム電源スイッチは必ず1個にする。
システム電源単一化に関連する原則がもう一つあります。

Arduinoにはスケッチ書込み用USBケーブルが付属されてます。 ポイントサーボ切替は個体差があり1度単位でサーボ角を変える合わせ込み作業が必要です。 スケッチ書込み時Arduinoは自動判別しUSBケーブル経由でPCから5V供給を受けます。  


この機能がシステム電源単一化原則を破るので以下を遵守してください。
◆USBケーブル接続前にシステム電源をOFFし、サーボコネクタを抜く。
◆スケッチ書込み後USBケーブルを抜いてからサーボコネクタを差し電源ONする。
面倒でもこの手順を守らないとUSB経由で角度指定信号がサーボに供給され、システム電源単一化できないからです。 つまりスケッチ書込みとシステム動作の完全独立が必要であり、換言すればUSBとサーボコネクタ同時差し禁止が第4の原則です。
原則4:USBコネクタ接続時はサーボコネクタを抜く。


10-3 1/2.電源ラインのノイズ対策(追記)
記事公開後oomoriさんコメントで大切な事忘れてたのに気づきました、電源ラインノイズ対策です。 『電源配線と信号配線を離す』と書かれてますが正にその通りで、電源ラインノイズ対策はそれをより確実にする方法です。

Arduino12Vとサーボ5V電源には安定化の為に100μF程度のアルミ電解コンデンサ設置が推奨されており実施されてると思います。 アルミ電解コンデンサは大容量を小型化可能なコンデンサですが、ここで問題にしてるノイズには全く効果がありません。


数十kHzから数百kHzでは威力を発揮しますが、MHz帯に入ると使用素材の周波数特性によりコンデンサとして機能しなくなり、10MHz以上では無いのと同じです。

【秋月製品ページより】
高周波ノイズ対策にはセラミックコンデンサを使います、数MHz-数十MHzには通称チタバリ(チタン酸バリウム)が有効です。 しかしこれも百MHzが上限守備範囲です。

【秋月製品ページより】
百MHz-1GHz高周波ノイズ対策には通称チタコン1000pFを使います。 上記103Zまたは102Kを電源GND間に設置せず電源ラインと信号ラインを束ねると、誘導結合して電源ラインにノイズが乗り、誤動作発生確率が高まります。 このノイズ対策コンデンサ設置場所は電源近くでなく、デバイス(サーボ)に近い程効果があります。
原則5:電源ラインにノイズ対策コンデンサを設置する。
Arduino/サーボ双方電源に必要で、可能ならサーボ側に設置すれば完璧です。 誤動作原因の周波数成分により2品種の効果が異なりますが、まず103Zをお試しください。


10-4.誤動作で困ったら
おそらく上記5原則をその背景理解を含めて守っておられる方は1人も居ないのではないでしょうか。 背景説明含めた情報が公開されてなかったので無理もない事です。 これからArduino制御に挑戦される方に上記5原則遵守を強くお薦めします。


それだけではすでにトラブルに直面されてる方へ不親切ですので、対処法私案を以下に記します。 開封後どの様な扱いされたか解らず、破損モードもそれにより発生する異常動作も多様ですので、あくまで参考トラブルシューティングとしてご覧ください。
Arduinoの使用入出力端子全てにプルダウン抵抗を設置してください。
システム電源を単一化し、スケッチ書込み時に原則4を守ってください。
電源ラインノイズ対策を実施してください。
システム回路のGNDを強化してください、複数基板間を細く長いリード線接続したりすると、GNDラインがノイズアンテナになりプルダウン抵抗効果も下がります。
それでも異常動作が発生するとしたらスケッチミスかArduino破損です。 Arduino破損は修理不能で判断は新品交換して正常動作確認する以外ありません。
Arduino交換してなおサーボ異常動作発生時は、サーボ絶縁破損を疑うしかなく、これも判断は新品交換して正常動作確認する以外ありません。


以上Arduinoサーボ駆動を正常動作させる為の筆者知見を公開しました。 Arduinoは技術的ハードルが低い優れたコントローラですが、取扱いが難しく壊れ易い繊細な半導体で、破損モードが千差万別の判断困難なデバイスです。


ではまた。

×

非ログインユーザーとして返信する