前回記事でADALM2000がGNURadioで使えると分かったので、中波放送(AMラジオ)を受信出来るSDR化にトライをする。自分は本業でデジタル信号処理は扱うものの、アナログ回路については全くの素人。一方で今更わざわざAMラジオを作ろうという人も少ないせいか情報が余り無いし、昔は電子パーツ屋で普通に売っていたバーアンテナやバリコンなどAMラジオ用の部品の入手性も今となっては良くない。そこで、バーアンテナやバリコンを使わずに身近にある材料を用いつつ、ADALM2000を測定器として使いながら試行錯誤して電波のキャッチにトライをした。
ループアンテナの制作
アンテナ本体
バーアンテナの入手性が悪いということで、今回は特殊な材料が不要で制作が簡単なループアンテナを作った。材料は手元にあった太さ0.2〜0.3sq位の普通の配線用線材のみ。これを100均で買った整理用トレイ(縦22cm x 横15cm x 深さ4.5cm)に巻きつけるだけ。
- 約9mの線材を13回巻き→1次巻線
- 約1.5mの線材を2回巻き→2次巻線
巻線同士が重ならないように注意し、せっかく巻いたコイルがバラバラにならないようテープで止めた。(下の写真は1次巻線を4.5mの線材を6回巻きした状態。後で4.5mの線材を追加で繋いで13回巻きとした。)
コンデンサと組み合わせて共振周波数を決める
1次側のコイルにコンデンサを取り付けて共振回路とし、同調型のループアンテナとする(SDRなんだから非同調で行きたいけど、アナログ素人にはハードル高く断念…)。そして、ADALM2000のバンドルソフトScopyのネットワークアナライザ(使い方は過去記事参照)で実測しながらコンデンサの定数をトライアンドエラーで決めた。
コイル、コンデンサとADALM2000は以下のように接続する。
330pFの時には以下のように大体950kHzの辺りに共振点が来る。
他にも幾つかコンデンサを取り付けて中心周波数を調べた。
コンデンサ容量 | 中心周波数 |
---|---|
150pF | 約1370kHz |
330pF | 約970kHz |
750pF | 約700kHz |
1000pF | 約580kHz |
さて、LC共振回路の公式f = \frac{1}{2 \pi LC}からL = \frac{1}{4 \pi^2 f^2 C }なので、上記の定数を式にあてはめてみるとループアンテナ1次コイルのインダクタンスは大体70〜80uHだと推定出来る。
RFアンプの制作
オペアンプによるRFアンプ
色々考えるのが面倒なので、手持ちのオペアンプで帯域幅が一番広かったOP37(GB積63MHz)で以下のような何の工夫もない(笑)アンプを組んでLTSpice上でシミュレーションした。〜1MHz位迄ゲインは約30倍(30dB)程度得られる事を確認。
Scopyでアンプの周波数特性を実測
せっかくなのでScopyでアンプの特性も実測しておこう。ブレッドボード上に実回路を組んだうえで、アンプとADALM2000の結線は以下のようにする。
OP37アンプ | ADALM2000 |
---|---|
1+,W1 | Input |
2+ | Output |
1-,2- | GND |
V+ | V+ |
V- | V- |
Scopyの”Power Supply”で電源(±3V〜±5V程度でOK)を供給し、こちらもネットワークアナライザで実測。測定信号の振幅が大きすぎるとクリップして正しく測定出来なくなるので注意する(今回は30mVに設定している)。
1MHz迄は大体狙い通り約30dBのゲインが得られている。LTSpiceでのシミュレーション結果とも大体一致していた。
スペアナで電波の受信状態を確認する
アンプ、アンテナとADALM2000を下の回路図のように接続する。
ループアンテナを電波が受信しやすい場所に設置し、コンデンサを付け替えながら、ScopyのSpectrum Analyzerを使って電波の受信状態を確認する。
電波のキャッチが確認出来た周波数は、以下の放送局だ。
放送局 | 周波数 | マーカー |
---|---|---|
NHK第一 | 594kHz | |
NHK第二 | 693kHz | M1 |
AFN | 810kHz | M2 |
TBS | 954kHz | M3 |
ニッポン放送 | 1242kHz | M4 |
RFラジオ日本 | 1422kHz | M5 |
コンデンサは上でピックアップした150pF〜1000pFの物を付け替えて周波数帯域をコントロールする。Scopyのスペアナの設定で上記放送局の各周波数に対応したマーカーを設定して確認しやすくした。
コンデンサ150pF。
コンデンサ750pF。
スペアナ表示に各放送局の放送波による線状スペクトルがはっきり見えているので、それなりの強度で電波をキャッチしている様子。ループアンテナは指向性強く、向きや角度を変えたりすると電波の受信強度もけっこう変わるので条件の良い設置方法を探すと良い。
このままダイオード検波しても音声信号は取り出せるかも。ただスペアナ表示の通り周波数の選択度が良くないので、混信しそうだが。
GNURadioで中波放送をAM検波する
ADALM2000とアンプとの回路接続は、上記のスペアナで受信状態を確認した回路と全く同じでOK。アンプへの電源供給もADALM2000から行いたいのでScopyは起動状態のままでGNURadioを起動させる。但し、スペアナやオシロスコープなどA/D変換を用いた信号計測を行うとGNURadioとコンフリクトを起こすのでScopy上でそれらはOffにしておくこと。
ADALM2000によるAMラジオのフローグラフ
GNURadioで以下のようなフローグラフを組んだ(これを動作させるためには、システムへ前回記事に書いたADALM2000関連の設定が必要)。
- m2k_amradio.grc(ダウンロードこちらからどうぞ)
処理の流れをざっくり紹介すると、以下のような感じ。(中身の詳しい解説は当ブログの趣旨と合わないので割愛)
- ADALM2000で2.5MHzサンプリングでRF信号をキャプチャ(10MHzサンプリングでキャプチャして1/4デシメーション)
- 複素信号に変換
- 受信周波数(QT GUI Chooserで選択)を中心周波数とするバンドパスフィルタをかける
- 周波数変換により受信周波数の信号を0Hzにシフト
- ローパスフィルタ&デシメーション
- AGC
- AM復調
- オーディオ出力
本当はADALM2000で10MHzサンプリングのキャプチャをしたかったのだが、Oversampling ratioを4に設定して1/4デシメーションでキャプチャしないと処理が間に合わない様子だったため、この設定にした。
リアルタイムでオーディオ出力させるためにはLinux上でオーディオデバイスの設定がされている必要がある。もしオーディオデバイスの設定が難しい場合は、Audio Sinkの代わりにWave Out Sinkでwavファイル出力すれば良いだろう。
QT GUI Waterfall SinkにADALM2000でキャプチャした信号をそのままWaterfall表示(スペクトログラム表示)して、受信状態を確認出来るようにもしている。
実際にAM放送を受信してみる
上記のフローグラフを実行し、QT GUI Chooserのドロップダウンで受信したい放送局を選択しつつ、受信したい周波数に応じてループアンテナの一次コイルに所定のコンデンサを取り付けると…AM放送の音がPCのオーディオデバイスから流れてきて受信に成功!大昔にAMラジオのキットを組み立てて音が出たときのような感動が…というのは少し大袈裟かな。
デジタルフィルタでバッチリ選局しているので混信は全く無いし、音質もけっこう良いと感じた。ただ「サー」というノイズはけっこう大き目。これはADALM2000のA/D変換の電圧分解能が約1mV(±2.5Vレンジの12bit変換)なのに対し、RFアンプの出力電圧が数十mVしか無いため、A/D変換の量子化ノイズが聴こえているのだろう。改善するためにはRFアンプのゲインを上げる必要がある。
Waterfall Sinkは横軸に周波数、縦軸に時間をとり、信号強度の強い周波数が赤く表示されるため、強い電波を受信するとその周波数に赤い縦縞が現れる。下はループアンテナの共振周波数を決めるコンデンサを次々と取り替えてWaterfall Sinkの画面キャプチャをとり注釈を入れたもの。コンデンサを切り替えることで赤い縦縞が現れる周波数が変わって受信周波の範囲が変化しているのがわかる。
周波数化け
上のWaterfall Sink画面で赤い帯の周波数をよく見ると1422kHzのRFラジオ日本が約1100kHzとなっていておかしい事に気づく。そもそも2.5MHzサンプリングなのでナイキスト周波数1250kHzより上の周波数である1422kHzのRFラジオ日本は受信出来ない筈なのだが、10MHzサンプリングの信号を無理矢理1/4間引きしたせいで1422kHzが1250kHzで折り返って1078kHzの信号のように見えているというカラクリだ。
まとめ
GNURadioでADALM2000からキャプチャした電波を受信しAM復調する中波放送SDRを作った。アンテナは手持ちの配線材で作ったループアンテナ、RFアンプは手持ちのオペアンプと身近な材料を活用して周辺回路は用意した。同調式のループアンテナで受信するため受信周波数に応じてコンデンサを取り替える必要があり、完全なSDRとは言えないものの、ADALM2000がSDRとして使える可能性は確認出来たのではないかと思う。
今回は手持ちのオペアンプを高周波アンプとして使う無理矢理感があったが、その後ディスクリートのトランジスタアンプも勉強し、非同調アンテナを用いた次のバージョンも記事にしたので良かったら見てやって下さい。
コメント