両電源モジュールXL6019を使ったトラッキング電源の製作

published_with_changes 更新日: event_note 公開日:

labelArduino labelelement label電源

前報のXL6019の素性調査と構想から随分間が開いてしまいました。基本的には前報で作ったブレッドボード上の回路をユニバーサル基板上で再現するだけなのですが、実際に作るとやり直しを繰り返すという悪循環におちいり、結構手間がかかりました。




仕様

  • 供給電源 : Wii 用のACアダプター 12V/3.7A(RVL-002)
  • 正負安定化電源:XL6019モジュール(型式:DD39AJPA)
    • 20W DC-DC Boost-Buck Converter working frequency 180KHZ.
    • Output Voltage: ±3~±30V adjustable
    • Output Current: ±0.7A max
    • Maximum output power: 20W
    • Conversion efficiency :69-88% (datasheetでは、Vin 5Vで min85%)
    • Quiescent current(消費電力): 3mA
    • Built in Frequency Compensation(周波数補償)
    • Built in Soft-Start Function(ソフトスタート機能)
    • Built in Thermal Shutdown Function(温度保護)
    • Built in Current Limit Function(電流制限)
  • 電源スイッチとポリスイッチ(回路保護)
  • 出力スイッチ
  • 出力部LCフィルタ カットオフ周波数 2kHz、減衰率 -60dB/decade
  • プラス/マイナスの電圧と電流を測定
    • プラス電圧/電流:INA219
    • マイナス電圧:抵抗分圧しArduinoで換算
    • マイナス電流:ACS712
  • プラス/マイナスの電圧と電流を表示
    • モニタLCD:1.8” TFT フルカラーモジュール(形式:ST7735)

Kicad回路図

PCB図

回路の実装はユニバーサル基板を使います。"Freerouting" であらましの配線を自動で行ってから、納得できるまで修正を繰り返しました。実際の配線はポリウレタン線で行うので、線どおしの交差は気にしていません。

こういうプロセスは地道な作業で大変なのですが、自作派の小生にはどちらかといえば楽しい時間です。これを見ながら結線を行うとミスを防げます。

とは言っても、部品配置の裏表を作った上に、PCB図上では表裏を誤ってしまったので、通電した途端にArduinoを始めとして結構な部品を壊してしまいました。それで、意欲減退で半年くらい放置していました。




基板実装

ユニバーサル基板上での配線作業は何度か経験していますが、一般にネットで見かける事例に比べると小生が作るものはきれいとは言い難いです。配線が等間隔で並んだり、直角に曲がったりするときれいに見えるのでしょうが、そういったことを気にかけながら作業してもなかなかそのようにはなりません。このあと結線の間違いとかの修正を行ったので、完成版は下の写真よりもっとグチャグチャです。

モニタを上部中央に置きパネルからのぞかせます。その下の4つの穴は出力用のバナナプラグ用です。右手に出力のON/OFF用にタクトスイッチをつけています。この切り換え信号でフォトカプラの2次側出力のON/OFFを行います。



上の基板写真の裏が下の写真になります。右上から左に、マイナス電圧用の電流センサ(ACS712)と入力電源用とプラス電圧用の電圧/電流センサ(INA219)を配置しました。メインのXL6019モジュールはピンヘッダの下駄をはかせて、この上に置きます。

下段は右から、プラス電源用とマイナス電源用のLCフィルタ、5V取り出し用の3端子レギュレータ、Arduino Nanoです。写真では当初の計画でArduino Nanoを使っていますが、思い違いや結線ミスとかで、立て続けに2個破壊してしまいました。それで、単体で安価なAtmega328pに変え、シリアルモジュールFT232RL用の端子を追加する回路に変更しました。

変更前

XL6019モジュールは実際に動かしてみると、発熱が気になりました。そこで写真のようにXL6019と3つのコイルにヒートシンクを抱かせています。これでも60度ほどには発熱しています。また、電圧を変更する抵抗はパネルから操作できるロータリータイプに変更しました。

変更後




アッセンブリ

組みあがったら動作確認を行います。電源にはWii 用のACアダプター 12V/3.7A(RVL-002)を使うので、ばらして12V出力を製作基板の入力端子に繋げます。また、フロントパネルに付けたスイッチや端子を基盤と繋げます。

ケースは100均で見つけたものです。四隅に大きなRがついているので、それを避ける細工を基板とACアダプターに追加工しています。





測定精度の調整(キャリブレーション)

供給電源とプラス電圧はINA219を使っているので、測定精度に関しては基本はライブラリ依存になります。マイナス電圧と電流に関しては測定精度のキャリブレーション調整(Atmega328pのスケッチでパラメータ調整)を行っておきます。

マイナス電圧

前報で説明したように、Arduinoの5V電圧を使って負のADCにバイアスをかけてArduinoで読み込めるように変換します。  

$$\begin{aligned}   &value = analogRead( VOL\_PIN )-aref \\  &vneg = \frac{value \times 5} {1024 } \times KVb2Vin \times  KV2Vb + varef \end{aligned}$$

ここで、各パラメータは各々の値を実験的に測定して求めました。下記の値で後述するようにほぼほぼ良好な結果が得られました。

aref = 470: GND電圧(0V) のセンサ値
KVb2Vin = 13.200 : 実験的な電圧換算係数数(測定値/Arduino値)
KV2Vb = 0.8765*1.09 : Arduino値とDMM値との相関(DMM / Ardino)
varef = 0.0058 : GND電圧(0V) の実験的に求めた偏差 (V)、(0V時に0Vになるための補正値)

マイナス電流

ホールセンサは周囲の磁場の影響などを受けるので、測定された電流値はばらつきます。さらに、あるタイミングでDMMの値と一致するように調整しても、翌日に測ると変わっていたりします。次の写真は下記に示す値に調整した翌日に測った値です。offset は2.519Vから2.492Vに変わり、vset は1.522Vから1.525Vに変わっています。



したがって、次のようにパラメータ調整をしましたが、きやすめ程度です。

ACS712センサの測定電流を次式で求めます。

\[I\_neg = (( offset - \frac{analogRead(A2) }{ 1024 } \times Ampere ) \times gain - devia ) \times range \]

ここに、
Ampere = 5:使う電流センサの規定アンペア数
offset = 2.519:電流ゼロのときのセンサ電圧(V)
vset = 1.522:キャリ電流I mAのときのセンサ電圧(V)
\( \displaystyle gain = \frac{500 }{offset - vset} \) :センサのゲイン設定値(mA/V)=\(\displaystyle \frac{キャリ電流 I }{キャリ電圧 = (offset - vset)}\)
devia = 17:ゼロmA時の実験的補正偏差(mA)
range = 1.08:実験的レンジ調整値

スケッチ

性能確認

DMM(デジタルマルチメータ)の測定値と比較します。DMMの値を正しいものとして、簡易的に近似直線の傾き(XL6019測定値/DMM値)から誤差を求めると、下記表のようになります。電圧に比べて電流は誤差が出ます。

誤差%FS
電圧プラス0.64%
マイナス-0.25%
電流プラス1.94%
マイナス-4.31%



Powered by Blogger | Designed by QooQ

keyboard_double_arrow_down

keyboard_double_arrow_down