Arduino互換マイコンで速度自動制御プラレール

材料・技法等, , ,
作った日2019年5月02日
作った人T

息子のプラレール遊びを見ていて、速度の違う列車が同じレールを走っていて衝突、脱線を繰り返しているのを見て、自動で速度を調整して衝突を回避できると良いのに…と思い、プラレールにセンサーを載せて改造してみることにしました。

ちなみに、スマホで制御可能な乾電池を使えば自在に速度を変えれますが、目指すのは全自動です。

画像クリックでAmazon商品ページ

 

まずは、メルカリで中古のプラレールを入手。E3系こまちを改造することにしました。

 

速度2段階、単2電池仕様で開けるとこんな感じですが、

 

こうします。

 

単二電池が入るはずだったスペースに、単四電池2本、DC-DC昇圧回路、Digispark(Arduino互換極小マイコンボード)、赤外線距離センサー(赤外線LEDとフォトトランジスタ)が入っています。また、ギアボックスの後ろにはモータードライバIC(TA7291P)があります。

ボディを載せると完全に隠れるようなコンパクト仕様にしてみました。

 

電源は単4電池2本に改造したら、ギアボックスの電極と繋いで、本体のスイッチと連動させます。そこから、DC-DC昇圧回路に繋げ、2.4V(ニッケル水素電池1.2V×2個直列)から5Vより少し高めに昇圧し、それをDigisparkの電源とします。Vinに入力すれば内部で5Vに降圧されます。(5Vより少し高めにしているのは、モーター始動時の電圧降下によるマイコンの誤動作を防ぐためです。もしかしたら不要かもしれませんが)

Digisparkには、赤外線LEDとフォトトランジスタからなるセンサーを接続し、電圧をADCで読み取ります。センサーの値に応じてPWMのデューティ比を変化させて出力し、モータードライバICのVrefに入力します。モータードライバICはギアボックスの後ろに固定されているものです。

モーターとマイコンの電源は分けた方が良いようですが、全てプラレールの中に収めるためにも、できるだけコンパクトな構成にするため、電源は同じものを使っています。モータードライバICには、モーター駆動用電源にDC-DC接続前の電源ラインを並列接続させ、ロジック用電源にはDigisparkの5Vピンを接続させます。

USB通信用のピンがADCに繋がるピンと共用されていることを利用し、USBソケットを介してセンサーを繋げる変態仕様です。プログラムの書き込み時にはUSB延長ケーブルを接続します。

 

ボディを乗せる前に、テストしてみました。

 

前方の障害物との距離に応じてスピードが変化しています。

 

ボディは先端部分をドリルで穴を開け、カッターで形を整えました。

 

ボディに開けた穴にセンサーを入れ、シャーシ載せるとこんな感じです。センサー以外の改造跡は、ぱっと見ではあまり分からないように出来ました。(車窓から中を除くとごちゃごちゃになっていますが)

 

走行の様子はこの通り。

 

まさにプラレール界のアイサ○ト。自動制御衝突回避システムを搭載したプラレールが出来ました。センサーとif文でできる制御装置をAIと呼んでしまう今日の日本の技術レベルなら、これは立派なAIプラレールです。

 

と、一見良くできたように書きましたが、すでにわかっているだけで3つほど重大な課題が。

まず、太陽光が入る明るい室内では、フォトトランジスタのバックグラウンドレベルがかなり高くなっていまいます。窓の方を向くだけで、障害物があると誤認識して止まってしまうこともあります。現状、カーテンで締め切ったくらい室内での走行が推奨されますが、子供のおもちゃとしては不適ですね。バックグラウンドレベルを落とす工夫が必要です。

2つ目は、レール上の障害物以外のものでも止まってしまいます。情景パーツの駅・トンネル・踏切なんかでも止まってしまい、自分が障害物になってしまいます。これは、センサーの視野を狭めればいくらか改善される気がします。

3つ目は、あまり速くありません。他の車体に追いつけないので、なかなか衝突回避が活かされません。中古の古い車体だからなのか、車体が重くなったからなのか不明ですが、モーターをミニ四駆用のものなどにかえると速くなる気がします。