ラベル
- 12F1822 (2)
- A/D変換 (3)
- Arduino (7)
- Nikon D40 リモコン インターバルタイマー (6)
- Nゲージ 自動往復運転コントローラ (5)
- Nゲージの運転コントローラ (3)
- PICマイコンツール (5)
- XC8 (1)
- サーボモーター (1)
- プログラム (15)
- 赤外線リモコン送信 (1)
- 赤外線リモコン送信 キャリア波(38kHzか40kHz)の作成 (2)
- 電子部品/キット/輸入品 (26)
2011/01/21
Nゲージ 自動往復運転コントローラに挑戦 その3 プログラム
動作
GP5/GP3 High → GP1 High , GP0 Low;回転
ブレーキ5秒/停止5秒 → GP1、GP0 High/Low
発車音1秒 → GP2
GP4/GP3 High → GP1 Low , GP0 High;逆回転
ブレーキ5秒/停止5秒 → GP1、GP0 High/Low
発車音1秒 → GP2
GP3 High → GP1、GP0 Low;停止
テスト
このテストは往復運転できるかを確認するためです、プログラムに発車音
が追加していません、ブレーキ5秒は停止5秒になっています。
結果
予定のとおり、Nゲージが自動的に往復運転ができています。
の問題点は強い日差しでセンサーが反応されます、誤動作になります、
解決方法はわからない。
5V100mA LM78L05A、実際に二つセンサーのみで100mAに超えています、
LM78L05Aがかなり熱くなります、部品の変更が必要となります。
プログラム
;Nゲージ 自動往復運転
;--------------------------------
LIST P=12F629
INCLUDE P12F629.INC
CB = _CPD_OFF
CB &= _CP_OFF
CB &= _BODEN_ON
CB &= _MCLRE_OFF
CB &= _PWRTE_ON
CB &= _WDT_OFF
CB &= _INTRC_OSC_NOCLKOUT ;_HS_OSC
__CONFIG CB
;---------------------------------
MODETEMP EQU H'20'
CNT1 EQU H'21'
CNT2 EQU H'22'
CNT3 EQU H'23'
CNT4 EQU H'24'
CNDIP EQU H'25'
;---------------------------------
ORG H'0'
GOTO START
ORG H'4'
GOTO INIT
SP RETFIE
;---------------------------------
START
BSF STATUS,RP0
MOVLW B'00111000'
MOVWF TRISIO ;0,1,2 出力、他入力
BCF STATUS,RP0
MOVLW B'00000111' ;SETUP DIGITAL I/O MODE
MOVWF CMCON ;SETUP DIGITAL I/O MODE
;---------------------------------
INIT
;---------------------------------
MAIN
MOVLW D'0'
MOVWF CNDIP
MOVLW B'00000000'
MOVWF GPIO
MOVWF MODETEMP
DIP ;電源onoffスイッチ
BTFSS GPIO,3
GOTO DIPIN
GOTO DIP0
DIP0
BTFSC GPIO,3
GOTO DIP0
CALL TIMER2
INCF CNDIP,F
MOVF CNDIP,W
SUBLW D'3'
BTFSC STATUS,Z
CLRF CNDIP
DIPIN
MOVF CNDIP,W ;スイッチ
SUBLW D'1'
BTFSC STATUS,Z
CALL MODE1
BTFSC GPIO,4 ;センサー
CALL MODE1
MOVF CNDIP,W ;スイッチ
SUBLW D'2'
BTFSC STATUS,Z
CALL MODE2
BTFSC GPIO,5 ;センサー
CALL MODE2
MOVF CNDIP,W
SUBLW D'0'
BTFSC STATUS,Z
CALL STOP
GOTO DIP
MODE1
MOVLW D'1'
MOVWF CNDIP
MOVLW B'00000001'
ANDWF MODETEMP,W
BTFSC STATUS,Z
CALL STOPS
MOVLW B'00000001'
MOVWF GPIO
MOVWF MODETEMP
RETURN
MODE2
MOVLW D'2'
MOVWF CNDIP
MOVLW B'00000010'
ANDWF MODETEMP,W
BTFSC STATUS,Z
CALL STOPS
MOVLW B'00000010'
MOVWF GPIO
MOVWF MODETEMP
RETURN
STOP
MOVLW D'0'
MOVWF CNDIP
MOVLW B'00000000'
MOVWF GPIO
CLRF CNDIP
CLRF MODETEMP
RETURN
STOPS
MOVLW B'0000000'
MOVWF GPIO
CALL TIMER4
RETURN
;4MHz TIMER-----------------------
TIMER1 MOVLW D'25' ;0.1ミリ秒
MOVWF CNT1
LOOP1 NOP
DECFSZ CNT1,1
GOTO LOOP1
RETURN
TIMER2 MOVLW D'100' ;10ミリ秒
MOVWF CNT2
LOOP2 NOP
CALL TIMER1
DECFSZ CNT2,1
GOTO LOOP2
RETURN
TIMER3 MOVLW D'50' ;0.5秒
MOVWF CNT3
LOOP3 NOP
CALL TIMER2
DECFSZ CNT3,1
GOTO LOOP3
RETURN
TIMER4 MOVLW D'10' ;5秒
MOVWF CNT4
LOOP4 NOP
CALL TIMER3
DECFSZ CNT4,1
GOTO LOOP4
RETURN
;---------------------------------
;発車サイン音
;---------------------------------
END
GP5/GP3 High → GP1 High , GP0 Low;回転
ブレーキ5秒/停止5秒 → GP1、GP0 High/Low
発車音1秒 → GP2
GP4/GP3 High → GP1 Low , GP0 High;逆回転
ブレーキ5秒/停止5秒 → GP1、GP0 High/Low
発車音1秒 → GP2
GP3 High → GP1、GP0 Low;停止
テスト
このテストは往復運転できるかを確認するためです、プログラムに発車音
が追加していません、ブレーキ5秒は停止5秒になっています。
結果
予定のとおり、Nゲージが自動的に往復運転ができています。
の問題点は強い日差しでセンサーが反応されます、誤動作になります、
解決方法はわからない。
5V100mA LM78L05A、実際に二つセンサーのみで100mAに超えています、
LM78L05Aがかなり熱くなります、部品の変更が必要となります。
プログラム
;Nゲージ 自動往復運転
;--------------------------------
LIST P=12F629
INCLUDE P12F629.INC
CB = _CPD_OFF
CB &= _CP_OFF
CB &= _BODEN_ON
CB &= _MCLRE_OFF
CB &= _PWRTE_ON
CB &= _WDT_OFF
CB &= _INTRC_OSC_NOCLKOUT ;_HS_OSC
__CONFIG CB
;---------------------------------
MODETEMP EQU H'20'
CNT1 EQU H'21'
CNT2 EQU H'22'
CNT3 EQU H'23'
CNT4 EQU H'24'
CNDIP EQU H'25'
;---------------------------------
ORG H'0'
GOTO START
ORG H'4'
GOTO INIT
SP RETFIE
;---------------------------------
START
BSF STATUS,RP0
MOVLW B'00111000'
MOVWF TRISIO ;0,1,2 出力、他入力
BCF STATUS,RP0
MOVLW B'00000111' ;SETUP DIGITAL I/O MODE
MOVWF CMCON ;SETUP DIGITAL I/O MODE
;---------------------------------
INIT
;---------------------------------
MAIN
MOVLW D'0'
MOVWF CNDIP
MOVLW B'00000000'
MOVWF GPIO
MOVWF MODETEMP
DIP ;電源onoffスイッチ
BTFSS GPIO,3
GOTO DIPIN
GOTO DIP0
DIP0
BTFSC GPIO,3
GOTO DIP0
CALL TIMER2
INCF CNDIP,F
MOVF CNDIP,W
SUBLW D'3'
BTFSC STATUS,Z
CLRF CNDIP
DIPIN
MOVF CNDIP,W ;スイッチ
SUBLW D'1'
BTFSC STATUS,Z
CALL MODE1
BTFSC GPIO,4 ;センサー
CALL MODE1
MOVF CNDIP,W ;スイッチ
SUBLW D'2'
BTFSC STATUS,Z
CALL MODE2
BTFSC GPIO,5 ;センサー
CALL MODE2
MOVF CNDIP,W
SUBLW D'0'
BTFSC STATUS,Z
CALL STOP
GOTO DIP
MODE1
MOVLW D'1'
MOVWF CNDIP
MOVLW B'00000001'
ANDWF MODETEMP,W
BTFSC STATUS,Z
CALL STOPS
MOVLW B'00000001'
MOVWF GPIO
MOVWF MODETEMP
RETURN
MODE2
MOVLW D'2'
MOVWF CNDIP
MOVLW B'00000010'
ANDWF MODETEMP,W
BTFSC STATUS,Z
CALL STOPS
MOVLW B'00000010'
MOVWF GPIO
MOVWF MODETEMP
RETURN
STOP
MOVLW D'0'
MOVWF CNDIP
MOVLW B'00000000'
MOVWF GPIO
CLRF CNDIP
CLRF MODETEMP
RETURN
STOPS
MOVLW B'0000000'
MOVWF GPIO
CALL TIMER4
RETURN
;4MHz TIMER-----------------------
TIMER1 MOVLW D'25' ;0.1ミリ秒
MOVWF CNT1
LOOP1 NOP
DECFSZ CNT1,1
GOTO LOOP1
RETURN
TIMER2 MOVLW D'100' ;10ミリ秒
MOVWF CNT2
LOOP2 NOP
CALL TIMER1
DECFSZ CNT2,1
GOTO LOOP2
RETURN
TIMER3 MOVLW D'50' ;0.5秒
MOVWF CNT3
LOOP3 NOP
CALL TIMER2
DECFSZ CNT3,1
GOTO LOOP3
RETURN
TIMER4 MOVLW D'10' ;5秒
MOVWF CNT4
LOOP4 NOP
CALL TIMER3
DECFSZ CNT4,1
GOTO LOOP4
RETURN
;---------------------------------
;発車サイン音
;---------------------------------
END
2011/01/08
2011/01/04
Nゲージ 自動往復運転コントローラに挑戦 その1 概要
次の動作を実現したい
1.レールに走っている電車はセンサーAとセンサーBの間で往復運転するようにします。
2.電車はセンサーに検出されたとき、いったん停車し、しばらく(一秒ぐらい)してから
逆方向に発車する。
本日に購入した部品は下記のとおり
秋月電子
TPR-105F フォトリフレクタ 1個 50円
http://akizukidenshi.com/download/TPR-105F.pdf
TA7267BP モータドライバ 2個 300円
http://akizukidenshi.com/download/ta7267bp.pdf
千石電商
信号伝達コネクタ(黒)1×4 1個 20円
信号伝達コネクタ用ピン、2550シリーズ信号伝達コネクタ
安くしてくれないかな!
1.レールに走っている電車はセンサーAとセンサーBの間で往復運転するようにします。
2.電車はセンサーに検出されたとき、いったん停車し、しばらく(一秒ぐらい)してから
逆方向に発車する。
本日に購入した部品は下記のとおり
秋月電子
TPR-105F フォトリフレクタ 1個 50円
http://akizukidenshi.com/download/TPR-105F.pdf
TA7267BP モータドライバ 2個 300円
http://akizukidenshi.com/download/ta7267bp.pdf
千石電商
信号伝達コネクタ(黒)1×4 1個 20円
信号伝達コネクタ用ピン、2550シリーズ信号伝達コネクタ
安くしてくれないかな!
登録:
投稿 (Atom)