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
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.
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.
Robert schrieb:> grade im unteren Bereich zu erhöhten AbweichungenRobert 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!
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?
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.
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.
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.
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.
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.
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.
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 ?
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
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?
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.
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.