Forum: Mikrocontroller und Digitale Elektronik ADC Offset auf einzelnen Kanälen automatisch kompensieren?


von Stefan (Gast)


Lesenswert?

Ich messe 5 V Eingangsspannung über Spannungsteiler gegen die interne 
2,56 V Referenzspannung.
Dabei sind fünf von den acht Kanälen tatsächlich im Leerlauf dezimal 0,
drei sind jedoch bei dezimal 76/77.
5,1 V entspricht bei fünfen dezimal 487/488, bei dreien dezimal 529;
0 V   entspricht bei fünfen dezimal 0,       bei dreien dezimal 64.

Kann man diesen Offset irgendwie automatisch erfassen und somit die 
Werte kalibrieren? Ich meine, daß die Widerstandsstreuuung in 
verschiedenen gleichartigen Schaltungen auch verschiedene Spannungen 
erzeugt. Geht daß irgendwie automatisch, ohne daß man bei jedem 
Systemreset die Sensoren ausstecken muß und auf allen Kanälen einmal 
wandelt, in ein Array schreibt, Sensoren einsteckt und schließlich die 
zyklischen AD-Werte mit der Erstwandlung kompensiert?

Kompliziert ausgedrückt, hoffentlich versteht's jemand.

Stefan

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Wenn Du jetzt keinen richtigen systematischen Fehler eingebaut hast, 
dann kann man mit analog-Schaltern schon viel machen. Da gibt es den 
ehrwürdigen 4051, mit dem Du den Multiplexer des uC eigentlich komplett 
ersetzen kannst, und auf festen Eingängen einen festen Pegel schaltest, 
den Du dann mißt und verrechnest.
Damit wäre ein Fehler im Multiplexer und im AD-Wandler auszumerzen, aber 
ich denke, daß Dein Fehler schon weit vorher im Aufbau liegt.

von Christian R. (crothe)


Lesenswert?

Das klingt in der Tat komisch. Du hast einen Wandler mit 8 Kanälen, die 
gleichzeitig messen, oder wird gemultiplext und die Kanäle nacheinander 
gemessen? Wenn multiplex, dann im Wandler selbst, oder durch eigene 
externe Beschaltung? Was auf jeden Fall auffällt, ist eine 
Nichtlinearität bei den Offsett-behafteten Kanälen. 488+64=552 und nicht 
529. Wie sieht es denn mit der Eingangsaussteuerung aus? Man sollte 
generell sehen, dass die Eingangsteiler das maximal zu messende Signal 
möglichst dicht unter der Aussteuerungsgrenze platzieren. Bei kleinen 
Aussteuerungen hat man immer eine höhere Ungenauigkeit. Wieviele Bit 
wandelt er denn und wie groß kann das zu messende Signal werden? So wie 
ich es sehe wandelst Du mit mindestens 9 Bit und hast dabei nur ca. 
halbe Aussteuerung, also die 5V auf ca. 1,25V runtergeteilt.
Warum ich das alles erzähle: es scheint mir so als sei der Wandler von 
recht geringer Qualität. Selbst wenn Du einen einmaligen oder auch 
regelmäßigen Offset-Abgleich einbaust, würde mich der Linearitätsfehler 
beunruhigen. Ich würde von einem 'guten' und einem 'schlechten' Kanal 
mal eine Aussteuerungskennlinie aufnehmen um das 'Übel' abschätzen zu 
können. Wenn Du dann noch mit dem dabei herausgefundenen Fehlern leben 
kannst musst Du wie von Bernd gesagt das Meßsignal über einen 
Multiplexer zuführen und diesen in kontinuierlichen Zeitabständen gegen 
Masse schalten (statt auf das Meßsignal). Nun kann der Offset als 
Korrekturwert geschpeichert und bei den Richtigen Messwerten addiert 
werden. Achtung, jetzt misst Du nicht mehr kontinuierlich, also nicht 
Lückenlos. Das ist im privaten Bereich jedoch meist egal.

Gruß
Christian Rothe

www.Rabenkopf-Studio.de

von Stefan (Gast)


Lesenswert?

Au Mann, ich hab die Lösung gefunden. Das JTAG-Interface-FuseBit war 
gesetzt und damit sind genau die drei PullUps angezogen worden.

Stefan

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.