もどる


速度計を作る。
最初はArduinoで楽できるかとも思っていたが意外な使い勝手に
Strawberry linuxlpclcdを導入。


INTが無いのでタイマーでポーリング、割り込み周期は10ms
接点Aと接点Bが落ちる間を計測する。
立ち上がりや立ち下がりを下手に取るとセンサーの関係から面倒になるので、
単に落ちているか?だけで判定

if (old) {
	if (!in) {
		hit
	}
	old = in
}

センサー部にはTomixのTCSワンタッチセンサーを流用
センサー間は280mmとしたので、S280を2本つなぎそれぞれにセンサーを接続する。
測定後約5秒程は測定を受け付けないものとした。

TCSワンタッチセンサーは金属車輪を利用して車輌と並列回路を組むように設計されていて その並列回路にはフォトカプラが繋がっている。
レールと繋がっている手前側はヨシとして、繋がっていない反対側は 車輪が通ることで線路とセンサが繋がる様になる。
これによって左右の線路間を車輌と並列にフォトカプラがつながり、出力部がGNDと短絡する。
フォトカプラには極性があるので2つ搭載して東行きと西行きが識別できるようになっている。
配線は、真ん中の端子がGND,両外が信号となる。ここはオープンなので入力側でプルアップして受け取れば落ちたときに検出となる。
DCCの場合、交流のためサンプリング間隔によっては両方が接地する場合があるので注意が必要。

センサの接続先はB17-B20で、B17,B18(L)をセンサ1へ、B19,B20(R)をセンサ2へ接続する。
センサGNDはA29とB29へ接続。
電源はB1にGND,B2に5Vを接続する(A1,A2でも可)
動作中の図
左のセンサを踏んでから32秒が経過、右のセンサ通過待ち。
(10ms周期なので最後の桁はファミコン状態)
KATOの場合
内部で増幅しているので電源の接続も必要です。
両端の赤黒が電源で、真ん中の白がデータです。
センサーレールは62mmなので間に124mmを入れて248mmに、センサ間は186mmとして計算します。

電源にはlpclcdから3.3vを、入れてやることにします。

これも車輌がセンサを覆っている状態ではGNDに落ちる出力ですので そのままB17(orB18)とB19(orB20)へ入れてやればOKです。
HOの場合、この様にTCSセンサーを埋め込むことで検出は可能。
ただこの場合フランジウェイやバックゲージなど面倒が起きると思うので余り推奨はせず。
また検出タイミングも車輪の触れた点でしかないのでちょっと…
つまり、KATOのセンサをそのまま埋め込んでしまうのも手。
車輌が被さっている間は検出可能なので、さしかかったという判定に影響は無いが 通過後の再計測までの間隔を簡単に処理ができるようになる。
そうそう。接続した端子ですが説明書では次の通り
B17 -> PIO1_24
B18 -> PIO1_28
B19 -> PIO1_27
B20 -> PIO0_17

実際は次の通りでした。
B17 -> PIO1_24
B18 -> PIO1_18
B19 -> PIO1_17
B20 -> PIO0_17
最近のマニュアルでは直っていると思いますが。