SDR−1 でつくる JJY(40kHz、60kHz)受信機

おじさん工房 TOP へ     SDR-1 のページ へ     サポート掲示板へ     SDR-1 キット頒布中

■最新の設計資料・ソフトなど

プログラム hex ファイル 20101123 (ZIP 10KB)



キットのサポートは掲示板にておこなっています。


■JJY受信機 開発過程

2010/11/23 プロジェクト開始


2010/11/23

SDR-1 基板の応用として JJY 受信機をつくってみました。

 プログラム hex ファイル 20101123 (ZIP 10KB)

JJY 電波時計と言わないのは、表示される時刻が実際の時刻より 1 分 1 秒遅れになるためです。 JJY が送ってくる時刻情報は信号送出開始時点のもので、それをデコードして表示するため 1 分遅れになります。 また、内部秒カウンターを表示していますが復号する信号に同期していますので 1 秒遅れになります。 時計と言うにはこれらの補正が必要ですが、JJY から送られてくる信号を目と耳で受信するのを目的としていますのであえて補正は行なわず、「JJY 受信機」としました。

秋の夜長、虫の音のような微かな信号をけなげに受信して波形表示しているのを見るのも面白いものです。


■基板の改造

lo改造写真  IC3改造写真

lo(local osc) を FLL から ATMEGA でつくった信号に半田ジャンパーの位置を変えて切り替えます。 また、FLL は使わないので発振しないように1番ピンをすぐ横のパターンのマスクを削って GND につなぎます(最初そのまま発振させていたら時々変な信号が入ってくるので調べたら FLL からのかぶりでした)

あと、入力インピーダンスを上げるため R9 を 10k から 100k に変更しています。


■バーアンテナ

バーアンテナ写真

バーアンテナは、AM ラジオ用の長さ 11cm ものです。 他にも 100 円ラジオの 5cm のバーアンテナでも良好に受信できました。

共振用のコンデンサーは、60kHz 用に 0.018uF、40kHz は SW で 0.022uF を追加するようになっています。 40kHz は 60kHz の 1/1.5 なので 2.25 倍の容量になるようにします(1.25 倍の容量を SW で追加します)。

SDR-1 基板とはシールド線でつなぎ、雑音源(PCやモニター、プリンターなど)から遠ざけます。 シールド線の容量はせいぜい数 100pF なので同調が狂うとか気にする必要はありません。


■共振測定

測定

バーアンテナ周波数特性

共振の測定は、SDR-1 基板の Q1 エミッターから適当なコンデンサで信号を取り出して行ないます。 信号の入力は上のバーアンテナの写真にあるようにビニール線を数ターン巻きつけます。

共振測定結果で波形が2つづつあるのは上が共振回路から直接入力したもの、下がタップから取り出したものです。 タップダウンする必要はないので共振回路から直接入力することにしました。


■JJY 受信機詳細

□ 信号処理

JJY(40kHz、60kHz)の受信では、ATMEGA で LO(Local OSC) をつくります。
LO は、40kHz のときは 24576k/148=166.054kHz、60kHz のときは 24576k/105=234.057kHz です。 これをジョンソンカウンターで 1/4 しますのでそれぞれ、41.513kHz と 58.514kHz になり、JJY の 40kHz、60kHz が -1513Hz と +1486Hz に周波数変換されます。

周波数変換された信号は、fs=6kHz で AD 変換されます。 AD 変換された信号は、40kHz では +1500Hz、60kHz では -1500Hz 周波数シフトしてゼロ周波数付近(約15Hz)に落とします。 次にこの信号を 75 回加算(バンドパスフィルター)し、同時にサンプリング周波数を 6000/75=80Hz にします( SW2 を押すとこれを再度1500Hzに変換した信号をモニターできます)。

サンプリング周波数が 80Hz になった信号(15Hz)から CORDIC で振幅情報を取り出します。

振幅情報は 15 回の移動平均を取り、同時に 80/5=16Hz にサンプリング周波数を落とします。 この 16Hz でサンプリングされた信号を 2 値化します( LCD に 1 秒分 16個を波形グラフ表示)。 なお LED はこの 2値化した信号で点滅させています。

2 値化された信号は、それぞれの符号のパターン(duty=80%、50%、20%)との相関をとり最も相関の大きいものをその符号( '0'、'1'、'M' )とします( LCD に 8 秒分を表示)。


□ 内部ステート

内部ステートは6つあります。
ステート5まで来て、60 秒間データを受信すると年月日時刻を表示します。 また同時に検出したエラー数を左下に表示します。
SW1 を押すと表示モードを切り替えられます。


□ エラー検出

検出しているエラーは、 です。 しかしJJY送出フォーマットが100%エラー検出できるようになっていないためエラーが検出されなくてもエラーがあることがあります。 電波時計では、連続 2 回一致するかとか、現時刻との整合性をみるとかでエラーを回避するようです。 ここでは JJY 受信機なのでエラーが検出されたところを ? にして表示するだけです。 なのでもしかするとめちゃくちゃな時刻を表示することがあるかもしれません。

また、エラー数が実際のビット誤り数と等しいとは限りません。 たとえば分データの 1 ビットにエラーがあったとき、BCD で 10 以上、ありえない時刻、パリティエラーの合計エラー 3 つとカウントされることもありえます。

下で説明している LCD 画面の波形や復号品質の値を見ていると「いまのはエラーになりそうだな」とかなんとなくわかります。


□ SW 操作

SW4、SW3 で音量調整
SW2 でモニター音声切り替え(スルー信号と上記デジタルフィルター後の信号を 1500Hz に再変換したもの)
SW1 で画面表示切り替え(ステート5で年月日時刻を表示するか受信データを表示するか)

SW4 長押しで受信周波数選択
SW3 長押しで LCD コントラスト


□ LCD 画面

液晶表示説明

「復号品質」は 1 秒間 16 個の 2 値信号と、符号パターン(duty=80%、50%、20%)との相関値で +8 〜 -8 です。 +8 が最大値(完全に相関がとれた)、-8 が最小値(逆相関)で、ノイズなどの無相関の場合は 0 付近になります。
「10 秒間復号品質」は、上記復号品質を 10 秒間加算したもので 80 が最大値になります。 だいたい 70 以上(相関がとれないのが1個以内)ならステート5でエラーゼロになります。


信号 p-p レベルというのは信号の最大値と最小値の差です。 JJY は最大 100%,最小 10% で変調されているので 20dB が理想値です。 6dB 程度以上あればなんとか受信できそうです。


□ 実際に受信した信号スペクトラム

spectran というソフトで 1500Hz に変換された受信信号(CN7)を見てみました。


□ JJY 40kHz おおたかどや山標準電波送信所(福島県田村市都路町)
spectran JJY40kHz

1513Hz の 1 秒ごとに断続した信号が JJY です。 切れ間に 10% 振幅部分が薄く白い線で見えています。
PC から 1m も離せばノイズはほとんど消えてしまい JJY 40kHz が良好に受信できます。


□ JJY 60kHz はがね山標準電波送信所(佐賀県佐賀市富士町)
spectran JJY60kHz

私のところでは家のどこかに強力なノイズ源があるらしくスペクトラムが重なってしまうと復調は困難です。 うまくノイズスペクトラムの隙間になればエラーなしで復調可能です。
この画面のときは夜間で JJY 60kHz が強力に入いりノイズが重なっても復調できました。 Spectran 画面上で 1 秒ごとの断続信号が確認できるようでしたら復調可能でした。


■閑話休題




inserted by FC2 system