電子工作 16 – 電動式洗濯ハンガーの製作

 

概要

 長屋の住人には、中国製の脱水機能付きの小型洗濯機はあっても、電気を食う乾燥器はない。もっぱら、洗濯物は天日干しとあいなる。濡れた布地と回りの空気の界面には、気液層があって、ここから水分を空気相に蒸発させるには、温度を上げること、それに、気液層を薄くしてやることが有効。つまり、温度が一定なら、布地を動かすか、空気を動かすことが蒸発促進に役立つ。今回は、布地をモータで動かして、乾燥を促進する電動式洗濯ハンガーを製作してみることにした。

今回製作するハードはいたって簡単である。12F629を使い、減速比の大きいDCのギヤードモータ (Sayama Geared Motor RB-35GM-CA35-12, 12V 32 rpm、 中古品)を5Vで駆動する。その動作は、時計方向に一定時間回し、短時間停止させた後、反時計方向に同じく一定時間回す、を反復させるだけである。洗濯ハンガーはモータ回転軸の下に吊るす。

 

回路

下に、回路図、コントロール基板、ギィヤードモータ、それに、洗濯ハンガーを回している状況を示す。

12F629のGP0, GP1とGP2の3本の入力ピンの設定によって(スライドSW)5つのモード(回転パターン、回転時間)が選択できる。モータの回転方向とON/OFFは、それぞれGP5とGP4の出力ピンで行われる。モータの回転速度は、毎分5−6回転程度が適当のようで、その調整は、VRを手動で回して行う。約50mAの電流が消費される。PICもモータも5Vの同一電源を使っているので、ノイズ除去用の0.1uFのコンデンサを入れてある。無いと誤動作する。GP0, GP1とGP2の3本の入力ピン設定状態(High/Low)を表示するのに小さいLEDを3本使っているが、それらの発光は暗い。理由は4.7Kの抵抗を入れているからで、それでPICへの入力がHigh で3.3V程度が確保できる。抵抗値を下げると、PICへの入力Highの値も低下し、Highと認識されなくなる可能性がでてくる。

 

回路図: 12F629の全ピンを使っている。


 


コントロール基板:最下部に3ビット入力設定用のスライドSW、上方に小型リレー、真中の白い四角いものはホトリレーである。


ギィヤードモータ:真鍮シャフトは音響機器に使われるものを転用               動作中


                                             

 


プログラム

 単純明快、いつものように、ほぼPICBasic Pro のHigh, Low, Pause, それに、If …thenだけから作成されている。

各種パラメータの設定の後、8個の入力モード検知IF文で相応する各々のラベルに飛び、必要な処理をする。

 入力3ピンで設定できるモードを5個(全8個の内)を、以下のようの設定した。ここで、LeftまたはRightとは、モータ軸の回転方向を指す。

) ContStand: 連続して(27-sec Left + 3-sec Pause + 27-sec  Right + 3-sec Pause)の回転モードを繰返す。

 2) ContLong: 連続して(55-sec Left + 5-sec Pause + 55-sec Right + 5-sec Pause)の回転モードを繰返す。

 3)  Fixt1hrStand: (27-sec Left + 3-sec Pause + 27-sec  Right + 3-sec Pause)の回転モードで1hr回転し、停止する。

 4)  Fixt2hrStand: (27-sec Left + 3-sec Pause + 27-sec  Right + 3-sec Pause)の回転モードで2hr回転し、停止する。

 5)  Fixt1hrLong: (55-sec Left + 5-sec Pause + 55-sec  Right + 5-sec Pause)の回転モードで1hr回転し、停止する。

 6)   Fixt2hrLong: (55-sec Left + 5-sec Pause + 55-sec  Right + 5-sec Pause)の回転モードで2hr回転し、停止する。

   他に2モード(GP0:GP1:GP2=H:L:H とH:L:L)が残っているが、入力がこれらのモードにスライドSWで設定されると、直接、ラベル Ending (リレーのON/OFF(LED点滅)を10回繰返す)に飛んでプログラムが終了する。

   以上をまとめると、下表のようになる。ここで、標準、長時間は一方向回転時間が、それぞれ27秒、55秒のことを指す。

 

GP0

GP1

GP2

連続/一定時間

標準/長時間

H

H

H

   連続 

標準        ContStand

H

H

L

     連続

長時間          ContLong

L

H

H

一定時間

標準 1hr        Fixt1hrStand

L

H

L

一定時間

標準 2hrs       Fixt2hrStand

L

L

H

一定時間

長時間 1hr      Fixt1hrLong

L

L

L

一定時間

長時間 2hrs     Fixt1hrLong

H

L

H

 

          Jump to Ending

H

L

L

 

Jump to Ending

 

このプログラムで、12F629のメモリの約3分2ほど消費された。

 

'****************** プログラミング備忘録 *******************

'Dry629b.BAS 2007.2.17

'This program rotates a cloth drying hanger at various speeds and modes by

'reading Slide SW inputs(GP0,GP1 and GP2).

 

'******** Modes *******************

'ContStand: continuous standard mode  (27 sec/one direction)

'ContLong: continuous long-period mode (27 sec -> 55 sec)

'Fixt1hrStand: fixed 1-hr standard mode (27 sec, stop in 1 hour)

'Fixt2hrStand: fixed 2-hr standard mode (stop in 2 hour)

'Fix1hrLong: fixed 1-hr long-period mode (55 sec, stop in 1 hour)

'Fix2hrLong: fixed 2-hr long-period mode (55 sec, stop in 2 hour)

'Ending: The LED1 of A4 (GP4) blinks 10 times and the program stops.

 

'********Pin connections************

'Pin 1: Vdd (5V)

'Pin 8: Vss (GND)

'Pin 7: GPIO.0: input - Slide SW 1 (H/L) via 4.7 K to Vdd (Mode Select)                     

'Pin 6: GPIO.1: input - Slide SW 2 (H/L) via 4.7 K to Vdd (Mode Select)

'Pin 5: GPIO.2: input - Slide SW 3 (H/L) via 4.7 K to Vdd (Mode Select)

'Pin 4: GPIO.3: Reset (pull-up with 4.7 K) to GND by pressing Reset SW

'Pin 3: GPIO.4: output - Motor rev-direction change Left/Right by relay

'Pin 2: GPIO.5: output - Motor drive power-supply SW ON/OFF

 

'********** ここからがプログラム本体 ***************

T var byte      'Time counter

Tconst var byte 'Time constant - 30, 60 or 120

I var byte      'LED blinking counter

A0 var GPIO.0 'A0 decides Rev-mode (H/L).

A1 var GPIO.1 'A1 decides Rev-mode (H/L).

A2 var GPIO.2 'A2 decides Rev-mode (H/L).

A4 var GPIO.4 'A4 decides rev-direction (Left/Right).

A5 var GPIO.5 'A5 decides the ON/OFF of motor.

 

CMCON=7  'Turn off Comparator function.

TRISIO=%001111  'GP0, GP1, GP2 and GP3=Input, GP4 and GP5=Output

 

If A0=1 and A1=1 and A2=1 Then Goto ContStand    '1+1+1 in Slide SW

If A0=1 and A1=1 and A2=0 Then Goto ContLong     '1+1+0

If A0=0 and A1=1 and A2=1 Then Goto Fixt1hrStand  '0+1+1

If A0=0 and A1=1 and A2=0 Then Goto Fixt2hrStand  '0+1+0

If A0=0 and A1=0 and A2=1 Then Goto Fix1hrLong   '0+0+1

If A0=0 and A1=0 and A2=0 Then Goto Fix2hrLong   '0+0+0

IF A0=1 and A1=0 and A2=1 Then Goto Ending       '1+0+1 - this mode not used

IF A0=1 and A1=0 and A2=0 Then Goto Ending       '1+0+0 - this mode not used

 

ContStand:

'Continuous standard mode (27secLeft+3secPause+27secRight+3secPause)

High A4   'One Rev direction

Pause 100

High A5   'Start Motor.

Pause 27000  '27 sec - rotate Motor.

Low A5     'Stop Motor.

Pause 3000 '3 sec

Low A4    'Change Rev direction.

Pause 100

High A5   'Start Motor.

Pause 27000   '27 sec

Low A5    'Stop Motor.

Pause 3000

Goto ContStand

 

ContLong:

'Continuous long-period mode (55secLeft+5secPause+55secRight+5secPause)

High A4   'One Rev direction

Pause 100

High A5   'Start Motor.

Pause 55000  '55 sec - rotate Motor.

Low A5     'Stop Motor.

Pause 5000 '5 sec

Low A4    'Change Rev direction.

Pause 100

High A5   'Start Motor.

Pause 55000   '27 sec

Low A5    'Stop Motor.

Pause 5000

Goto ContLong

 

Fixt1hrStand:

'Fixed 1hr standard mode

High A5   'Start Motor. 

T=0       'Time counter -> 0

Tconst=60 '1 hour

Repeat1:

T=T+1

pause 200 '0.2 sec

High A4   'Set Rev direction. Right or Left

pause 200 '0.2 sec

High A5   'Start Motor.

Pause 27000  '27 sec - rotate Motor.

Low A5    'Stop Motor.

Pause 3000   '3 sec

Low A4    'Change Rev direction.

pause 200 '0.2 sec

High A5   'Start Motor.

Pause 27000   '27 sec

Low A5

Pause 3000

If T>Tconst Then Goto Ending

Goto Repeat1

 

Fixt2hrStand:

'Fixed 2hr standard mode

High A5  'Start Motor. 

T=0       'Time counter -> 0

Tconst=120  '2 hours

Repeat2:

T=T+1

Pause 200 '0.2 sec

High A4   'Set Rev direction. Right or Left

Pause 200 '0.2 sec

High A5   'Start Motor.

Pause 27000  '27 sec - rotate Motor.

Low A5    'Stop Motor.

Pause 3000   '3 sec

Low A4    'Change Rev direction.

Pause 200 '0.2 sec

High A5  'Start Motor.

Pause 27000   '27 sec

Low A5

Pause 3000

If T>Tconst Then Goto Ending

Goto Repeat2

 

Fix1hrLong:

'Fixed 1hr long-period mode

High A5   'Start Motor. 

T=0       'Time counter -> 0

Tconst=30 '1 hour

Repeat3:

T=T+1

Pause 200 '0.2 sec

High A4   'Set Rev direction. Right or Left

Pause 200 '0.2 sec

High A5   'Start Motor.

Pause 55000  '55 sec - rotate Motor.

Low A5    'Stop Motor.

Pause 5000   '3 sec

Low A4    'Change Rev direction.

Pause 200 '0.2 sec

High A5   'Start Motor.

Pause 55000   '55 sec

Low A5

Pause 5000

If T>Tconst Then Goto Ending

Goto Repeat3

 

Fix2hrLong:

'Fixed 2hr long-period mode

High A5   'Start Motor. 

T=0       'Time counter -> 0

Tconst=60 '2 hours

Repeat4:

T=T+1

Pause 200 '0.2 sec

High A4   'Set Rev direction. Right or Left

Pause 200 '0.2 sec

High A5   'Start Motor.

Pause 55000  '55 sec - rotate Motor.

Low A5    'Stop Motor.

Pause 5000   '3 sec

Low A4    'Change Rev direction.

Pause 200 '0.2 sec

High A5   'Start Motor.

Pause 55000   '55 sec

Low A5

Pause 5000

If T>Tconst Then Goto Ending

Goto Repeat4

 

Ending:

I=0

Low A5  'Motor OFF

For I=1 to 10

High A4 'Rev-direction LED ON

Pause 300 '0.3 sec

Low A4 'Rev-direction LED OFF

Pause 300

Next I

End

‘********** ここまでがプログラム ***************

'Note:

   'AKI Programmer's configurations:

   'FOSC – INTOSC (GP4:I/O); WDTE - Enable; PWRTE - Disable

       'MCLR –MCLRpin ; BODEN –Enable; CD – Not_Protect; CDP -– Not_Protect.

 

余談

正直言って、洗濯ハンガーをモータで回してみたところで、どれだけ効果があるのか分からない。DCモータを面倒な反転などさせずに、そしてPICなど使わずに、単に一定方向に回せばそれで済むのではとも思う。ハイ、Geared Motor などが手元にあったので、単に作ってみたかっただけ。とは言っても、確かに速く乾くようではある。

途中、半田付けし、完成した回路は動作せず、動くようにするまで大変手間取った。誤配線であった。ブレッドボード上での予備実験の大切さを痛感した。

 

Menu Pageへ戻る    

Topへ戻る