トランスミッター専用の高性能FM受信機を作りました。
今では珍しくもないDSP FMラジオICを利用したものですが、とにかく便利で高性能で音がイイ!というのが特徴で、一般的な作例とは一味違うFM受信機となっています。
特に、以前ご紹介した「FM送信機(トランスミッター)の自作!光デジタル入力付き」のトランスミッターとセットで使うと、高音質で手間いらず。手前ミソですが、セット販売したら売れるんじゃないかと思うほどです。
ありきたりというか見栄えはいまイチですが、使いやすい感じではあります。
秋月電子で売っているターミナルクリップを使って、電池フォルダも自作。
ギリギリで電池交換がやりにくいので、リボンを入れます。
今回はトランスミッター専用として、プリセットした周波数のみの受信機として構成しましたが、ソフトウェアやスイッチを改良すればハイファイFMラジオにもなります。
また、内蔵するHi-Fiヘッドホンアンプは、そのままハイレゾヘッドホンアンプにしたり、電圧を上げて終段のトランジスタをパワトラに変更するとかすれば、ハイファイオーディオスピーカーアンプにもできますので、ご参考にどうぞ。
FM受信機の仕様
こんなのが欲しかったんです。
⇒ とにかく簡単に使える。ボリューム以外操作なし。ステレオヘッドホン専用。
⇒ 手元に持ってくるだけで自動で電源ONする。
⇒ 電波がない or なくなると自動で電源OFFする。
⇒ トランスミッター側で送信周波数を切り替えると自動で追従する。
⇒ 電子工作だからと妥協しない、DSPラジオの性能を最大限に引き出す設計。
⇒ 音質を落とすことのない高性能ヘッドホンアンテナ。
⇒ 安定化電源駆動の定電流負荷型ダイヤモンドバッファや出力リレーなど。
⇒ 連続使用で50時間程度が目標です。
⇒ ローバッテリー時はフェードアウト&LED点滅でお知らせ。
⇒ 77x52mmの基板と電池含めて、プラケース60x40x85mmに収容。
核となるDSP FMラジオICには、シリコンラボの Si4708 を使いました。
今では、様々な(と言ってもみんな大体同じですが)中国製のDSPラジオICが、aitendoなどで安価に手に入りますが、どれもヘッドホンを駆動できるようにするための中途半端なオーディオ出力バッファが内蔵されています。簡単に作るには確かに便利なんですが、音質的には不利なので、今回は中国製は選択肢に入れませんでした。
その点、シリコンラボの方には出力バッファが内蔵されていないため、外付けバッファが必要ですが、本作のように音質にこだわりたい時には好都合になります。
ちなみに、シリコンラボはテキサス州に本社を置く1996年設立の会社です。
それから、ヘッドホンのケーブルは、FM放送周波数帯の波長のλ/4(約80cm)に近い長さなので、FMのアンテナに最適です。スマホでも一般的ですね。
本作では、サイズの問題でスマホでは使えないような、より性能の高い部品で構成しているため、音質劣化が少なく高性能なアンテナとなっています。
Si4708 について
シリコンラボの、生産中のFM放送受信専用DSPラジオICの中から選びました。
品種 | 感度 | 主な特徴 |
---|---|---|
Si4702/03 | 1.7µVEMF | ベースプロダクト |
Si4704/05 | 2.2µVEMF | 内蔵ループアンテナをサポート EN55020(EMC整合規格)対応 |
Si4706 | 2.2µVEMF | 内蔵ループアンテナをサポート RDS強化型(日本では関係ない) |
Si4708/09 | 1.7µVEMF | 極小パッケージ、少ピン ★採用 |
今回使った Si4708 は、これらの中では最も新しい品種で感度も高いのですが、FM専用ですし、なんせパッケージが小さくて足が出ていないということもあってか、電子工作ではほぼ見かけません。恐らくスマホでの需要を狙った製品でしょう。
性能的には Si4702/03 でも同等なのでそちらでもよかったのですが、小型にしたかったためコレを選びました。(とは言ってもさほど変わりませんが…)
ちなみに、AMやSWも受信できるマルチバンドの Si4734/5 なんかは、SSOPパッケージの品種もあるので、自作でもよく見かけます。
しかし、スペック上の感度は、わずかながらFM専用受信の方が高いです。まあ、近くのトランスミッター専用の受信機なら、そこまで感度にこだわる必要もないですけどね。
Hi-Fiバッファアンプについて
本作のようなケースだと、出来合いのオーディオアンプICを使うのが普通かと思います。
最近では低電圧で高出力なHi-Fiオペアンプも多いので、それを使ったヘッドホンアンプも一般的です。例えば LME49726 とかですね。
しかし、こういったIC単体では、いくらスペック上で低歪だったとしてもヘッドホンのような低インピーダンス負荷を接続した状態では、性能が大幅に悪化するのが普通です。
ヘッドホン駆動がウリのオペアンプでは、負荷は600Ωとか2KΩとかで測った歪み率をアピールしていることがほとんど。ダマされてはいけません。
そこで本作では、定番すぎて面白味はないですが、Hi-Fiオペアンプとダイアモンドバッファを組み合わせたヘッドホンアンプとしています。
採用したオペアンプ OPA1692 は、低電圧で低消費電力にも関わらず、歪み率が0.000045%、ノイズが4.2nV√Hzという、高性能なオペアンプです。
消費電流は、1チャンネルあたり 650uA でこの性能ですからすごいですね。
音質重視のモバイル機器にもってこいなオペアンプです。
回路図
回路図はメインと電源部の2つに分けています。今回は、それぞれを別々のKiCadプロジェクトにして、2枚の基板を作りました。両者は丸ピンソケットを利用して連結します。
メイン
DSP FMラジオ(Si4708)、バッファアンプ(OPA1692)、制御用のPICを含む回路です。
Si4708 周り
Si4708 周りは、データシートやAN350と大きな違いはありませんが、I2Cのプルアップ抵抗を大きくしたり、フェライトビーズやフィードスルーコンデンサを活用するなどして、より低ノイズを狙った回路としています。
Si4708 のVIOは、PICのIOポートから供給しています。また、RCLKは、消費電流1.0µAで動作するエプソンの温度補償水晶発振器 TG-3541CE を使いました。
Si4708 のアナログ出力には、カットオフ28kHzのローパスフィルタ(R11/C10等)を入れました。データシートには書かれていませんが、量子化ノイズや無用な超高音域ノイズをカットして、聴き疲れのない音になることを期待しています。
また、Si4708 のアナログ出力抵抗は10kΩと高いので、バッファ(IC6)を介してボリューム(VR1)に接続し、周波数特性やノイズ耐性を高めています。
バッファアンプ
OPA1692 を使った単電源で動作するダイヤモンドバッファです。仮想GND生成にも OPA1692(IC5) を使っていますが、ここはもっとグレードが低くてもいいですね。
1回路余るので、L/Rそれぞれに使いました。
ボリューム後の入力コンデンサを省き、直接オペアンプに接続しています。普通ならここにコンデンサを置かないと、ボリュームを回した時にオペアンプのバイアス電流によってザワつくことがありますが、OPA1692 のバイアス電流は少ないので問題ありません。
自作ヘッドホンアンプで定番のダイヤモンドバッファですが、この回路では、初段(Q9B,Q10A等)の負荷を定電流負荷とすることで電流増幅率を高めています。また、終段のバイアス電流を、半固定(VR3等)で調整できるようにしてあるため、素子のバラツキに弱いダイアモンドバッファの欠点をカバーしています。
バイアス電流は、5mAに調整します。
さらに、初段(Q9B,Q10A等)にはデュアルトランジスタを使い、終段(Q9A,Q10B等)と熱結合しているため、温度安定性の面でもかなり優れています。
なお、最終段(Q13,Q14等)はインバーテッドダーリントンなので、熱結合は不要。むしろ、なるべく熱が伝わらないようにした方が安定します。
オペアンプ(IC7)にある帰還コンデンサ(C30,C31)は、発振した時のために用意した捨てパターンですが、実際には発振しなかったので不要です。入れると逆に発振します。
それから、バッファ出力に挿入しているフェライトビーズ(FB6, FB7)は、DC抵抗の低い大電流タイプで、アイソレータ代わりに挿入しました。ヘッドホンアンプならこれで十分です。また、アンテナへのデジタルノイズの経路を断つ目的もあります。
ポップノイズ防止には、贅沢にリレーを使いました。電池駆動だと常時通電は厳しいので、ラッチングリレーを使っています。IC8,IC9はリレードライバです。
ヘッドホンアンテナ
ヘッドホンアンテナの回路は、AN383に従ったものですが、使用しているパーツをより良いものへと変更しました。
例えば、ヘッドホンの共通グランドに挿入するマッチングコイル(L1)。AN383では、ムラタのチップインダクタ LQW18ANR27J00D を使っていますが、DC抵抗が3.4Ωもあります。こんなのを使っていたら、せっかくのダイヤモンドバッファも台無しです。
本作では、DC抵抗が0.0125Ωと低く、Qも100MHzで約200もある、表面実装空芯コイルの 2222SQ-271GEB を使っています。
それから、RFを遮断するフェライトビーズ。AN383では、BLM18BD252SN1D を使っていますが、DC抵抗は1.5Ωもあります。本作では、0.13Ωの FBMH4532HM202 2個を直列で使い(FB8~FB11)、インピーダンスも4000Ω(100MHz)を達成しています。
制御系
PICは、比較的新しい品種で消費電力の少ない PIC16F18323 を選びました。これには常時電源を入れていてOFFにすることはありません。スタンバイ時はスリープしているので、消費電流は全体でも5uA程度です。
秋月電子で売っている振動センサー VBS030600 を使って、本体の動きを検知したら、割り込みによりスリープ状態からウェイクアップし、電圧レギュレータのシャットダウンを解除して Si4708 等の電源をONします(図中PON信号)。
そして、トランスミッターからの電波が途絶えるとスタンバイに戻ります。
後述しますが、本作で使っているレギュレータの LT3066 には、パワーグッド機能が付いているので、それを利用して電池残量不足を検知します(図中PGD信号)。
電源部
単3電池ホルダーと、安定化電源を含む回路です。
Si4708 やバッファアンプの電源は、低ノイズで低消費電力が特徴の LT3066 を使って4.4Vに設定しています。このICは、モバイル用途向けとして、バッテリー逆接続耐性や、パワーグッド(電圧低下検知)機能なども持っている高性能LDOです。
電圧低下は、出力電圧が設定の90%を下回ると通知されます。この出力はオープンドレインのPWRGDピンにより通知されるんですが、シンク可能な電流が50uAと異常に小さいため、PICの内蔵プルアップ機能を使うと、LOまで引き下げられない可能性があります。なので、PICのプルアップは使わず、150KΩ(R9)の外付けプルアップを設けています。
また、バッテリーの終止電圧は、エネループ等のニッケル水素電池を想定し1.0Vとしていますが、これが電圧を4.4Vに設定している理由です。(4 ÷ 90% = 4.4V)
消費電流見積もり
なるべく電池が持つようにしたつもりですが、、まあまあ満足いくレベルと思います。
※無音時、リレー制御電流を除いた、スペック上からの消費電流見積もり
電圧 | Standby | ON時 | |
---|---|---|---|
Si4708 VD+VA | 4.4V | 0 | 16.4 |
Si4708 VIO | 3.3V | 0 | 0.3 |
TG-3541CE(TCXO) | 3.3V | 0 | 0.001 |
LED(高輝度 緑) | 3.3V | 0 | 0.02 |
PIC16F18323 | 3.3V | 0.001 | 0.1 |
XC6201P332MR | BAT | 0.002 | 0.002 |
LT3066 | BAT | 0.002 | 0.9 |
LT3066 ADJ(R13,R14) | 4.4V | 0 | 0.013 |
OPA1692(6ch) | 4.4V | 0 | 3.9 |
REFV(R15,R16) | 4.4V | 0 | 0.02 |
バッファアンプ初段(x2) | 4.4V | 0 | 1 |
バッファアンプ中段(x4) | 4.4V | 0 | 4 |
バッファアンプ終段(x2) | 4.4V | 0 | 3 |
バッファアンプ終段(x2) | 4.4V | 0 | 10 |
合計 | 約5uA | 約40mA |
ON時の実測では、32mA程度でした。(Si4708 の実測値が少ない)
2000mAhのエネループを使うと、単純計算では50時間以上使えることになりますね。
パーツと入手先
機構部品も含めた全パーツリストです。
手持ちの部品以外は、全て通販で揃えました。次は利用した通販サイトです。
より詳しく⇒電子工作パーツ入手先!おすすめの電子パーツ通販と店舗
主要パーツ
Si4708(マルツ(Digi-Key))
Mouserでは在庫がなかったので、マルツ経由のDigi-Keyで購入しました。約200円。
HN1B01F-GR(TE85L,F 等(Mouser)
本作では、3種類のデュアルトランジスタを使います。HN1A01F、HN1B01F、HN1C01F。HN1C01F だけは秋月電子にありますが、なるべく同じ所で買った方がバラツキが少ない可能性が高くなるので、全てMouserで揃えました。
FBMH4532HM202(Mouser)
太陽誘電の、大電流、低DC抵抗のフェライトビーズ。
FBの定番メーカー、ムラタには、今の所ここまで低DC抵抗のものはラインナップに無いようです。
2222SQ-271GEB(Mouser)
コイルクラフトの、DC抵抗が低くてQが高い空芯コイル。しかも表面実装品です。当初は自作しようかと思っていましたが、これを見つけました。誤差が2%というのも良いです。
TXS2-LT-3V(Mouser)
パナソニックの小型ラッチングリレー。3.3VDC駆動、
駆動電流23.3mA(10ms)接点容量1A、接触抵抗100mΩ以下。
モバイルなど、常時通電が厳しい時はラッチングリレーが便利です。
VBS030600(秋月電子)
振動センサーです。結構感度が高いため、もっと感度の低い傾斜スイッチの方が良いかも知れません。
BC-0302(秋月電子)
金属電池基板取付用ターミナルクリップ。基板を作る必要がありますが、電池収容スペースを小型化できます。
MJ-8435(秋月電子)
マル信無線電機の3.5mmステレオジャック。
基板取り付け用ですが、セットがかなり小型になります。
製作手順
小型で高性能にするために、基板はオーダーメイドしました。こういうのは、やっぱり自由にビアが打てないと厳しいです。
それに、オーダーメイドに慣れてしまうと完全自作の出番はあまりなくなりますね。
今回は、PCBWayを利用しました。家に届くまでが早いのでオススメです。
より詳しく⇒プリント基板の自作!簡単にできる格安オーダーメイド法
メイン基板のパターン。
KiCadのプリント基板エディタでの表示です。
出来上がりのイメージ。
KiCadの3Dビューアでの表示です。
次のガーバーファイルで発注すると、この基板が作れます。
なお、このガーバーで発注した後、振動センサー(SW1)の大きな長穴について、「メッキは無い穴で良いか?」という質問が来たので、Yesと答えました。
KiCadやガーバービューアで見ると普通にNTPH(メッキなしスルーホール)になっているんですが、なぜなんでしょう。。まあ出来上がりは問題なしです。
水晶発振器の TG-3541CE です。
フラックスを薄く塗って接着剤のように使い、位置決めと仮固定をします。
プリント基板フラックス BS-75B ハンダ用品でおなじみgootのフラックス、無洗浄タイプです。フタの内側に小さなハケも付いていて使いやすいです。 |
2.5mm角の Si4708 です。
まず、パターンにフラックスを薄く塗って乾かし接着剤代わりにします。
Si4708 を中央に置いてくっつけて、横からズレが無いかを確認したら、ピンセットで押さえながら1面にペチャットはんだ付け。
残りの3面も付けたら、
周りのコンデンサとか、付ける順番を考えながらやった方がいいです。
インスペクションルーペ SL-54 電子工作、特に表面実装部品のハンダ付けに超オススメ!というか必須になります。横からこてを入れられるのがポイント。 |
最後に、チップ底面パッドのはんだ付け用のスルーホールが空いているので、共晶ハンダを流し込みます。
両面プリント基板用はんだ SD-61 0.8mm共晶はんだで融点が低くよく流れます。裏にパッドのあるICのはんだ付けで使います。たまに使うだけなので長く持ちます。 |
振動センサーのはんだ付けです。
推奨パターンでは四角い穴を空けるように書かれていますが、基板製造業者で角穴を開けれるかどうか不明だったため、長穴を開けました。
センサ本体より微妙に小さいサイズになっていて、丁度良い所で止まるはずです。
洗浄後です。
フラックスクリーナー FL-L15 サンハヤトのフラックスクリーナー15mlです。中にハケがついています。 |
ホーザン フラックスクリーナー アルコール主成分で、ノズルでシューーっと広範囲を洗い流せます。このたぐいの商品の中では最も安い部類に入ります。 |
メイン基板と電源基板の接続は、丸ピンソケットを利用します。丁度良い高さで無理なく接続できるように、両基板を仮組みした状態ではんだ付けします。
普通のピンヘッダでも良いですが、丸ピンの方が接触抵抗が低い。
両基板は、12mm(10mm+2mm)のスペーサーで接続します。
今作ではビニール線は一切不要。
PICにはファームを書き込んであるので、電源を入れてみたらとりあえず動きました。
まず、キリで穴の位置をマークします。
穴位置の精度を上げるために、ピンバイスで小穴を空けています。
ピンバイス No.98-R 2個の両頭チャックを本体に収納していて、4種類のチャックが選べます。ラバーグリップが滑らず使いやすい。 |
半固定でバッファアンプのバイアス電流を調整した後、ソフトやハードのデバッグも終わったので、ケースに収めます。
メイン基板を組込み。
電源基板は、超低頭ビスを使います。
基板にはレジストが掛かっていますが、ターミナルクリップに接触しない方が安全ですね。
ファームウェア
制御用のPICのプログラムの処理内容です。
シリコンラボのDSPラジオICの多くは、あの特有の制御方法で共通化されていますが、本作の Si4708 など、一部はそれが簡略化されたようなインターフェースになっています。なので、特に難しいことはありません。
また、サンプルコードがダウンロードできるので楽勝です。本作では、このサンプルコードに含まれているレジスタ定義ヘッダ「bit_fields.h」をそのまま利用しました。
それから、プリセット周波数は、次のようにソースコードにハードコーディングしています。必要に応じて変更したり、数を増やしたりできます。
1 2 3 4 | #define CHAN_NUM 4 const UINT16 s_Freqs[CHAN_NUM] = { 886, 926, 971, 1065 }; // チャンネル周波数 |
このチャンネルは、FM送信機(トランスミッター)の自作!光デジタル入力付きのチャンネルと全く同じになっています。
このトランスミッターでは、テレビのリモコンで送信周波数を切り替えられるので、リモコンボタンをぽちぽち押しているだけで受信側のチャンネルも追従することになります。
また、テレビの電源をOFFすると、トランスミッタの電源もOFFになって電波が途絶えるので、受信側もスタンバイになります。
ソースとビルド
公開しているファイルは、MPLAB Xプロジェクトを含んでいます。
解凍して出てきたプロジェクトをパソコン上の適当な場所にコピーして、MPLAB X で開けばビルドできます。ビルドに必要な外部ライブラリなどはありません。
使用したIDEのバージョンは下記の通り。2020/11 頃の最新版です。
・MPLAB X IDE:v5.40
・XC8:v2.20
MPLAB- X IDE | Microchip Technology Inc.
書き込みやデバッグには PICkit3 を使いました。
PICkit3 今ではPICkit3からPICkit4へ移行しているため正規品は販売されていません。これは安価な互換品ですが使えます。 |
動作検証
基本FMラジオなので、DACの出力なんかと比べると若干のホワイトノイズなどはありますが、それはどうしようもないので気にしません。
市販のポータブルラジオなどに比べると、ノイズの少ないクリアな良音が楽しめます。
消費電流は、32mA程度です。
バッファアンプのゲインは0dB(1倍)ですが、ちょうど良い感じです。
波形
アンプ部の波形です。器材がないので歪み率は計測できませんが、ハイファイアンプとして十分な性能と思います。
1Vppの信号をアンプ入力(TP1,TP2)の位置から入力し、出力コンデンサ(C26,C27)を出たところ(TP4,TP5)で計測しました。
アンプの出力コンデンサは、カットオフ30Hz(-3dB)で設計しましたので、50Hzだと約-1.4dB(0.86倍)になります。
この波形は858mVppなので設計通りですが、Si4708 の周波数特性は30Hz~15KHzなので、もう少し低く設定しとけば良かったと思いました。実装スペースには余裕が出たので470uF以上の出力コンデンサにすれば良かったです。
少し斜めっていますが、これは出力コンデンサにより数十Hz付近にカットオフがあることを示しているもので、異常ではありません。
コンデンサへの充電が進むことで電圧が降下している現象で、サグ波形と呼ばれます。
カットオフを数Hz以下にしたり、DCアンプにするとこの電圧降下は見られなくなります。
周波数が高くなるとサグは見られなくなります。大きなオーバーシュートやリンギングもなく問題なし。
多分、アイソレータ代わりのフェライトビーズ(FB6,FB7)により肩に丸みが出ていますが、この周波数ですから全く問題ないでしょう。
FMラジオの内蔵アンプとしても好ましいです。
ダウンロード・ツール
製作に使用した全ファイルです。無断で二次配布することはご遠慮ください。ご紹介いただく場合は当記事へのリンクを張ってください。連絡は不要です。