2022年11月1日火曜日

【回路トラブル】1kHz BPFでハマり中

かれこれ4日間ほど回路にハマり中.システム系の問題とノイズ問題のせいだ.

作業机の前に居座ってアタマを抱えている.ブログupが滞りがちなのはそのせいだ.

経験的に、行き詰まってる時は独りで飲みに行くに限る.勤めてた時もアイデアに詰まった時は飲みに行ったものだ.煙草を嗜む人には判るだろう、ニコチンが脳細胞をrefreshしてくれるあの感じを求めている.

家の近所のノムネンで飲みつつ状況を整理しよう.

ーーーー
まずはシステム問題.

先日、PCが沈黙して中古のthinkcentreに買い替えた.これがトラブルの始まりだった.細かい経緯は省くが、ヘッドホンアンプの性能検証のために高性能ADCを作る必要がある.BPFはというと、ADCに前置し測定系の一部を成す.

BPF試作2号機を動かしてみた.ところがなぜかADCが動かない.ADC→PCへのUSB COMのデータが化けまくってる.

検証のため、FPGAロジックにtest回路を埋め込んで、ADC制御の不具合、DRAM制御の不具合、果てはADC PCM1808の焼け死にまで検証したがシロだった.

データ化けの経緯はこうだった.
・かつてはADCデータをUSB COM(/dev/ttyUSB0)でbinary転送してた 
・ところがそのPCが死んじゃった
・thinkcentreにubuntuを載せて開発環境を刷新した
・thinkcentre+ubuntuの、hardwareかFTDI driverかは知らないが、binary転送時の制御codeへの反応が生真面目すぎて、binary転送なんか無理ってな状況
・cat /dev/ttyUSB0が制御codeと同じbinary数値である0x0Aや0x0Dをロストする
・sttyコマンドで回避しようとしたが断念

結論は、thinkcentre+ubuntuでUSB COMのbinary転送を断念するしかない.
ascii転送にすれば治る.
しかしascii転送だと、1byteの0x0Dを送るのに、"0","D","\n"の3bytesを送らないかんので115200bpsだと遅くて仕方ないからFPGAを921600bpsに変更してとかいう付随作業が生じて今に至る.
ともあれ、ascii転送に変更して正常化した.

ーーーー
ノイズ問題は厄介だ.

↓まずこの状態がリファレンスである.
線材がごちゃごちゃしてるが、OSC→BPF→ADCの全体が完全フローティングである.すなわち、AC100Vに何処も接続されていない理想状態.電源はバッテリ.OSCはスマホ.
↓この状態で、1kHzのスペクトラムは良好.2次3次高調波にはやや不満があるが.

↓ところが、電源をAC由来に変えた途端、50Hzノイズが盛大に乗ってくる.こんなクソを許す気なんてないわー.
AC電源のコンポーネントオーディオ機器も多かれ少なかれこんな様相だから、電源タップを挿す位置を変えただけで音が変わるのはそんなもんなのだ.差動伝送が有利なのはこういう場面だ.

↓このACノイズ源がopamp BPFなのは諸々を追いつめて確認済.さらにBPFの怪しい部分は潰し終えて、残るのは240kという高抵抗のfeedbackだ.抵抗値を1/10にしてコンデンサを10倍にしたいところだが、そうするとR3=330、R2=3.3という無茶な定数になってしまう.Q=10ぐらいのBPFにしたいのでこういう無理筋な定数になってしまっているのが根源なのだ.

それでノムネンで良い解決策を思いついたか?
うーむ、酒を飲んだだけになってしまった.

とりあえず基板を書き変えて試作3号機を作る事にする.

ーーーー
解決した.
予想通りfeedbackの240kΩが原因みたいなものだった.240k→18kにして50Hzハムが-20dBぐらい改善.不満はあるけどまぁなんとかっつうところでこれで我慢する.これ以上の改善は金属ケースに入れるしかないかな.
↓変更は、BPFの特性(1kHz Q=20)はそのままに、ローインピーに変更した.

この対策が効いたということは、、、何が起きていたのかを図解しよう.

↓240kΩの回路で、50Hzに対してはコンデンサは無いも同然.無いだけならいいんだけど、コンデンサは周囲の電界ノイズを拾うアンテナになってやがる.くそぉ
↓実験環境全体はAC100Vで揺さぶられる洞窟の中、すなわち50Hzノイズの巣の中だ.
しかし、バッテリ駆動で完全フローティングの時は、AC100Vの50Hzノイズがほとんど入って来なかった.その理由は、OPAMPのAGNDとAC100Vの接地が切れているからだ.
↓ところがACで電源供給すると、AC100Vの接地とOPAMPのAGNDが遠回りながら接続される.すると、AC100Vのhot側→洞窟→浮遊容量→アンテナ→240k→OPAMP→AGND→接地 というAC電流の通り道が完成してしまう.これが50Hzノイズの原因.
「DC電源はトランスでACと絶縁されているはず」との意見はごもっともだが、細かく見ると0.1uFぐらいのノイズフィルタで交流的には導通している厄介者なのだ.一度バラして見てごらん.
↓feedback抵抗を18kΩにすると、AC電流が18kで電圧に変わる量(V=IR)が減る.240k→18kに約1/10なので改善オーダーは20dBで妥当なところ.
OPAMPに100kΩを超える抵抗をつけるのが気が進まないのは以上のような事情のためだ.金属ケースに入れる必要が生じてしまうからかったるい.
あと、フィルムコンには無誘導巻きっていうのがある.無誘導巻きはアンテナ感度が低いはずなのでこういったトラブルに耐性があると思われる.完璧じゃないだろうけど.

かしこ

4 件のコメント:

  1. コモン電流がめぐっていませんかね。電源ケーブルをトロイダルコアに巻いたりすると50Hz ノイズが減ることがありますからね。

    返信削除
    返信
    1. そういった原因でしょう.
      ただそれで-70dBのハムを40dB落とせる気がしないのでその策を捨てています.

      削除
    2. >40dB落とせる
      「40dB」って、簡単に言ってますけど、コレ
      ・半分の半分の半分の半分の半分の半分のそのまた半分
      (半分=-6dB なので、半分×7=-42dB≒-40dB)
      くらいなので、かなり大変ですよ。単純に「シールド」したところで、せいぜい、
      ・半分の半分の半分、(≒-20dB)くらいが、関の山でしょう。
      (そう考えると「完全フローティング(電池駆動)」って、凄い効果アリですね。)

      削除
    3. そう、拾うノイズを1/100ってのはそんな簡単じゃないですね.
      とりあえず20dBは落としたけど、もうあと20dBは金属ケースの世界かなぁ.

      わたしゃフローティングが大好きなんです.
      この世界には電界ノイズがありすぎる!

      削除