USBインターフェース付きCVCC電源

USBを使ってPCからリモート操作可能な安定化電源装置を作りました。汎用の電子回路実験に便利です。

製作したCVCC電源の外観

製作したCVCC電源の外観

仕様

  • 定電圧出力:0~16.5V
  • 定電流出力:15mA~1.5A
  • ロータリーエンコーダとDACによるデジタル式出力電圧設定
  • 加熱保護
  • USB (CDC) によるリモート操作

回路構成

全体制御部

全体制御部の回路図

全体制御部の回路図

全体の制御はPIC18F27Q43で行います。各種スイッチの状態の取得、電圧などの測定、DACの制御、LCDの表示、リモートコマンドの解釈などを行っています。

絶縁DC-DC コンバータによって制御回路をフローティング状態にしています。制御回路のグランドは電源装置の出力に繋がれているので、出力電圧に追従するようになっています。このフローティング電源はアナログ回路の電源にも使うのでトランスで作りたいところですが、都合の良いトランスは見当たりません。複数のトランスを使うことも嫌だったので、絶縁 DC-DCコンバータの出力にフィルタと三端子レギュレータを入れることにしました。

大電流が必要なファンとLCDのバックライトには制御回路とは別のDC-DCコンバータを用意しています。

今回の出力は15V、1.5A程度と電源装置としては控えめですが、これはDACの分解能の制約によるものです。使用部品した部品は電力面でかなり余裕があるので、出力電圧、出力電流はそれぞれ分圧抵抗の比を変えれば増大させることができます。しかし、採用した MCP4922のような安価で手に入れやすい12bit DACで実用的な分解能を持たせるためにこのような仕様にしています。

電源制御部

電源制御部の回路図

電源制御部の回路図

定電圧モードではU4A、定電流モードではU4BでQ1を制御します。制御の切り替えは、D7、D12によって行います。出力電圧が低い方のオペアンプがFET の制御を行うことになります。また、二つのオペアンプの出力をコンパレータU8Bで比較することでモードの状態を検出することができます。

Q2、Q3はオペアンプの出力が飽和することを防ぐスイッチです。オペアンプが飽和状態から復帰する必要がなくなるので、CV / CCのモード切替を高速に行うことができるようになります。

制御回路の電源がフローティング状態になっているので、CVとCCの回路構成を似たものにすることができます。特にCC の制御回路のオペアンプを1つにできるので、発振しにくい安定した回路になりやすいです。

USB/絶縁UART部

絶縁UARTの回路図

絶縁UARTの回路図

メインの制御を行うPIC18F27Q43は大地グランドを基準に動作していないので、PCとの接続部分は絶縁する必要があります。ADuM121NによってUART 信号を絶縁することでこの問題を解決しています。

USB通信はPIC16F1454で行います。現在はCDCを用いて通信していますが、将来的にUSBTMCを実装できないかと思い専用チップではなくマイコンにしました。

製作・実装

今回はプリント基板を発注しました。メイン基板は2層、絶縁UART基板は6層です。JLCPCBで異常に安かったので6層にしましたが、内層は電源のベタしかありません。

発注した基板の写真

発注した基板の写真

CVCC電源の内部写真

CVCC電源の内部写真

ところでこの6層基板、ENIGにインピーダンスコントロールにPad on Viaとてんこ盛りだったのに2ドル (5枚) でした。同じ条件の4層基板よりはるかに安いっ!なぜ!

ケースは前に作ったデュアルトラッキング電源と同じものを使いましたが、今回はヒートシンクを筐体の中に入れて、ファンで冷やす形にしました。サーミスタで温度を監視して、熱くなったら冷やします。

基板を立てて実装しましたが、これだと重力の方向を考えた部品配置にするべきだったかもしれません。ショートすることはなさそうですが、足を浮かせた部品が下を向きそうでやや不安です。

動作テスト

7.5V出力で、無負荷→500mAの過渡応答です。

過渡応答の波形

過渡応答の波形

1us以内に定常状態へ戻っているので、なかなか速いのではないかと思います。致命的になるようなリンギングも無いようです。一方、ノイズは多めに見えます。20mVpp 程度乗っているようですので、対策を考えたいところです。

リモートコマンド

多くの計測器と同じようなコマンドで制御できるようにしました。必要最低限のコマンドのみ実装しています。校正用のコマンドのみ 2つ目の引数があります。本来であれば複数の引数を並べる際はカンマで区切るべきですが、実装が楽だったのでスペース区切りにしています。

ここにコマンドを載せても私以外が使うことは無いでしょうけれども……

コマンド 説明 返答例
*IDN? 識別文字列を返します ice458,PWR1615,001,v1.0
VOLTage {<voltage>} 出力電圧を設定します
VOLTage? 設定されている出力電圧を返します 5.200626
CURRent {<current>} 電流制限値を設定します
CURRent? 設定されている電流制限値を返します 0.399862
OUTPut {ON|OFF} 電源装置の出力を切り替えます
OUTPut? 電源装置の出力の状態を返します ON
MEASure:VOLTage? 電圧計の値を返します 5.197031
MEASure:CURRent? 電流計の値を返します 0.399921
MEASure:TEMPerature? メイントランジスタの取り付けられたヒートシンクの温度を返します 35
SYSTem:REMote パネル操作を無効にします
SYSTem:LOCal パネル操作を有効にします
SYSTem:ERRor? 発生したエラーを返します out of range error
LOCK? パネル操作が有効かどうかを返します ON
CALibration:VOLTage {HIGH|LOW|DONE} {<voltage>} 電圧の校正に使います
CALibration:CURRent {HIGH|LOW|DONE} {<current>} 電流の校正に使います
PCに認識された電源を示す写真

PCに認識された電源を示す写真

*IDN? の返答ができるようになると、KeysightのConnection Expertのようなソフトに認識されるようになります。地味にうれしい。