Forum: Mikrocontroller und Digitale Elektronik Strom mit Arduino über OPV LM358 berechnen


von Petr t. (vicon)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich habe folgendes Problem, ich möchte mit meinem Arduino Uno den Strom 
über einen Shunt 10mOhm berechnen.
Da der Spannungsabfall aber zu niedrig ist um ihn direkt an den Analog 
Eingang zu hängen, habe ich einen OPV LM358 als Differenzverstärker 
geschaltet.
Die Spannung an der der Shunt hängt soll einstellbar sein. Die 
Versorgungsspannung für den LM358 ist 12V.
raus kommen soll eine Spannung von 5V, wenn die Spannung am 
Spannungsteiler 4,2V ist.

VccTest->5 Ohm-|-10mOhm shunt -> GND
               V
              OPV

Nun kommt mein Problem, ich weiß nicht wie ich die Verstärkung mit 
berechnen soll.
5/1024 = 4,883mV / 10 Bit Auflösung.

Wie kann ich jetzt den Strom berechnen, da der OPV ja eine Verstärkung 
hat, ich aber nicht weiß wie ich diese anwenden soll :(

Hier ist das Schaltbild mit LT Spice

Danke

Edit. mir war bei dem Schatbild ein kleiner Fehler unterlaufen, der ist 
nun korrigiert

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

bring erst mal etwas Ordnung in den Shuntwert. Im Schaltbild sind es 
100mOhm, im Text mal

Petr t. schrieb:
> über einen Shunt 10mOhm berechnen.

und mal

Petr t. schrieb:
> VccTest->5 Ohm-|-1mOhm shunt -> GND

Die Umrechnung *5V/1024 gibt dir an, welche Spannung der ADC sieht 
(sofern du als Referenzspannung wirklich 5V verwendest).

Diese Spannung ergibt sich aus Strom mal Shuntwiderstand mal 
Spannungsverstärkung des OPV. (zumindest idealerweise: um die Fehler 
kümmern wir uns, sobald die prinzipielle Funktion verstanden ist).

von Max H. (hartl192)


Lesenswert?

Die Verstärkung ist 1+R_3/R_4.
Den Strom berechnest du so: V_out=(1+R_3/R_4)*V_shunt, 
V_shunt=I*R_shunt. Das formst du dann auf I um...

: Bearbeitet durch User
von Petr t. (vicon)


Lesenswert?

Achim S. schrieb:
> bring erst mal etwas Ordnung in den Shuntwert. Im Schaltbild sind es
> 100mOhm, im Text mal
>
> Petr t. schrieb:
>> über einen Shunt 10mOhm berechnen.
>
> und mal
>
> Petr t. schrieb:
>> VccTest->5 Ohm-|-1mOhm shunt -> GND

Korriegiert ;)

von Petr t. (vicon)


Lesenswert?

Max H. schrieb:
> Den Strom berechnest du so: V_out=(1+R_3/R_4)*V_shunt,
> V_shunt=I*R_shunt. Das formst du dann auf I um...

Was bringt mir aber dann V_out ?
I=V_shunt/R_shunt
0,84 A= 8,4mV / 10mOhm

Muss ich die Verstärkung des OPV nicht mit berücksichtigen???

von Achim S. (Gast)


Lesenswert?

Petr t. schrieb:
> Muss ich die Verstärkung des OPV nicht mit berücksichtigen???

Doch: die gemessene Spannung ist ja nicht V_Shunt sondern V_Out. Der 
Umrechenfaktor zwischen beiden ist die Verstärkung des OPV.

von Thomas E. (picalic)


Lesenswert?

> Muss ich die Verstärkung des OPV nicht mit berücksichtigen???

Ich verstehe nicht so ganz, wo genau da Dein Verständnisproblem liegt!?
Den Zweck des OP hast Du ja schon richtig erkennt:

Petr t. schrieb:
> Da der Spannungsabfall aber zu niedrig ist um ihn direkt an den Analog
> Eingang zu hängen, habe ich einen OPV LM358 als Differenzverstärker
> geschaltet.

Und das Ziel hast Du auch schon definiert:
> raus kommen soll eine Spannung von 5V, wenn die Spannung am
> Spannungsteiler 4,2V ist.

Nach Adam Riese ist der Strom 4,2V/5Ohm = 0.84A (- ein bisschen durch 
den Shunt - vernachlässigt),
 * 10mOhm = 8,4mV -> diese willst Du auf 5V verstärken, also muss Dein 
OP eine Verstärkung von 5V/8,4mV = 595 haben.
Danach legst Du die Widerstände aus.

: Bearbeitet durch User
von Petr t. (vicon)


Angehängte Dateien:

Lesenswert?

Achim S. schrieb:
> Doch: die gemessene Spannung ist ja nicht V_Shunt sondern V_Out. Der
> Umrechenfaktor zwischen beiden ist die Verstärkung des OPV.

Kannst du mir das bitte erklären ?
Ich habe, nach dem Schaltbild 4,99V (~5V) am Ausgang des OPV´s.
Die Spannung die ich am Shunt messe ist 8,4mV.

Die Formel zum berechnen der Verstärung ist ja V= 1 + R3/R4
V= 1 + 473kOhm/1kOhm
V= 474
Aber wie rechne ich damit weiter ?

von Petr t. (vicon)


Lesenswert?

Thomas E. schrieb:
> 10mOhm = 8,4mV -> diese willst Du auf 5V verstärken, also muss Dein
> OP eine Verstärkung von 5V/8,4mV = 595 haben.
> Danach legst Du die Widerstände aus.

Wie kommst du auf diese Formel ?
Und was muss ich dann mit den 595 rechnen ?
Ich möchte ja im Arduino den Strom berechnen.
Also I=5/10mOhm geht so ja nicht, weil der OPV ja dazwischen hängt.

von Uwe (de0508)


Lesenswert?

Hallo,

so ein OPV von Typ  LM358 ist nicht optimal er 'macht' Fehler:

Offsetspannung, Offesetdrift usw.
Er kann nicht bis auf 0 / Vcc Messen, bzw. Verstärken

Es lohnt sich also einen Rail-to-Rail Inp/Outp präzisions OPV zu wählen.

Stell dir bitte vor, was passiert wenn ein Offsetfehler von 3mV um den 
Faktor 595 Verstärkt wird.

Dann ist da eine um 1,785V Differenz-Fehlerspannung am Ausgang, die man 
nicht haben will !

Wenn der OPV nur 500µV Offsetfehler aufweisen sollte, dann liegt der 
Differenz-Fehlerspannung bei 0,2975V.

So oder so muss man eine Offsetspannungkorrektur durchführen !

von Teiler (Gast)


Lesenswert?

Petr t. schrieb:
> Also I=5/10mOhm geht so ja nicht, weil der OPV ja dazwischen hängt

Nein, aber 5/595 geht, dann hast Du die Spannung am Shunt 
(Ausgangsspannung des OPV geteilt dutch die Verstärkung). Das dann 
geteilt durch 0,01Ohm gibt Dir den Strom, der durch den Shunt fließt.

von OP (Gast)


Lesenswert?

Der Fehler des OP ist aber ein ganz neues Problem. Solange das 
Grundproblem nicht verstanden ist verwirrt es eher. Ich würde es auf die 
Liste für später setzen.

Wenn Du am Ausgang 5V zum Messen mit dem AVR haben willst bei ca. 8,4mV 
am Eingang sollte der OP welche Verstärkung haben? (595) Das bedeutet 
die Auslegung der Widerstände anzupassen.

Der Strom im Shunt berechnet sich dann zu I = Ushunt * Verstärkung / 
Rshunt

von MaWin (Gast)


Lesenswert?

Petr t. schrieb:
> Nun kommt mein Problem, ich weiß nicht wie ich die Verstärkung mit
> berechnen soll.

4.2V/5.1Ohm=823mA
823mA*0.01Ohm = 82.3mV
5V/82.3mV=60.1 als Verstärkungsfaktor

Petr t. schrieb:
> da der OPV ja eine Verstärkung
> hat, ich aber nicht weiß wie ich diese anwenden soll :(

R3 beliebig festlegen, z.B. nach Eingangsimpedanz des anderen Eingangs 
auf 10kOhm.
R4 = (60.1-1)*R3 = 591k.

Aber:

Auflösung 823mA/1024 = 803uA

82.3mV für 1024 = 80.37uV für 1 Digit
Offsetfehler LM358 7mV -> Messfehler 87 Digits der 1024 = 70mA.

Dein 10mOhm shunt ist also absolut fehldimensioniert für den absolut 
billigen OpAmp LM358, du erzeugst eher Messfehler als Messwerte.
Nimm wenigstens 25 mOhm und einen LT1013 als OpAmp.

82.5*25 = 206.25mV, Verstärkung 24.27, R4= 233kOhm (0.1%) R3=10k (0.1%)
Fehler 1 von 1024.

von Petr t. (vicon)


Lesenswert?

OP schrieb:
> Der Strom im Shunt berechnet sich dann zu I = Ushunt * Verstärkung /
> Rshunt

Das kommt irgendwie nicht hin:
8,4mV @ 5V OPV out

 I = Ushunt * Verstärkung / Rshunt
 I = 8,4mV  *  595 / 10mOhm
 I = 4,998V / 10mOhm
 I = 499,8mA

??? Das geht nicht auf, bei 5V habe ich einen Strom von 838 mA nach LT 
Spice
Ich denke dann müsste in deiner Formel noch ein x 1,66 rein, damit die 
Werte sich annähren.

 I = Ushunt  Verstärkung  1,66 / Rshunt
 I = 8,4mV    595  1,66 / 10mOhm
 I = 8,34 V / 10mOhm
 I = 829,6mA

Teiler schrieb:
> Nein, aber 5/595 geht, dann hast Du die Spannung am Shunt
> (Ausgangsspannung des OPV geteilt dutch die Verstärkung). Das dann
> geteilt durch 0,01Ohm gibt Dir den Strom, der durch den Shunt fließt.

Das klappt ganz gut^^

5V OPV Ausgangsspannung, bei 4,2V Spannung an V1 im Schaltbild

5V / 595 = 8,4mV U_shunt

I=  8,4mV / 10mOhm = 840mA

von Petr t. (vicon)


Lesenswert?

MaWin schrieb:
> 4.2V/5.1Ohm=823mA

> 823mA*0.01Ohm = 82.3mV
> 5V/82.3mV=60.1 als Verstärkungsfaktor

Entschuldige, das ich deine ganze berechnung über den Tisch werfen muss, 
aber du hast mit 100mOhm gerechnet, nicht mit 10mOhm

von Petr t. (vicon)


Lesenswert?

MaWin schrieb:
> 82.3mV für 1024 = 80.37uV für 1 Digit
> Offsetfehler LM358 7mV -> Messfehler 87 Digits der 1024 = 70mA.

Wie kommst du auf die 7mV ?

von Teiler (Gast)


Lesenswert?

Petr t. schrieb:
> Teiler schrieb:
>> Nein, aber 5/595 geht, dann hast Du die Spannung am Shunt
>> (Ausgangsspannung des OPV geteilt dutch die Verstärkung). Das dann
>> geteilt durch 0,01Ohm gibt Dir den Strom, der durch den Shunt fließt.
>
> Das klappt ganz gut^^

Das klappt nicht nur ganz gut, sondern ist absolut richtig, wenn der 
Verstärkungsfaktor genau bekannt ist.
Offsetfehler des OPV werden natürlich das Ergebnis verfälschen, und 
darum ist ein LM358 für diese Anwendung auch nicht geeignet.

von Paul B. (paul_baumann)


Lesenswert?

Petr t. schrieb:
> ....mit 100mOhm gerechnet, nicht mit 10mOhm

Wenn Du es schaffst, reproduzierbar 10 Milliohm als Shunt einzusetzen, 
dann ist es ja gut...

MfG Paul

von MaWin (Gast)


Lesenswert?

Petr t. schrieb:
> Entschuldige, das ich deine ganze berechnung über den Tisch werfen muss,
> aber du hast mit 100mOhm gerechnet, nicht mit 10mOhm

Oh, also Fehler eher 70% als 7% mit dem bililgsten alle billigen AOpAmp 
und einen gnadenlos zu klein gewähltem shunt.

Petr t. schrieb:
> Wie kommst du auf die 7mV ?

http://www.ti.com/lit/ds/symlink/lm158-n.pdf
LM358
MAX
Input Offset Voltage See(2) , TA = 25°C: 7 mV

von Petr t. (vicon)


Lesenswert?

Teiler schrieb:
> und
> darum ist ein LM358 für diese Anwendung auch nicht geeignet.

MaWin schrieb:
> Nimm wenigstens 25 mOhm und einen LT1013 als OpAmp.


Das mit 25mOhm wird nicht gehen.
Ich habe mir den LT1013 mal angeschaut, von der Pinbelegung ist er 
genauso wie der LM358.
Könnte ich den LM358 einfach durch den LT1013 ersetzen ?
Natürlich müsste ich dann noch die Widerstände entsprechend anpassen.

von Petr t. (vicon)


Lesenswert?

MaWin schrieb:
> Oh, also Fehler eher 70% als 7% mit dem bililgsten alle billigen AOpAmp
> und einen gnadenlos zu klein gewähltem shunt.

der klein gewählte Shunt erfüllt seinen Zweck ;)
Also denkst du der LT1013 wäre die bessere Alternative ?
Muss ich da etwas beachten ?
Pinbelegung ist beim DIP package genau die gleiche wie bei meinem LM358 
und die widerstände müsste entsprechend anpassen.

von Achim S. (Gast)


Lesenswert?

Petr t. schrieb:
> und die widerstände müsste entsprechend anpassen.

Wieso willst du beim LT1013 andere Widerstände wählen. Braucht der 
deiner Meinung nach einen anderen Verstärkungsfaktor?

Petr t. schrieb:
> Also denkst du der LT1013 wäre die bessere Alternative ?

er hat einen wesentlich kleineren Offsetfehler (gut) und er funktioniert 
ebenfalls mit dem Eingang nahe an der negativen Versorgung (auch gut).

Ob die Messung damit genau genug wird, hängt von deinen Anforderungen 
ab. Willst du 1% Fehlergrenze oder 10% oder 100%? Hst du schon mal 
abgeschätzt, um wie viel der gemessene Spannungsabfall durch die 
Widerstände deiner Leiterbahn oder Übergangswiderstände der Lötstellen 
verfälscht wird?

von Petr t. (vicon)


Angehängte Dateien:

Lesenswert?

Achim S. schrieb:
> Wieso willst du beim LT1013 andere Widerstände wählen. Braucht der
> deiner Meinung nach einen anderen Verstärkungsfaktor?

Weil ich mir dachte das er, wenn so genau ist, auch intern anders ist 
und tatsache, mit LT Spice hätten die Widerstände nicht funktioniert.
Ich musste sie entsprechend anpassen, aber rest der Schaltung ist gleich 
geblieben.

von Achim S. (Gast)


Lesenswert?

Petr t. schrieb:
> Weil ich mir dachte das er, wenn so genau ist, auch intern anders ist
> und tatsache,

Natürlich ist er intern anders, aber das spielt für die Festlegung des 
Verstärkungsfaktors erst mal keine Rolle.

Petr t. schrieb:
> mit LT Spice hätten die Widerstände nicht funktioniert.
> Ich musste sie entsprechend anpassen, aber rest der Schaltung ist gleich
> geblieben.

Falsche Schlussfolgerung: du mischst in deiner Betrachtung die 
Auswirkungen von Offsetfehler und Verstärkungsfehler und versuchst, den 
einen durch den anderen auszugleichen. Berechne_ dir die _benötigte 
Verstärkung und stell die ein. Versuch nicht, so lange mit 
Widerstandswerten in LTSpice rumzuspielen, bis du am Ausgang zufällig 5V 
siehst. LTSpice ist ein tolles Programm, aber wenn du es so einsetzt, 
dann schadet es mehr, als dass es nutzt. Die richtige Rechnung, hat dir 
Thomas schon vorgeführt (und diverse andere auch, nur nicht so 
detailliert)
Beitrag "Re: Strom mit Arduino über OPV LM358 berechnen"

Sei dir auch darüber im Klaren, dass LTSpice höchstens mit einem 
Beispielswert für den Offsetfehler rechnet. Der Offsetfehler in der 
Simulation und der Offsetfehler des OPVs, den du einbaust, sind 
unterschiedlich.

von Petr t. (vicon)


Lesenswert?

Achim S. schrieb:
> Berechne_ dir die _benötigte
> Verstärkung und stell die ein. Versuch nicht, so lange mit
> Widerstandswerten in LTSpice rumzuspielen, bis du am Ausgang zufällig 5V
> siehst.

ok, da hast du recht, ich habe nicht berechnet.
Also V = 1 + R3/R4
595 = 1 + 594kOhm/1kOhm richtig ?

Kann ich so rechnen ?

von MaWin (Gast)


Lesenswert?

Petr t. schrieb:
> Das mit 25mOhm wird nicht gehen.

Richtig, ich habe mich ja auch um den Faktor 10 verhauen wie du 
herausgefunden hast.

> Ich habe mir den LT1013 mal angeschaut, von der Pinbelegung ist er
> genauso wie der LM358.
> Könnte ich den LM358 einfach durch den LT1013 ersetzen ?

Er ist ein genauerer LM358, mit 0.15mV statt 7mV Offsetspannung.

Er passte gut zum von dir vorgesehenen shunt.

Wenn man aber um deen Faktor 10 besser sein muss, muss man einen
LMP2021, MCP6V11 oder TSZ121 sein.

Die sind netterweise Rail-To-Rail, brauchen also bloss 5V Versorgung um 
5V ausgeebeenzu können, sind also nicht mehr "identsich nur besser " als 
der LM358, sondern "viel besser".

Allerdings sind die so gut, daß du ihre Leistung gar nicht nutzen können 
wirst: Unter 10uV sind so wenig, daß bereits Thermospannungen zwischen 
Kupfer und Lötzinn und IC-Anschlussbeinchen höher sind, daß Biegungen 
der Leiterplatte mehr Offset reinbringen, daß deine Widerstände sowieso 
ungenauer sind und mehr rauschen, und jede allerkleinste Störung 
vonaussen grösser ist als das 1 bit.

Dein shunt ist also einfach viel zu klein gewählt, nimm 0.1 Ohm oder 
0.25 Ohm.

von Petr t. (vicon)


Lesenswert?

MaWin schrieb:
> Wenn man aber um deen Faktor 10 besser sein muss, muss man einen
> LMP2021, MCP6V11 oder TSZ121 sein.
>
> Die sind netterweise Rail-To-Rail, brauchen also bloss 5V Versorgung um
> 5V ausgeebeenzu können, sind also nicht mehr "identsich nur besser " als
> der LM358, sondern "viel besser".
>
> Allerdings sind die so gut, daß du ihre Leistung gar nicht nutzen können
> wirst: Unter 10uV sind so wenig, daß bereits Thermospannungen zwischen
> Kupfer und Lötzinn und IC-Anschlussbeinchen höher sind, daß Biegungen
> der Leiterplatte mehr Offset reinbringen, daß deine Widerstände sowieso
> ungenauer sind und mehr rauschen, und jede allerkleinste Störung
> vonaussen grösser ist als das 1 bit.

Ich danke dir für die ganzen detaillierten Hinweise und Vorschläge, aber 
ich denke ich werde mit dem LT1013 gut bedient sein^^

von Achim S. (Gast)


Lesenswert?

Petr t. schrieb:
> Kann ich so rechnen ?

Ja: überlegst du, welche Verstärkung du benötigst (595). Dann rechnest 
du daraus das Widerstandsverhältnis aus und kommst z.B. auf 594k und 1k.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.