Forum: Analoge Elektronik und Schaltungstechnik Stromsensor stabilisieren ACS712x


von Thomas W. (thomas_80)


Lesenswert?

Hallo zusammen,

habe hier als Stromsensor einen ACS712 30A bidirektional, der hängt an 
einem 5V Spannungsregler L7805. Recht simpel gestaltet alles.

Nun zeigt der ACS sehr starke Schwankungen des Nullpunktes, was einen 
Fehler von +/- 50 ... 100 mA ergibt. Schwanken tut er auf so fast alles, 
Temperatur, Lage, Magnetfelder...?!

Ist das bekannt? Gibt's da irgend ne gängige Abhilfe oder Alternative?
Strommessung per Shunt muss leider ausfallen.


Besten Dank!
: )

Beitrag #7606516 wurde vom Autor gelöscht.
von Obelix X. (obelix)


Lesenswert?

Wie doll schwankt deine Betriebsspannung?

von Paul B. (paule201)


Lesenswert?

Der Sensor gibt 66mV pro Ampere aus. Das macht 6,6mV bei 100mA.
Mit was misst du diese Spannung des ACS? Ein Arduino ADC hat 10bit, 
macht 1024 Werte von 0-1023. Bei  5V Betriebsspannung ergibt das 
4,88mV/bit. Wenn der nur um 3 bit wackelt hast du deine +-100mA.

Punkt 1: gleitenden Mittelwert in Software bilden
Punkt 2: Besseren ADC einsetzen, die gibts zuhauf mit 12-24bit per SPI 
oder I2C. Alles über 12bit braucht einen guten Aufbau, alles ab 16bit 
einen sehr sehr guten Aufbau mit getrenntem Analog und Digitalteil auf 
der PCB und einigen Filtern.

Also kauf dir zum Testen einen ADS1115 als Breakout-Bord, damit dürfte 
es schon viel besser werden.

Oder verwirf den ACS712 und nimm einen 75mV Shunt Widerstand  + INA226. 
Der ist genau für sowas gebaut: Genaue Strommessung.
https://www.mouser.de/datasheet/2/54/css2h_2512-1862180.pdf
Der 2.3mOhm sollte passen für deine 30A
Aber auch hier gilt: Gutes Layout und Filter machen die Genauigkeit aus.

von Gerrit W. (gerrit198)


Lesenswert?

Ich finde eine Schwankung von +/-100mA bei einem +/-30A Sensor nicht 
besonders viel: ca. 0,3% vom Nennwert.
Wenn du da was wirklich besseres haben willst (also noch weniger 
Abhängig von externen Einflüssen), musst du schon tief in die Tasche 
greifen.
Brauchst du denn wirklich die volle Bandbreite -30...+30A und dazu die 
hohe Genauigkeit in kleinen Messbereichen?

von Vanye R. (vanye_rijan)


Lesenswert?

> Ich finde eine Schwankung von +/-100mA bei einem +/-30A Sensor nicht

Ich kenne den Sensor hier nicht, aber ich haette schon gedacht das so 
20-30mA erreichbar ist bei einem guten Aufbau. Aber natuerlich ist man 
ab 100mA schon im Bereich des Finetunings.

Vanye

von Thomas W. (thomas_80)


Angehängte Dateien:

Lesenswert?

Danke Paul und Gerrit,

ja in der Tat. So gesehen liegt es in dem von euch genannten 
Schwankungsbereich. Nutze dahinter einen Adafruit Feather M0 Adalogger 
mit ATSAMD21G18 ARM Cortex M0 Prozessor. Die Bitauflösung der Analog-Ins 
hab ich gerade nicht zur Hand.

Gleitenden Mittelwert habe ich zum Teil umgesetzt. Das Programm 
speichert jede 1  Sekunden (= 1 Programmdurchlauf) einen Messwert. 
Dieser wird als Mittelwert aus je 500 ... 700 Einzelmessungen erfasst. 
Im Postprocessing dann nochmal als gleitender Mittelwert über 10 min = 
600 s geglättet. Das sieht dann so wie im Bild gezeigt aus.

Zum Messbeispiel: Gemessen wurde der Ladestrom einer kleinen Solarzelle 
in einen 12V KfZ-Akku. Nachts, also zw. 18 und 6 Uhr sollte definitv nur 
der Eingebedarfsstrom des Ladereglers laufen. Per Multimeter auf 8 mA 
gemessen. Die Schwankungen zw. 9 und 18 Uhr sind die des Ladestroms, 
hier bei schlechtem Wetter.

Lässt sich da noch was machen oder ist das tatsächlich die Grenze des 
Machbaren?

: Bearbeitet durch User
von Thomas W. (thomas_80)


Lesenswert?

Gerrit W. schrieb:
> Brauchst du denn wirklich die volle Bandbreite -30...+30A und dazu die
> hohe Genauigkeit in kleinen Messbereichen?

Ja schon gern. Ist ein Eigenbauprojekt der Ladezustandsüberwachung des 
Akkus im Wohnmobil.
+/- 30A unbedingt, da dies schnell erreicht ist beim Laden und allg. 
Nutzen.

Genauigkeit um wenige mA: ja! Besonders um z.B. Festzustellen, ob sich 
der Eigenverbrauch der Solarladeregler lohnt, gerade im Winter wo nur 
wenig Strom per Solar entsteht. Für die Bilanzbildung über mehrere Tage 
und Wochen hinweg summiert sich dieser Fehler schnell auf und führt zu 
unbrauchbaren Ergebnissen.

: Bearbeitet durch User
von Paul B. (paule201)


Lesenswert?

Thomas W. schrieb:
> Ja schon gern. Ist ein Eigenbauprojekt der Ladezustandsüberwachung des
> Akkus im Wohnmobil.

Habe ich auch mal gebaut, allerdings mit Shunt und INA226. Ist 
wesentlich genauer, lässt sich gut justieren und es gibt reichlich Libs 
dafür.
Ich habe damals einen INA226 und einen Pegelwandler (PCA9600) auf eine 
kleine Platine gesetzt und direkt an einem 75mV 100A Shunt verbaut. Auf 
meiner Auswerteplatine war der uC und ebenfalls ein PCA9600, der den 
Pegel wieder zurückübersetzt hat. Die Strecke dazwischen war ca. 5m. Das 
hat wunderbar geklappt. Der INA misst auch gleich die Boardspannung mit 
und gibt dir die Leistung mit aus. Ich würde es wieder so lösen.

von Vanye R. (vanye_rijan)


Lesenswert?

> Genauigkeit um wenige mA: ja!

Das kannst du aber ohne Shunt vergessen.

Vanye

von GHz N. (ghz-nerd)


Lesenswert?

Da es sich im Grunde um einen Hall Sensor handelt, würde ich 
insbesondere auf folgendes achten:

1) thermisch stabiliseren (gegen Temperatur bedingten Drift)
2) magnetisch abschirmen (gegen Einflüsse von äusseren Magnetfeldern) - 
idealerweise mit Mu-Metall

von Rainer W. (rawi)


Lesenswert?

Vanye R. schrieb:
> Ich kenne den Sensor hier nicht, aber ich haette schon gedacht das so
> 20-30mA erreichbar ist bei einem guten Aufbau.

Der eigentliche Sensor ist ein Magnetfeldsensor ohne irgendwelche 
Umgebungsfeldkompensation. Da darf man sich nicht wundern, wenn der auf 
Magnetfelder reagiert.
Wie empfindlich der ACS712 auf Umweltgrößen reagiert, steht im 
Datenblatt.

Thomas W. schrieb:
> Schwanken tut er auf so fast alles, Temperatur, Lage, Magnetfelder...?!

Lage ändert aus Sicht des Sensors die Richtung des Erdmagnetfeldes.

: Bearbeitet durch User
von Vanye R. (vanye_rijan)


Lesenswert?

> Der eigentliche Sensor ist ein Magnetfeldsensor ohne irgendwelche
> Umgebungsfeldkompensation.

klar, aber die ueblichen Stromzangenmultimeter die auch DC koennen
liegen ja auch in etwa so in der Groessenordnung.

Ich selber hab den iProber hier. Der versinkt auch so ab
5mA im Rauschen obwohl der vermutlich aufwendiger gerarbeitet
ist und von absoluter Genauigkeit reden wir da garnicht.

Vanye

von Jörg R. (solar77)


Lesenswert?

Vanye R. schrieb:
>> Der eigentliche Sensor ist ein Magnetfeldsensor ohne
> irgendwelche
>> Umgebungsfeldkompensation.
>
> klar, aber die ueblichen Stromzangenmultimeter die auch DC koennen
> liegen ja auch in etwa so in der Groessenordnung.
>
> Ich selber hab den iProber hier. Der versinkt auch so ab
> 5mA im Rauschen obwohl der vermutlich aufwendiger gerarbeitet
> ist und von absoluter Genauigkeit reden wir da garnicht.

Es gibt hier im Forum einen sehr interessanten und ausführlichen 
Kommentar zum Thema ASC712, ich meine vom User „Manfred (Gast)“, bin mir 
da aber nicht ganz sicher. Der Artikel liegt schon länger zurück. Darin 
ging es um Rauschen, Drift usw. usw., wie gesagt sehr ausführlich und 
mit Grafiken. Leider finde ich den Thread nicht mehr.

Spannungsänderung der Versorgungsspannung, Temperaturschwankungen (vor 
allem bei sinkender Temperatur) und andere Umgebungseinflüsse wirken 
sich unmittelbar auf die Ausgangsspannung des Sensors aus.

Nachteilig ist auch dass nicht das ganze Fenster der Bandbreite der 
Versorgungsspannung ausgenutzt wird, was wohl technisch bedingt ist. Für 
die +/- 30A stehen nur jeweils ca. 2V als Auswertung zur Verfügung, also 
von 2,5V (Vcc/2) bis ca. 4,5V für +30A bzw. 2,5V bis 0,5V für-30A, was 
eben die 66mV/A ergibt.

Selbst ein AD-Wandler mit höherer Auflösung würde daran kaum etwas 
ändern.

Kurz gesagt ist der ASC712 nicht für das vorhaben des TO geeignet. Da 
schließe ich mich hier einigen Vorrednern an.

: Bearbeitet durch User
von Dietrich L. (dietrichl)


Lesenswert?

Vanye R. schrieb:
>> Der eigentliche Sensor ist ein Magnetfeldsensor ohne irgendwelche
>> Umgebungsfeldkompensation.
>
> klar, aber die ueblichen Stromzangenmultimeter die auch DC koennen
> liegen ja auch in etwa so in der Groessenordnung.

Ja, und da musst du bei so kleinen Strömen nach jeder Lageänderung neu 
nullen.

von Manfred P. (pruckelfred)


Lesenswert?

Thomas W. schrieb:
> Nun zeigt der ACS sehr starke Schwankungen des Nullpunktes, was einen
> Fehler von +/- 50 ... 100 mA ergibt.

Also weniger als 6mV, das liegt im Bereich dessen, was er laut 
Datenblatt rauschen darf. Der ACS712-30 kann diese Anforderung nach 
50mA-Genauigkeit nicht erfüllen.

Einen ACS712-5 habe ich in meiner Löstation, weniger als 5% Abweichung 
kann ich auch da nicht vertrauen.

Paul B. schrieb:
> Ich habe damals einen INA226 und

Ich habe Aufbauten mit dem INA219, Deinem ähnlich, und war von dessen 
Genauigkeit fasziniert. Natürlich high-side, man will nicht unbedingt 
GND verschieben.

Jörg R. schrieb:
> Es gibt hier im Forum einen sehr interessanten und ausführlichen
> Kommentar zum Thema ASC712, ich meine vom User „Manfred (Gast)“, bin mir
> da aber nicht ganz sicher. Der Artikel liegt schon länger zurück. Darin
> ging es um Rauschen, Drift usw. usw., wie gesagt sehr ausführlich und
> mit Grafiken. Leider finde ich den Thread nicht mehr.

Ich kann mich nicht an Details erinnern, ich habe mal die 20A-Version 
eingesetzt, um nur eine ungefähre Schwelle zu erkennen, Strom oder kein 
Strom bei etwa 4A-AC.
Beitrag "Re: Wechselstrom überwachen - so oder so?"

Ganz sicher gibt es weitere Threads, wo ich mal den Shelvin verlinkt 
habe:
http://shelvin.de/den-acs-712-5a-strom-sensor-am-arduino-auslesen/

> Nachteilig ist auch dass nicht das ganze Fenster der Bandbreite der
> Versorgungsspannung ausgenutzt wird, was wohl technisch bedingt ist.

Bei Betrieb in nur einer Richtung kann man 'tricksen': 2,5 Volt für 
keinen Strom und 1 Volt für vollen Strom. Das durch 2 geteilt und den 
ATMega328 mit der internen 1,1V-Referenz laufen lassen. Bleibt trotzdem 
ein Schätzeisen, für viele Anwendungen ausreichend.

von Thomas W. (thomas_80)


Lesenswert?

Dann danke ich euch allen für Eure Beiträge. Das Bild das sich ergibt 
ist klar. Dann wird's wohl ein Umbau von Hallsensor auf Shunt werden.

Um beim konkreten Beispiel zu bleiben: bei einer Konfiguration von 
100A/75mV-Shunt und INA226, bei welcher Messunsicherheit in mA wird man 
da in etwa landen? Die Weitergabe der Daten per I²C an den Arduino 
sollte ja keine Fehler mehr beisteuern, oder?

von Vanye R. (vanye_rijan)


Lesenswert?

> Nachteilig ist auch dass nicht das ganze Fenster der Bandbreite der
> Versorgungsspannung ausgenutzt wird, was wohl technisch bedingt ist.

Das ist doch gut. Ohne negative Versorgung kann der auch nicht
bis an die Rails rangehen wie jeder OPV. Das wuerde ich also
eher positiv sehen.

Vanye

von Paul B. (paule201)


Lesenswert?

75mV bei 100A bedeutet 0.75uV bei 1mA. Der INA226 hat ein LSB von 2.5uV. 
Das sind schon mal 4mA Delta wenn das LSB sich nur um 1 ändert.
Bisher war nur von 30A die Rede, für die 100A würde ich auf den INA228 
wechseln, der ist gerade bei sehr kleinen Strömen besser geeignet da er 
weniger Leckströme und weniger Offset hat. Kostet natürlich auch eine 
Mark mehr. Der hat 20bit, du bekommst als eine höhere Auflösung. Der hat 
zwei ADC Bereiche, einmal von -163.84mV bis 163.84mV und einen kleineren 
von -40.96mV bis 40.96mV. Im größeren Bereich hat das LSB 312.5nV 
(0.3125uV). Damit kannst du theoretisch bis auf weniger als 1mA 
auflösen.

ABER:
1.
Auflösung und Genauigkeit werden oft durcheinandergebracht:
https://www.mikrocontroller.net/articles/Aufl%C3%B6sung_und_Genauigkeit

2.
In dem Bereich spielt die Temperatur eine wesentliche Rolle bei der 
Messung. Das müsstest du kompensieren. Der INA228 hat dafürein Register, 
in das du einen Temperaturkoeffizienten eintragen kannst.

3. Dein Shunt hat auch eine Fertigungstoleranz, da wirst du tief in die 
Tasche greifen müssen wenn es besser als 0,5% werden soll.
Gekaufte Produkte sind kaum besser. 8mA Offset, eingesetzt in der 
Industrie:
https://www.isabellenhuetteusa.com/wp-content/uploads/2022/07/Datasheet-IVT-S-V1.03.pdf

Meine Empfehlung: Kauf dir einen guten 30A Shunt, gib dich erstmal mit 
+-10mA zufrieden und nimm zum starten einen INA237 (die 16bit Version 
des INA228 und deutlich preiswerter, Ansteuerung identisch, bis auf das 
optionale TEMPCOM Register beim INA228) und wenn alles läuft kannst du 
immer noch den INA237 gegen den IN228 ersetzen.
Du könntest natürlich auch den Messbereich der INAs dynamisch 
umschalten, da holt man untenrum eventuell noch was raus.

Mal eine Gegenfrage: Welche Messgeräte hast du zur Verfügung um deine 
Messungen zu verifizieren? Die INAs haben ein Kalibrierwert, den kann 
man trimmen bis es passt. -100 bis 100A bei 1mA Genauigkeit....für sowas 
haben wir hier Messgeräte im Wert eines oberen Mittelklassewagens mit 
beheizten Referenzen.

Bei der Übertragung ist der Wert schon digitalisiert, da passiert nichts 
mehr. Man kann natürlich die Übertragung noch absichern, falls man 
Probleme oder Zweifel hat das die Werte plausibel rüber kommen.

von Rainer W. (rawi)


Lesenswert?

Thomas W. schrieb:
> Strommessung per Shunt muss leider ausfallen.

Ein 8-beiniges IC kannst du in den Strompfad einschleifen, aber einen 
Shunt mit 4-Leiteranschluss geht nicht?

von Nils S. (wall-e)


Lesenswert?

Gibt es die Möglichkeit die beiden Messaufgaben zu trennen? Ein 
Stromsensor mit 30A für den Hauptlade- und Entladestrom sowie ein 
kleinerer Sensor mit z.B. 1 A für den Ladestrom durch die Solarzelle.
Andere Möglichkeit: Echte Hall-Sensoren in einem Eisenkern. Zwei Stück 
davon, einer für den kleinen und einer für den großen Strom. Der kleine 
wird beim großen Strom gnadenlos überfahren, aber das können die Dinger 
unbegrenzt ab.

von Thomas W. (thomas_80)


Lesenswert?

Jetzt wird es spannend! Die ACSs sind nicht so recht geeignet, für DC 
Messungen, das habe ich nun verstanden. Auch wenn ich nicht so viel 
ändern wollte, wird es wohl auf ein Neudesign der Strommessung 
hinauslaufen...

Der Messbereicht bleibt weiterhin bei max 30A evtl. später mal bis 50A. 
Dann ist aber definitiv Schluss. Allerdings brauch ich ne satte 
Überstromreserve im 200A-Bereich für 1...5s. Wenn es dabei den 
Messbereich übersteuert ist das kein Problem. Nur darf nix abrauchen ;)

Die mA-Messung ist ein Sonderfall, den ich mit meinem bisherigen Setup 
erreichen wollte. Das ist nun nix geworden. Dafür viel praktische 
Erfahrung, gute Hinweise und alternative Lösungen von euch. Merci!

10 mA Messabweichung lege ich jetzt als meine Genauigkeitsgrenze fest. 
Alles weitere darunter, wird dann wohl ein neues Projekt, wenn das hier 
fertig ist.

von Harald W. (wilhelms)


Lesenswert?

Thomas W. schrieb:

> Nun zeigt der ACS sehr starke Schwankungen des Nullpunktes, was einen
> Fehler von +/- 50 ... 100 mA ergibt. Schwanken tut er auf so fast alles,
> Temperatur, Lage, Magnetfelder...?!

Die Frage ist m.E. ob ein magnetischer Sensor überhaupt eine derart
genaue Messung machen kann, zumal er ja nicht stationär montiert ist.

von Manfred P. (pruckelfred)


Lesenswert?

Thomas W. schrieb:
> Die ACSs sind nicht so recht geeignet, für DC
> Messungen, das habe ich nun verstanden.

Leider falsch verstanden, natürlich sind die für DC geeignet. Dein 
Solarzeug ist aus Sicht der Elektronik schnarchlangsam, da darf der 
Filterkondensator (Pin 6) groß werden.

Du musst seine Grenzen verstehen, ob diese für Deine Anwendung 
ausreichend sind. Das gilt für jedes Verfahren, von meinem China-DMM für 
4 €uro erwarte ich nicht weniger als 1..2%, dafür habe ich ein Fluke zum 
hundertfachen Preis.

Unabhängig vom Meßverfahren: Wenn ich Zeit habe, weil sich mein Meßwert 
langsam ändert, addiere ich z.B. 10 Messwerte, werfe den größten und 
kleinsten weg und teile durch 8.

> Auch wenn ich nicht so viel
> ändern wollte, wird es wohl auf ein Neudesign der Strommessung
> hinauslaufen...

Texas INA_irgendwas sind sehr gut, aber können trotzdem nicht zaubern.

Die Ausführungen von Paul in 
Beitrag "Re: Stromsensor stabilisieren ACS712x" beschreiben das 
sehr gut, gerne mehrfach lesen.

von Thomas W. (thomas_80)


Lesenswert?

Manfred P. schrieb:
> Die Ausführungen von Paul in
> Beitrag "Re: Stromsensor stabilisieren ACS712x" beschreiben das
> sehr gut, gerne mehrfach lesen.

Ja genau. Paul hat gute Hinweise gegeben. Wie man den Beitrag allerdings 
abwerten kann, verstehe ich nicht so recht. Auch die massive Abwertung 
hin auf meine initiale Frage. Kann mir das einer erklären? Danke auf 
alle Fälle an alle für die Rege Diskussion und die hilfreichen 
Antworten!
: )


Manfred P. schrieb:
> Leider falsch verstanden, natürlich sind die für DC geeignet. Dein
> Solarzeug ist aus Sicht der Elektronik schnarchlangsam, da darf der
> Filterkondensator (Pin 6) groß werden.

Wenn ich das Datenblatt richtig verstehe, ist Filterkondensator (Pin 6) 
in der lage das Rauschen des Ausgangssignals zu reduzieren, doch Drift 
durch Temperatur und externe Magnetfelder wohl kaum.

: Bearbeitet durch User
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.