電子工作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)。

 

Menu Pageへ戻る    

Topへ戻る