1 Switch SmartClock

−PIC12LF1822を使った多機能アラーム時計(正式版)−

 

 

●概要

 タイマー機能を作例としたマイコンはたくさんありますが、これはちょっと違う、スタンドアローンで動作するアラーム時計です。世界一簡単に作れて、小型で、電池でも長持ちすることを目指して、時間の表示は切り捨てたが、マイクロスイッチのみで操作できるよう、なるべく使い易くした。おまけとして、タイマー、インターバルタイマー、0秒に修正、0分0秒に修正、経過時間のお知らせ、現在時刻のお知らせ、マイクロスイッチのロック等々を追加した。

 

●特徴

 1,小型、軽量。消費電流を減らすため15秒に一度、起動している。おかげで、電池でも長時間使える。

 2,Microchip 社製のワンチップマイコンPIC12LF1822(PDIP、コード・プロテクトしています)の他は、どこにでもある水晶振動子(32.768kHz)、セラミックコンデンサ(22pF)2個、圧電素子、LED、マイクロスイッチ、3Vの電池で作れる。

 3,4ピン(RA3)をマイナスではなく、プラスに接続すると、圧電素子の代わりにFET等を使ってブザーやメロディICなどを鳴らせたり、他の機器を制御することが出来る。

 4,こんな場合におすすめ=装置を小型にしたい。拡張I/Oのポートは2本以下でいい。時,分の他に、月、日、曜日を設定条件に加えたい。一度設定すれば、そんなに変更しない。電源の取れない場所で、電池だけで数年は動かしたい。100円ショップのアラーム付き時計を分解するのはめんどくさい。現在時刻を表示するだけの時計は寂しい。ケイタイやスマートフォンを使ったものでは嵩張る。ウィルス感染やサイバー攻撃の心配ゼロ。Binary Clock や Word Clock では時間が分かりづらい。Nixie Clock では100Vがないと使えない。Afterimage Clock では音がうるさい。Knock Clock では正確な時刻が分からない。LEDやチップLEDを何十個、何百個、千何百個もハンダ付けするのはしんどい。数分後、数時間後、数日後、数十日後、二、三百日後〜に動作させたい。ある程度の精度が欲しい。リアルタイムクロックもいいが、I2CやSPIインターフェースがめんどくさいし、アラーム数が少ない、などなどの場合。

  

  回路図

 

  *1、 クリスタル、マイクロスイッチ周りの配線は出来るだけ短くする。

  *2、 4ピン(RA3)をマイナスではなく、プラスに接続すると、圧電素子の代わりにFET等を使ってブザーやメロディICなどを鳴らせる。

   *3、 3Vの電池しか使えません(4V以上の電圧をかけないこと)。100V(ACアダプターなど)を使った回路と繋がってる状態で、マイクロスイッチで設定すると誤動作するので、切り離してから設定してください。

 

◆特徴

  1、消費電流は、15秒に1度(必要な時は1.875秒に1度に切り替え)しか動作しないので0.4μAです(秋月電子で買ったデジタルマルチメータ(M-6000H)での測定値。ちなみに、1.875秒の時は0.7μA、アラーム鳴動時は0.54mA、LED点灯時は数mAです。12F683を使った時は6.0μAでした)。コイン電池(CR2032)を使った場合、220mAh/0.0004mA/24/365=62.7 で、最長62年は持ちそうです(リチウム電池(CR-V3)なら856年)。又、電池を使っているので、マイクロスイッチを使う事でチャタリング防止回路が省略でき、外付け回路が簡単、小型化も可能です。ソフトによる対策も不要になります。

 

、使い方

 

 ○記号の意味

 [X]=(Xは1〜99)。マイクロスイッチを0.1秒ほど、X回、短押しする。

 [-]=マイクロスイッチを1秒程度長押しする。"数字と数字の区切り"または"ゼロ"を意味する。

 

 ○まず現在時刻の設定

    1、電池は素早く入れて下さい。すぐにプログラムがスタートします。閏年1年1月0日、日曜日、午前0時0分からスタートする。マイクロスイッチを一回押すとLEDが点灯し、約5秒後、エラー音が鳴ればプログラムは正常に動いています。もし鳴らない場合は、一度電池を外して1ピンと8ピンをショートして完全に放電してから、再び最初からやり直す。

    2、[-][16] (マイクロスイッチを1秒程度長押しする。次にマイクロスイッチを0.1秒ほど、16回、短押しする。)

    3、LEDが点灯するのを待つ。

    4、例えば2011年2月13日、日曜午後2時0分の場合、

 

      [3][-][11][-][2][-][13][-][1][-][14][-][-]    (途中で押し間違えた時は、エラーになるまで[-][-][-]・・・と押し続け、2、[-][16]、からやり直す。)

 

         (先頭の[X]は閏年を表します。尚、曜日は、[1]=日曜、[2]=月曜、[3]=火曜、[4]=水曜、[5]=木曜、[6]=金曜、[7]=土曜)

 

          2012年のときは[-][-][12][-]・・・(略)

 

          2013年のときは[1][-][13][-]・・・(略)

 

          2014年のときは[2][-][14][-]・・・(略)

 

          2015年のときは[3][-][15][-]・・・(略)

 

          2016年のときは[-][-][16][-]・・・(略)

 

          2017年のときは[1][-][17][-]・・・(略)

 

          2018年のときは[2][-][18][-]・・・(略)

 

          2019年のときは[3][-][19][-]・・・(略)

 

    5、LEDが点灯してから、時報に合わせてマイクロスイッチを押す。15秒後、一瞬LEDを点灯すれば、発振回路は正常に動作しています。なお、この15秒間はマイクロスイッチの入力を受け付けません。

 

    6、メニュー待ちの状態に入る。アラームはどんな状態でも最優先で鳴る。

 

 

 ○メニュー   [-][17]を除いて、最初の[-]を押したときLEDが点灯しない場合は、他の命令を実行中か、1.875秒に1度の割り込みと15秒に1度の割り込みを切り替えている途中なので、15秒程度待ってから入力し直す。LEDが薄暗くなった時は電池を交換して下さい。「メニュー」の途中でキャンセルするには、エラーになるまで[-][-]・・・と押し続ける。物がマイクロスイッチに当たってLEDが点きっ放しになるのを防ぐため、約30秒以上押すとエラーとする。「タイマー」や「インターバルタイマー」や「経過時間」等は、15秒に1度起動しているのを1.875秒に1度の起動に切り替えているので、最悪15秒待たされると思います。最初から1.875秒ごとにしておけば、利便性も上がり、プログラムも簡単になりますが、消費電流をなるべく減らすことを第一目標にしたので、敢えてこのような形になりました。15秒は長く感じると思いますが、ご容赦願います。同様に1.875秒を15秒に戻すときもマイクロスイッチの入力を受け付けませんので、その時は約15秒待ってから再度入力して下さい。1.875秒に1度の割り込みから15秒に1度の割り込みに戻った時をはっきりさせるため、一瞬だけLEDが点灯します。

 

            ◆「ロック」◆[-][-]         約1分後にマイクロスイッチをロックする。LEDが約1秒間点灯したら、「ロック」されるまでので約1分間、「タイマー」、「インターバルタイマー」、「経過時間」や「現在時刻」のセットができます。約1分後、一瞬LED点灯してロック開始。

 

      ◆「アラーム」◆[-][1]        約3秒のアラーム。LEDが点灯してから消えない間に、必要な設定を下のAからMのうち一つを選んでマイクロスイッチを押す。またLEDが点灯するので、もしあれば、消えないうちに次の設定を一つを選んでマイクロスイッチを押す。必要な設定をすべて入力するまで繰り返す。最後は点灯してから消えるまで何もしない。順番は関係ない。同じタイプで2回以上入力した場合は、最後に入力した値のみ有効。Eを使わないときは一回だけ鳴る。Eを使ったアラームで繰り返しを止めるには、アラームが鳴っている間か、鳴り終わった後5秒以内に、マイクロスイッチを再びビープ音が鳴り出すまで押し続ける。アラームの時刻設定は41個出来ます。それ以上は古い方から上書きされます。薬の飲み忘れ、記念日の度忘れ防止に。1時間以内の設定なら「時」の設定は不要で「分」のみでOK。24時間以内の設定なら「時」と「分」のみで。1ヶ月以内の設定なら「月」の設定は不要。例えば今12時半で13時に1回鳴らしたい時は、[-][1]と押し、LEDが点灯したら、[-]と押すだけ。毎正時にアラームを鳴らす設定も、[-][1]と押し、LEDが点灯したら、[-]と押し、またLEDが点灯したら、[-][-][-]と押すだけ。簡単! 13日の金曜日に注意したいときは、[-][1]→LEDが点灯→[-][13]→LED点灯→[-][6][-]→LED点灯→[13]→LED点灯→消灯、と押す。セットし終わったらメニュー待ちに戻る。

 

      ◆「アラーム」◆[-][2]        約50秒間のアラーム。Eを使ったアラームで繰り返しを止めるには、アラームが鳴っている間に、マイクロスイッチを再びビープ音が鳴り出すまで押し続ける。以下は[-][1]に同じ。

 

      ◆「アラーム」◆[-][3]        5分間の断続のアラーム。以下は[-][2]に同じ。

 

      ◆「アラーム」◆[-][4]        3分間のLEDの点滅。Eを使った繰り返しを止めるには、点滅している間に、マイクロスイッチをビープ音が鳴り出すまで押し続ける。以下は[-][1]に同じ。

 

      ◆「アラーム」◆[-][5]        約0.5秒間のアラーム。Eを使ったアラームで繰り返しを止めるには、アラームが鳴り終わった後5秒以内に、マイクロスイッチを約10秒間押し続ける(ビープ音は鳴りません)。その他は[-][1]と同じ。

 

      ◆「アラーム」◆[-][6]        約0.5秒間のLEDの点灯。Eを使った点灯で繰り返しを止めるには、点灯が終わった後5秒以内に、マイクロスイッチを約10秒間押し続ける(ビープ音は鳴りません)。その他は[-][1]と同じ。

 

      ◆「アラーム」◆[-][7]        10分間のアラーム。但し何も出力しない。既に設定しているアラームを一時的にマスクするのに使用出来る。以下は[-][2]に同じ。

 

          A、  [a]                  a分

          B、  [b][-]               b時

          C、  [-][c]               c日

          E、  [-][d][-]            d:  - =毎回、1=毎日曜、2=毎月曜、3=毎火曜、4=毎水曜、5=毎木曜、6=毎金曜、7=毎土曜、8=毎月曜〜金曜、9=毎月曜〜土曜、10=毎月末

          *E、  [-][d][-]            d: - =毎回、1=毎日曜、2=毎月曜、3=毎火曜、4=毎水曜、5=毎木曜、6=毎金曜、7=毎土曜、8=毎月曜〜金曜、9=毎月曜〜土曜、10=毎月末、11=毎月末又はその前日 (尚、*Nと同時には設定できない。)

          F、 [e][-][f]               e十f分

          G、 [j][-][h][-]           j時h十分

          H、 [-][i][-][k]           i月k日

          I、 [l][-][m][-][n]      l時m十n分

          J、 [o][-][p][-][q][-]     o十p時q十分

          K、 [r][-][s][-][t][-][u]    r十s時t十u分

          L、 [-][v][-][-]            v月

         M、 [w][-][-][-]            w時 0分、w時10分、w時20分、w時30分、w時40分、w時50分  (E、*E、又は*Nと一緒に使った場合)

         *N、 [x][-][-][y]            毎x曜日からy曜日まで(x,y は 1=日曜日、2=月曜日、3=火曜日、4=水曜日、5=木曜日、6=金曜日、7=土曜日。尚、*Eと同時には設定できない。)

 

          (*Eと*Nは12LF1840を使用した時、追加した項目)

 

      ◆「タイマー」◆[-][8]        1分から99分までのタイマー。LEDが点灯してから消えないうちに、必要な設定を上のA、Fのうち一つを選んでマイクロスイッチを押す。再びLEDが点灯してからマイクロスイッチを押してスタート。約2分の間にスタートさせなかった時は、自動スタートさせる。「タイマー」をセットした後、すぐ「経過時間」や「現在時刻」が使えます。逆はダメです。但し、表示は「タイマー」の方が優先されます。「タイマー」と「インターバルタイマー」は同時に使えません。「タイマー」を途中でキャンセルするには、再び「タイマー」で0分をセットする。LEDが点灯して消灯するまで、マイクロスイッチを押さないと、「経過時間」で計った時間(約10秒から6000秒まで)を「タイマー」にセットします。「経過時間」を新しく使わない限り、何度でも利用できる。残り時間の目安として、8分以上の時1分おき、4分以上の時30秒おき、2分以上の時15秒おき、1分以上の時7.5秒おき、1分以内の時3.75秒おきにLEDを点滅する。1.875秒に1度しか起動しないため、最大誤差は±1.875秒になります。終了すると、メニュー待ちの状態に戻る。

 

      ◆「インターバルタイマー」◆[-][9]        1分から99分までのインターバルタイマー。LEDが点灯してから消えないうちに、必要な設定を上のA、Fのうち一つを選んでマイクロスイッチを押す。再びLEDが点灯してからマイクロスイッチを押してスタート。もう一回押すとストップして、メニュー待ちの状態に戻る。約2分の間にスタートさせなかった時は、自動スタートさせる。LEDが点灯して消灯するまで、マイクロスイッチを押さないと、「経過時間」で計った時間(約10秒から6000秒まで)を「インターバルタイマー」にセットします。「経過時間」を新しく使わない限り、何度でも利用できる。残り時間の目安として、8分以上の時1分おき、4分以上の時30秒おき、2分以上の時15秒おき、1分以上の時7.5秒おき、1分以内の時3.75秒おきにLEDを点滅する。1.875秒に1度しか起動しないため、最大誤差は±1.875秒になります。

 

      ◆「補正」◆[-][10]       0秒に修正する。29秒捨30秒入。LEDが点灯してから、時報に合わせてマイクロスイッチを押す。但しその時刻にアラームが設定されていても鳴りません。押し間違えた場合は、もう一度やり直してから、[-][30]で定数を初期値に戻して下さい。補正する度に、進み遅れ具合から渦巻き方式で定数を修正して、30分ごとに補正する。月差を±5秒程度(急激な温度変化がない場合。温度変化がなければ±0秒までもっていけるのですが)にする。最初は遅れ気味になりますが、補正するたびに、誤差が小さくなるように調節していきます。何度か補正して下さい。もしも8回以上実行しても、誤差の増減があるときは、[-][30]で定数を一度初期化して、やり直してみて下さい。誤差の変動がなくなってきた場合は、これを使わず、[-][16]で現在時刻を再設定して下さい。約2分間、押さなかった時はキャンセルします。押して15秒後、メニュー待ちに戻る。この15秒間はマイクロスイッチの入力を受け付けません。

 

      ◆「経過時間」◆[-][11]       99分までの経過時間を1分ごとにお知らせ。LEDが点灯してからマイクロスイッチを押してスタート。もう一回押すとストップして、メニュー待ちの状態に戻る。約2分の間にスタートさせなかった時は、2分経過から自動スタートさせる。「経過時間」で計った時間(約10秒から6000秒まで)を「タイマー」や「インターバルタイマー」にセットできる。電源を切るか「経過時間」を新しく使うまでは、何度でも利用できる。「タイマー」と同時実行が可能。1.875秒に1度しか起動しないため、最大誤差は±1.875秒になります。

 

      ◆「現在時刻」◆[-][12]       現在時刻を1分ごとにお知らせ。LEDが点灯、消灯してから開始。マイクロスイッチを押すとストップして、メニュー待ちの状態に戻る。視線を動かさず時間が分かる。「タイマー」と同時実行が可能。

 

      ◆「アラームセット」◆[-][13]       LEDが点灯してからマイクロスイッチを押す。その時の週、時、分をアラームに設定する。約23秒鳴る。約2分の間に押さなかった時はキャンセルする。終了したら、メニュー待ちに戻る。

 

      ◆「補正」◆[-][14]       0分0秒に修正する。29分捨30分入。LEDが点灯してから、時報に合わせてマイクロスイッチを押す。但しその時刻にアラームが設定されていても鳴りません。押し間違えた場合は、もう一度やり直してから、[-][30]で定数を初期値に戻して下さい。補正する度に、進み遅れ具合から渦巻き方式で定数を修正して、30分ごとに補正する。月差を±5秒程度(急激な温度変化がない場合。温度変化がなければ±0秒までもっていけるのですが)にする。最初は遅れ気味になりますが、補正するたびに、誤差が小さくなるように調節していきます。何度か補正して下さい。もしも8回以上実行しても、誤差の増減があるときは、[-][30]で定数を一度初期化して、やり直してみて下さい。誤差の変動がなくなってきた場合は、これを使わず、[-][16]で現在時刻を再設定して下さい。約2分間、押さなかった時はキャンセルします。押して15秒後、メニュー待ちに戻る。この15秒間はマイクロスイッチの入力を受け付けません。

 

      ◆「消去」◆[-][15]       アラームの設定時刻をすべて消去する。LEDが点灯して消灯したら完了。メニュー待ちに戻る。

 

      ◆「時刻設定」◆[-][16]       現在時刻の設定。設定した年月日時をEEPROMの先頭に保存する。約2分間、押さなかった時はキャンセルする。閏年の設定もするので、動いている限りは日付の修正は不要。ただし、2400年、2800年、3200年、3600年、・・・の2月29日(火)は3月1日(火)になってしまうので修正が必要。以降、400年ごとに修正して下さい。今のグレゴリオ暦が続く限りは使えます。15秒後、メニュー待ちに戻る。

 

      ◆「解除」◆[-][17]       マイクロスイッチの「ロック」を解除する。解除された時をはっきりさせるため、一瞬、LEDが点灯する。アラームが鳴っている途中でも、割り込みで処理しているので使用可能。終了したら、メニュー待ちに戻る。

 

      ◆「スリープ」◆[-][20]       長期間使わない時のために、すべての機能を停止してスリープする。一瞬、LEDが点灯するまでは触らないようにする。マイクロスイッチを押すと再起動するので、現在時刻の設定から始める。

 

      ◆「初期化」◆[-][30]        誤動作で定数が書き換わったときのために、定数をすべて初期化する。約30秒後、一瞬LEDが点灯したら完了。メニュー待ちに戻る。

 

 

ぁ¬叛

   2Kワードをすべて使い切っているので、大きなバク以外は仕様ということで御勘弁願います。

 

無料のβ版(PIC12F683用)はこちら。

 

ァ応用例

   、1年間プログラムタイマー(消費電流は増えますが、応用例Bと同時使用可)

 

 

          1、現在時刻をセット。

          2、何回か時刻を校正する。

          3、希望時刻を[-][5]や[-][6]を使ってセット。

          4、4ピンをハイにする。

          5、6ピンと7ピンのLEDと圧電素子を外し、制御回路に接続する。

          6、不要なら、5ピンをローにして、マイクロスイッチを取り外す。

 

   、水晶振動子ではどうしても急激な温度変化で周波数が変動する。電波時計もいいが、標準電波の送信が停止すると誤差が出る。そこでマキシム・インテグレーテッドの温度補償水晶発振器、DS32KHZ/DIP(出力32.768kHz、$12.64で購入)を使うことができるようにした。精度は±4分/年(-40℃〜+85℃)、±1分/年(0℃〜+40℃) が期待できる。但し、消費電流は0.4μAから3.1μAに増える。

          1、DS32KHZ の5ピンをプラス、1、4、6、7、8、9,10、11、13、14ピンをマイナスに繋ぐ。

          2、DS32KHZ の12ピンを12LF1822 の2ピンに繋ぐ。

          3、12LF1822 の3ピンをプラスに接続する。

 

   、長期間タイマー(1分後から最長366日と23時間59分後までまで設定可能。消費電流は増えますが、応用例Bと同時使用可)

 

          1、現在時刻をセット。

          2、何回か時刻を校正する。

          3、希望時刻を計算して[-][5]や[-][6]を使ってセット。

          4、電池を外す。

          5、4ピンをハイにする。

          6、マイクロスイッチを取り外し、5ピンをローにする。

          7、6ピンと7ピンのLEDと圧電素子を外し、制御回路に接続する。

          8、電池を外し、完全に放電してから、また電池をつなぐ。

          9、閏年1年1月0日、日曜日午前0時0分からスタートする。

         10、2回目からは8から実行する。

 

     又は、

          1、現在時刻をセット。

          2、何回か時刻を校正する。

          3、希望時刻を計算して[-][5]や[-][6]を使ってセット。

          4、4ピンをハイにする。

          5、6ピンと7ピンのLEDと圧電素子を外し、制御回路に接続する。

          6、[-][20] を使ってスリープさせる。LEDが点灯するまで、触らないようにする。

          7、マイクロスイッチを押すと、閏年1年1月0日、日曜日午前0時0分からスタートする。

          8、2回目からは6から実行する。

  <注意>これを時限爆弾等の起爆装置には御使用なさらないで下さい。

 

   、インターバルタイマー(1〜99分間隔(1分刻み)と約10〜6000秒(1.875秒刻み)の二種類。消費電流は増えますが、応用例Bと同時使用可)

 

     ○1〜99分間隔(1分刻み)の場合

          1、4ピンをハイにする。

          2、7ピンの圧電素子を外し、制御回路に接続する。

          3、[-][9]を使って1から99の間で希望する間隔をセット。

          4、再びLEDが点灯してからマイクロスイッチを押してスタート。

          5、終了したい時は再びマイクロスイッチを押す。

 

    ○約10〜6000秒間隔(1.875秒刻み)の場合

          1、4ピンをハイにする。

          2、[-][11]を使って約10〜6000秒の間で希望する間隔でストップする。(電源を切るか、[-][20] を使ってスリープさせるまでは、何度でも使える。)

          3、7ピンの圧電素子を外し、制御回路に接続する。

          4、[-][9]を使って、LEDが点灯して消灯するまで何もしない。

          5、再びLEDが点灯してからマイクロスイッチを押してスタート。

          6、終了したい時は再びマイクロスイッチを押す。

          7、2回目からは4から実行する。

 

Α1.8Vから5.5Vまで使えるPIC12F1822も発売中。ただし消費電流は、5Vで12.7μAに増える。1.875秒ごとの時は13.0μA、アラーム鳴動時は0.57mA、LED点灯時は制限抵抗次第です。

 

А△海PIC12LF1822(PDIP、コード・プロテクトしています)を一個600円で発売中。詳しくはメールを下さい。なお、期間限定で、サンプル版(本年12月31日まで有効。PDIPのみで、コード・プロテクトしています。)の書き込みをお一人様1個限りで無料でしています。PIC12LF1822(PDIP)を1個と80円切手を貼った返信用長形4号封筒を郵送して下さい。サンプル版を書き込んで返送します。

Copyright(C)  2011    mxdwdn@yahoo.co.jp    All rights reserved