ローエンドな私とマイコン
機械制御屋のマイコン活用日記
Var1の基板。
電源は9V電池マンガンでも1年持つ。
PIC10F200使用。
入力はAC電流センサー(変流器)を全波整流して電流有無の検出。
出力はLEDとブザー出力、電流消費を抑える為に、9Vアンプにトランスを使った。
最初電源スイッチを使わずPICをSLEEPさせていたが、3端子が無負荷で電流を消費するので電源スイッ
チを追加した。
LEDはパイロット兼切り忘れ防止に待機時に点滅表示する。
最も電力を消費するのは、ブザー時なのでブザーの回数が減ったら電池の交換目あすである。
左図が配線図。やっと描いた。
人様が簡単そうにやっていることが、やはり大変だと改めて実感。
参考プログラム MPLAB V8形式
list p=pic10F200
#include <p10F200.inc>
__CONFIG _MCLRE_OFF & _CP_OFF & _WDT_OFF
LED equ 1h
SPKER equ 2h
SEN equ 3h
;***** 変数宣言
w_tim1 equ 10h
w_tim2 equ 11h
t0 equ 12h
t1 equ 13h
seq equ 14h
org 0h
;***** 初期化
clrf GPIO
movlw b'00001000' ;GP3以外出力
tris GPIO
movlw b'11010111' ;sleep無効 GP2有効
option
intl clrf seq;工程リセット
movlw d'18'
movwf t1
loop decfsz t1,F
goto loop1
;***** LED点滅制御
btfss GPIO,LED
goto LEDon
bcf GPIO,LED
movlw d'18';消灯時間
goto loop0
LEDon bsf GPIO,LED
movlwd '2' ;点灯時間
loop0 movwft1
loop1 callw0_1 ;0.1秒タイマ
btfsc seq,0
goto l1
l0 movlw d'20'
movwf t0
bsf seq,0
goto loop
l1 btfsc GPIO,SEN ;センサーLで電流検出
goto l0
decfsz t0,F ;2秒Lで洗濯中
goto loop
;***** 洗濯中
clrf GPIO
l2 call w0_1
btfss GPIO,SEN ;センサーHを待つ
goto l2
;***** モーター停止
movlw d'50'
movw ft0
l4 call w0_1
btfss GPIO,SEN ;センサーHで停止検出
goto l2
decfsz t0,F ;5秒Hで洗濯終了
goto l4
;***** 洗濯終了
movlw d'20'
movwf t0
l5 call beep
decfsz t0,F ;ブザー音を鳴らす
goto l5
goto intl
;***** サブルーチン
;***** 500Hz 50回 呼働
beep movlw d'50'
movwf w_tim2
beep1 bsf GPIO,SPKER
call w1m
bcf GPIO,SPKER
call w1m
decfsz w_tim2,F
goto beep1
goto w0_1
;***** 1m秒ウエイト
w1m movlw d'250' ;1mS
movwf w_tim1
ti1 nop
decfsz w_tim1,F
goto ti1
retlw 0h
;***** 0.1秒ウエイト
w0_1 movlw d'98' ;100mS
movwf w_tim2
w1 clrf w_tim1 ;1024uS
w2 nop
decfsz w_tim1,F
goto w2
decfsz w_tim2,F
goto w1
retl w0h
END |
|