2018/04/07 7セグLEDの表示部ファームウェアを追加
2018/03/27 7セグLEDの表示部を追加
2018/03/03 時刻同期ソフトをアップデート
2017/12/19 新規作成

法人向けのETC専用カード

はじめに

商用電源(100V)は扱いを誤ると感電します

一昔前に商用電源の周波数をクロック源に使う時計がありまして、当方も作ってみたくなりました。

ただし、7セグLEDやLCDに時刻を表示するものだと目新しさがないので、電子マスカットさんの音声告知クロックの機能を入れてみました。

本時計の完成後からしばらく動かして観察してみました。
NTPで正確に同期したPCの時計と比較して、あるときは2秒ほど進んでいて、またあるときは2秒ほど遅れ、さらにピッタリ正確の場合もあります。

どうやら±2秒ほどの範囲内でふらふらしている感じで、一方的に進んでいったり、あるいは遅れていくことはありません。長い目で見て平均するとかなり正確のようです。


時刻の表示も欲しい方は、下の7セグメントLEDによる表示モジュールもどうぞ。
この7セグ表示部はオプションですので、必要が無ければ作らなくても構いません。


注意

AC100Vを扱うため、取り扱いには十分注意してください。
感電・発火などによる何らかの事故・損害が発生しても当方は一切責任を負いませんので、あくまでも自己責任でお願いします。


ハードウェア製作

回路図


本家マスカットさんの作品と違って、本作はトランス分のコストがUPしてしまうため、その分マイコンは安いPIC16F87を選んでみました。このPICは秋月さんですと2017年12月の時点で\140とお安いです。

今回は18ピンのマイコンを選択したため、音声出力のD/A変換はR-2RラダーではなくPWMで行っています。実際に耳で聞いた感じでは問題なく音声が再生できました。

電源はトランスで降圧したのち、ブリッジダイオードで整流します。
これを7805で安定化させてマイコンやスピーカアンプの電源とします。

AC周波数はトランス直後からフォトカプラを介してPICに入力し、時計の計時はこのパルスを使います。回路図と異なるトランスやフォトカプラを使う場合はLED側の抵抗を調整する必要があるかと思います。

ヒューズは必ず入れてください。
ただし、当然ではありますがヒューズを入れたからといって絶対的に安全とは言えませんので、製作の際はは細心の注意を払ってください。

時刻の設定はSW1で時調整、SW2で分調整します。SW3は現在時刻を発声します。

回路図中の Option circuit とある部分は、外部との通信用です。
PCのシリアルポートと接続し、後述の時刻同期ソフトでPCから時刻を同期できます。
本機はAC100Vを扱っていますので、シリアルポート用の回路はフォトカプラで絶縁します。

Time String とある部分は時刻の文字列を 12:34:56 形式で外部に送信しています。
時刻を7セグLEDなどでも表示したい場合はこの信号を使ってください。

スピーカアンプのTA7368Pは本家の東芝製が製造中止になっています。
秋月さんでは2017年12月時点でまだ在庫があるようですが、もし手に入らなかった場合、セカンドソースのUTC製TA7368でも問題ないかと思います。

7セグLEDの表示部


単純に音声告知クロック本体から送られたデータを7セグメントLEDに表示するだけのものです。

カソードコモンLEDを駆動するありふれた回路ですので、特に難しい部分はないと思います。

当方はNPNトランジスタに2SC1815を使いましたが、製造中止になっているので一般的な小信号用なら他のものでもOKです。


ソフトウェア

ファームウェア

電源が投入されると、簡易周波数カウンタモードになって50Hz/60Hzの判別を行います。
50または60を4倍にした値をタイマ0に設定することで、4秒ごとにタイマ0のオーバフロー割り込みがかかります。

タイマ0がオーバーフローするごとに秒数カウント用の変数をインクリメントし、この秒数が時計としての時刻データになります。

EEPROMに書き込む音声データは マスカットさん の作品と同じものを使います。
マスカットさんの解説ページから vck_pro.zip をダウンロードし、その中の vck_eeprom.hex を書き込んでください。

EEPROMの書き込みは、以前作成した シリアルポートからI2Cに変換するアダプタ でも書き込むことができます。

本機は電池ではなくAC電源を使用しているため、特にマイコンのスリープ機能は使用せず常に通常動作させています。
ただしスピーカアンプは常時ONにしておくと、電子機器や蛍光灯の点灯時などノイズを拾った際に「ポツポツ」と耳障りな音が鳴るため、これを防ぐよう発声時のみ電源をONにしています。

ソースファイルとHexファイル
音声告知クロック本体 voiceclock.zip(10KB)
7セグメントLED表示部 voiceclock7seg.zip(4KB)

同期ソフト


本機を接続したシリアルポートを選択し、「PCの時刻で同期」ボタンを押下するとPCの時刻で本機と同期します。

「任意の時刻を設定」ボタンは主にデバッグ用です。
自動発声のテストを行う際に使用しました。

「時刻読み上げ」ボタンは本機の時刻発声スイッチを押したのと同じ動作です。

WindowsXPと8.1で動作確認済み。

最新版
TimeSync_r2.zip(7KB)

過去のバージョン
TimeSync.zip(7KB)

最終同期日時を記録するよう変更しました。
「PCの時刻で同期」機能を使った際にプログラムと同じフォルダへ SyncLog.txt というファイルが作られます。
次回の起動時には自動でこのファイルのデータが読み込まれ、ウインドウへ最終同期日時を表示します。


動作確認

電源を入れて、正常に50Hzを認識するとビープが1回鳴ります。
60Hzの地域ではビープが2回鳴ります。
いずれも認識できなかった場合はビープを5回鳴らして動作を停止します。

60Hzではテストしていませんが、おそらく問題ないかと思います。

時設定スイッチを押すと1時間分増えます。
分設定スイッチを押すと1分増え、このときのみ秒数がクリアされます。

10時10分に設定したいときは、時設定スイッチで10時まで進め、分設定で9分まで進めておきます。
次に分設定スイッチを押したままにして、10分になった瞬間にスイッチを離すと10分に設定されます。

毎時0分と30分は自動的に時刻を発声します。
また、時刻発声スイッチを押すと現在の時刻を発声します。

当サイト内の検索