ゲイン・フェーズ・アナライザを考えよう!の巻き PART2 2019.1.29

今までの検討はこちら。

2年ぶり!!

最初の検討をはじめたのがちょうど2年前の今日なので、ほんと久しぶりの再開です。
よく思い出したもんです。
  再開するに一番時間がかかるのは、いままで何をしていたかを思い出すことですね。
部品配置をみながら、頭の中にある回路図を思い出し、そして未配線の部分を処置していきます。
でも、以前にほとんど組み立てていたこともあり、完成にはあまり時間はかかりませんでした。

ようやく完成しました。思い出すことが一杯で、ほぼ最初から作るような雰囲気でした(笑)。

忘れないように・・・・
ひょっとして、また忘れさってしまいそうな予感もあるので、今回思い出したことはスクラップノートに雑ですが書いておきましょう。
たとえ殴り書きのような、書き込みでもあるとないとでは、大違いになるはずです。

わかったことはノートに書きとめておきましょう!



ゲイン可変アンプもこんな形になっていたのを思い出しました。

動作させてみよう・・・しかし、なぞのリセット現象!!!

ハードの組み立てが終わったので、動作確認もふくめて簡単なソフトウエアから書き込んでいきます。
でも、ここで不可解な現象が発生しました。なぜか、プログラムの動作中にリセットがかかってしまいます。
まず最初に疑ったのはハードウエアの問題です。考えられる要因は下記です。
 ・電圧が急に下がってリセットがかかってしまう。
 ・リセットラインにノイズがのっている。

でも、それぞれの配線ラインをオシロで観察しても、不具合のある現象はみられません。
次に疑うのはソフトウエアです。
 ・変数の配置に問題がある・・・プログラムが指定以外のエリアをアクセスしてCPUが暴走する

が考えられた原因ですが、ソフトウエアを極力シンプルに書き直しても症状は同じです。

こりゃ、長期戦か・・・・

ハードあるいはソフトの不具合原因を仮定しながら、いろいろと試してみましたがなかなか改善しません。
で、ふとしたはずみでPICのアナログ入力端子を外してみると、なぜか動き出しました。

原因は

どうやら原因はPICのアナログ入力端子に過大な負電圧がかかっていたのが原因のようです。
もちろん、アナログ入力にはダイオードクランプをかけていて入力端子の電圧は-0.6V〜VDD+0.6Vに収まるようにはしていますが、
PICのデータシートをみると、入力の電圧範囲は-0.3V〜VDD+0.3Vになっています。
 入力に-0.6Vをかかると問題になるようです。まだ追試はできていませんが、アナログ入力端子の電圧を0〜VDDに制限するようにすれば
問題なく動き出しました。
 これに気づくために何時間もかかってしまいましたが、いい勉強になりました。

簡単に動かしてみましょう!

まずは基本的な動作ができるかどうかを調べてみましょう。
まずはこんな簡単なLPFで、試してみましょう。SPICEでの計算結果と実測の結果がどのくらい一致するかを調べてみます。


まずはこんな簡単な回路で試してみます。


基板の入出力端子に1kΩの抵抗と1uFのコンデンサ接続します。

まずはSPICEの計算

まずはSPICEで計算して、振幅特性と位相特性を計算しておきました。1kΩの抵抗と1uFのコンデンサの組み合わせなので
fc(-3dB)の周波数は157Hz(2π/CR)です。またその周波数での位相は-45度になります。
このときf=1000Hzでの振幅は約-16dB、f=100Hzでの位相は-32degです。これが実験と一致するか調べてみましょう。

SPICEの結果です。

いよいよ

今回試作したゲイン・フェーズアアナライザでの測定結果と比較してみましょう。
本来は本格的なソフトとして、最初にキャリブレーション等が必要になるのでが、その辺りは省略です。
また、入力信号が小さくなった場合にはゲインを上げるなどの対応が必要ですが、そのあたりも省略です。
PICのADコンバータは10Bitしかありませんので-40dBを超えたあたりから、測定精度は急に悪くなってしまいます。
そのため周波数が高くなって、信号入力が小さくなった場合に誤差やノイズが多くなってしまいますが、
まずは安定して測定できる範囲での比較です。

周波数と振幅の関係

 周波数とゲインの関係です。f=1000Hzで-16dBなのでSPICEの結果とほぼ一致しました。

周波数と位相の関係

周波数と位相の関係です。f=100Hzで-30degなのでSPICEの結果とほぼ一致しました。

問題ないようですね

まだ簡単なソフトでの動作確認だけですが、基本的には動作は問題ないことは確認できました。
本格的なソフトとして、入力信号に応じてアンプのゲインを設定変更するようなj機能を付け加えていきましょう。

実用的なソフトを書いていきましょう!

結構面倒そうですが、折角つくった基板なので使えるようにソフトを仕上げていきしょう。

あれ?
入力信号レベルに応じて、自動的にゲインを変更するプログラムに修正しましたが、
なにかおかしな挙動です。ゲインが20dBから40dBに変わるタイミングでのつながりはスムーズですが、
40dBから60dBに以降するところで不連続になってしまっています。それに、なぜか減衰率も変わっているのは
なぜかな?ひょっとしてOPアンプのオフセットが悪さしているのかな?

 入力信号レベルに応じて、ゲインを変更するようにしました。

あれ?ゲインを40dBから60dBに変更したときのデータのつながりが悪いな〜。

調べていると、ゲイン60dB(1000倍)の時に、所定の増幅率に信号が増幅されていないことがわかりました。

あ・・・・なんて基本的なことを・・・・

おもわず自分のアホさ加減に絶句してしまいました。使用しているOPアンプのGB積が全然足りません。
いま使っているのはOPA2134ですが、GB積は8MHzです。ゲインを1000倍にすれば周波数は8kHzまでです。
そりゃ、増幅できないわけです。こんな基本的なことを忘れていたなんて・・・・・

で、手元にあるGB積の高そうなOPアンプを探してみました。一番高いのはLM7171で200MHzあるので、これを
つかえばなんとかなりそうですが、残念ながらシングルのOPアンプなのでそのまま入れ替えることはできません。

次に高いのはOPA2604でGB積が20MHzです。すこし不足しますが、DUALのOPアンプなのでそのまま置き換えることができます。
でも、結局OPA2604をつかっても1000倍の増幅アンプとするのは難しいので、結局のところ最大増幅率100倍に据え置くことにしました。

結果は・・・・
OPアンプをOPA2604に置き換えて最大ゲインを100倍までに限定して測定するプログラムを作成しました。
その結果は以下の通りです。やはり、周波数が高くなって信号が小さくなるとゲイン不足が顕在化しますが、
まあしかたないですね。最小限必要な20kHzまでの帯域ならまず実用的になりそうです。

     周波数とゲインの関係です。高周波数のところですこしデータが乱れます。


   周波数と位相の関係です。高周波数のところで計算精度が落ちますね。


   周波数と入力アンプのゲインの関係です。最大ゲインを40dBに制限しました。

本格的なものを作りたい!

 今回は、小さい基板1枚に載るゲインフェーズアナライザーを検討してましたが、基本的な動作は確認できたと思います。
でも、今後末永くつかっていこうと思ったときには、すこし性能不足もわかってしまいました。こりゃ、回路を一新して
作り直したいですね。すくなくとも周波数帯域は10Hz〜100kHzでゲイン帯域も-60dBまで綺麗に測れるものが欲しいところです。
PICのAD変換の精度も物足りないので、外付けですくなくとも12Bit程度の分解能は欲しいところでもあります。

まあ、またのんびり考えていきましょう。

その前に 2019.1.31

現在の基板用のソフトを完成させておきましょう。
計測範囲は10Hz〜100kHzとしていて、分割は24分割/OCTなので全域で97点の測定になります。
出力はゲインと位相を直読できるようにしました。
測定の順番は、最初に校正したのち測定に入ります。校正は基板内のリレーをONにして、入出力を接続して測定します。
これにより、ダイレクトに接続した場合のゲインと位相を事前に測定しておき、その値で実測定結果を補正します。
なお、校正と実測定の2回の測定で、時間は約4分半かかります。
なぜ、そんなに時間がかかるかというと10Hz〜50Hzの低周波数の測定では同期検波回路におけるフィルタの遮断周波数を
fc=1Hzと低くしているので、そのフィルタ出力が落ち着くのに時間がかかるためです。


この様な形で出力表示されます。

ついでに・・・

BPFの回路でも測定してみましょう。
回路としては下図のようにLPFの後段にHPFを付け加えてBPFとしています。

こんな形の回路で試してみましょう。


SPICEでの計算結果です。実線がゲイン(左軸)で破線が位相(右軸)です。

実際の回路は・・・

BPFの実際の回路は下図のような形です。空中配線で済ませています。

これでBPFになります。抵抗は1kΩ、コンデンサは1uFのフィルムです。

測定結果は

こんな形となりました。よくSPICEの結果と一致しています。一部でゴミが発生していますが、まあご愛嬌です。
信号出力が小さくなる高周波数のところは仕方ないとして100Hzあたりで1点、ゴミがあるのはなぜかな?
まだソフトにバグがあるような感じですが、まあ時間があれば見直しましょう。

  測定結果です。

備忘録です。


備忘録その2

今回の検討でOPアンプのGB積を再認識することになったので、手元にあるOPアンプの入出力を測定しておきました。
ゲインは非反転増幅器で100倍(10k/100Ω)としています。オシロプローブは1/10にしています。
周波数1MHzで出力電圧が10Vppをイメージしています。

ノイズぽく見える波形が入力になります。

LM7171
オフセット大きいですがもっとも高速です。
OPA627
OPA2604
OPA2134


(つづく)