2016年7月22日金曜日

少ないパーツで電流を検出する。

小ネタ実験です。5V電源の電流値を検出する回路で、AVR等を使ってLCDに表示することを想定。

LTSpiceでシミュレーション


回路図

I1が電流源でRLに電流を流し、0.1ΩのRshuntで電圧降下させて電圧として取り出している。(Low Side)

これを単電源OPAMPのLM358の23倍の非反転増幅回路で増幅して電流検出値として「OUT」から取り出し、ADCに入力する。

DC解析

青色のI(i1)が電流、V(out)が出力値。電流は0mA~500mAにしているが、出力値は50mA以下では非線形な感じで最小値が0.1V程度になっている。

上側のグラフのV(n003)はRShuntのプラス側の電圧値で、こちらは線形なのでLM358の特性なのかもしれない。また、実際にはOPAMPの入力バイアス電圧(VIO)が23倍に増幅されて出力されるのでこれも補正する必要がありそう。

ブレッドボードで実験


配線図


INからGNDの5V電源と、オペアンプを駆動する5V電源を2つ用意して測定した。

実測値


Rshunt(Ω) 0.11
R1(Ω) 989.6
R2(Ω) 21860
A 23.08973323
VIO(V) 0.0234

Aは増幅率、VIOはLM358の入力オフセット電圧。23.4mVなのでそこそこ大きい値だ。

I V A*V A*V+VIO 実測 err %
0.0486 0.005346 0.123437714 0.146837714 0.1442 -0.002637714 -1.83%
0.101 0.01111 0.256526936 0.279926936 0.291 0.011073064 3.81%
0.401 0.04411 1.018488133 1.041888133 1.23 0.188111867 15.29%

Iはテスタで測った電流値。VIOを加味しても400mA程度だとかなり大きな誤差が出た。

メモ:

AVRの内蔵レギュレーターの1.1Vを使ってA/D変換すれば、精度に目をつぶれば0mA~500mA程度まで測定できる。

ATTiny13はADCはあるが、I2Cに対応していないのでLCDに表示できない。

NXPのLPC810なら8PinでもI2Cが使えるが、3.3V駆動なので3.3VのLDOが必要。←I2C LCDが3.3V駆動なのでちょうどいいか。

ATTiny85のDATASHEETを見るとGAINx20のADCが使えるようだ。ということはオペアンプで増幅しなくて済むかも?また、差動入力のADCにも対応しているようでLow SideではなくHigh Sideで測定できるかもしれない。

もう少し実験しようかな。