HOME >> 鉄道模型自動運転システム > 新ATSに挑戦 給電ラインのチェック
■ はじめに
信号ラインの確認が出来たので、今度は給電ラインの確認を実施する。
■ 給電ラインの配線
給電用の配線を下に示す。 昔の工作に使用していたストック品のTOMIX 製電源線を活用して配線した。
配線はコントローラからの配線を二手に分け、一方を制御対象の閉塞区間に、他方を制御外の区間に配線する。
当初は、プログラムを走らせてもリレーが動かなかったので、ジャンパー線で直接通電させてチェックしたが、やはり作動しなかった。 ハード回路の問題であった。 そこでリレーのカタログをチェックすると、5V仕様品は、コイル抵抗が70Ω、リレーONが3.75V以上とあった。 単純に計算すると、外付けの抵抗は23Ω以下と計算されたので100Ωの抵抗を外して作動さsると、見事に作動した。 以前使用していた12V仕様のリレーとは異なるのだ。
次に、駆動用トランジスタの入力から作動させたがこれまたNGであった。 電圧降下が大きくてトランジスタをON出来ないと判断して、ベース側の抵抗 10KΩを 1KΩに変更すると作動するようになった。 これでPICからの信号でリレーが作動するようになったので、再びプログラムのチェックを実施した。
■ 単なるリレー制御での走行テストの実施
リレーの機能を確認するために、右の様な簡単なロジックに作り直して走行テストを実施した。 画像をクリックするとPDFファイルで見る事が出来ます。
途中で、あちこち修正しながら実施し、なんとかリレーも正常に作動することを確認出来た。 タイミングとか順番とかへの気配りが大切ですね。 この時の動画を紹介します
■ 後方からの追突を監視するプログラムの確認
上記のプログラムに、後方から列車が近づいていたら停止させる処理を付け加えた。 このロジックもいろいろ検討したのだが、例外的な場合を想定すると充分ではないとかんがえるものの、右のフローで対応することにした。
この時の動画を紹介する。
#include P12F683.INC ; PIC12F683用のヘッダファイルの読み込み ;;;;; コンフィグレジスタの設定 __config _BOD_ON & _WDT_OFF & _MCLRE_OFF & _INTOSCIO ;;;;; ファイルレジスタの割り当て CT_DELAY1MS equ 0x20 CT_DELAY100MS equ 0x21 ;;;;; 初期設定の始まり bcf STATUS, RP0 ; バンク0 clrf GPIO ; GPIO の出力が0になるよう設定 movlw 0x7 ; W ← 7 movwf CMCON0 ; CMCON0 ← W = 7 : コンパレータをオフ bsf STATUS, RP0 ; バンク1 clrf ANSEL movlw B'101000' movwf TRISIO ; TRISIO ← W : GPIO を出力に設定 bcf STATUS, RP0 ; バンク0 bcf GPIO,0 ;信号赤を消灯 bcf GPIO,1 ;信号橙を消灯 bsf GPIO,2 ;信号緑を点灯 ;;;;; プログラムの主要部分 LOOP bcf GPIO,0 ;信号赤を消灯 bcf GPIO,1 ;信号橙を消灯 bsf GPIO,2 ;信号緑を点灯 bcf GPIO,4 ;リレーをOFFして通電する btfss GPIO,5 ;S!をチェック、ONを待つ goto $-1 STAGE0 call delay100ms ;列車が来た、時間待ち bcf GPIO,2 ;信号緑を消す bsf GPIO,0 ;信号赤を点灯 btfsc GPIO,5 ;S!をチェック、OFFを待つ goto $-1 call delay100ms ;列車が通過した、時間待ち STAGE1 ;チェックポイント通過 btfsc GPIO,5 ;S1をチェック、後続の列車は来ていないか? goto STAGE4 ;列車を停止させる btfss GPIO,3 ;S2をチェック、前方のチェックポイントに来たか? goto STAGE1 ;来るまで待て STAGE2 ;前方のチェックポイントに来た bcf GPIO,0 ;赤を消灯 bcf GPIO,2 ;緑を消灯 bsf GPIO,1 ;橙を点灯 STAGE3 btfsc GPIO,5 ;S1をチェック、後続の列車は来ていないか? goto STAGE6 ;列車を停止させる btfsc GPIO,3 ;S2をチェック、前方のチェックポイントを通過したか? goto STAGE3 ;通り過ぎるまで待て goto LOOP ;先頭に戻る STAGE4 bsf GPIO,4 ;リレーをONさせて通電を切り列車を止める btfss GPIO,3 ;S2をチェック、前方のチェックポイントに来たか? goto $-1 bcf GPIO,0 ;赤を消灯 bcf GPIO,2 ;緑を消灯 bsf GPIO,1 ;橙を点灯 STAGE5 btfsc GPIO,3 ;S2をチェック、前方のチェックポイントを通過したか? goto $-1 bcf GPIO,0 ;信号赤を消灯 bcf GPIO,1 ;信号橙を消灯 bsf GPIO,2 ;信号緑を点灯 bcf GPIO,4 ;リレーをOFFして通電し、列車を発車させる goto STAGE0 ;列車は次の区間を走行中 STAGE6 bsf GPIO,4 ;リレーをONさせて通電を切り列車を止める goto STAGE5 ;列車停止中 ;;;;; delay10us サブルーチン delay10us goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 return ;;;;; delay1ms サブルーチン delay1ms movlw D'256' movwf CT_DELAY1MS delay1msL call delay10us decfsz CT_DELAY1MS, f goto delay1msL goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 goto $+1 return ;;;;; delay100ms サブルーチン delay100ms movlw D'10' movwf CT_DELAY100MS delay100msL call delay1ms decfsz CT_DELAY100MS, f goto delay100msL return ;;;;; プログラムの主要な部分の終わり end ; プログラム終了
また、この時のプログラムを右に示す。 時間待ちのサブルーチンは教則本の例題を活用しています。
次は、ブレッドボードでのテスト結果をもとに、ユニバーサルボードの工作内容を報告予定です。
2018/9/17 作成