Hallo,
kurze Frage: Ich würde gerne möglichst einfach einen ADC kalibrieren.
Meine Idee war folgende.
Ich lasse den ADC mithilfe einer Referenzspannungsquelle zwei Werte
messen.
z.B. einmal 10V und einmal 1V.
Angenommen für 10V kommt der Wert 400 raus und für 1 V der Wert 20 z.B.
(weil er wahrscheinlich ja Offset und Gainfehler hat).
Kann ich dann einfach sagen, ich merke mir die zwei Werte 10V=400 und
1V=20 und rechne dann für die spätere Messung die Spannung mithilfe
linearer Interpolation mithilfe dieser zwei Referenzwerte aus.
Kann man das so machen?
Kann man so machen!
Man sollte natürlich prüfen, ob weitere Faktoren die Linearität zwischen
diesen Punkten beeinflussen. Z.B. habe ich schon so manches mal
gesehen, dass man versucht, die max. ADC-Eingangsspannung mit einer
parallel geschalteten Z-Diode begrenzen zu wollen. Dabei hat der
Designer vergessen, dass eine Z-Diode auch schon deutlich vor der
Zener-Spannung leitend wird und die Linearität verbiegt.
Gustav schrieb:> Kann ich dann einfach sagen, ich merke mir die zwei Werte 10V=400 und> 1V=20 und rechne dann für die spätere Messung die Spannung mithilfe> linearer Interpolation mithilfe dieser zwei Referenzwerte aus.
Die beiden Punkte möglichst weit auseinander wählen.
Daraus die Steigung berechnen. Einmalig.
Die Steigung, ist einer dieser Brüder, die ich gerne ins EEProm stopfe.
In meiner kleinen AVR Welt ist dieses Verfahren vollkommen ausreichend.
Ich nenne es "2 Punkt Kalibrierung".
Karl M. schrieb:> bist zu ISO zertifiziert für eine Kalibrierung ?> Nein, dann ist es doch eher ein Abgleich.
Versuchst Du jetzt das Theater mit der Eichung auf die Kalibrierung zu
übertragen?
Das erklär doch mal seit wann man zum Kalibrieren zertifiziert sein muß
und nach welcher ISO? Und warum die auf de TE zutreffen sool.
Arduino F. schrieb:> In meiner kleinen AVR Welt ist dieses Verfahren vollkommen ausreichend.> Ich nenne es "2 Punkt Kalibrierung".
Ja, ok.
Atmel hat dazu, ADC, auch noch einige Application Notes verfasst.
OK, dann wollen wir mal richtig klugscheißen:
Die ISO interessiert sich nur für die Dokumentationspflicht der
Kalibrierung.
Wer die Kalibrierung durchführt ist dem Zertifizierer egal, Hauptsache,
es gibt ein Dokument darüber, was den Prozess möglichst widerspruchsfrei
beschriebt.
Wie der Prozess im Detail abläuft, wird von der QS als Stabsstelle
definiert, nicht von der ISO.
Du kannst dir also auch ein HP3458A hinstellen mit nem roten Aufkleber
"nicht kalibrierpflichtig" und ein Zollstock aus dem 19 Jahrhundert
jedes Jahr in Paris gegen das Urmeter prüfen lassen.
Gustav schrieb:> Kann ich dann einfach sagen, ich merke mir die zwei Werte 10V=400 und> 1V=20 und rechne dann für die spätere Messung die Spannung mithilfe> linearer Interpolation mithilfe dieser zwei Referenzwerte aus.>> Kann man das so machen?
Nein!
Gustav schrieb:> Kann man das so machen?
Das ist nur eine Näherung, Linearitätsfehler werden damit nicht erfasst.
Ein vollständige Kalibrierung ist nicht wesentlich komplexer umzusetzen,
erfasst aber auch die Linearitätsfehler. Im Prinzip läuft das so ab:
steuerbare Spannungsquelle durchfährt den gesamten Messbereich, µC ruft
bei jeder Änderung des Messwertes der ADC die aktuelle Spannung von der
Quelle ab und baut aus den Werten eine vollständige Lookup-Tabelle auf.
Vorteile:
- auch Linearitätsfehler kompensiert
- Umrechnung von ADC-Messwert auf physikalische Größe zur Laufzeit
entfällt
(Tabelle enthält bereits die entsprechende Größe)
Nachteil:
- Speicherplatz für Tabelle erforderlich
Um den Nachteil loszuwerden, kann man dann aus der Tabelle z.B. die
Koeffizenten für ein Polynom zweiten oder dritten Grades ermitteln, was
die Werte besser annähert als ein einfacher linearer Zusammenhang. Damit
ist man dann die Tabelle los, muss aber wieder zur Laufzeit rechnen.
Also der klassische trade-off zwischen Performance und
Speicherplatzverbrauch. Muss man je nach Anwendung immer wieder neu
entscheiden.
Dabei sollte man beachten, dass die Rechnerei nicht nur Performance
kostet, sondern auch Speicherplatz für den Code, der sie ausführt. U.u.
ist die Tabelle auch bezüglich des Speicherplatzbedarfs das kleinere
Übel...
Gustav schrieb:> kurze Frage: Ich würde gerne möglichst einfach einen ADC kalibrieren.
Die Linearität moderner AD-Wandler ist heutzutage so gut, das man
schon recht spezielle Meßtechnik braucht, um Abweichungen festzu-
stellen. Normalerweise sollte es reichen, Nullpunkt und Vollaus-
schlag richtig einzustellen.
c-hater schrieb:> Das ist nur eine Näherung, Linearitätsfehler werden damit nicht erfasst.
Eh man da Aufwand treibt, sollte man erstmal prüfen, ob das ausreichend
ist.
Und wenn die Schaltung nichtlinear ist, muß man erstmal prüfen, warum
sie das ist und vor allem, ob das langzeitstabil ist!
Einfach so ein Mehrpunktabgleich ohne Sinn und Verstand ist Quatsch.
Es ist auch ein Unterschied, ob ich einen 10Bit-ADC kalibriere oder
einen 24Bit-ADC.
Die Linearitaet eine Wandlers ergibt sich aus dem Datenblatt. Wenn man
sich nun fuer etwas interessiert, so misst man Null und die Referenz.
Das war's dann.
Wenn man der Linearitaet des Wandlers nicht traut weil die Analogik
vornedran schlecht ist, wird man eh Schwierigkeiten haben, die
Linearitaet zu messen.
Zum Lineasieren eines ADC kannst du eine Spannungsquelle (z.B.
Batterien) mit einen Widerstandsteiler (z.B. 20 Widerstände oder mehr
gleichen Wertes) verwenden und die korrespondierenden Spannungen
abgreifen. Die Summe aus den zwei korrespondierenden Spannungen muss
immer wieder die Gesamtspannung der Spannungsquelle ergeben.
http://www.eevblog.com/forum/projects/oshw-24bit-adc-measurement-system-for-voltage-references/msg427526/#msg427526
(siehe resistor divider)
Mostpfeife schrieb:> Die Linearitaet eine Wandlers ergibt sich aus dem Datenblatt.
Nein, das tut sie leider nicht. Im DB wird nur der maximal zu erwartende
Fehler der Linearität stehen, keinesfalls aber der konkrete Verlauf der
Kurve.
Wenn man mit dem Maximalfehler leben kann, dann reicht natürlich ein
Zweipunkt-Abgleich.
Dasselbe gilt übrigens auch genauso für Nullpunkt und Steigung. Wenn man
auch mit diesem Fehlern, deren Maximalwerte typischerweise ebenfalls im
DB stehen, leben kann, dann braucht man garnicht abgleichen...
Du siehst, wohin dein Einwand in letzter Konsequenz führt?
Gustav schrieb:> kurze Frage: Ich würde gerne möglichst einfach einen ADC kalibrieren.
Ach.
Kannst du mir mal verraten, wozu sowas nötig sein sollte? Guck ins
Datenblatt des ADC, das reicht für gewöhnlich. Grund: Du meinst etwas
ANDERES, aber du hast dies nicht gesagt.
Also: Ich vermute, du hast irgend einen Meßumformer (was auch immer für
ein Ding) mit angeschlossenem ADC. Also sowas wie:
Spannung rein, ADC-Wert raus
Druck rein, ADC-Wert raus
Flughöhe rein, ADC-Wert raus
Konfektionsgröße rein, ADC-Wert raus
oder so ähnlich.
Logischermaßen muß sowas irgendwie kalibriert werden. Und das besteht
nicht im Anbeten von ISO-Papieren oder so ähnlich, es ist auch kein
hoheitlicher Akt wie z.B. das Wirken eines Eichamtes, sondern es besteht
schlicht und simpel daraus, daß man:
a) für eine Einpunkt-Kalibrierung:
1 bekannte Eingangsgröße anlegt und ihr den daraus entstehenden
ADC-Wert zuordnet
b) für eine (wesentlich üblichere) Zweipunkt-Kalibrierung:
2 bekannte Eingangsgrößen anlegt und den jeweilig daraus entstehenden
ADC-Werten zuordnet.
Der Rest ist Mathematik, die übliche Formel y=a*x+c kennt ja jeder noch
- oder etwa nicht???
Den Fall c) nämlich Dreipunkt-Kalibrierung lassen wir hier mal außen
vor, das scheint den Disputanten hier ohnehin zu hoch zu sein. Bei
Temperaturmessungen z.B. ist sowas manchmal nötig, siehe
Steinhart-Hart-Formel.
Also zum Prinzip: Kalibrieren heißt, anhand bekannter Vorgaben die
Ergebnisse richtig zuzuordnen.
W.S.
Arduino F. schrieb:> Die beiden Punkte möglichst weit auseinander wählen.> Daraus die Steigung berechnen. Einmalig.
Dann wären der Nullpunkt und der Endpunkt am besten geeigenet. Ist das
wirklich so?
DaC schrieb:> Dann wären der Nullpunkt und der Endpunkt am besten geeigenet. Ist das> wirklich so?
Jain. Es kann auch günstig sein, im erwarteten Arbeitspunkt bzw.
Arbeitsbereich zu kalibrieren.
>>Mostpfeife schrieb:>>>> Die Linearitaet eine Wandlers ergibt sich aus dem Datenblatt.>>>Nein, das tut sie leider nicht. Im DB wird nur der maximal zu>erwartende Fehler der Linearität stehen, keinesfalls aber der>konkrete Verlauf der Kurve.
Nun, falls die als Maximum spezifizierte Nichtlinearitaet nicht gut
genug ist, nimmt man einen Besseren. Man linearisiert sicher keinen
Wandler. Genauswenig wie man bei OpAmps Offsetabgleiche macht.
Zwölf M. schrieb:> Nun, falls die als Maximum spezifizierte Nichtlinearitaet nicht gut> genug ist, nimmt man einen Besseren. Man linearisiert sicher keinen> Wandler.
Na da spricht ja der Flachmann...
Natürlich macht man das, wenn es nützlich erscheint! Und nützlich ist es
z.B. immer dann, wenn der Speicher für die Tabelle + zzgl. des Aufwandes
für die Kalibrierung immer noch billiger ist als ein besserer Wandler...
Wobei man die Gesamtkosten für den besseren Wandler im Blick haben muss.
Die gehen deutlich über seinen Einkaufspreis hinaus!
Aber wenn du irgendwann mal erwachsen bist, begreifst du das vielleicht
auch...
Thomas R. schrieb:> Willst du abgleichen oder kalibrieren?
Die begriffliche Trennung von Kalibrierung und Abgleich erfolgt
üblicherweise nur bei manuellem Eingriff. Hier, oder z.b. beim setzen
des Nullpunkts einer elektronischen Waage ist es weltfremd, auf dem
Begriff rumzureiten.
Mostpfeife schrieb:> Bei welcher Art Wandler wuerde es sich lohnen eine Linearisierung> durchzufuehren ?
Bei einem selbstgebautem. Der wird immer deutlich schlechter sein
als der billigste, integrierte.