HOME >> 鉄道模型自動運転システム >  新ATSに挑戦 給電ラインのチェック

新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 作成