電子工作93 – 時間が来たら電源が切れる安全タイマーの製作

Electronics Project 93 – Settable AC100V Safety Switch

 

 

概要   Introduction

   例えば、電気ヒーターとか換気扇を使っていて、ある時間が経つと自動的に切れてくれるような簡単な安全タイマーが欲しくなり製作してみた。今回は、4ピンの12F629を使って設定時間を5分と15分のいずれかを選択出来るものにした。

 

This simple circuit was designed to automatically stop the operation of an electrical appliance by turning off SSR after 5 minutes or 10 minutes for safety. You can select 5-min or 15-min mode while the system is operating by pressing either SW1 or SW2. If changed, the time counting starts from beginning. The LED1 and LED2 indicate the time mode. When Power SW is turned on for the first time, the time mode is 5-min and the counting goes to zero after 5 minutes if SW2 is not pressed.

 

回路図   Circuit Diagram

  下図のように、電源としてDC5V USB ACアダプタを使う。SW1(SW:スイッチ)とSW2を読込む線は5VにPull-upされていてSWを押すとGNDになり、この変化をプログラムが読込む。SW1が選択されるとLED1が、SW2だとLED2が点灯する。いずれが選択されても、その間はSSR(Solid State Relay)はONになる。選択した時間が終了してLEDが消灯した後で再稼動させる場合は、Reset SWを押す。LED1が点灯中に、SW2を押すとLED1は消えてLED2が点灯して、15分間モードに変わる。LED2点灯中にSW1を押すと逆のことが起こる。

 

実験中   Testing using experimental board

 押しボタン式の青色SW1とSW2がボードの右上に見える。電源を入れると緑色の5分間LED1が点灯し、時間が経つと消灯する。LED1が点灯中にSW2を押すと15分間LED2が点灯し、時間が経つと消灯する。同じくLED2が点灯中にSW1を押すとLED1が点灯する。このように別のSWを押すごとに5分間と15分間が交互に入れ替わり、各時間モードで最初から時間のカウントが始まる。LED1またはLED2が点灯中はSSRを駆動する赤いLED(左側中央部に見える)が点灯する。

 

結果&コメント

1)     正常に動作することが確認された。

2)     PICのピンの数が足りないので、ブザーの使用は出来なかった。

3)     プログラムがうまく動作しなくて、ほぼ1日悶悶。SW1とSW2を5VにPull-upしたら動くようになった。

4)     今回は5分間と15分間のみだが、ピン数の多いPICを使ってもっと時間モードの数を増やしたい。

5)     実機はまだ製作していないが、SSR部を加えれば実用になるはず。

 

プログラム   Program

電源ONで、先ずShortTimeに入り、SSRとLED1をONにし、For m=1 to 3600で5分間の時間計測に入る。その途中のIf SW2=0 ThenでSW2が押されているかどうかをチェック、押されていればLongTimeに飛んで15分間の計測ルーチンに入る。押されていなければ計測を続け、終了したらSSRとLED1をOFFにして終わる。15分間計測ルーチンに入った場合は先ずSSRとLED2をONにして、For m=1 to 10800 で時間計測を開始し、同時にIf SW1=0 ThenでSW1の入力をチェックする。もし入力があればTopに戻って、最初からルーチンを再開始する。しかし、入力がなければ15分間計測ルーチンを続け、終わればSSRとLED2をOFFにして終了する。

'********************************************

'SettableACTimer629.bas   2016.11.26

'5-min and 15-min AC timer

'Program for 12F629

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

'Pin1: Vdd(5v)

'Pin8: Vss(GND)

'Pin4 (GP3): Reset(MCLR)

'Pin5 (GP2): To SSR

'Pin7 (GP0): To SW1

'Pin6 (GP1): To SW2

'Pin3 (GP4): To LED1

'Pin2 (GP5): To LED2

'*********Program*********

CMCON=7  'Comparator off

TRISIO=%001011

SW1 var GPIO.0

SW2 var GPIO.1

SSR var GPIO.2

LED1 var GPIO.4

LED2 var GPIO.5

 

m var word

 

Top:

LED1=0

LED2=0

SSR=0

 

ShortTime: '5-min timer

High SSR

High LED1

For m=1 to 3600  '5 min (actually measured: 4m 55s)

Pause 100  '0.1 sec

If SW2=0 Then

Low SSR

Low LED1

Goto LongTime

Endif

Next m

Low SSR

Low LED1

Goto finish

 

LongTime: '15-min timer

High SSR

High LED2

For m=1 to 10800  '15 min (actually measured: 14m 44s)

Pause 100  '0.1 sec

If SW1=0 Then

Goto Top

Endif 

Next m

Low SSR

Low LED2

Goto finish

 

finish:

Stop

End

'********* End of Program ***********

'Note:

   'melabs U2 Programmer's configurations for 12F629:

   'Oscillator - INTOSC; WDTE – Enable; PWRTE - Disable

   'MCLR - Reset ; BODEN - Enable; CD - Disable; CDP – Disable

 

 

4つの設定時間が選択出来る「時間が来たら電源が切れる安全タイマー」(2016.12.1 追加)

Settable AC100V Safety Timer with 4 Time Modes (Newly added on 2016.12.1)

   8ピンの12F629では設定時間が2つしかとれなかったので、手元にあった18ピンの16F628Aを使って設定時間を4つに増やしてみた。まだ、ピン数に余裕があるので設定時間をあと3つ増やせる。

Using 16F628A, the number of input switches was increased from the previous 2 to 4 this time. Accordingly, the new program as shown below is designed to be able to deal with the entry of SW1 – SW4 and the lighting-up of LED1 – LED4. The 5-min, 15-min, 30-min and 1-hr software-based timers are found to be reasonably accurate so that they are applicable for general practical purposes.

 

 

回路図   Circuit Diagram

  4個のSWと4個のLEDをRB0からRB7の8個のPORTB.0 からPORTB.7に接続した。この16F628AのPIN3にはRA4/AN4と記述されているが、実際にはAN4の機能はない。便宜上別のPICのピン配置図を流用したためにこのようになった。

 

実験中   Testing using experimental board

左下部の4つの青色のものが上からSW1,SW2,SW3、SW4で、右側中央の4個の緑色LED1,LED2,LED3、LED4が対応する。

それらのすぐ上の赤色LEDはSSRの代わりに接続されている。緑色LEDが時間が来て消灯するとこの赤色LEDも消灯する。

動作中は4個のLEDの内の1個が常に点灯していて、対応していない別のSWを押すとそれと対応するLEDが点灯し、前のものは消灯する。

 

Programmer I use.

いつも使用しているアメリカのmicroEngineering Labs, Inc.社(PicBasic Proの開発&販売会社)製のmelabs U2 Programmerである。

5年位前に購入。8ピンから40ピンまでの500種以上のPIC microcontrollersのプログラムの焼き込みが可能だという。

MicroCode Studioという無料のIDEと一緒に使うとプログラムの作成が大変楽に出来る。勿論USB接続で使う。

 

 

プログラム   Program

16F628AのPORTAとPORTBの計16個の内、PORTAのRA0とPA5はSSRのドライブとReset用にそれぞれ使用。PORTBは8個の内の4個をSWと残りの4個をLEDのドライブに使用した。今回のプログラムの中ではSWが押された時に分岐するIf SWx=0 Then Goto xxxが3行に増えている。そして、分岐して行った矢先では前に点灯していたLEDをすべて消灯させておく必要がある。時間を計測する部分、例えば5分間モードのFor m=1 to 3050では、3050は実際にストップウォッチを使って測って求めた値である。他の15分、30分、1時間モードの値も、この数値を倍数して求めた。実際に測定した時間は以外と正確であった(ただし、各1回の測定で得られた値による)。

'********************************************

'SettableACTimer628A.bas   2016.12.1

'5-min, 15-min, 30-min and 1-hr AC100V safety timer

'Program for 16F628A

'PicBasic Pro V2.50A

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

'Pin14: Vdd(5v)

'Pin5: Vss(GND)

'Pin4(PA5): Reset(MCLR)

'Pin6(PB0): To SW1

'Pin7(PB1): To SW2

'Pin8(PB2): To SW3

'Pin9(PB3): To SW4

'Pin10(PB4): To LED4

'Pin11(PB5): To LED3

'Pin12(PB6): To LED2

'Pin13(PB7): To LED1

'Pin17(RA0): To SSR

'*********Program*********

CMCON=7  'Comparator off

TRISA=%00100000

TRISB=%00001111

SW1 var PORTB.0

SW2 var PORTB.1

SW3 var PORTB.2

SW4 var PORTB.3

LED4 var PORTB.4

LED3 var PORTB.5

LED2 var PORTB.6

LED1 var PORTB.7

SSR var PORTA.0

Reset var PORTA.5

 

m var word

 

LED1=0

LED2=0

LED3=0

LED4=0

SSR=0

 

A5MinTime: '5-min timer

Low SSR

Low LED2

Low LED3

Low LED4

High SSR

High LED1

For m=1 to 3050  '5 min 'experimentally value (measured value: 300 secs)

Pause 100  '0.1 sec

If SW2=0 Then Goto A15MinTime

If SW3=0 Then Goto A30MinTime

If SW4=0 Then Goto A1HrTime

Next m

Low SSR

Low LED1

Goto finish

 

A15MinTime: '15-min timer

Low SSR

Low LED1

Low LED3

Low LED4

High SSR

High LED2

For m=1 to 9153  '15 min  'measured value exactly 15m 00s using stopwatch

Pause 100  '0.1 sec

If SW1=0 Then Goto A5MinTime

If SW3=0 Then Goto A30MinTime

If SW4=0 Then Goto A1HrTime

Next m

Low SSR

Low LED2

Goto finish

 

A30MinTime: '30-min timer

Low SSR

Low LED1

Low LED2

Low LED4

High SSR

High LED3

For m=1 to 18305  '30 min  measured value: 29m 44s

Pause 100  '0.1 sec

If SW1=0 Then Goto A5MinTime

If SW2=0 Then Goto A15MinTime

If SW4=0 Then Goto A1HrTime

Next m

Low SSR

Low LED3

Goto finish

 

A1HrTime:  '1-hr timer

Low SSR

Low LED1

Low LED2

Low LED3

High SSR

High LED4

For m=1 to 36610  '1 hr  measured value: 59m 56s

Pause 100  '0.1 sec

If SW1=0 Then Goto A5MinTime

If SW2=0 Then Goto A15MinTime

If SW3=0 Then Goto A30MinTime

Next m

Low SSR

Low LED4

Goto finish

 

finish:

Stop

End

'********* End of Program ***********

'Note:

   'melabs U2 Programmer's configurations for 16F628A

   'Oscillator – INTOSCIO; WDTE – Enabled; PWRTE – Disabled

   'MCLR - Reset ; BODEN – Enabled; LVProgramming – Disabled;

 'Code – Not Protected; Data EEPROM – Not Protected

 

 

電子ブザーを取り付ける(2016.12.6 追加)

Addition of piezo transducer (buzzer) to Safety Timer (2016.12.6)

 

  今回は電子ブザーを回路に加え、4個の時間モードの各モードが選択さた開始時にピリピリピリと鳴り、また、各モードが終了した時にピリピリピリが5回鳴る。以下に電子ブザーを加えた回路図とプログラムを表示する。

 

 

電子ブザー(直径24mmX厚さ6mm): DCの電圧をかけても鳴らず、数KHzの信号をかけると鳴る。圧電スピーカーとか圧電サウンダとも呼ばれる。

英語だと Piezo transducer と呼ばれている。

 

プログラム   Program

各時間モードの開始時に、PicBasic Proのコマンド(Sound)を使うSound Buzzer,[150,50]に入り、ピリピリピリと鳴るようにした。このコマンドの意味はBuzzerというPin(PORTA.1)に150(10KHz強)というホワイトノイズを、50の長さだけ発生させることを示している。各時間モードの終了時にはSound Buzzer,[150,50]を5回繰り返して、ルーチンの終了を知らせてくれる。

'********************************************

'SettableACTimer628Am.bas   2016.12.6

'5-min, 15-min, 30-min and 1-hrAC timer

'Program for 16F628A

'PicBasic Pro V2.50A

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

'Pin14: Vdd(5v)

'Pin5: Vss(GND)

'Pin4(PA5): Reset(MCLR)

'Pin6(PB0): To SW1

'Pin7(PB1): To SW2

'Pin8(PB2): To SW3

'Pin9(PB3): To SW4

'Pin10(PB4): To LED4

'Pin11(PB5): To LED3

'Pin12(PB6): To LED2

'Pin13(PB7): To LED1

'Pin17(RA0): To SSR

'Pin18(RA1): To Buzzer

'*********Program*********

CMCON=7  'Comparator off

TRISA=%00100000

TRISB=%00001111

SW1 var PORTB.0

SW2 var PORTB.1

SW3 var PORTB.2

SW4 var PORTB.3

LED4 var PORTB.4

LED3 var PORTB.5

LED2 var PORTB.6

LED1 var PORTB.7

SSR var PORTA.0

Reset var PORTA.5

Buzzer var PORTA.1

 

m var Word

n var Byte

 

LED1=0

LED2=0

LED3=0

LED4=0

SSR=0

Buzzer=0

 

A5MinTime: '5-min timer

Sound Buzzer,[150,50]  'drive the piezo buzzer piri,piri,piri when this timer is selected.

LOW SSR

LOW LED2

LOW LED3

LOW LED4

High SSR

High LED1

For m=1 to 3050  '5 min 'experimentally decided (measured value: 300 secs)

Pause 100  '0.1 sec

If SW2=0 Then Goto A15MinTime

If SW3=0 Then Goto A30MinTime

If SW4=0 Then Goto A1HrTime

Next m

Low SSR

Low LED1

Goto finish

 

A15MinTime: '15-min timer 'measured value: exactly 15m 00sec using stopwatch

Sound Buzzer,[150,50]

Low SSR

Low LED1

Low LED3

Low LED4

High SSR

High LED2

For m=1 to 9153  '15 min

Pause 100  '0.1 sec

If SW1=0 Then Goto A5MinTime

If SW3=0 Then Goto A30MinTime

If SW4=0 Then Goto A1HrTime

Next m

Low SSR

Low LED2

Goto finish

 

A30MinTime:

Sound Buzzer,[150,50]

Low SSR

Low LED1

Low LED2

Low LED4

High SSR

High LED3

For m=1 to 18305  '30 min  measured value: 29m 44secs

Pause 100  '0.1 sec

If SW1=0 Then Goto A5MinTime

If SW2=0 Then Goto A15MinTime

If SW4=0 Then Goto A1HrTime

Next m

Low SSR

Low LED3

Goto finish

 

A1HrTime:

Sound Buzzer,[150,50]

Low SSR

Low LED1

Low LED2

Low LED3

High SSR

High LED4

For m=1 to 36610  '1 hr

Pause 100  '0.1 sec

If SW1=0 Then Goto A5MinTime

If SW2=0 Then Goto A15MinTime

If SW3=0 Then Goto A30MinTime

Next m

Low SSR

Low LED4

Goto finish

 

finish:

For n=1 to 5  'drive the piezo buzzer piri,piri,piri 5 times when each timer routine completes

Sound Buzzer,[150,50]

Pause 100

Next n

 

Stop

End

'********* End of Program ***********

'Note:

   'melabs U2 Programmer's configurations for 16F628A

   'Oscillator – INTOSCIO; WDTE – Enabled; PWRTE – Disabled

   'MCLR - Reset ; BODEN – Enabled; LVProgramming – Disabled;

'Code – Not Protected; Data EEPROM – Not Protected

 

Menu Pageへ戻る   (Return to Menu Page)

Topへ戻る   (Return to Top of Page)