最近流行りの電波時計の製作レポートです。電波時計とは、40kHzの長波標準電波を受信して時刻を自動補正する時計のことで、人の手で合わせることなく常に正確な時刻を刻み続けます。
長波標準電波は最近になって試験運用から標準運用に格上げされ、送信所は茨城県から福島県に移されました。出力もアップしてサービスエリアは北海道から本州全域をカバーするようになっています。ただ、まだ九州地方の電界強度が弱いので、2001年に熊本県に60kHzの局が新設され、近畿地方から沖縄や朝鮮半島までカバーすることになります。
製作した電波時計の回路図はこちらです。標準電波の受信には専用のICを使っているので、きわめて簡単です。マイコンは復調された信号を取り込んで、デコード、時刻合わせしているだけです。
受信回路を自作するには少なくとも受信ICとクリスタルフィルタを購入する必要があります。しかしこれはまだ一般的には出回っていません(注文すれば買えますけどね)。もうしばらくすればジャンクで出回ってくると思いますが(^^;。また、電波時計の応用モノが目的なら、市販の安い電波時計をバラして受信ユニットを流用するという手もあります。
長波標準電波の送信フォーマットを示します。40kHzの搬送波は1bpsの送信データで振幅変調されています。ベースバンド信号はそのパルス幅でマーカ、データ0、データ1を表し、パルスの立ち上がりが毎正秒となります。そして、毎00秒から59秒までの60ビットで1フレームとなります。
フレームに含まれる時刻情報は、そのフレームが開始される時点での時刻です。したがって、フレームが確定した時点でちょうど1分前の時刻が得られることになります。
電波時計の受信部は専用IC化されていて特にコメントするような点はないので、そのデータ処理に重点を置いて説明します。このサンプルF/Wでは次のようなアルゴリズムでタイムコードを取得しています。
128Hzタイマ割り込みにより、復調データのHレベルの期間を計測します。そして、次の立ち上がり(正秒)で上位タスクにデータ(マーカ、1または0)を渡します。
上位タスクは正秒毎に受信データを受け取り、データを受信バッファ(シフトレジスタ)の最後からシフトインします。そして、バッファをスキャンして、マーカが所定の位置(0,9,19,29,39,49,59)にあり、それ以外の位置に0か1があればフレーム同期と判断します。受信データにエラーがなければ59秒のデータを受け取った時点(つまり正分)でフレーム同期となります。
フレーム同期を検出したら、送信フォーマットに従って時刻を取得します。分または時にパリティエラーがあったら、そのフレームは破棄します。
送信フォーマットの仕様上、パリティビットは分と時だけにしか適用されません。したがって、日、年、曜日については十分な信頼性が得られません。このため、前回得られたデコード結果+1分と今回の結果を比較して一致したら有効と判定することにしています。この方式は取得された時刻に十分な信頼性が得られますが、有効なタイムコードを得るのに少なくとも2〜3分はかかることになります。
このF/Wには含まれませんが、有効な時刻で動作中のリアルタイムカウンタの誤差を補正したいなら、その値を比較の対象とすることにより、1〜2分で補正することもできます。
受信したフレームが有効と判定されたら、その時刻をリアルタイムカウンタにセットして秒を59にセット、即時秒インクリメント処理して正秒に同期させます。
標準電波に関する資料は、総合通信研究機構のwebサイトで得られます。