PIC 16F1823でACタイマーを作る

投稿日 2021/11/07

数分から、長くても1日(24時間)程度のタイマーがほしい場合があります。ハンダゴテの切り忘れや、冬ですと電気座布団などの切り忘れを防止するためです。AC100Vが設定時間後に切れるタイマーです。この手のタイマーは昔から家電としてホームセンターやAZなどで売られています。時計のようなダイヤルが付いていて、設定したい時間までダイヤルをぐるっと回すだけというものです。電気製品をつないでおけば、設定時間後に自動意的に電源が切れます。(設定時間後に電源が入ることもできるのが普通です)

そのようなタイマー付きコンセントをここではACタイマーと呼びます。我が家でも20年以上使ってきたACタイマーがありますが、先日ついに壊れてしまいました。中のタイマーはメカですので修理不能。おそらくプラスチックで出来たギヤーが欠けたりして、時間が進まないのでしょう。

AC_TIMER01.jpg

20年以上も活躍していたACタイマー

最長11時間の設定が可能な、「時間が経てばON/OFF」タイマー

​電気機器の切り忘れに重宝する

このタイプのものは今でも市販されている

​内部はメカ的な機構のタイマーで、壊れたらお手上げ

大変便利なタイマーですので、同じようなものが今でも売られているか調べてみたところ、なんと今でもそっくりなものが売られています。ネットで調べると1600円程度。同じものがホームセンターで2700円程度で売られています。それを買ってしまえば話は簡単ですが、1000円以下なら買ったかも知れませんが、1600円はちょっと高いなぁ。そんなに複雑なものでもないのに。

そこで、部品はすべて手持ちので揃えられそうなので、PICマイコンとソリッドステートリレーでACタイマーを作ってみることにしました。仕様は以下のとおりです。

設定可能な時間: 最長2時間(自由に決められますが当局の用途ではこのくらいが適当)

時間の設定方法: ボリューム式

動作開始・終了: オルタネート・プッシュスイッチ

残時間の表示:設定時間を100%として5つのLEDで5段階表示

  残時間 100 - 80% 79 - 60% 59 - 40% 39 - 20% 19 - 1%  0%ですべて消灯し動作終了

       現在の残り時間のLEDは点滅

ACコンセント: 1口 時間が来ればOFF

  (時間が来ればONも可能ですが部品スペースの関係で実装しませんでした)

ACコンセントの耐圧・電流容量:250V 2A (ソリッドステートリレーの仕様)

  (ソリッドステート・リレーはもっと大容量のものが入手可能です。

                                                  メカニカル・リレーを使うこともできます。)

AC_TIMER02.jpg

同様のACタイマーをPICマイコンを使って作ってみた

時間設定ダイヤルの代わりにツマミで設定し、LEDが残時間を表示

設定可能最長時間は2時間にした

​プッシュスイッチで動作開始/終了

動作中に時間設定を変更しても(ボリュームを回しても)無効です。新たに時間を設定したい場合は、一度動作終了してから再度動作開始(プッシュスイッチを2回押す)します。そのときの設定時間で最初からカウントを開始します。たとえば、2時間の設定で開始したが、現在から1時間後に終了したい場合、時間設定を1時間にし、一度動作終了してから、再度動作開始します。残時間の表示は100%(LED 5つすべて点灯)から始まります。

用途は以下のような電気製品の切り忘れ防止を想定しています。

半田ごて

電気座布団

枕元灯

ラジオ

いずれもAC100V 200Wまで。

AC_TIMER04.jpg

PIC16F1823使用AC タイマーの回路

AC100VからDC12Vは市販のモジュールを使用

ソリッドステート・リレーは AC250V 2Aのもの

回路について

マイコンはPIC 16F1823を使いました。ピン数の関係でちょうどいいと思います。AC100Vから DC+12Vを得るために市販(CN製)の小型AC-DCコンバーターを使いました。+12Vから三端子レギュレーターで+5Vを作ってマイコンの電源としています。

ACラインのスイッチはソリッドステート・リレーを使いました。以前秋月で販売されていたものですが、今は扱っていないようです。AV250V 2Aのものです。今ではもっと大容量のものもありますし、メカニカル・リレーでもよいかと思います。

​使用したソリッドステート・リレーの制御端子のシンク電流を計測してみたところ約20mAあったので、PICのGPIOピンには少しキツイと判断しトランジスタ(2SC1815)をかましておきました。

AC100Vを扱いますのでヒューズは必ず入れます。

ICSPでいつでもプログラムの書き換えができるようにしてあります。

AC_TIMER03.jpg

実装の様子

小型のプラスチックケースに収めるため部品配置に苦労したが、なんとか収まった

手持ちの部品で作ったがヒューズ、三端子レギュレータを小さいものにしたかった

動作について

時間設定を読み取るため、ボリュームで抵抗分割して作った電圧をADコンバーター(10bit)で読み込んでいます。ADコンバーターで得たデジタル値は0から1023ですので、それを2時間の秒数(14400)に対応するよう時間カウンタを計算で得ています。

電源をつないだら即動作を開始し、ソリッドステート・リレーをONし、時間カウンタをカウントダウンし始めます。

timer0を約1秒間隔を得るために使用しています。実際には約20ms間隔の割り込みを発生させ、50回割り込みが発生したときに1秒としています。1秒毎に時間カウンタをカウントダウンします。

時間カウンタの設定値を100%として、80%以上、60%以上、40%以上、20%以上、1%以上でそれぞれのLEDを点灯させています。そのうち現在の残時間のLEDは点滅させています。時間カウンタが0になったら動作終了となりソリッドステート・リレーをOFFします。

動作状態で動作開始/終了スイッチ(プッシュスイッチ)を押すと、INT割り込みが発生して設定時間が来ていなくても途中で動作を終了することができます。LEDがすべて消灯し、ソリッドステート・リレーがOFFします。終了状態でスイッチを押すと動作状態となり、ソリッドステート・リレーをONし、設定時間で再び時間カウントを開始します。

そそろそ寒くなってきました。当局ではパソコンデスクの椅子で電気座布団を使っていますが、しょっちゅう切り忘れます。たった40Wくらいのものですが、電気代が高くなってきているので馬鹿にできません。このACタイマーを使えば切り忘れがなくなります。

(JF1VRR)