Aitendoから購入した電波時計モジュールは負論理出力(電波のシグナルがあった時に 0 出力、シグナルがない時に 1(電源電圧)出力)。

今回のPICソフトは基本的に、0.1秒間隔で割り込みを発生させて、10回で1秒、600回で1分、36000回で1時間、864000回で1日、ということを利用したもの。つまり、大変簡単に相対時間が計測できるわけだ。

問題は相対時間の絶対化。電波時計モジュールによる時間の校正にある。

0.1秒割り込みをそのまま利用して、電波のシグナルの有無で、タイムコードの「マーカー」、「0」、「1」 を判断する。

具体的には、負論理なので、0.1秒前には入力があって(つまり、シグナルなし)、現在は入力がなし(つまり、シグナルあり)という瞬間をパルスの立ち上げと判断。そこから8回分の割り込み時の入力を記録。8回目の割り込みが終了した瞬間、「3回目は入力あり」であれば「マーカー」、「3回目入力なし・6回目入力あり」であれば「1」、その他は「0」とした。

割り込むルーチンの外では、「マーカー」が2回続いていれば、タイムコードのスタートと判断し、その 瞬間 – 1秒 が 「分」の始まりとした。

そこから、59回分の「マーカー」「0」「1」を割り込むルーチンから受け取り、マーカーのズレの有無、時・分のパリティビットを確認して、タイムコードを解読(デコード)。

ということで、製作した電波時計は精度が0.1秒程度、大したことはない。また、GPSと違って、電波基地局との距離がわからないことから、精度の高い電波時計は原理上できない。電波は1秒30万キロしか飛ばせないので、100キロの距離では 0.0003秒(0.3ms)のズレが発生する。

しかし、PIC用プログラムは一応完成したが、減光機能(夜間ではLCDの電源を切ることや、PIC自体をスリープモードするなどの省エネ対策)に必要なデータメモリがほとんど残っていない。最適化をこれから必死でやらないといけない。

つぎの写真は電波受信成功前後の様子。電源入れて、約2分弱で受信成功。なお、LCD表示形式を若干変更した。

130728.jpg130728-1.jpg基板をつくり、ハンダ付けし、ケースに収める作業もこれからだ。

Comments are closed.

Post Navigation