Forum: Mikrocontroller und Digitale Elektronik Wann muss der erste ADC Wert verworfen werden?


von Jörg (Gast)


Lesenswert?

Hi Leute,

wann genau soll der erste Wert des ADC verworfen werden?

Im Datenblatt steht, dass wenn ich die Referenzspannung umstelle, der 
erste Wert nicht verwendet werden soll. Selbiges gilt wohl für den 
ersten Wert, nachdem das Modul eingeschaltet wurde (ADEN=1). Aber wie 
sieht es aus, wenn ich den Channel umstelle oder den gewählten Eingang 
von I/O auf ADC umstelle?

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Jörg schrieb:
> erste Wert nicht verwendet werden soll. Selbiges gilt wohl für den
> ersten Wert, nachdem das Modul eingeschaltet wurde (ADEN=1).
 Nein, es dauert nur länger.

> Aber wie sieht es aus, wenn ich den Channel umstelle oder den
> gewählten Eingang von I/O auf ADC umstelle?
 Erst wird die laufende Messung beendet, dann wird umgeschaltet.
 Falls du mit INT arbeitest, wird der erste INT nach dem Umschalten
 noch für den alten Kanal gelten. Die folgenden INTs sind gültig.

 In Free Running Mode - Warten, bis die neue Messung angefangen hat,
 Kanal wechseln, erste Messung ist für altes Kanal, verwerfen, nächste
 Messung ist gültig.

von Hosenmatz (Gast)


Lesenswert?

Das hängt von dem uC ab, aber die Terminologie weist auf AVRs hin.

Nach allem, was ich aus den Datenblättern weiß, muss die erste Wandlung 
verworfen werden, weil die Referenz sich möglicherweise noch nicht 
stabilisiert hat. Analoges gilt für eine externe Referenz. Hingegen 
wirken die Multiplexer für den Kanal bzw. für die I/O-Buffer umstellung 
sich nicht auf die Referenz aus.
Daraus folgt, dass dabei die erste Wandlung nicht verworfen werden muss. 
So etwas steht auch nicht im Datenblatt. Ich habe nochmal im Datenblatt 
vom ATMega88 nachgeschaut.

Da es verschiedene Varianten der AVRs gibt sollte man sicherheitshalber 
nochmal in dem entsprechenden Datenblatt und Errata nachschauen, denke 
ich.

von gürteltier (Gast)


Lesenswert?

Aus Application Note: Atmel AVR126: ADC of megaAVR in Single Ended Mode

It is recommended to discard the first conversion result (like whenever 
there is a change in ADC configuration like voltage reference / ADC 
channel change)

Also auch nach Kanalwechsel empfohlen.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

gürteltier schrieb:
> It is recommended to discard the first conversion result (like whenever
> there is a change in ADC configuration like voltage reference / ADC
> channel change)
>
> Also auch nach Kanalwechsel empfohlen.

 Bei wechseln der Voltage Reference ist der erste Wert ungenau, soll
 deswegen verworfen werden.

 Bei Kanalwechsel kann es sich um Wert für vorigen Kanal handeln,
 deswegen und nur deswegen soll dieser Wert verworfen werden.

 Beim Umstellen von I/O auf ADC dauert nur die erste Messung länger
 aber der Wert ist gültig.

von Rt (Gast)


Lesenswert?

gürteltier schrieb:
> Also auch nach Kanalwechsel empfohlen.

Kann ich bestätigen! Ich wollte mehrere Kanäle quasi parallel auswerten 
und bin fast verzweifelt...
Die ersten 1-2 Samples waren soweit daneben das selbst ein Mittelwert 
über 32 Samples noch deutlich falsch war.
Hatte dann ziemliche Probleme die geforderte Geschwindigkeit zu 
schaffen.

von Hosenmatz (Gast)


Lesenswert?

gürteltier schrieb:
> Aus Application Note: Atmel AVR126: ADC of megaAVR in Single Ended Mode
>
> It is recommended to discard the first conversion result (like whenever
> there is a change in ADC configuration like voltage reference / ADC
> channel change)
>
> Also auch nach Kanalwechsel empfohlen.

Danke für den Hinweis. Ich habe glatt vergessen, dass ich das gelesen 
hatte. Naja. Es kommt darauf an, denke ich.

Ich habe schon den Kanal gewechselt, ohne die erste Wandlung danach zu 
verwerfen und habe damit keine Probleme gehabt. Aber man sollte das wohl 
lieber nicht machen ohne den Effekt genauer abzuschätzen.
Ich hatte das mal anhand der Daten von Quelle und interner Schaltung 
abgeschätzt und es schien mir immer OK zu sein.

Es wird wohl keinen eigentlichen Zusammenhang zur Stabilisierung der 
Referenz geben (die ändert sich ja nicht, wenn der Kanal gewechselt 
wird) aber vermutlich haben die das in die selbe Schublade geworfen, wie 
das Ent- oder Hochladen des Sampe&Hold Kondensators, falls die Spannung 
am neuen Kanal anders ist als die am vorherigen. Für meine Begriffe eher 
eine "Angst-Empfehlung", aber vielleicht gibt es da auch andere 
Meinungen.

von Jörg (Gast)


Lesenswert?

Danke für die schnelle und zahlreiche Hilfe :)

von Det (Gast)


Lesenswert?

Wenn du die Referenz umschaltest und ggf. ein Kerko an ARef hängt, 
dauert es deutlich länger, bis neue Messwerte korrekt sind! Da ist es 
nicht mit nur einer Dummy-Messung getan.

von Marc V. (Firma: Vescomp) (logarithmus)


Lesenswert?

Rt schrieb:
> Die ersten 1-2 Samples waren soweit daneben das selbst ein Mittelwert
> über 32 Samples noch deutlich falsch war.

 Dann bist aber so ziemlich der einzige mit diesem Problem.

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


Lesenswert?

Rt schrieb:
> Die ersten 1-2 Samples waren soweit daneben das selbst ein Mittelwert
> über 32 Samples noch deutlich falsch war.

Dss spricht dafür, das deine Quellen recht hochohmig waren und deswegen 
den internen S&H Kondensator nicht schnell genug umgeladen haben. Das 
gleiche Problem sieht man auch bei offenen oder hochohmig getriebenen 
ADC Kanälen, die dann einen 'Mit-Zieh-Effekt' durch Nachbarkanäle haben.

Nicht umsonst möchte Atmel gerne Quellen mit weniger als 10k 
Innenwiderstand am ADC sehen. Das gilt nicht für den ADC mit internem 
OpAmp, aber den gibts ja nicht in jedem AVR.

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Hosenmatz schrieb:
> Ich habe schon den Kanal gewechselt, ohne die erste Wandlung danach zu
> verwerfen und habe damit keine Probleme gehabt.

Ich mache das auch immer so, wenn mehrere Kanäle zu messen sind.
Ein Übersprechen tritt nicht auf, d.h. der erste Meßwert ist stabil. Die 
Referenz schalte ich nicht um.

Im ADC-Interrupt wird der letzte Wandlungswert gelesen, der MUX einen 
Kanal weitergeschaltet und dann die Messung gestartet.
Man kann aber auch statt des ADC-Interrupt einen Timerinterrupt nehmen, 
um eine bestimmte Abtastrate zu erzielen.

Eine Ausnahme bildet die interne Bandgap (1,1V), um damit z.B. die 
eigene VCC zu messen. Die ist sehr hochohmig und dann verwerfe ich sogar 
15 Wandlungen.

von Peter D. (peda)


Lesenswert?

Matthias S. schrieb:
> Dss spricht dafür, das deine Quellen recht hochohmig waren und deswegen
> den internen S&H Kondensator nicht schnell genug umgeladen haben.

Bei hochohmigen Quellen schalte ich einen 100nF an den ADC-Eingang, der 
bildet einen genügend großen Puffer um den S&H Kondensator umzuladen. 
Man kann dann noch zwischen den Wandlungen längere Zeiträume lassen.

Ein Rail-to-Rail-OPV ginge auch, aber dann braucht man noch eine 
negative Versorgung, da die nicht bis 0V runter messen können.
Rail-to-Rail ist eigentlich gelogen, man hat immer noch 50..100mV 
Totbereich zu GND bzw. VCC.

von Hmm... (Gast)


Lesenswert?

Aber in der Regel kennt man doch die Impedanz der Referenz und kann die 
der Quelle zumindest grob schätzen, oder?  Und damit lässt sich dann die 
Wartezeit vor der ersten Messung und die Konvertierungsdauer jeder 
weiteren Messung ausrechnen. Die eingangsimpedanz vom ADC Pin kennt man 
ja auch.

Schon klar, das Timing lässt sich wenn man keinen Timer verwenden mag am 
einfachsten über eine definierte Anzahl Dummy Messungen machen, aber die 
Anzahl der dabei zu ignorierenden Samples sollte doch anhand der obigen 
Zusammenhänge klar zu bestimmen sein, oder?

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


Lesenswert?

Hmm... schrieb:
> Die eingangsimpedanz vom ADC Pin kennt man
> ja auch.

Die Unbekannte in der Rechnung ist dann noch der Widerstand des 
AVR-internen Kanalmultiplexers, der als RC Tiefpass mit dem S&H 
Kondensator zusammenwirkt. Darüber findet man in den Datenblättern wenig 
bis nix.

Peter D. schrieb:
> Im ADC-Interrupt wird der letzte Wandlungswert gelesen, der MUX einen
> Kanal weitergeschaltet und dann die Messung gestartet.

So mache ich das auch immer. Die Abtastrate lässt sich dann mit dem 
Vorteiler des ADC festlegen und sinnvollerweise wählt man die so, das 
sie innerhalb der Grenzen des ADC bleibt und so langsam wie möglich ist 
und so schnell wie nötig.
Ein beliebter Anfängerfehler ist es ja, den ADC viel zu hoch zu takten 
und sich dann über die merkwürdigen Ergebnisse zu wundern.

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.