mipsparc が 2021年02月08日11時56分59秒 に編集
IFユニット更新(マスコン対応など)
タイトルの変更
本物部品を用いたディーゼル機関車シミュレータの制作(ブレーキ装置編)
本物部品を用いたディーゼル機関車シミュレータの制作
本文の変更
こんにちは。mipsparcと申します。Twitterでも同名でやっておりますので、どうぞよろしくおねがいします。 さて、皆さんは鉄道はお好きでしょうか。 突然宣伝ですが、2月に改訂新刊の同人誌「改訂 鉄道車両内ネットワークの基礎」が出ますので、ぜひご覧ください。 [https://mipsparc.booth.pm/items/2705808](https://mipsparc.booth.pm/items/2705808) ## 序 私は、特に車両ではDE10型ディーゼル機関車というのが好きで、撮りに行ったり、牽引された客車列車に乗りに行ったりしています。  実はこの子、1960年代に製造が始まり、そろそろ置き換えの時期を迎えています。そのため、各種部品が車両基地公開やヤフーオークションに流れる状態になってきました。 数年前にマスコン(マスターコントローラ ≒ アクセル)は手に入れて、読み込む仕組みを作ってシミュレータとして運用していたのですが、ブレーキ装置が手に入らず、自作でどうにかやっていました。 この度、秋田県の臨海鉄道である「秋田臨海鉄道」様が廃業されるということで、現地オークションで5万円でブレーキ弁を落札しました。(箱に入れる方式で、他の方がいくら出したのかは不明なのでちょっと損したかも知れないですが)  落札したのは良いものの、現地(秋田)まで自分で改めて取りに行く必要が有るということで、日を改めて梱包材を大量に抱えて行ってきました。  こちら、左の制御盤は軽いのですが、ブレーキ装置は鋳鉄の塊でなんとおよそ40kg有ることが発覚し、梱包した上で、飛脚ラージサイズ便(壊れても保証しない特約つき)でなんとか家に送ることができました。  ## ハード編 最初は空気圧をかけて実際に圧力センサーで取るのも考えましたが、専用のマニホールド(裏側から空気を出し入れするので、そのアダプターとなる装置)が必要になるので、早々に諦めました。  届いて数ヶ月放置していたのですが、ある日転がして落ち着いて裏側をみてみたところ、ブレーキレバーと同じ軸で直結したカムが有るのを発見しました!  カムの先端にはおあつらえ向きな六角ボルトとネジが出ていました。ネジはピッチが完全に一致した受けを用意して正確に接続するのは困難だと判断しました。 そこで、カップリングジョイントを六角ボルトに取り付けることにしました。  https://www.monotaro.com/p/2220/2513/ カップリングジョイントとは、モーターなどの軸と、他の機械の軸のズレを吸収する部材です。 特にこのアサ電子工業のボールカップリングは驚異的にこの要件に合致していて、大きな縦・横軸の変位を吸収しつつ、回転を確実・精密に伝えます。今回は六角ボルトを12mm側で固定して、反対側が6mmのものを発注しました。1190円でした。(安い!)  しかし、このままでは地べたに置いたままです。そこで、台を作ることにしました。(これが大変だった) 裏側にはM10の取り付け穴が4箇所以上あったため、まずはアダプターとなる厚い木板と4本のボルトで接続することにしました。大きな穴を電動ドリルで開けて、締結しました。穴の位置合わせがとても難しかったです。 アダプターとなる板は、東急ハンズで大きな板から切断していただきました。  台はスツール(椅子)として販売されている製品を流用しました。椅子のため、耐荷重は問題ないと思われます。重心位置が課題ですね。(5500円) https://item.rakuten.co.jp/kaiteki-homes/a7401-011  天板とアダプターの間を大量のタッピングネジで締結しました。このとき、下穴を深さ最後までしっかりとあけないとドリルが進まないのには苦しめられました。そして搭載完了!  次に、6mmの軸穴から得られた角度を電気信号に変換する必要があります。 今回は、秋月電子で扱っている多回転ヘリカルポテンショメータ BOURNS 3590Sを購入しました。これはふつうのボリュームは360°未満しか取得できないのが、なんと10回転まで取得できるという代物です。軸が長かったため、無理やり金属のこぎりで切ってしまいました。今考えれば切らなくても良かったと思います。 電圧の変化が小さいため、Arduino Nano EveryのADCでは10bit(1024段階)のため足りません。そこで、別付けの16bit高精度ADCをつけることにしました。こちらも秋月電子で扱っているDIP化済みMCP3425で、ArduinoとI2Cで通信します。I2CはSPIよりも簡単なのでおすすめです。16bitは65535段階のため、十分な精度でした。  ただ、これにも罠があって、基準電圧の2.048Vまでしか測定できない(?)ので、抵抗分圧などをして工夫することが必要です。 タカチのSW-75Sというケースにポテンショメータを取り付けて、3ピンなので手頃な3.5mmオーディオジャックを流用してモジュールにして、ホットボンドで取り付けました。このとき失敗したのは、錫メッキ線でジャックと接続してしまった点です。錫メッキ線は硬いのでちょっとした負荷で半田面に衝撃が伝わるため割れてしまい、あとで撚り線で施工し直すことになりました。  これで、実際にブレーキハンドル角度を電圧に変換することに成功しました。動画は以下です。 https://twitter.com/mipsparc/status/1349696341027373058?s=20 そして、Arduino Nano Everyとシリアル伝送を用いてPCに取り込むことにも成功しました。動画は上のリンクのツイートツリーにあります。  そして、それっぽい色で板を塗りました。せっかく調色屋さんに頼んだのですが、ちょっとズレてがっかりでした。 
 さすがにブレッドボードのままでは運用できないので、今後の拡張も考えて大げさなインターフェースボックスを作りました。タカチのPF18-5-12です。ラジオデパートにあるエスエス無線さんはタカチのケースを網羅しているのでおすすめです。
 さすがにブレッドボードのままでは運用できないので、今後の拡張も考えて大げさなIFユニット(インターフェースユニット)を作りました。タカチのPF18-5-12です。ラジオデパートにあるエスエス無線さんはタカチのケースを網羅しているのでおすすめです。
マスコンが届いたら、9ピンくらいのD-sub端子を埋め込んで接続しようと思います。 ## ソフト編 ところで、 > 数年前にマスコン(マスターコントローラ ≒ アクセル)は手に入れて、読み込む仕組みを作ってシミュレータとして運用していたのですが、ブレーキ装置が手に入らず、自作でどうにかやっていました。 と言いましたね。様子はこんな感じでした。  これは大学のサークルで個人的にやっていたのですが、左が自作のブレーキ弁です。軽いのが不満でしたが、本物が手に入って幸せです。このシステムは、運転操作をすると模型が走り、音が適切に鳴るというものです。動画は以下です
[https://twitter.com/mipsparc/status/1188357493136605184?s=20](https://twitter.com/mipsparc/status/1188357493136605184?s=20)
@[twitter](https://twitter.com/mipsparc/status/1188357493136605184?s=20)
このシステムと統合すれば、夢が叶うわけです。 残念ながら緊急事態宣言下で部室から持ち出せないのですが、ブレーキだけでもAPIにつなげました。 詳細なソースコードは[GitHub](https://github.com/mipsparc/DE15/)を参照ください。コンピュータ側はすべてPythonで書かれています。シリアル通信を別プロセスで行い、ノンブロッキングで共有メモリで実行するのがポイントです。シリアル通信が一瞬固まったときにプログラム全体が止まるのを防止したり、多数の機器と同時シリアル通信するのを実現します。 今回書いたプログラムはこちらです。 https://github.com/mipsparc/DE15/blob/master/Brake.py https://github.com/mipsparc/DE15/blob/master/HID.py シリアル通信は一定の確率で異常値が出るので、それの読み飛ばしなどの処理に気を使いました。 そして… システムに統合することに成功しました。動画は以下です
https://twitter.com/mipsparc/status/1356408776585146368?s=20
@[twitter](https://twitter.com/mipsparc/status/1356408776585146368)
さらに、実際の鉄道模型を走らせるのにも使用できるようになりました。動画は以下です
https://twitter.com/mipsparc/status/1356616736833892352?s=20
@[twitter](https://twitter.com/mipsparc/status/1356616736833892352)
とりあえず今回は以上でブレーキシステムは完成とします。はやくマスコンを持ち帰って運転したいですね……! ## 今後の展望 当時、マスコンからの読み込みや速度計・圧力計サーボへの書き込みはそれぞれ専用のPIC+UART-USBでやっていたのですが、無駄が大きいので、この際に1つのArduinoにまとめてインターフェースボックスとしたいです。タカチの中サイズボックスと多芯ケーブルと多心コネクタ(UTPケーブルでも良い)をつかうことになりそうですね。 読んでいただきありがとうございました。 mipsparcでした。
(なお、DE10と文中では簡単のために言っていますが、正確にはDE15ラッセルヘッドです。鉄道詳しい人いたら気づいたかも知れませんが…まあ似てるしヨシ!)
(なお、DE10と文中では簡単のために言っていますが、正確にはDE15ラッセルヘッドです。鉄道詳しい人いたら気づいたかも知れませんが…まあ似てるしヨシ!) ## 2/8追記 マスコンが手元に来るまで時間がかかりそうなので、IFユニットにマスコン信号対応工事を施工しました。  ヒロセのD-Sub9ピン圧接コネクタとリボンケーブルを用意して、万力で圧接しました。はんだ付けの手間がいらないので大変便利です。これをGPIOにつないで、各自プルダウン抵抗をつければINPUT8ピンが完成です。(1つのピンには常時5V)。マスコンは5接点あれば14ノッチ拾えるので、あと3つボタンなどに使えます。 はんだ付けは簡単に聞こえますが、そこまで上手でないので、ハンダブリッジに苦しめられました。裏側は見せられません。 ケースに四角い穴を開けるのは大変でした。マステに四角い線を引いて、ドリルとニッパで大体の穴を開けて、ひたすらヤスリがけです。きれいにできてよかったです。 最初はメンテナンス性を優先して内部接続にQIコネクタを使用したのですが、このケースは左右が外れるので、必要ありませんでしたね…。接触安定性が下がるので、ちょっと後悔してます。 そして、試験用マスコンを制作しました。14接点のロータリスイッチを6段階までに制限(付属の介在物でできる)しました。  信号は本物とは異なるビットパターンなのですが、それはソフト側で吸収することにしました。試験機は簡易に作りたいですからね。 これで無事、マスコンで自由に加減速ができるようになりました。 同時に、以前から使っていた圧力計のサーボと速度計についても接続できるようにケース加工しました。速度計はそれ自体がバナナ端子なのでバナナ端子、サーボはブレーキと差し間違えないようにステレオ2.5mmジャックとしました。すべての端子の形状が違うのは、誤接続防止に大変寄与すると思います。 一番苦労したのはPython側とArduino側の独自プロトコルでうまく通信できなかった点ですが、説明しづらいので省略します。 今度こそあとは待つだけ…?! (また更新するかも知れません)