Forum: Mikrocontroller und Digitale Elektronik Grundsätzliche Frage: Hohe Abweichung im unteren Bereich bei analoger Messung mit ADW


von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Guten Abend,

ich habe bereits die Suchfunktion genutzt, bin aber so allgemein nicht 
auf eine Antwort gestoßen. Zur Situation:

Ich habe einen ATmega 2560 in verwendung. Genutzt wird der interne ADC 
(10Bit) zur analogen einer Analogen Spannung (Ursprünglich 0-10V, wurde 
aber über einen Spannungsteiler aus Messwiderständen(0,1%) 2 x 680_Ohm 
auf 0-5V reduziert.

Die Referenzspannung AREF=Beträgt 5,00V (abgelichen über 
Wendelpotentiometer).

Ich habe nun über ein Labornetzteil den ADC mit einer Spannung in 0,1V 
schritten beaufschlagt um die Genauigkeit zu überprüfen.

Der Wert errechnet ich wie folgt:

U=(ADC_Value*1024)/AREF

Leider kommt es grade im unteren Bereich zu erhöhten Abweichungen (Siehe 
Bild). Welche Gründe gibt es dafür ?
Linearitätsfehler und Quantisierungsfehler sind ja bekannt, nur verstehe 
ich nicht warum es grade im unteren Bereich zu so hohen Abweichungen 
kommt. Im Oberen Bereich ist hingegen alles in Ordnung.

Mfg

Robert

von Karl M. (Gast)


Lesenswert?

Hallo,

hier solltest Du noch mal das Datenblatt lesen und überlegen was falsch 
ist:

U=(ADC_Value*1024)/AREF

Stichwort Dreisatz

Uinp / Aref = ADC_Value / 1024

Dann gibt es viele kleine Application Notes die die unterschiedlichen 
ADC Messfehler und deren Abgleich aufzeigen.

von lalelu (Gast)


Lesenswert?

Was für ein Labornetzteil verwendest du, bzw. wie genau ist das in dem 
niedrigen Bereich?

Ich habe jetzt nicht nachgesehen, was für den ATmega spezifiziert ist, 
aber ich würde die Fehlerquelle eher beim Labornetzteil suchen.

Du solltest auf jeden Fall mal die Ausgangsspannung des Labornetzteils 
mit einem Multimeter nachmessen. Das dürfte in der Regel genauer sein, 
als die Anzeige auf dem Netzteil.

von Max M. (jens2001)


Lesenswert?

Robert schrieb:
> grade im unteren Bereich zu erhöhten Abweichungen

Robert schrieb:
> verstehe
> ich nicht warum es grade im unteren Bereich zu so hohen Abweichungen
> kommt

Was willst du?
Wenn der Absolutfehler gleich bleibt wird der Relativfehler nach unten 
grösser!
Völlig normal!

von Robert (Gast)


Lesenswert?

Hey

sorry für den Fehler in der Berechnung, da habe ich den Aref mit der 
Auflösung vertauscht.

Ich Berechne wie folgt:

U=(ADC_Value*AREF)/1024

Zum Labornetzteil: Es handelt sich nicht um ein Präzisionsnetzteil. Ich 
habe den jeweiligen Spannungswert mit einem kalibrierten Messgerät beim 
einstellen überprüft. Grund war - wie Ihr bereits gesagt habt - das die 
Anzeige vom Labornetzteil zu ungenau ist.

Es kann also das Labornetzteil als Fehlerquelle ausgeschlossen werden.

Karl M. schrieb:
> Dann gibt es viele kleine Application Notes die die unterschiedlichen
> ADC Messfehler und deren Abgleich aufzeigen.

Kannst du mir das ein bisschen auf die Sprünge helfen?
Welche Faktoren spielen in die Abweichung mit rein?
Gibt es eine Möglichkeit den Messfehler rechnerisch zu erfassen um 
diesen dann bei der Berechnung der gemessenen Spannung mit 
einzubeziehen?

von Wolfgang (Gast)


Lesenswert?

Robert schrieb:
> abweichung.JPG

Du gibst eine relative Abweichung an, sagst aber gar nicht, worauf du 
dich dabei beziehst. Der Messfehler setzt sich aus einem relativen 
Fehler bezogen auf den Messwert und einem relative Fehler bezogen auf 
den Messbereich zusammen.

von Hmm (Gast)


Lesenswert?

Das ist entweder Sättigung (z.B. Output Headroom bei Rail2Rail OPV) oder 
ein Offset. Musst du selber kucken. Kann man mit einem Multimeter leicht 
nachvollziehen - miss die Messkette durch.

Beim INA138 sieht die Strommessgenauigkeit "unten raus" z.B. exakt so 
aus.

von Peter D. (peda)


Lesenswert?

Robert schrieb:
> Leider kommt es grade im unteren Bereich zu erhöhten Abweichungen (Siehe
> Bild). Welche Gründe gibt es dafür ?

Die falsche Formel.
Den Fehler berechnet man immer bezogen auf den Endwert des ADC.

von Einer K. (Gast)


Lesenswert?

Robert schrieb:
> Die Referenzspannung AREF=Beträgt 5,00V (abgelichen über
> Wendelpotentiometer).

Wie garantierst du, dass Vcc und AVcc dauerhaft gleich/größer als Aref 
bleiben?

--------

Ich würde ja die interne Referenz verwenden.
Der ATMega2560 hat derer gar zwei.

Die sind vielleicht nicht sonderlich genau (10% ?), aber dafür viel 
stabiler als es eine typische Stromversorgung im Feld je sein wird.

von A. S. (Gast)


Lesenswert?

Robert,

das ein Relativer Fehler bei Messwert 0 keinen Sinn macht, und bei 
Werten nahe 0 recht wenig, wurde ja schon gesagt.

Um wirklich etwas aus diesem Thread zu lernen, wäre es sinnvoll, Deine 
originalen Messergebnisse (keine umgerechneten) hier in einer Tabelle zu 
zeigen, z.B.:

ADC, Multimeter
1,   0.0V
17,  0,1V
22,  0,2V
....

Dann ist es leichter, daran die grundlegenden Konzepte von Fehlern, 
Kalibrierung, Linearität etc zu zeigen.

von Manfred (Gast)


Lesenswert?

Hmm schrieb:
> Beim INA138 sieht die Strommessgenauigkeit
> "unten raus" z.B. exakt so aus.

Ja, und beim INA219 bekomme ich kurz über Null keine sinnvollen 
Spannungswerte heraus - nennt sich ja auch "High-Side-Sensor".

Peter D. schrieb:
> Den Fehler berechnet man immer bezogen auf den Endwert des ADC.

Die graphische Darstellung ist einfach unglücklich. Ich würde horizontal 
die Spannung und vertikal den ADC-Wert 0..1024) einsetzen, dann muß 
nicht über die Berechnungsmethode gestritten werden.

von Robert (Gast)


Lesenswert?

Weiter gehts: Bis hier hin erstmal vielen Dank für die ganzen 
Anregungen. Entschuldigt bitte, ich bin grad am Anfang meiner 
Erfahrungen was µCs angeht. Ich gebe mein bestes um so nah wie möglich 
euren Ansprüchen gerecht zu werden ;)

Grundsätzlich habe ich nicht vorgehabt ein hochgenaues Messgerät zu 
bauen, ich suche lediglich eine logische Erklärung warum der ADW grade 
im unteren Bereich eine hohe Abweichung hat (damit meine ich nicht 0V, 
sondern zum Bsp. die Abweichung zwischen 1V und 2V).

Arduino F. schrieb:
> Wie garantierst du, dass Vcc und AVcc dauerhaft gleich/größer als Aref
> bleiben?

Die VREF habe ich mit einem kalbrierten Messgerät bei eingeschalteten µC 
eingestellt. Zusätzlich habe ich den AREF-Eingang mit 10nF stabilisiert. 
Ist natürlich keine hochgenaue Referenz. sollte aber meiner Meinung nach 
durchaus reichen. Die Interne Referenz habe ich grade wegen der nicht 
feststellbaren Abweichung nicht verwendet.


Achim S. schrieb:
> Um wirklich etwas aus diesem Thread zu lernen, wäre es sinnvoll, Deine
> originalen Messergebnisse (keine umgerechneten) hier in einer Tabelle zu
> zeigen, z.B.:

Wird gemacht: Hab da ein Bild gepostet!

Wolfgang schrieb:
> Du gibst eine relative Abweichung an, sagst aber gar nicht, worauf du
> dich dabei beziehst. Der Messfehler setzt sich aus einem relativen
> Fehler bezogen auf den Messwert und einem relative Fehler bezogen auf
> den Messbereich zusammen.

Ich habe wie folgt gerechnet:

Rel_Abw=100-((U_Ausgabe/U_Labornetzteil)*100%)

Ist diese Vorgehensweise also Falsch? ich habe mich hier nicht auf den 
voll Messbereich bezogen. Wie ist hier die korrekte vorgehensweise ?

Die Absolute Abweichung habe ich mir nun nach recherge im Datenblatt so 
vorgestellt:

Abweichung angegeben laut DB=+-2LSB

Absl_abw=±2*5V/1024=±9,766mV≈±10mV

Ist diese vorgehenswiese korrekt ? Oder muss ich noch mehr 
berücksichtigen ?

von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Hier die versprochnen Bilder

von S. Landolt (Gast)


Lesenswert?

Für mich sieht die Abweichung im unteren Bereich nach schlechter 
Verdrahtung aus.

von Einer K. (Gast)


Lesenswert?

Robert schrieb:
> Arduino F. schrieb:
>> Wie garantierst du, dass Vcc und AVcc dauerhaft gleich/größer als Aref
>> bleiben?
>
> Die VREF habe ich mit einem kalbrierten Messgerät bei eingeschalteten µC
> eingestellt. Zusätzlich habe ich den AREF-Eingang mit 10nF stabilisiert.
> Ist natürlich keine hochgenaue Referenz. sollte aber meiner Meinung nach
> durchaus reichen. Die Interne Referenz habe ich grade wegen der nicht
> feststellbaren Abweichung nicht verwendet.

Auch wenn es für dein konkretes Problem nicht relevant ist....

Du hast mich nicht verstanden!

Meine Frage nochmal etwas klarer:
Wie stellst du sicher dass Vcc >= Aref ist und auch dauerhaft so bleibt?

Robert schrieb:
> Die Interne Referenz habe ich grade wegen der nicht
> feststellbaren Abweichung nicht verwendet.
Die Abweichung ist sehr wohl feststellbar
z.B.:
> mit einem kalbrierten Messgerät

von S. Landolt (Gast)


Lesenswert?

Wie sieht eigentlich das Progamm aus? ADC noise reduction mode?

von Wolfgang (Gast)


Lesenswert?

Manfred schrieb:
> Die graphische Darstellung ist einfach unglücklich. Ich würde horizontal
> die Spannung und vertikal den ADC-Wert 0..1024) einsetzen, dann muß
> nicht über die Berechnungsmethode gestritten werden.

Damit wird es auch nicht viel besser. Du bekommst eine diagonal durch 
den Graph verlaufende Linie und musst mit der Lupe die Abweichung zur 
idealen Geraden suchen. Die Y-Skalierung wird erheblich günstiger - weil 
weiter "aufgerissen" - wenn man vertikal nicht die ADC-Werte, sondern 
die Abweichung der ADC-Wert vom Idealwert darstellt.

Robert schrieb:
> werte.JPG

Meinst du, irgend jemand hat Lust, die Werte abzutippen, um einen 
aussagekräftigen Graph daraus zu basteln? Wie wäre es mit einer 
ASCII-Datei, z.B. als Anhang?

von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Arduino F. schrieb:
> Meine Frage nochmal etwas klarer:
> Wie stellst du sicher dass Vcc >= Aref ist und auch dauerhaft so bleibt?

Die Eingangsspannung des µCs ist 5V. Bereitgestellt wird diese über 
einen Schaltregler 12V/5V 1A. Weitere Vorkehrungen habe ich nicht 
getroffen.
Welche Möglichkeiten nimmst du da in betracht?

Ich habe aus dem Datenblatt des µCs entnommen, das AREF nicht größer 
werden darf als Vcc. Sehe ich das richtig?

Wolfgang schrieb:
> Meinst du, irgend jemand hat Lust, die Werte abzutippen, um einen
> aussagekräftigen Graph daraus zu basteln? Wie wäre es mit einer
> ASCII-Datei, z.B. als Anhang?

Entschuldige bitte, soweit habe ich nicht gedacht. Ich hänge die Werte 
noch mal als ASCII an.


Vielen Dank für euer Engagement.

von Robert (Gast)


Angehängte Dateien:

Lesenswert?

Anbei noch mal die Werte direkt am AD-Eingang (hinter dem 
Spannungsteiler) gemessen.

(0-5V)

Gruß

von S. Landolt (Gast)


Lesenswert?

> Schaltregler
Ist vielleicht zum Ausprobieren ein Linearregler zur Hand?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Der GND-Pegel des ATmega2560 scheint gegenüber dem GND der Signalquelle
(des Labornetzgeräts) um ca. 0,2V zu hoch zu liegen.

Hast du alle 5 GND-Pins des ATmega2560 angeschlossen, insbesondere auch
Pin 99?

Miss auf jeden Fall mal die Spannung zwischen Pin 99 und dem GND des
Labornetzgeräts. Vielleicht gibt es auch irgendwo ein Kontaktproblem.

von Robert (Gast)


Lesenswert?

WIrd gemacht, ich werde berichten!

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.