電子工作7 – 洗濯機の洗濯終了をブザーで知らせる装置
概要
小さい中国製の全自動洗濯機Haier JW-Z23Aを購入し、長屋のベランダに設置した。 スイッチを入れ、洗濯が終了するとチャイムが鳴る。しかし、その音が部屋の中まで聞こえない。そこで、洗濯の終了をブザーで知らせてくれる装置の製作を思い立った。
製作
この洗濯機は、時短サイクル(16分位)と通常サイクル(35分位)の2つの洗濯モードが選べる。DrDAQというデータロッガー(秋月電子で購入)を使って、洗濯機のフル電力(200W弱)供給と弱電力供給(多分120W以下位)(Switch ON/OFFの状態と仮定)の様子を、2つのモードについて調べた(今回製作した装置のLEDよりvoltage信号を取り出した)。その結果、下図に示すように、通電パターンに差があることが分かった。図で縦軸の電圧の単位はmV、横軸の時間の単位は秒です。両図の横軸でゼロから右端までで大体900秒です。
洗濯モード: 時短サイクル(16分位、この図は全体の70%位を示す)
洗濯モード: 通常サイクル(35分位、この図は全体の30%位を示す)
今回は時短サイクルの開始から約460秒後に現れる約50秒のOFF(14と鉛筆書きのある電圧ゼロ)区間を、通常サイクルのそれと比較し、2つのモードの区別に使うことにした。これはPIC12F629という150円マイクロプロセッサーに、簡単なプログラムを組んで行います。この洗濯機は、回転槽のモータを回す時、200W弱の電力を消費し、その他の動作には、それ以下の電力(多分120W以下)を消費してるようです。 以下に製作した装置の回路図を示します。
この装置は次のように動作します。AC100V電源ケーブルの一方に、直列に10W 1.33W位(手元にあったもの使用)のセメント抵抗(AC100Vが98V位に低下します。あまり大きい抵抗は使えません)を入れ、その両端をダイオードブリッジの交流端子につなぎます。洗濯機に200W弱の電力が流れた時、ダイオードブリッジの+・ー極から1.4V程の直流が発生します。コンデンサ220uFで整流した後、ホトリレー(TLP596A) の発光側(ピン1、2)に入れます。このホトリレーの対極(ピン4、6)には、別途7805でつくった電源+5Vを、100Wの抵抗を通じてLEDにかけ、200W弱の電力が流れた時、LEDが点灯するようにしました(120W以下の電力供給ではLEDは点灯しない)。LEDの点滅信号を12F629のポート(GPIO.0)
に取り込むために、+5V電源端子とホトリレーのピン4の間に1MW程度の抵抗を入れます。そうすると、電源+5Vとホトリレーのピン4の間に、LED ON時に170mV,OFF時に4.5Vが発生します。この信号を74LS04のピン8、9を使って反転させ、上記のポートに入力として入れます。
この装置の写真です。
白いセメント抵抗が2個直列につながれていて、その上からDC+5Vのフアンが冷やします。あまり発熱しないので、無くてもよいかも知れません。右下の部分にホトリレーやLEDが、真中下部の黒いものがブザー、左中心部が7805を使った+5V電源、その下に12F629と74LS04が見えます。後日、再スタートのためのResetスイッチを、この回路に加えました。
プログラム
いつものようにPicBasic Proを使ってBASICで作製しました。ポイントとなる点は、2つの洗濯モードのいずれかを選択したとき、この装置がそのモードを正しく区別、検知して、洗濯終了時にブザーで知らせことが出来なければなりません。
上述の2つのグラフから明らかなように、注水が終わると、回転槽を回したり、止めたり、逆転させるため、High(LEDがON)とLow (LEDがOFF)の状態が繰返されます。スタートから0.3秒間に2回 Highの状態が検知されたら、そこから350秒間待ちます。次いで、そこから120秒間、5秒間隔でHighの状態か、Lowの状態かを数えます。この区間が時短サイクルで、Lowの部分が約50秒続く部分に相当し、たまたま時短サイクルの場合は、Lowの状態を数えた積算値が、Highの状態を数えた積算値より大きくなるので、これは時短サイクルである、と判断します。逆の場合は、通常サイクルと判断します。そして、その時点から、各々の残りの洗濯時間を待ち、最後のブザーを鳴らすルーチンに飛び、終了します。勿論、以下のBASICプログラムはPicBasic
Pro でコンパイルされ、作成されたHEXファイルは、秋月のPICプログラマを使って12F629 に焼き込みました。なお12F629のクロックには、4MHzの内部クロックを使っています(プログラマで焼き込み時に、FOSCで設定)。
'Wash629c.bas
2010.6.12 modified on 2010.6.12 (from 'Wash629b.bas) to suppress the noisy
buzzer sound
'Experiment
on 12F629 and washing-finish buzzer
'GPIO.0 -
Input to CPU from the LED indicator board
'GPIO.2 -
Output to drive a +5V buzzer
TRISIO=%000001 'GPIO.0 only - input
CMCON=7
'Disable Comparators.
INHL var GPIO.0 'Input from GPIO.0
BZ
var
GPIO.2 'Output to
buzzer
t var byte 'zero up to 30
n var byte 'zero to 24
b var byte 'zero to 2 for buzzer
b1
var
byte
'zero to 5 for buzzer
CNTH var byte
CNTL var Byte
Bz=0 'Buzzer is OFF.
'---Confirming
the input value "H" twice at 0.3 sec intervals---
LPSRT:
If INHL=1
then 'If "H", wait 0.3 sec
Pause
300
Else
Goto
LPSRT
Endif
If INHL=1
then
Goto
Wait350
Else
Goto
LPSRT
Endif
'---350 sec
wait routine-----
Wait350:
For t=1 to 7
Pause 50000
'Wait 50 sec x 7 = 350 sec.
Next t
'----Count
the number of "H" or "L" in 2 minutes and compare them--
' (Sampling rate: once
every 5 secs)
CNTH=0
'CNTH - accumulated number of "H"
CNTL=0
'CNTH - accumulated number of "L"
For
n=1 to 24 '120 secs/5 secs =
24 times)
If
INHL=1 then
CNTH=CNTH+1
Else
CNTL=CNTL+1
endif
Pause 5000
'Wait 5 secs
Next n
IF
CNTL>CNTH then
goto Shortwash
Else
GOTO Normalwash
endif
Shortwash:
For t=1 to 7
Pause
60000 '60 secs x
7 = 420 secs
Next t
Goto
Buzzer
Normalwash:
For t=1 to 28
Pause 60000
'60 secs x 28 = 1680 secs
Next t
Goto Buzzer
Buzzer:
For
b=1 to 2 ‘(was 3) 2010.6.12
For
b1=1 to 3‘(was 5)
High Bz
Pause 500 '0.5-sec
beep (was 2000)
Low
Bz
Pause 300
'0.3-sec silence (was 500)
Next b1
Pause 5000 '5-sec
wait (was 15000)
Next b
End
'Note:
'Programmer's configuration must
be set as follows:
'FOSC - INTOSC(automatically
4MHz, GP4:I/O)
'WDTE - Enable; PWRTE - Enable
'MCLR - Internal (so no
MCLR-resistor-+Vdd connection
'required!! ); BODEN - Enable; CD
- Disable;
'CDP - Disable.
余談
たかが洗濯終了を知らせるブザーを鳴らさせるだけなのに、ハードの作製も、プログラムの作成も60才半ばのオッサンには結構大変でした。材料費1000円程度、製作期間1ヶ月。ちなみに、12F629 を使わずにLED点灯時にブザーが鳴るようにしてみたが、うるさ過ぎて近所迷惑、即中止。
後日、注水量パターン“高、中、低“の内の“高”で、小さい座布団など洗った場合、終了ブザーが鳴ってから、しばらくして、実際に洗濯機が止まる現象を経験した。また、注水量パターン“低“でも、実際に洗濯機が止まるとほぼ同時に終了ブザーが鳴ることがあった。どうやら、水量と洗濯物の量などによって、洗濯パターンや洗濯時間が微妙に変化するように設計されているようです。注水量パターン“中“での洗濯では、うまく動作します。
(追記) 2010.6.12 の蒸し暑い日、うるさいブザー音を短くするためにプログラムの一部改良し、12F629に焼きこんだ(Wash629b.bas -> Wash629c.bas)。