PIC制御の定電圧定電流電源の製作
リチウムイオン充電池の充電用や、実験室用に使える
定電圧定電流電源を作りました。
PIC16F819のPWMを使ったスイッチング方式の電源です。
【概要】
前作の定電圧定電流電源は、リニアレギュレーション方式であるため、結構、熱が
発生するのと、計測だけにしかPICを使っていませんでしたので、いまいち再現性に
欠けるところがありました。
そこで、PIC16F819が小型にもかかわらず、A/DコンバータとCCPのPWM出力が
内蔵されていますので、これを使ってスイッチング方式で制御した定電圧定電流電源
を作成しました。
現状での主な用途は、リチウムイオン電池の充電用となっています。
長時間充電電流を流していてもほとんど発熱しませんので、気分的に安心できます。
出力電圧は0Vから10Vまで可変でき、出力電流は最大0から1Aまで設定できます。
調整も簡単にできますので、再現性が高いと思います。
もちろん出力電圧、電流、設定電圧、電流などの現在状態を、液晶表示器に常時表示
します。
外観は下記のようになっていて、電圧設定と、最大電流設定が右のつまみで出来ます。
出力端子左横の発光ダイオードは、
出力電流制限が始まっていることを
表します。
最大出力は、0〜10V 1A です。
【基本構成】
全体の構成は、下図のようになっています。PICのPWMによるスイッチング方式で
出力電圧を制御しています。
PWMのパルスは、クロック20MHzで9ビット分解能として、40kHzの周期としています。
この構成をベースにして作成した回路図が下記となります。
スイッチング動作そのものは、トランジスタ2SA1741で行います。ここは電圧が高いので
PICでは直接ドライブできません。そこで、もう一つトランジスタを追加してドライブしています。
このドライブ用トランジスタをPICのPWMで制御しています。
このPWMパルスのデューティを制御するのですが、負荷電流の計測値と出力電圧値の
計測値をフィードバックして制御しています。
まず負荷電流は、電流計測用の0.5Ωの抵抗での電圧降下値をオペアンプで増幅して
1Aの時に2.5VとなるようにしてPICのA/D変換入力のチャネル0としています。
次に出力電圧値は、抵抗で分割して、10V出力の時に2.5Vとなるようにして、これも
PICのA/D変換入力のチャネル1としています。
電圧と電流の設定値のPICへの入力は、A/D変換のリファレンス電圧である2.5Vを
可変抵抗で分圧して、それぞれPICのA/D変換入力のチャネル2,3としています。
これで最大10Vと最大1Aの設定値として使います。
PICとオペアンプ用の+5V電源は、大元の15Vから3端子レギュレータで作成しています。
A/D変換用のリファレンス電圧の2.5Vは、精度を良くするため、電圧標準ICを使いました。
これで正確な2.5Vを得ることができます。
スイッチングのフライホイールダイオードには、ファーストリカバリダイオードを使います。
ここにも負荷と同じだけの電流が流れますので、ダイオードの電流値は大き目のものを
選択しておきましょう。
チョークコイルには120μH 2Aのものを使いましたが、ちょっと大きめなので、1Aクラスで
良いかと思います。
★回路図とパターン図のファイルは下記です。IVEX社のWinDraftとWinBoardでお使い下さい。
BMPファイルのサイズは適当に縮小して実寸に合わせて印刷して下さい。
★回路図とパターン図
★パターン図のBMPファイル
【制御基板の外観】
制御基板はスイッチング制御をPICですべて実行させていますので、すっきりしています。
スイッチングトランジスタには、最大負荷のときにやや発熱しますので放熱器をつけて
います。チョークコイルが2A用なので大型です。
制御ボード全体
左下にあるのがPIC16F819
左上から右へ制御用トランジスタの2SA1741、
ファーストリカバリダイオードの1R5NU41、
チョークコイル、平滑コンデンサ、0.5Ωの
電流計測用抵抗と並んでいます。
PIC周りの詳細
左上に78L05、2SC1815、LM385と並んでいます。
パターン面
幅広のパターンで十分できますので
アートワークは簡単です。
平滑用コンデンサとして10μFの大容量
セラミックコンデンサを使っています。
これで40kHzという周波数のリップルも
きれいに取り除けます。
【ケースへの実装と外観】
前作のシリーズレギュレータ方式の定電圧定電流電源で使ったケースをそのまま
流用しました。制御基板が前作よりかなり小型になりましたので、楽に実装できます。
前面パネルにすべての操作部と表示部
をとりつけてしまいました。
右端の上側が電流制限設定用、下側が
電圧設定用のツマミです。
出力端子の左にある発光ダイオードは
電流制限中のLEDで、過電流の間点灯します。
内部実装です。
大元の電源には、スイッチング方式のアダプタを
分解して使いました。15V1.6Aタイプです。
スペースは十分余裕がありますが、前面パネルが
一杯になってしまいました。
電源ランプの発光ダイオードへの配線は液晶表示器
のコネクタへ配線しています。
【プログラム概要】
この定電圧定電流電源の制御プログラムは、PIC16F819を使って、C言語で作成しています。
CCS社のCコンパイラをベースに作成しています。
浮動小数の演算が入っていますので、ちょっとプログラムサイズが大きくなっています。
全体の流れは、下図左側のフロー図のようになっていて、1本の流れで制御を実行し、
タイマ0の割込み処理で液晶表示器の表示制御をしています。
タイマ0のインターバル割込みで、0.3秒間隔で、電圧電流の設定値と現在値を液晶表示器
に表示します。
計測と制御の実行は、下図のフロー図のように、出力の電圧と電流を計測して、
まず設定された電流を超えていないかをチェックし、超えていればデューティを
低くして出力電圧を下げます。
電流が範囲内であれば、今度は電圧が設定電圧になるようにデューティ値を加減します。
これを常時繰り返します。
この繰り返し周期は実測で約400μsecでした。ただし液晶表示器の表示制御が入る
場合には、約2msecとなります。
ここで計測の中で電圧の現在値は、電流計測用抵抗での電圧降下分だけ低くなりますので
プログラムでそれを補正しています。
0.5Ωでの電圧降下分は(電流×0.5)Vですから、フルスケール10Vに対しては
(電流×0.5)÷10になるので下記式で補正できます。
補正電圧 = 計測値 − (電流値÷20)
このプログラムのソースとHEXファイルは下記にあります。
ダウンロードしてお使い下さい。
★プログラムソース(C言語)
★プログラムHEXファイル
【調整】
この定電圧定電流電源の調整は下記手順で行います。
(1) 10W20Ω程度の適当な負荷を接続した状態で、マルチメータで負荷の電流を
測りながら液晶表示器の電流計測値の現在値が同じ値になるようR9の20kΩの
可変抵抗を調整します。
(2) 同じ負荷を接続した状態で、やはりマルチメータで出力電圧を計測しながら
液晶表示器の電圧現在値が同じになるよう、R4の500Ωの可変抵抗を調整
します。
(3) 上記を数回繰り返して、電流、電圧ともマルチメータの値と一致するように
調整します。以上で調整は完了です。