投稿

2月, 2026の投稿を表示しています

LT3080実験用DC電源プロジェクト(8)疑似SCPI?とマイナス電位発生タイミング

イメージ
 電源をPCから制御できるようにする!というのが当初の目的の一つ。 https://funasover.blogspot.com/2026/01/blog-post.html PCからのコマンドを受け取って、それで動作するようにしたい訳だが、コマンドはオリジナルでもよく、つまり”hoge 1.0"とシリアルで受け取ったら電圧を1.0Vにするとか。 このhogeを考えるのも一苦労。 そこでスキッピーを参考にして、コマンドを定めてやる。 *IDN?ってまず通信を確立できているか?GPIBなんかで接続テストする時に送る これをArduinoで実装すると void loop () {   while ( Serial . available ()) {     char c = Serial . read ();     if (c == ' \r ') continue ;  // ★ CR を無視する     if (c == ' \n ') {       lineBuffer . trim ();       if ( lineBuffer . length () > 0 ) {         processSCPI (lineBuffer);       }       lineBuffer = "" ;     } else {       lineBuffer += c;     }   } } シリアルに何飛び込んだら、processSCPIという関数に飛ぶようにしておいて、   // -------------------------   // *IDN?   // -------------------------   if (cmd == "*IDN?" ) {     Serial . println ( "Arduino, Power Sup...

LT3080実験用DC電源プロジェクト(7)OPAの変更

イメージ
 オペアンプNJM2746のフルスイングを利用してきたが、変更する。 秋月で入手可能 https://akizukidenshi.com/catalog/g/g114002/ 入手性とか価格が手頃。 VOL(Maximum Low-Level Output Voltage)オペアンプが負の電源(ここではGND)に近い電圧を出力しようとした際に、ロー(Low)レベルとして保証される最大電圧値 ここが、データシート上、0.1Vとなっていて、ゼロV付近を出力したくても、オペアンプの出力が0.1Vより下がらないということになる。 そこで同じレールtoレールのオペアンプでも、高性能と言われるOPA192への置換。手元にあったから・・・という理由だが・・・。大陸から取り寄せれば倍ぐらいの値段。 No loadで5mVという事で、かなりVOLが期待できる。 ゲインを3倍に設定した時のDACの入力値とオペアンプの出力の関係性を取得。 二つともゲインは3倍で出てくるのは当然。 さて、ゼロボルト付近を拡大してみる。 オレンジが、NJM2746で、ゼロボルト入力の時でも50mVの出力がある。DAC出力が30mVぐらいでゲイン3なので100mV付近までは線形からずれている。 これでも50mV以下の電圧をかけたい!という要求がどれほどあるか?と考えるとほぼないので、このままでも問題はない。 青のOPA192の方は、綺麗にゼロ付近まで落とせている。 実際は、ゼロボルトで6mVぐらいの出力は出ていて完全にゼロではないが、かなりゼロに漸近する事ができた。 でこの6mVをさらに削減したい場合は、オペアンプV-をマイナス電源電圧につなぐと4mVぐらいに削減できるが効果が薄い。 ゼロ点調整するようにすれば追い込めるが、回路が複雑になるので、ここは6mVを許容する事とする。 でこのグラフどうやって取得したかというと、PCとシリアル通信で取得するアプリをサクッとつくて測定した・・・。この点はいずれ。

LT3080実験用DC電源プロジェクト(6)電流制限まわりの回路

イメージ
 前段の電流制御を行うLT3080のSETを今度は、外部のDAC制限をする事を試みる。 考えた回路が以下。 差動アンプとエラーアンプの組み合わせ。センス用の抵抗1Ωのの両端の電位差を見て流れる電流を検知。DACにより設定した値と電位差の大小を見て、オペアンプの出力を調整するというもの。KiCadで書くと上のようだが解説は下の図で。(上の図において、R7(赤い丸で囲んでいる所の抵抗)が220Ωとなっているが、これは後ほど違う値に) 1Ωの電流センス用の抵抗のLT3080側をVsense_H、次段の後段LT3080側をVsense_Lとして差動アンプへ投入して、電位差Vsenseを得る。ゲイン1だったら1Ωの抵抗だから100mA流れると電位差が丁度100mVだが、ここではR2/R1=2.7倍なので270mVになって現れる。これをVsesnseとしている。 そして後段のオペアンプが、エラーアンプにして、V_DACとVsenseを比べてV_DAC>Vsenseなら出力を大きくしようとするが、電源電圧以上には持ち上がらないのでV_setには電源電圧がそのまま(ここでは12V)がセットされる。 V_DAC<Vsenseになる(つまり設定より過剰な電流が流れる)と後段のエラーアンプがオペアンプの出力電圧をバランスするV_DAC=Vsenseが保たれるように、V_SETを下げにいく。 これをブレッドボードに実装する。抵抗1Ωは3W品を利用しているが、途中で半田してワイヤーで基板に落とすという荒業で対処。この時、まだ、前段のLT3080は可変抵抗は残して電流制限をそうかけずに結構電流がながれるようにしている。 DACとオペアンプ回りは・・・ ワイヤーの空中戦・・・・。あまり美しくはない。DACはMCP4725を同じく使ったが今度はA0をHIGHにしてアドレスを61に設定。 負荷抵抗は、68Ωの抵抗1/4W品を2本並列。34Ωで1/2Wまで流せる。 出力は、先に作ったマイコンからの制御で3.4V程度印加するようにする。 すると抵抗には、0.1Aつまり100mA流れる事になる。この時消費電力は0.34W。1/2Wは下回る。 この状態で、電流制限値を決めるDACの出力を500mVぐらいの出力(270mVより大きく)になるようにマイコンから命令を送る。 オペアンプが動いても、可変抵抗...