ところが実際にデバッグを始めたところ困ったことが発生。電波時計モジュールから出力されるパルス信号がノイズだらけでデコードできないようなのです。電波時計モジュールとAVRマイコンを窓際に持っていくと正しいパルスが出てくるのですが、マイコンデバッグ用PCに接続するためにPCが設置されている場所まで持っていくと出力パルスが怪しくなります。原因として考えられるのは以下の2点です。
1)電波が弱いため窓際でないと正しく受信できない。
2)PCが出すノイズに邪魔される。
PCの電源を落とすとだいぶ改善されるので2)の要因が大きいのだと思います。
PCなしではマイコンのデバッグができないので、電波時計モジュールのパルス出力を疑似出力する「JJYシミュレータ」なるツールをAVRマイコンで試作することにしました。
構成
- いつものAVRマイコン(ATmega168/328マイコンボードキット)を使用します。
- ATmega168/328マイコンボードキットのPB5ピンにはLEDが実装されているので、このピンをパルス出力ピンにします。
- パルス出力のフォーマットはNICTの長波JJY送信方法を参考にしました。
- 時刻情報はタイマ1で生成した10Hzから生成します。
- 時刻合わせ機能はありません(プログラム上で初期値を定義し、常に初期値からスタート)
- タイマ0で40kHzを生成し、PD6(OC0A)ピンに出力します。このときパルス出力で送信OFF/ONを制御します。
- パルス出力の状況はシリアル(RS232C)に出力します。
使ってみて
まだ本来の目的(パルス出力を使って電波時計のデバッグ)は試していません。
替わりに40kHz出力を試してみたところ見事に動きました。PD6ピンに15cmぐらいの線材を接続し市販電波時計に近づけてみたところ同期してくれました。10cmぐらい離しても同期します。
本物のJJYの電波形式(A1B)とはちょっと違う40kHzの矩形波のON/OFFですがうまく動きました。
頭では分かっているけど、実際に動いている所をみると電波は面白いというか不思議ですね。
シリアル出力例
<<< JJY Simulator >>> Copyright (c) 2014 Being. Ver0.1 00M 2016/02/29 23:14 M00100101M001000011M000000110M000000110M_________M000000000M 2016/02/29 23:15 M00100110M001000011M000000110M000000110M000010110M001000000M 2016/02/29 23:16 M00100111M001000011M000000110M000000100M000010110M001000000M 2016/02/29 23:17 M00101000M001000011M000000110M000000100M000010110M001000000M 2016/02/29 23:18 M00101001M001000011M000000110M000000110M000010110M001000000M 2016/02/29 23:19 M01000000M001000011M000000110M000000110M000010110M001000000M 2016/02/29 23:20