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?
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.