概要
半田ごてを使う時、歳のせいもあって、いつも電源を消し忘れ火事を引き起こすのではと気になる。 そこで電池で動く簡単な安全タイマーを製作することにした。
製作にあたって考えていたこと:
1) 12F629を使い、電池で駆動する。
2) 半田ごてのON/OFFには電子リレー(SSR: Solid State Relay)を使う。
3) タイマーの駆動時間は10分と30分の2種。
4) タイマーの駆動時間が終了したら電子ブザーが15分間鳴る。止めるにはReset SWを押してタイマーを再始動させるか、電源SWを切る。これで電源切り忘れによる電池の消耗を防ぐ。
回路図
下図のように、電源には単4電池3本(4.5V)をケースに入れて使う。SSR動作時の電流消費が10mA弱であること、ブザーで電源SWの消し忘れを防げることなどから電池で十分と考えた。さらに出来るだけ電池の消耗を抑えるためLED
(R) の電流制限抵抗の価を出来るだけ大きく10Kとし、またSSRとGP5の間にも動作に支障のないことを確認の上、出来るだけ大きい900Wの抵抗を入れた。これらによって消費電流10mA弱が達成出来た。タイマーの通電時間はGP0につないだTime Select SWで10分か30分を選択出来る。上記のLED
(R) はSSRがONの時点灯する。
SSR(S108T02)とGP5の間に入れる抵抗(R)に関して:
電池の消耗を出来るだけ抑えるため抵抗値(R)、流れる電流値(I)、SSRの動作(ON/OFF)の関係を調べた。下表にその結果を示す。これらの値から900Wが丁度良い抵抗値と考え採用した。
R |
I (mA) |
SSRのON/OFF |
2.2K |
7.48 |
OFF |
1.5K |
8.10 |
ON |
900W |
9.30 |
ON |
330W |
13.55 |
ON |
33W |
24.87 |
ON |
5W |
25.68 |
ON |
0W(抵抗なし) |
26.29 |
ON |
電池電圧: 4.5V; 電流(I)は電池の+側端子にテスターを直列に入れて測定
左の写真が完成した装置の外観で、左端のSWは10/30分切替え用、次がLED、ResetSW、電源SWと並ぶ。右の写真はその内部。
結果&コメント
1)
正常に動作することが確認された。
2) 通電時間が終了した後ブザーが鳴るので電池の電源SWの消し忘れが防げる。
3)
材料費は1500円ほど。
4) 予備実験でSSR(¥280)を2個壊してしまった。内蔵LEDに過大電流を流してしまったようだ。マニュアルによると電流の推薦値16−24mA、最大値50mA。
5) 改良プログラムを最下部に添付(2013.11.30)。Reset SWを押すことなく、Time Select SWだけでSSRがON中に自由に10minや30minを選べるようになった。ただこれによってタイマーの時間が狂ってきたので修正した。10min: 67−>63、30min: 201―>189
プログラム
先ずTime Select SWの入力(10min/30 min)を読み、15minならSSRとLED (R)をONにして15min待ち、ついでSSRとLED (R)をOFFにする。そしてブザーを15分鳴らして終了する。一方30minの場合もSSRとLED (R)をONにする時間を30minに延長する以外は15minの場合と同じルーチンを行って終了する。ブザー音の発生にはPicBasic ProのSoundというユニークなコマンドを使う。
‘********************************************
'Soldering-iron Timer.bas 2013.11.20
'Program for 12F629
'*********Pin connections*********
'Pin1: Vdd(5v)
'Pin8: Vss(GND)
'Pin4: Reset(MCLR)
'Pin2: To SSR
'Pin5: To Buzzer
'Pin7: To Timer select SW
'Pin3: To LED(R) for SSR->ON
'*********Program*********
CMCON=7 'Comparator off
TRISIO=%001001
TimeSelectSW var GPIO.0
Buzzer var GPIO.2
SSR var GPIO.5
LEDSSRON var GPIO.4
m var byte
n var byte
Buzzer=0
SSR=0
LEDSSRON=0
IF TimeSelectSW=1 Then
Goto ShortTime
Else
Goto LongTime
Endif
ShortTime: '10-min timer
High SSR
high LEDSSRON
For m=1 to 67 '10 min 67 - decided though exp. 67は実験的に決めた(電源電圧によって値が変わる?)
Pause 10000 '10 sec
Next m
Low SSR
Low LEDSSRON
Goto BuzzerON
LongTime: '30-min timer
High SSR
high LEDSSRON
For m=1 to 201 '30 min 201 - decided though exp. 201は実験的に決めた
Pause 10000 '10 sec
Next m
Low SSR
Low LEDSSRON
Goto BuzzerON
BuzzerON:
For m=1 to 15 '15-min buzzer timer ブザーを15分鳴らして終了。電池を節約する対策。
For n=1 to 120
Sound Buzzer,[150,50] 'drive the piezo buzzer - piri,piri,piri,.... PicBasic Pro独自のコマンド。鳴ってる間にResetSWで再始動したり、電源を切って終了する。
Pause 500 '0.5 sec
Next n
Next m
End
'********* End of Program ***********
'Note:
'melabs U2 Programmer's
configurations for 12F629:
'Oscillator - INTOSC; WDTE –
Eable; PWRTE - Disable
'MCLR - Reset ; BODEN - Enable; CD - Disable; CDP – Disable
プログラムの改良(2013.11.30)
Time Select SWが10min(または30min)の状態で電源SWをONにし、途中でTime Select SWを、Reset
SWを押すことなく、30min(または10min)に変えると10minの状態が続くことが分かった。SSRに通電中にReset SWを押すことなくTime
Select SWだけで自由に10minや30minを選べる様にしたかった。すなわちプログラム中のShortTimeとLongTimeルーチンの中にTime
Select SWの状態をチェックする機能を入れ、Time Select SWの状態がはじめと変わったらTopに飛んで最初からやり直す様にした。実際に動かしてテスト中にこの不都合を発見した。
‘********************************************
'Soldering-iron TimerA.bas 2013.11.30 modified to change the time mode from 10-min to 30-min or vice versa while counting time simply by changing the Time Select SW but without pressing Reset SW
'Program for 12F629
'*********Pin connections*********
'Pin1: Vdd(5v)
'Pin8: Vss(GND)
'Pin4: Reset(MCLR)
'Pin2: To SSR
'Pin5: To Buzzer
'Pin7: To Timer select SW
'Pin3: To LED(R) for SSR->ON
'*********Program*********
CMCON=7 'Comparator off
TRISIO=%001001
TimeSelectSW var GPIO.0
Buzzer var GPIO.2
SSR var GPIO.5
LEDSSRON var GPIO.4
m var byte
n var byte
Top: ‘2013.11.30 newly added
Buzzer=0
SSR=0
LEDSSRON=0
IF TimeSelectSW=1 Then
Goto ShortTime
Else
Goto LongTime
Endif
ShortTime: '10-min timer
High SSR
high LEDSSRON
For m=1 to 63 '10 min 63 - decided though exp.
Pause 10000 '10 sec
If TimeSelectSW=0 Then ‘Following 4 lines newly added 2013.11.30 ここから4行でTime Select SWが30-minではないかをチェック、もしYesならTopへ飛ぶ
Goto Top
Else
Endif
Next m
Low SSR
Low LEDSSRON
Goto BuzzerON
LongTime: '30-min timer
High SSR
high LEDSSRON
For m=1 to 189 '30 min 189 - decided though exp.
Pause 10000 '10 sec
If TimeSelectSW=1 Then ‘Following 4 lines newly added 2013.11.30 ここから4行でTime Select SWが10-minではないかをチェック、もしYesならTopへ飛ぶ
Goto Top
Else
Endif
Next m
Low SSR
Low LEDSSRON
Goto BuzzerON
BuzzerON:
For m=1 to 15 '15-min buzzer timer
For n=1 to 120
Sound Buzzer,[150,50] 'drive the piezo buzzer - pri,piri,piri,....
Pause 500 '0.5 sec
Next n
Next m
End
'********* End of Program ***********