ローエンドな私とマイコン
機械制御屋のマイコン活用日記

二槽式洗濯機停止ブザーVar1


 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