Forum: Mikrocontroller und Digitale Elektronik Strommessung mit AVR onboard-ADC


von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich bin mir sicher, zu dem Thema gibts schon hunderte Antworten und ich 
habe glaube ich schon mal gefragt - aber ich werd einfach nicht schlau, 
welches die beste Möglichkeit ist, 15..20A möglichst verlustarm mit dem 
AVR-ADC zu messen, also ohne extra Stromwandler oder externe OPVs. 
Eigentlich müsste der AVR mit seiner Gain-Stufe alles dabeihaben.

Daher mal die Frage völlig ohne Bias: Welche ist die beste und am besten 
erprobte Methode, 15..20A max. möglichst verlustarm und gut aufgelöst 
mit dem onboard-ADC eines AVR/ATMega zu messen? Gibts dafür erprobte 
Schaltungsvorschläge?

Danke!

von -gb- (Gast)


Lesenswert?

Ein ADC misst erstmal nur Spannung. Du brauchst also einen Widerstand 
über dem dann eine zum Strom proportionale Spannung abfällt und die 
kannst du mit einem ADC messen.
Für so große Ströme gibt es aber auch Hallsensoren.

von Manfred (Gast)


Lesenswert?

Ben B. schrieb:
> 15..20A max. möglichst verlustarm und gut aufgelöst
> mit dem onboard-ADC eines AVR/ATMega zu messen?

Du bist schon lange hier im Forum. Kannst Du glaubhaft machen, nicht zu 
trollen?

Der A/D misst Spannung, Bezug ist Ground. Ein ATMega328 kann die interne 
Referenz 1,1V nutzen und auf rund 1000 Schritte auflösen.

Du legst also 0,055 Ohm in die Stromleitung, bekommst eine Auflösung von 
20 mA und 22 Watt Verlustleistung am Shunt.

Gefällt nicht, zu viel - dann muß wohl etwas mehr Aufwand getrieben 
werden.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Leute... ich habe nicht vor, 20A durch den AVR zu schicken, das könnt 
ihr mir ruhig glauben. Jedenfalls nicht solange er nett zu mir ist. Wenn 
er nicht nett zu mir ist, garantiere ich für nichts. Also daß man da 
einen Shunt für braucht ist mir klar.

Was mich interessiert sind brauchbare Dimensionierungen für einen 
Tiefpass falls jemand sowas über den Shunt geschaltet hat oder welche 
Einstellungen andere für die 10x gain stage des ATMega verwenden, ob die 
überhaupt zuverlässig arbeiten kann, weil viele OPVs haben ja Probleme 
in der Nähe der Betriebsspannung oder Masse zu arbeiten, und so eine 
Strommessung arbeitet ja direkt auf Masse plus Messspannung. Habe ich 
noch nie gemacht und würde mir gerne den Fehlschlag ersparen, wenn ich 
mit meinen Annahmen auf dem Holzweg sein sollte.

Mit Hallsensor-Messwandlern hatte ich in letzter Zeit ein wenig Sorgen, 
daß die Dinger mit der Zeit driften und würde es deswegen gerne mal ohne 
probieren.

von -gb- (Gast)


Lesenswert?

Ben B. schrieb:
> Was mich interessiert sind brauchbare Dimensionierungen für einen
> Tiefpass

Hängt von der Abtastrate und oder dem benötigen Frequenzbereich ab.

Ben B. schrieb:
> weil viele OPVs haben ja Probleme in der Nähe der Betriebsspannung oder
> Masse zu arbeiten

Dann nimm einen anderen oder setze einen Spannungsteiler davor.

von -gb- (Gast)


Lesenswert?

Den INA216 möchte ich noch empfehlen. Den kann man schön neben einen 
kleinen Messewiderstand setzen und bekommt eine Spannung für den ADC die 
du noch filtern kannst.

von M. K. (sylaina)


Lesenswert?

Ben B. schrieb:
> Ich bin mir sicher, zu dem Thema gibts schon hunderte Antworten und ich
> habe glaube ich schon mal gefragt - aber ich werd einfach nicht schlau,
> welches die beste Möglichkeit ist, 15..20A möglichst verlustarm mit dem
> AVR-ADC zu messen, also ohne extra Stromwandler oder externe OPVs.

Shunt-Widerstand in der Größenordnung 50mOhm. Aber ich würde hier auch 
eher Richtung INA281 und Co oder ACS712 und Co gehen.

von Ulrich P. (uprinz)


Lesenswert?

Ich vermisse noch eine Angabe zur initialen Aussage "verlustarm".

Was soll gemessen werden?
Strom klar, aber DC oder AC, Hausnetz oder irgendeine kleine Spannung?
Wie genau muss es sein? Geht es um einen BIAS Strom oder eine 
Endstufen-Überwachung? Muss jeder Peak erfasst werden, soll das nur 
Energie messen oder ist es eine elektronische Crowbar?

Das alles hat doch Einfluss auf die Umsetzung.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Gemessen werden soll DC aus sowas wie Photovoltaik, erwartet ziemlich 
glatt (ohne Ripple), maximal fünf Messungen pro Sekunde, wenn nicht 
jeder Peak erfasst wird, ist das nicht schlimm, Mittelwert sollte 
stimmen und die 20A sollten gut auf die 10Bit des AVR-ADC abgebildet 
werden.

Mit verlustarm meine ich so wenig Verluste wie möglich, so viel wie 
nötig.

Angenommen man nutzt die 1,1V Referenz und 10fach gain stage, bräuchte 
man 110mV für "Vollausschlag" des ADC, soweit korrekt? 0,11V*20A wären 
2,2W, das wäre absolut vertretbar. Widerstandswert des Stromshunts wären 
dann 0,0055 Ohm, mal schauen wie man das am besten realisiert.

Wo ich mir unsicher bin ist, ob die gain stage so dicht am 
Massepotential fehlerfrei arbeitet, also tatsächlich 110mV zwischen zwei 
ADC-Eingängen (einer Masse, einer über Messwiderstand und ggf. Tiefpass 
auch sehr nahe an Masse) auf 1,1V für den ADC umgesetzt werden.

von Steve van de Grens (roehrmond)


Lesenswert?

Ben B. schrieb:
> Eigentlich müsste der AVR mit seiner Gain-Stufe alles dabeihaben.

Nicht jeder ATMega hat eine Gain-Stufe.

Je niederohmiger der Shunt ist, umso geringer dessen Spannung, so dass 
das rauschen des Verstärkers mehr relevant wird. Keine Ahnung wie 
präzise du es brauchst.

> Was mich interessiert sind brauchbare Dimensionierungen
> für einen Tiefpass

Das kommt doch ganz auf den Anwendungsfall an. Man kann auch per 
Software filtern.

> und so eine Strommessung arbeitet ja direkt auf Masse plus Messspannung.

Nicht zwingend. Der Shunt kann auch in der positiven Versorgungsspannung 
liegen, dann misst man halt differenziell. Aber deine bedenken sind 
nicht ganz falsch, in den Grenzbereichen arbeiten Verstärker und ADC oft 
nicht mehr so linear wie im optimalen Arbeitsbereich.

: Bearbeitet durch User
von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

So richtig viel möchte ich per Software nicht filtern. Was ich ggf. 
mache ist mehrere Messungen, also 4, 8 oder 16 je nach dem wieviel Zeit 
ich dafür verschwenden darf, addiere alle Ergebnisse und schmeiße die 
unteren Bits weg.

Sicherlich könnte man den Shunt auch in eine Messbrücke auf halber 
Betriebsspannung einbauen bzw. die Messpannung an einem Zweig "ziehen" 
lassen, aber das ist das was ich mit Bias meine. Wenn sich alle sicher 
sind, daß Messen direkt an Masse besser ist als so eine Messbrücke, dann 
nehme ich lieber die Masse-Variante und umgegekehrt genauso. Genau das 
weiß ich im Moment nicht, weil ich sowas noch nicht ausprobiert habe. 
Ich dachte immer Messwandler sind das non-plus-ultra, aber sie haben 
eben auch ihre Macken.

von M. K. (sylaina)


Lesenswert?

Ich schlage immer noch den AC712 vor. Damit trennst du auch gleich die 
Mikrocontrollerschaltung galvanisch vom Strompfad und hast eine 
Isolationsfestigkeit von, ich glaub, 2100V.

von c-hater (Gast)


Lesenswert?

Steve van de Grens schrieb:

> Nicht jeder ATMega hat eine Gain-Stufe.

Das ist richtig, es gibt aber auch welche, die mehr als nur eine mit 10x 
haben.

Also, wo ist das Problem? Nimmt man einfach einen, der z.B. 20x hat 
(ATtiny25/45/85) oder gar 200x (ATmega16/32/644/644P/1284/1284P) und 
schon kann man den Shunt reduzieren und signifikant Verlustleistung 
sparen.

Ist doch easy und logisch: wenn ich eine Anwendung mit einem bestimmten 
Zweck habe, wähle ich den am besten geeigneten µC dafür aus, nicht den 
schlechtesten...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Warum ohne Stromwandler? Ich messe meine Solarpanels mit dem Sensor von 
Pollin:
https://www.pollin.de/p/aktiver-stromsensor-vacuumschmelze-t60404-n4646-x66282-15-a-5-v-180070
Der liefert VREF und Messwert, so das man mit einem Differnzeingang am 
AVR leicht messen kann - keine weiteren Bauteile nötig. Galvanisch 
getrennt ist er sowieso und die Rechnerei im AVR hält sich in Grenzen. 
Ich habe den ATTiny861A benutzt. Die Solarspannung misst er über 
Spannungteiler hochohmig direkt am Panel.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Mit Stromwandlern hatte ich ein paar Probleme mit dem Nullabgleich, vor 
allem wenn der Controller nicht weiß wann der Strom wirklich 
sichergestellt Null ist. Das driftet irgendwann weg und dann ist die 
ganze Messung für'n Eimer.

Die 200x gain stage ist mir zu empfindlich. In der Anwendung, in der ich 
momentan konkret über einen Versuch nachdenke, läuft direkt neben dem 
Controller ein DC/DC-Wandler, der mit bis zu 1,5kW Spitze einen Akku 
laden können soll. Da fange ich mir mit 200x zuviel Störungen von ein.

Wenn die 10x gain stage an Massepotential wirklich zuverlässig läuft, 
dann genügt mir das völlig. 2,2W Verlust sind gemessen an der 
Gesamtleistung so wenig, das geht in den Toleranzen unter. Ich hoffe 
nur, ich finde noch jemanden, der mir das sagen kann, also wie sich die 
10x gain stage auf Massepotential verhält, ob das funktioniert oder ob 
man das besser lassen soll weil zu dicht an der Betriebsspannung.

von Stefan F. (Gast)


Lesenswert?

Ben B. schrieb:
> Ich hoffe nur, ich finde noch jemanden, der mir das sagen kann

Probiere es doch aus, genau dafür gibt es doch Arduino Module und 
Steckbretter. Den Shunt mit dem großen Laststrom kannst du ja durch was 
kleineres simulieren.

von Wolfgang (Gast)


Lesenswert?

-gb- schrieb:
> Ein ADC misst erstmal nur Spannung. Du brauchst also einen Widerstand
> über dem dann eine zum Strom proportionale Spannung abfällt und die
> kannst du mit einem ADC messen.
> Für so große Ströme gibt es aber auch Hallsensoren.

Du widersprichst dir selbst. Für Ströme von 15..20A braucht man keinen 
Widerstand. Für Ströme in diesem Bereich ist z.B. der ACS712ELCTR-20A-T 
wie geschaffen, weil er genau dafür auf den Markt gebracht wurde,

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ben B. schrieb:
> Das driftet irgendwann weg und dann ist die
> ganze Messung für'n Eimer.

Das ist doch der Witz beim Wandler von Vacuumschmelze. Er liefert sein 
VREF mit. Da wandert bei mir nichts. Das gilt auch für 
Temperaturschwankungen. VREF landet dabei auf dem -Eingang und Signal 
auf den +Eingang. Wenn du möchtest, kannst du Hin- und Rückstrom messen, 
ich messe nur den Strom vom Panel in die Verbraucher.

von Gustl B. (-gb-)


Lesenswert?

Wolfgang schrieb:
> Du widersprichst dir selbst.

Nein. Wenn man seine Anforderungen

Ben B. schrieb:
> also ohne extra Stromwandler oder externe OPVs.

ernst nimmt, dann braucht man einen Widerstand. Alternativ dazu die 
Hallsensoren, die aber nicht zu seinen Anforderungen passen.

Ben B. schrieb:
> Mit Stromwandlern hatte ich ein paar Probleme mit dem Nullabgleich, vor
> allem wenn der Controller nicht weiß wann der Strom wirklich
> sichergestellt Null ist.

Also bei dem Hallsensor ist eben oft null Strom nicht null Spannung denn 
der Messbereich ist oft bipolar. -20 A ... +20 A. Da ist dann die Null 
in der Mitte des Spannungsbereichs. Muss man einmal kalibrieren und gut.

von Manfred (Gast)


Lesenswert?

Gustl B. schrieb:
> Also bei dem Hallsensor ist eben oft null Strom nicht null Spannung denn
> der Messbereich ist oft bipolar. -20 A ... +20 A. Da ist dann die Null
> in der Mitte des Spannungsbereichs.

Wenn Du Hallsensor gleich ACS712 setzt, stimmt das. Für andere Produkte 
muß das nicht so sein.

Wolfgang schrieb:
> Für Ströme in diesem Bereich ist z.B. der ACS712ELCTR-20A-T
> wie geschaffen

Den habe ich vor einigen Tagen in einem anderen Thread vorgerechnet. In 
Ruhe 2,5 Volt (halbe Ub), von da aus je nach Stromrichtung rauf oder 
runter. Ausgehend von einem 10bit-A/D mit 5V-Referenz bekommt man nur 
eine sehr mäßige Auflösung.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Naaa nicht zanken... bei µC.net ist es normal, daß wenn man einen 
schwarzen Benz haben möchte, mindestens drei Leute damit kommen, daß der 
himmelblaue Trabant doch aber viel schöner und das bessere Auto sei. Und 
dann noch einer mit seinem roten Opel.

> Da ist dann die Null in der Mitte des Spannungsbereichs.
Stimmt. Habe ich schon so verwendet, einmal mit abgleichbarem 
Spannungsteiler über Vcc und dann nochmal mit der internen 2,56 
Spannungsreferenz des Controllers, beides mit Verbesserungspotential 
würde ich sagen. Nicht unbrauchbar, aber auch nicht wirklich gut.

> Muss man einmal kalibrieren und gut.
Genau das dachte ich auch.

> Ausgehend von einem 10bit-A/D mit 5V-Referenz bekommt man
> nur eine sehr mäßige Auflösung.
Dieses Problem hatte sogar der Aufbau mit der 2,56 Vref des Controllers.

: Bearbeitet durch User
von Manfred (Gast)


Lesenswert?

Ben B. schrieb:
>> Ausgehend von einem 10bit-A/D mit 5V-Referenz bekommt man
>> nur eine sehr mäßige Auflösung.
> Dieses Problem hatte sogar der Aufbau mit der 2,56 Vref des Controllers.

Ich habe es aus Sicht eines Arduinos-AT328 betrachtet, entweder Ub 5V 
oder seiner internen 1,1V als Referenz.

Wenn Du einen anderen Stein mit 2,56 Vref einsetzt, kannst Du deutlich 
besser auflösen: Der ACS712 wird nur negativ betrieben, seine 2,5 V in 
Ruhe sind 0,0 Ampere. Je mehr Strom, desto geringer wird seine Spannung, 
muss der µC halt rückwärts umrechnen.

Und jetzt tschüß, ab ins Bett :-)

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Genau das habe ich probiert, funktioniert,
aber Auflösung war für'n Arsch.

von Wolfgang (Gast)


Lesenswert?

Ben B. schrieb:
> Genau das habe ich probiert, funktioniert,
> aber Auflösung war für'n Arsch.

Kannst du das vielleicht in mA ausdrücken, um hier eine etwas 
sachlichere Diskussion führen zu können?

von Euro (Gast)


Lesenswert?

Ben B. schrieb:
> ...oder welche Einstellungen andere für die 10x gain stage des ATMega verwenden

Letztlich reduziert sich die Frage auf den Fehler des ADC mit Gain nahe 
GND.

Kann ich verstehen. Wenn man das noch nie aufgebaut hat und es grummelt 
im Hinterkopp, ist es ja durchaus sinnig, einmal im Vorfeld nach 
entsprechenden Erfahrungen in die Runde zu fragen.

Wenn keine Erfahrungen vorliegen, muss man sie wohl selber sammeln. Dazu 
brauchts dann eine Ausgabe und eine simulierte Eingabe (Spindelpoti und 
Vorwiderstand), dazwischen den Controller in seiner üblichen 
Beschaltungsform.

Ich hab hier z.B. verschiedene AVR-Testboards (Mega328, Tiny1614, 
XMega32A4) mit UART, Progstecker und Stiftleisten für die restlichen 
IOs, alle mit ADC, aber alle leider ohne Gain (bis auf den ATXMega, da 
weiß ich, dass bei höheren Gain-Einstellungen die Sache kräftig anfängt 
zu wackeln).

Ich kann Dir also nicht direkt helfen, aber vielleicht findet sich hier 
jemand mit dem entsprechenden Controllertestboard (welcher ist es denn 
jetzt eigentlich genau?) in der Schublade, der die Sache auf dem 
Steckbrett innerhalb von einer Stunde löst.

Wenn nicht, ist es vielleicht doch eine Überlegung wert, dass Du Dir 
primär so ein entarduientes, aber steckbrettkompatibles Testplatinchen 
für Deinen Wunschcontroller baust, damit Du Dir in Zukunft solche Fragen 
etwas flotter selber beantworten kannst?

von Stefan F. (Gast)


Lesenswert?

Euro schrieb:
> Ich kann Dir also nicht direkt helfen, aber vielleicht findet sich hier
> jemand mit dem entsprechenden Controllertestboard

Bin ich zu dreist wenn ich hier die Meinung vertrete, dass der TO solche 
Sachen selber testen soll anstatt die Aufgabe an andere zu delegieren 
die er dafür nicht einmal zu belohnen gedenkt?

von Euro (Gast)


Lesenswert?

Stefan F. schrieb:
> Bin ich zu dreist wenn ich hier die Meinung vertrete, dass der TO solche
> Sachen selber testen soll anstatt die Aufgabe an andere zu delegieren
> die er dafür nicht einmal zu belohnen gedenkt?
Ach Du, die Frage des TO mit dem Gain stellt sich mir auch. Ich hätte 
sie mit entsprechendem Equipment aus reiner Neugier auch sicher schon 
beantwortet.

Aber mal andersrum: Wenn Dich die Frage nicht interessiert, was machst 
Du dann hier? ;)

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

> Kannst du das vielleicht in mA ausdrücken, um hier eine
> etwas sachlichere Diskussion führen zu können?
Leider nein, dieser Aufbau ist nicht mehr zum Testen vorhanden, ich weiß 
nur noch, daß die Auflösung wirklich schlecht war. Also wenn ich für'n 
Arsch schreibe, dann meine ich auch für'n Arsch, kann man bei einer so 
schlechten erreichten Performance durchaus als sachliches Statement 
stehenlassen. Das hat mich wirklich geärgert.

> Bin ich zu dreist wenn ich hier die Meinung vertrete, dass der TO
> solche Sachen selber testen soll anstatt die Aufgabe an andere zu
> delegieren die er dafür nicht einmal zu belohnen gedenkt?
Ich suche einfach jemanden, der das schon gemacht hat. Niemanden, der 
das mit hohem Aufwand extra für mich erledigen soll.

Außerdem ist das bei µC.net oft so, daß wenn man etwas baut was am Ende 
nicht gut funktioniert und dann seine Ergebnisse postet, mindestens drei 
Leute ankommen "Äh na du bist ja auch blöde, daß du nicht vorher gefragt 
hast, das hätte ich dir gleich sagen können, daß das nichts wird."

Ich habe auch kein Testboard für sowas,
ich müsste das auf Lochraster aufbauen.

> Aber mal andersrum: Wenn Dich die Frage nicht interessiert,
> was machst Du dann hier? ;)
Bumm, Treffer, versenkt. :)

von Stefan F. (Gast)


Lesenswert?

Ben B. schrieb:
> Ich suche einfach jemanden, der das schon gemacht hat.

Das finde ich OK. Wenn es keiner weis, dann hast du halt Pech. Der 
Kollege "Euro" wollte hingegen jemanden finden, der für dich (oder ihn?) 
experimentiert um die Antwort herauszufinden.

von Paul (Gast)


Lesenswert?

Die Diskussion ist doch völlig sinnlos hier.

Ja, dass mit dem Shunt und mit dem x10 Gain geht. Ob es DIR reicht geht 
aus keinem Post hervor, da du nirgends schreibst ob die 20A mit 1% oder 
0.01% Genauigkeit gemessen werden sollen.

Für privat und Stückzahl bis 20, würde ich einfach einen INA226 nehmen 
und wir die Daten entspannt per I2C holen. Den kannst du auf den Shunt 
kalibrieren und bekommst sehr genaue Ergebnisse. Das wäre EIN Weg die 
Sache nach Stand der Technik zu lösen.

Wenn du jetzt 1 Million Geräte bauen willst, dann würde ich mir die 
Frage hier nicht beantworten lassen sondern das ganze selbst 
validieren....oder willst du dann 1.000.000 Kunden erklären das du als 
Entwickler keine Schuld hast das der Rassel nicht so funktioniert wie 
versprochen, weil einer auf uC.net gesagt hat das passt schon?

Zumal das was du vorhast sich in jeder Bastelstube leicht simulieren 
lässt und eventuell hat Atmel/Microchip da schon mal ne App Note zum ADC 
Gain bei fast GND rausgehauen, einfach mal googlen.

VG Paul

von Euro (Gast)


Lesenswert?

Stefan F. schrieb:
> Der Kollege "Euro" wollte hingegen...
Ja und?

Stefan F. schrieb:
> ...Aufgabe an andere zu delegieren die er dafür nicht einmal zu belohnen
> gedenkt
Was hättest Du denn gerne für Dein "Spezialwissen", ein Poti anzustecken 
und zwei Bytes über die UART zum PC zu schicken?

von Manfred (Gast)


Lesenswert?

Wolfgang schrieb:
> Ben B. schrieb:
>> Genau das habe ich probiert, funktioniert,
>> aber Auflösung war für'n Arsch.
> Kannst du das vielleicht in mA ausdrücken,

Das kann man sogar rechnen, bevor man probiert.

Ohne Strom erwarten wir 2,50 Volt, was bei 2,56 Vref und 10-Bit 1000 
ergibt.
Mit 100mV/A ergeben sich bei 20A noch 0,5V = 200.
Das ergibt 800 Schritte für 20 Ampere, also 25 mA Auflösung.

Nun sind aber die 2.56Vref nicht genau, die 100mV/A streuen, die 
Mittenspannung 2,50V weicht ab und auf das letzte Bit des A/D ist auch 
nur begrenzt Verlass - also wird das ein Schätzeisen.

Ich habe zwei ACS712 im Einsatz und war mir vorher darüber klar, dass 
eine Meßgenauigkeit von 5% zum verdammt gut wäre. Wem das nicht genügt, 
der muß deutlich mehr Aufwand treiben - Shunt und Differenzverstärker.

========

Stefan F. schrieb:
> Bin ich zu dreist wenn ich hier die Meinung vertrete, dass der TO solche
> Sachen selber testen soll anstatt die Aufgabe an andere zu delegieren
> die er dafür nicht einmal zu belohnen gedenkt?

Leidest Du an akuter Verstopfung oder bist Du frustriert, weil Dir 
dieses Thema keinen Ansatz zur Selbstdarstellung liefert?

Zu Deiner Frage: Ja! Als Sinn des Forums sehe ich doch, Lösungsansätze 
zu finden und nicht, Entwicklungsaufträge zu bezahlen.

von Michael S. (smtschmidt)


Lesenswert?

Dann will ich mal nicht so sein :-)

Das geht prima!
Ich verwende einen ATtiny261A. Die Messung erfolgt differenziell mit 
(ADC0 - ADC1) * 20 an einem Shunt von 2 bis 10mOhm (je nach Variante der 
Baugruppe). Dabei liegt ADC1 bei mir auf Masse, direkt am Shunt. 
Zwischen dem Shunt und den Eingängen ist noch ein RC-Tiefpaß mit R=1kOhm 
verbaut, wegen der Schaltflanken. Ich messe Ströme mit Mittelwerten 
zwischen 1 und 30A mit deutlich höheren Peaks. Die Auflösung ist bei mir 
nur 8Bit, die aber ziemlich genau.

Den Gleichtaktbereich des differentiellen Eingangs weiß ich gerade nicht 
mehr. Mußt Du ins Datenblatt schaun. Einen Offset bekommt man dann mit 
Widerständen gegen + hin.

Viel Erfolg!

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Danke Michael, das liest sich doch gar nicht so schlecht. Dann werd ich 
mal schauen wie ich 5,5mOhm oder was ich da errechnet hatte 
bewerkstellige und mal einen Versuch damit machen. Wie groß ist C bei 
Deinem Tiefpass?

> [..] Das ergibt 800 Schritte für 20 Ampere, also 25 mA Auflösung.
Ja so ungefähr war meine Rechnung auch und mit 25mA Auflösung wäre ich 
zufrieden gewesen, hat der Aufbau aber nicht erreicht.

: Bearbeitet durch User
von Michael S. (smtschmidt)


Lesenswert?

Der RC-Tiefpaß ist 1kOhm und 100nF, Tau = 100µs. In der Masseleitung zu 
ADC1 ist kein Widerstand.

von Uuu B. (hansdampf2)


Lesenswert?

Michael S. schrieb:
> Die Auflösung ist bei mir
> nur 8Bit, die aber ziemlich genau.

Habe ähnliche Erfahrungen mit dem ATtiny261A/461A gemacht. Die 
theoretisch möglichen 10Bit reduzieren sich in der Praxis durch die 
internen Fehler (auch Rauschen), so dass 8 Bit eine gute Wahl ist. Im 
Datenblatt steht übrigends bei einer Verstärkung von 20x/30x ein 
Gain-Error von 15LSB und ein Offset-Error von 4LSB; bezogen auf eine 
Referenzspannung von 4V. Bei noch geringerer Referenzspannung wird sich 
der Fehler natürlich auch noch vergrößern.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Wenn ich das aufgebaut habe (kann ein wenig dauern) werde ich mal 
probieren wie das funktioniert wenn ich mehrere Messungen 
zusammenaddiere (4 8 oder 16) und die unteren Bits von Ergebnis 
wegschmeiße.

von Manfred (Gast)


Lesenswert?

Ben B. schrieb:
> probieren wie das funktioniert wenn ich mehrere Messungen
> zusammenaddiere (4 8 oder 16) und die unteren Bits von Ergebnis
> wegschmeiße.

Wenn ich Zeit habe, was meist der Fall ist, mache ich mehrere Messungen 
mit delay dazwischen und addiere diese, z.B. 12. Den kleinsten und 
größten Wert werfe ich weg und teile die Summe durch 10 - das gibt 
ziemlich Ruhe.

An anderer Stelle im Forum wurde über solche Dinge gestritten, einige 
Leute bauen einen gleitenden Mittelwert.

Das hilft natürlich nichts, wenn man einen Offsetfehler hat - soweit der 
halbwegs konstant ist, kann man den natürlich per Subtraktion weglügen.

Ich habe gerade einen Aufbau mit einem ADS1115, zwischen Auflösung und 
tatsächlich erreichter Genauigkeit gibt es einen erkennbaren 
Unterschied.

von Uuu B. (hansdampf2)


Lesenswert?

Bei meinem System liefern die Sensoren nur die Rohdaten an einen 
zentralen Rechner, dort erfolgt die Linearisierung per Stützstellen und 
dann die Filterung - u.a. gleitender Durchschnitt:
, wobei z.B. k= Intervall/3,1 ist. Bei Sensorwerten mit 8-10Bit reichen 
drei kalibrierte Stützstellen völlig aus, es ergibt sich dann ein 
Polynom zweiter Ordnung, dass in Echtzeit beherrschbar ist:
, die Werte a0-a2 werden einmalig per Kalibrierung vorgegeben. Zudem 
kann man so bequem Kodewerte in physikalische Parameter umrechnen. 
Gerade bei Messungen an physikalischen Grenzen, wie hier bei der 
Spannungsmessung nahe GND, kommt man mit der Linearisierung der 
"Wahrheit" etwas näher ;-)
Langzeitdrift bekommt man allerdings so auch nicht weg...

: Bearbeitet durch User
von Uuu B. (hansdampf2)


Lesenswert?

Manfred schrieb:
> Den kleinsten und
> größten Wert werfe ich weg

Ich möchte keine theoretische Disskusion auslösen, aber das (nicht 
symmetrische) Löschen von gemessenen Werten ist falsch. Wenn z.B. eine 
Temperatur beginnt anzusteigen, ist der letzte gemessene Wert 
wahrscheinlich auch der höchste, während der tiefste fast dem Mittelwert 
entspricht. Fällt ersterer weg, werden nachfolgende Signalauswertungen 
(z.B. Berechnung des Signalanstiegs) ungenauer und ich verschenke 
wertvolle Sekunden, die z.B. bei einem PD-Regler (praktisches Beispiel: 
Pumpenregelung bei einem Feststoffkessel) zu unzulässigen Reaktionen 
führt. In diesem Thread geht es um Strommessungen - kurze Stromimpulse 
kann man kaum mit dem Controller erfassen, daher ist hier jede Messung 
wichtig.

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Wie gesagt, ich habe sowas immer dadurch zu lösen probiert, daß ich 
beispielsweise 16 Messungen in schneller Folge gemacht habe, alles 
addiert und durch 16 geteilt habe. Das ist auf dem Controller durch ein 
paar Bitshifts recht einfach zu machen. Die dabei entstehenden 
Ergebnisse sind auch bei 10 Bit Auflösung bislang ziemlich stabil 
gewesen.

Wenn man nur einen größten und einen kleinsten Messwert so einer 
Messreihe wegschmeißt, bleiben bei 12 Messungen immer noch 10 übrig, aus 
denen der Mittelwert gebildet wird.

von Uuu B. (hansdampf2)


Lesenswert?

Es hängt sicher von der späteren Verwendung der Daten ab. Für die 
Strommessung würde ich nach dem Shunt noch einen Tiefpass anordnen, der 
auch kurze Signalimpulse erfasst, die dem µC vielleicht sonst entgehen 
würden. Ist die Genauigkeit der Messung nicht so wichtig, geht es 
natürlich auch ohne die angesprochene Linearisierung. Die Mittelung kann 
auch in mehreren Stufen erfolgen. Bei mir gehen sekundenaktuelle Werte 
in die Steuer- und Regelung, danach wird nochmal gemittelt - für die 
grafische Aufbereitung im 5min-Raster.

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.