Forum: Analoge Elektronik und Schaltungstechnik Strommessung mit AVR (0,1mA bis 100mA)


von Tim 🔆 (solarlicht)


Lesenswert?

Ich möchte mit einem AVR Ströme von 0,1 bis 100mA messen.

Die Auflösung (sowie die Genauigkeit) sollte bis 10mA bei 0,1mA liegen, 
von 10 bis 100mA genügen mir 1mA.

Den Shunt möchte ich wegen des Spannungsabfalls möglichst klein halten, 
da der Verbraucher mit nur 0,8 bis 1,3 Volt versorgt wird. Ich dachte an 
0,1 Ohm.

Meine Frage: Kann ich einfach zwei ADC-Eingänge eines handelsüblichen 
AVRs verwenden und den Strom aus der Spannungsdifferenz berechnen? Oder 
machen mir Störungen meine Messung der geringen Spannungsdifferenz 
zunichte?

Sicher eine blöde Frage, aber ich habe so was noch nie gemacht.

von Achim M. (minifloat)


Lesenswert?

Tim 🔆 schrieb:
> Ströme von 0,1 bis 100mA messen.

Tim 🔆 schrieb:
> Ich dachte an 0,1 Ohm.

0,1mA * 0,1Ω = 0,01mV = 10μV

Tim 🔆 schrieb:
> Die Auflösung (sowie die Genauigkeit)

Da bleiben dir zuwenig ADC-counts übrig.

Nimm einen Mikrocontroller mit eingebautem Differenzverstärker.

Wenn es kein Problem ist, Strom am Minus des Verbrauchers zu messen, 
kann es auch ein älterer AVR mit Verstärker gegen GND sein.

Eine passende Referenzquelle für den ADC musst du auch verwenden, weil 
sonst alles ratiometrisch zu AVCC ist.

mfg mf

von Εrnst B. (ernst)


Lesenswert?

Es gibt AVRs mit umschaltbarem Verstärker am ADC, ATTiny45/85 als 
kleinster Vertreter. Der hätte 1× oder 20× Verstärkung, damit könnte man 
eine Messbereichsumschaltung machen. Ob das für die gewünschte Auflösung 
reicht, und ob dein Shunt klein genug wird, kannst du für deinen 0.1er 
Vorschlag ja mal ausrechnen.

von Christian S. (roehrenvorheizer)


Lesenswert?

Tim 🔆 schrieb:
> Ich dachte an
> 0,1 Ohm.

Hallo,

ich würde erst mal die geringe Spannung, die am Shunt abfällt, mittels 
eines OPV in nichtinvertierender Schaltung verstärken, um sie dann erst 
auf den ADC-Eingang zu geben. DAfür habe ich mir z.B. MCP6002 
ausgesucht, wobei ein Offsetabgleich nicht verkehrt wäre. Allerdings 
gibt es bessere Typen, was niedrige Offsetspannung angeht.

Parallel zum Shunt würde ich noch antiparellele Dioden vorsehen.

mfg

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

Ich würde die Spannung am Shunt in 2 oder 3 parallele 
OP-Verstärkerstufen geben (z.B. *200, *2000, *20000) und das mit je 
einem ADC-Eingang auswerten. Gerne mit Trimpotis in Reihe zum manuellem 
Abgleich.

von Wf88 (wf88)


Lesenswert?

Bruno V. schrieb:
> Gerne mit Trimpotis in Reihe zum manuellem
> Abgleich.

Die dann bei Zeiten das Spinnen anfangen... Mit Festwiderständen und 
dann mit festen Werten + Korrektur im EEPROM arbeiten ist sinnvoller.

von Rainer W. (rawi)


Lesenswert?

Tim 🔆 schrieb:
> Ich möchte mit einem AVR Ströme von 0,1 bis 100mA messen.

Auf welchem Pegel bzgl. der Versorgung des uC liegt dabei dein Shunt?

von Peter D. (peda)


Lesenswert?

Bruno V. schrieb:
> Gerne mit Trimpotis in Reihe zum manuellem
> Abgleich.

Den EEPROM darf man ruhig benutzen und Gain+Offset für jeden Bereich als 
float abspeichern.

Ich habe in einem Projekt auch eine manuelle Kalibrierung 
einprogrammiert. Dazu muß man über die UART den Meßwert für 2 Spannungen 
eingeben und der MC berechnet daraus Gain+Offset (Geradengleichung). Ob 
der kleinere Wert zuerst kommt, ist egal, float rechnet ja signed. Man 
muß natürlich den ADC-Wert (unsigned) vor der Berechnung nach float 
casten.
Mit einem Store-Kommando werden sie im EEEPROM abgelegt, optional mit 
String (Name, Datum).

: Bearbeitet durch User
von Dieter D. (Firma: Hobbytheoretiker) (dieter_1234)


Lesenswert?

Andere Ansaetze zur Messung:

Fertige Bausteine waeren der INA260 oder aehnliche.

Oder mit einem Hallsensor und ein paar Wicklungen was stricken.

von Bruno V. (bruno_v)


Lesenswert?

Peter D. schrieb:
> Den EEPROM darf man ruhig benutzen und Gain+Offset für jeden Bereich als
> float abspeichern.

Natürlich geht das. Aber der TO ist völliger Anfänger. Da ist jeder 
Teilaspekt eine Herausforderung, auch eine Schaltung mit so einer 
Verstärkung.

Beim manuellen Abgleich bekommt man ein Gefühl für die Empfindlichkeit, 
es erleichtert die ADC-Skalierung und kommt komplett ohne EEProm aus.

Nach 30 oder 40 Jahren vergessen wir gerne unsere Startschwierigkeiten.

von Gerhard H. (hauptmann)


Lesenswert?

Dieter D. schrieb:
> Fertige Bausteine waeren der INA260

Auf 0,1mA kommt der glaube ich nicht, ebensowenig der CT220 den ich gern 
verwende. Vielleicht lässt sich ja noch was an den Ansprüchen drehen :)

Als Controller einer Selbstbaulösung mit Shunt könnte ich Dir die neuen, 
analog-affinen AVR-EA 8Bitter mit Differential 12Bit ADC + 16fach PGA 
Verstärker ans Herz legen.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Tim 🔆 schrieb:
> : Kann ich einfach zwei ADC-Eingänge eines handelsüblichen AVRs
> verwenden und den Strom aus der Spannungsdifferenz berechnen

Nein.

0.1mA an 0.1 Ohm sind 10uV, wenn deine ADC Eingänge bis 1.3V messen 
müssen und 10 bit Auflösung haben lösen sie nur 1.3mV auf.

Das hättest du aber selber ausrechnen können.

Moderne AVR bieten PGA Differenzverstärkereingänge und 12 bit ADC, und 
können die die Differenz von bis zu 10mV am shunt direkt messen und z.B. 
um 16 auf 0.16V verstärken und daher 16uV am shu t auflösen. Reicht auch 
nicht ganz.

Daher ist ein externer OpAmp besser. Oder gar ein externer ADC

von Peter D. (peda)


Lesenswert?

Z.B. der ATmega1284 kann eine Verstärkung von 200 einschalten und 1,1V 
Referenz. Wie stabil dann eine Messung ist, weiß ich nicht.

von Gerhard H. (hauptmann)


Lesenswert?

Peter D. schrieb:
> Z.B. der ATmega1284 kann eine Verstärkung von 200 einschalten und 1,1V
> Referenz.

Freilich nur in nativer 10 Bit Auflösung.
Bei den XMegas fände sich noch 12 Bit und 64fach.

von Hermann W. (hermannw)


Lesenswert?

Tim 🔆 schrieb:
> Ich möchte mit einem AVR Ströme von 0,1 bis 100mA messen.
>
Das geht schon. Ich habe mal die Differential-Messung eines T861 mit der 
maximalen Verstärkung V=32 untersucht:
Beitrag "Re: ADC-Differential-Messung"
Bei dem gemessenen Tiny861 war der Fehler unter einem Rohwert, wenn man 
nicht die Rohwertgrenzen voll ausnutzt. Weiter oben in dem Threat ist 
ein Beispiel für eine Strommessung.
Bei Vref=1,1V würde ein Shunt von 0,33 Ohm passen.

von Tim 🔆 (solarlicht)


Lesenswert?

Danke für die vielen hilfreichen Antworten.

Der Shunt darf im Minus-Zweig sein, das macht es natürlich einfacher.

Bruno V. schrieb:
> Ich würde die Spannung am Shunt in 2 oder 3 parallele
> OP-Verstärkerstufen geben (z.B. *200, *2000, *20000) und das mit je
> einem ADC-Eingang auswerten. Gerne mit Trimpotis in Reihe zum manuellem
> Abgleich.

Das scheint die für mich am einfachsten umzusetzende Lösung. Die 
Verstärkung kann ich ja auch umschalten. Meine Befürchtung ist aber 
immer noch, dass ich mir bei den wenigen µV irgendwelche Störungen mit 
verstärke und nur ein Gezappel am Ausgang herauskommt.

Eine Option wäre für mich auch irgendein fertiges Modul, das ich mit dem 
AVR auslesen kann (auch RS232). Das sollte dann aber ohne Modifikation 
verwendbar sein. Die INA... Stromsensoren hatte ich mir schon angesehen.

Hermann W. schrieb:
> Das geht schon. Ich habe mal die Differential-Messung eines T861 mit der
> maximalen Verstärkung V=32 untersucht:
> Beitrag "Re: ADC-Differential-Messung"
> Bei dem gemessenen Tiny861 war der Fehler unter einem Rohwert, wenn man
> nicht die Rohwertgrenzen voll ausnutzt. Weiter oben in dem Threat ist
> ein Beispiel für eine Strommessung.
> Bei Vref=1,1V würde ein Shunt von 0,33 Ohm passen.

Danke für den Tipp. Ich habe bei mir ja Bedenken wegen Störungen, sehe 
aber dass du 100uF und 4k7 am Eingang hast. Schnell muss meine Messung 
übrigens nicht sein.

Edit: Ich mache einfach mal einen Versuchsaufbau mit einem OpAmp und 
einem Shunt. Dann melde ich mich ggf. wieder.

: Bearbeitet durch User
von Bruno V. (bruno_v)


Lesenswert?

Tim 🔆 schrieb:
> Eine Option wäre für mich auch irgendein fertiges Modul, das ich mit dem
> AVR auslesen kann (auch RS232). Das sollte dann aber ohne Modifikation
> verwendbar sein.

Hier im Forum haben einige den µCurrent Gold (erster google link: 
https://www.welectron.com/EEVBlog-uCurrent-GOLD-Praezisions-Stromadapter-fuer-Multimeter). 
Ist natürlich mit Kanonen auf Spatzen. Prinzipiell findet man sowas auch 
in billiger. Und Schaltplan/Stückliste/Layout sind afak frei zugänglich.

Der macht z.B. aus 1mA dann 1V.

: Bearbeitet durch User
von Jörg R. (solar77)


Lesenswert?

Bruno V. schrieb:
> Tim 🔆 schrieb:
>> Eine Option wäre für mich auch irgendein fertiges Modul, das ich mit dem
>> AVR auslesen kann (auch RS232). Das sollte dann aber ohne Modifikation
>> verwendbar sein.
>
> Hier im Forum haben einige den µCurrent Gold (erster google link:
> 
https://www.welectron.com/EEVBlog-uCurrent-GOLD-Praezisions-Stromadapter-fuer-Multimeter).
> Ist natürlich mit Kanonen auf Spatzen. Prinzipiell findet man sowas auch
> in billiger. Und Schaltplan/Stückliste/Layout sind afak frei zugänglich.
>
> Der macht z.B. aus 1mA dann 1V.

Eher 1mV/mA. Sonst müsste er bei 100mA 100V ausgeben;-)

: Bearbeitet durch User
von Tim 🔆 (solarlicht)


Lesenswert?

Bruno V. schrieb:
> Hier im Forum haben einige den µCurrent Gold

Es kann ja nicht schaden, mir die Schaltung mal anzusehen.

Zur Zeit messe ich die Ströme mit zwei 34401A und die Spannung mit einem 
weiteren. So genau brauche ich es gar nicht. Um nicht jedes mal alles 
aufzubauen zu müssen, wollte ich mir eine kompakte Stand-alone-Lösung 
bauen.

Ich habe eben nachgesehen, LM662CN und TS27M4CN hätte ich da. Ein 0,1 
Ohm Widerstand sollte sich auch auffinden lassen. Mit denen kann ich das 
ja erst mal testen.

von Sebastian W. (wangnick)


Lesenswert?

Tim 🔆 schrieb:
> Es kann ja nicht schaden, mir die Schaltung mal anzusehen.

Der hat allerdings manuell umschaltbare Shunts. Es gibt da aber auch 
eine Abwandlung mit automatisch zuschaltenden Shunts ...

Ich würde auch immer eher Strom so in Spannung wandeln, dass man dann 
Oszilloskop oder Picoscope o.ä. benutzen kann, ohne dass da noch ein AVR 
zwischenhängt.

LG, Sebastian

von Bruno V. (bruno_v)


Lesenswert?

Jörg R. schrieb:
>> Der macht z.B. aus 1mA dann 1V.
>
> Eher 1mV/mA.

Das auch. Er hat 3 Bereiche. Deinen Bereich bekommt der TO vermutlich 
noch so hin, ich meinte 1mV/µA (1V@1mA).

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Peter D. schrieb:
> Z.B. der ATmega1284 kann eine Verstärkung von 200 einschalten und 1,1V
> Referenz. Wie stabil dann eine Messung ist, weiß ich nicht.

Wackelt natürlich recht heftig. Ist aber kein Problem, dagegen gibt es 
ja schließlich Mittelwertfilter.

Zum Problem wird es erst, wenn man nicht nur relativ genau, sondern 
obendrein auch relativ schnell/häufig messen muß.

Aber zur nötigen Geschwindigkeit hat sich der TO ja nicht geäußert. 
Scheint also keinerlei Rolle zu spielen...

von Jörg R. (solar77)


Lesenswert?

Bruno V. schrieb:
> Jörg R. schrieb:
>>> Der macht z.B. aus 1mA dann 1V.
>>
>> Eher 1mV/mA.
>
> Das auch. Er hat 3 Bereiche. Deinen Bereich bekommt der TO vermutlich
> noch so hin,

Das ist nicht „mein“ Bereich. Und wenn Du von mA schreibst gehe ich auch 
davon aus dass Du mA meinst, also auch den Messbereich des Moduls.

> ich meinte 1mV/µA..

Eben.

von Jörg R. (solar77)


Lesenswert?

Bruno V. schrieb:
> Jörg R. schrieb:
>>> Der macht z.B. aus 1mA dann 1V.
>>
>> Eher 1mV/mA.
>
> Das auch. Er hat 3 Bereiche. Deinen Bereich bekommt der TO vermutlich
> noch so hin,

Das ist nicht „mein“ Bereich. Und wenn Du von mA schreibst gehe ich auch 
davon aus dass Du mA meinst, also auch den entsprechenden Messbereich 
des Moduls.

> ich meinte 1mV/µA..

Eben.

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.