電波時計用電波発生器


はじめに

少し前, 会社の机が窓側から建屋の内側に変わりました. それに伴い電波時計が受信しなくなってしまいました. まぁ時々窓際に持って行って電波を受けさせればいいのですが やっぱり不便です. 世の中 アンテナ延長をされてる方もいるようですが会社だとさすがに無理です. というわけで PC から擬似的に電波を出すような回路を作ってみました.

同様の機能を持った装置として, 秋月の JJY シミュレータキット というのがあります. が少々高い気がします. 一方, StarStoneSoftware さんが 電波時計用シミュレータ というのを作られてます. 高調波成分を使うとは, まさに目から鱗で良く工夫されてるなと関心する反面, 普段使っているオーディオデバイスを使うため, 毎回使うために差し替えて音量調節するとなんだか面倒そうです.

原理

出力先としてオーディオが面倒だと書きましたが, では 代わりに何がいいでしょうか. 市販の IO ボードを使うのは汎用性がありません. 一昔前ならパラレルポートという手もありましたが, 今時付いてない機種も多くなってます. USB で IO を自作というのもドライバ作ったり, インストールしたりと面倒です.

そこでシリアルポートを使うことにしました. さらに USB シリアル変換チップを使えば, 電源の問題も解決します. シリアルというのは本来バイナリデータを搬送するものですが, ここでは単なる Low/High の変化を使うことにしました. 簡単に言えば 0xaa を連続して流すと bps/2 [Hz] の方形波を得るはずです.

残念ながら, 電波時計の搬送波である 40kHz や 60kHz を得るためには 80,000bps や 120,000bps というボーレートが必要なのですがありません. そこで PC 側は 0x00 を連続して流すことで信号線を Low 側に落とし, PIC でそれを拾って 40kHz を出すようにしました. 200ms の間 Low に落とすには 0.2x960=192 byte, 500ms なら 480, 800ms なら768byte の 0x00 を連続して送信すればいいはずです (9600bps, パリティ無, ストップビット 1 の場合).

なお, ストップビットで一瞬 (104uS) High になるので PIC は High になっても 5cycle (125uS) は動作し続けてます.

回路

回路図は以下の通りです. PIC のプログラムは こちら です.
U1 FT232RL 秋月モジュール (AE-UM232R)
U2 PIC12F629
R1,2 2.2K
R3 1K
R4 47Ω
C1 47uF 電解
C2 0.1uF 積層セラミック
D1,D2 LED 適当
D3 1S1588 または 1N4148 とか
Tr1 2SC1815
Ant 自作 後述

今回は面倒なので FT232RL 部分は秋月のキットを使いましたが, (電源系を適切に処理した) FT232RL チップを直接使ったり, CP2102 等の同等機能のチップを使っても大丈夫かと思います. 一方アンテナはポリウレタン線を直径 50mm くらいで 10 回巻いて作りました. まったくの適当です. R4 も適当に選定しましたので, 必要に応じて作り変えてください. 適当と言えば, アンテナへの出力は完全な方形波になっているので高調波成分が出ていると考えられます. アンテナと並列に適当なコンデンサを付けると, そういった成分が多少なりとも抑えられるかと思います. 不安を感じる方はどうぞ.

多分ですが, 本アンテナのコイルと時計内のバーアンテナは垂直 −コイルの中心が平行− になった時, 一番効率よく電波が伝わるはずです. 時計内のバーアンテナは大体, 文字盤および地面に平行に取り付けられていますので, 時計の横面にアンテナを垂直にするといいのではないかと思います.

プログラム

Windows 用 PC プログラムは こちらです. コマンドプロンプト用です. 本回路のシリアルポートの番号を第一引数にして呼び出します. 例えば, COM6 ならば,

> JJYSim 6
とすると電波時計用の電波を発信します. 時刻は PC のシステム時間ですので, 必要に応じてその前に NTP 等で時刻あわせをしておいてください. なお, Windows のシステム時間は結構ずれます. 例えばマザーボードかバックグランドジョブか何かが原因だと思いますが, 私のデスクトップ PC は 40 分に 1 秒ずつ遅れていきます. RTC (CMOS 時計) は普通のクォーツ並に精度があるので, ClockMon等で定期的に時刻あわせをするなど, 必要に応じて工夫してください.

プロトコル を見れば分かるように, 電波時計用の電波は毎分 0 秒から 59 秒までは 1 パケットです. そのため, プログラムを起動しても, 時間が 0 秒になるまで何もしません. また, 毎時 15 分と 45 分はデータ内容が時刻ではありません. そのため, 15 分と 45 分も 1 分間何もしない状態になります. なお, 手持ちの電波時計では時刻が合うのに大体5 分ほどかかりました.

第二引数にオフセット値を入れることもできます. 例えば

> JJYSim 6 86400
とすると, 明日の今の時刻用電波を発します. まぁほとんどデバッグ用でしょう.

Linux 版は こちらです. 使い方は Windows 版とほぼ同じですが, ポートの指定となる第一引数を /dev/ttyUSB0 など, デバイス名で書いてください.

電波法について

アンテナや回路を見たら分かると思いますが, 自分は電波系はまったくの素人です. そのような人間にとっての問題は電波法です. 強い電波を出そうとすると技適とか免許とかいろいろ面倒 なことがおこりそうです.

というわけで調べてみました. まず分かったのは今回出す 40kHz の電波は, 3m 離れて 500uV/m (0.5mV/m) 以下ならば許可も免許も要らない微弱無線になるようです. で, 0.5mV/m ってどのくらいなんでしょ?

消費電力から電界強度を推定する方法も考えたのですが, 多分アンテナの形状によって変わる気がしたので止めました. 悩んだ末, 気づいたのは

という傾向です. こららの事実から 0.5mV/m は電波時計が受信できない電界強度 と仮定してもよさそうです. つまり 3m 離れて電波時計が動かなかったら微弱無線となるわけですが, さすがに仮説の上に仮説を積み上げててかなり怪しいです. 安全率を考えて微弱無線は アンテナから 1m 以上離すと電波時計が受信しない くらいと考えるのが妥当かと思います.


[戻る]