The Fool In The Valleyの雑記帳

-- 好奇心いっぱいのおじいちゃんが綴るよしなし事 --

江ノ電のBトレイン・ショーティー

バンダイの"Bトレイン・ショーティ―"は長さ方向が半分程度にデフォルメされた1/150サイズのディスプレイモデルです。
ja.wikipedia.org
特徴をとらえたかわいらしい形状が気に入っていて、個人的な思い出のある電車、列車をコレクションして壁に飾っています。

下のビデオは小田急「60000形MSE」、通称「青いロマンスカー」をnゲージ用に改造して走らせたもので、2013年に撮影したものです。これは電車は小田急―地下鉄千代田線直通の特急で、都心での呑み会があった後は、大手町-本厚木間でよくお世話になった電車です。
www.youtube.com
しかし、この"Bトレイン・ショーティ―"は2018年10月を最後に新製品が途絶えており、事実上の生産終了となってしまったのです。それで私自身もここ何年かは上述したように壁に飾ってはいますが、作ったり、走らせたりすることはなくなっていました。

しかし先週京都に行って嵐電京福電鉄嵐山本線)に乗ったときに、嵐電江ノ電が姉妹提携していることを知り、江ノ電といえばそのBトレインを買ったまましまい込んでいたことを思いだしたことから、久しぶりにそれを作って走らせてみたくなりました。
www.enoden.co.jp

持っていたのは江ノ電305形の2両セットです。ディスプレイ・モデルを作るのは簡単で、接着不要でパチンパチンと留めていくとすぐに出来上がります。


ただ、これだけではつまりません。Bトレインショーティーは上述したように動力台車を取り付けることによってnゲージの線路を走らせることができるのです。KATOからでているこんな商品が利用できます。
www.katomodels.com

これらの動力台車は多くのBトレイン・ショーティーに無改造で取り付けることができるように作られているのですが、江ノ電305形の場合、2両が連接台車でつながっていて、1両の長さが通常の車両より短い変則形状なので、台車を納めるために多少内部を削ったりする改造が必要でした。なんとか入るように工夫して下の様に仕上がりました。

完成した車両をnゲージの線路に乗せ、直流電源で電気を供給してみましたが、うんともすんとも言いません。こういう時の原因は殆んどの場合、導通不良です。鉄道模型では線路から車輪を通してモーターに電気が流れるのですが、この10年近く触っていないものですから、線路と車輪の双方に酸化膜ができて電気が流れないのでしょう。まず、綿棒にレールクリーナーを付けて拭いたのですが、それくらいでは導通は回復しません。そこで、ぼろ布にレールクリーナーをしみ込ませて、木片の芯を入れてしっかり擦って汚れを落としました。最初ザラついていたのが滑らかになっていくのが感じられます。

車輪の方も下の様にレールクリーナーをしみ込ませたぼろ布の上で転がして磨きました。
これによってきれいになったレールに電車を置くと導通してモータが回るのが確認できたので、レール全部を同様にしてきれいにしました。その作業の結果、電車が長円形につないだレールの上を何とか走れるようになりました。でも、直流安定化電源をつないで走らせるだけでは面白くありません。

そこで次にRaspberry PiとDRV8833モータードライバモジュールを使って、正転・逆転の切り替え、PWMよる速度制御がプログラムでできるようにしてみました。回路は下図の通りです。モータードライバ―の入力にRaspberry PiからPWMのパルスを入れ、Hブリッジから取り出した出力を線路に接続して給電します。

例として、モータードライバ―のAIN1に100Hzの矩形波を送り、そのDuty比を0から4刻みで40まで増加させ、その状態で定速回転させ、その後、Duty比を40から4刻みで0まで減少させて停止させる、というパターンで走行させることを考えると、そのためのプログラムは下記のようになります。

import RPi.GPIO as GPIO
import time

AIN1 = 5
AIN2 = 6

GPIO.setwarnings(False); GPIO.setmode(GPIO.BCM)
GPIO.setup(AIN1, GPIO.OUT); GPIO.setup(AIN2, GPIO.OUT)
GPIO.output(AIN1, False); GPIO.output(AIN2, False)

ctlm = GPIO.PWM(AIN1, 100) # AIN1端子に100Hzの矩形波を出す
ctlm.start(0)             # Duty比0でスタートする
try:
    for duty in range(0, 41, 4):
        ctlm.ChangeDutyCycle(duty)
        print(duty)
        time.sleep(0.5)
    time.sleep(23)
    for duty in range(40, -1, -4):
        ctlm.ChangeDutyCycle(duty)
        print(duty)
        time.sleep(0.5)    
except KeyboardInterrupt:
    pass
GPIO.cleanup()

その時の電車が走行する様子を撮影したビデオです。
www.youtube.com

手前は横須賀線の電車が停まっているので鎌倉駅、奥は東海道線小田急が停まっているので藤沢駅というところでしょうか。