Forum: Mikrocontroller und Digitale Elektronik ADC - Ergebnis gerundet?


von Steffen Hausinger (Gast)


Lesenswert?

Hallo allerseits,

es geht hier um den ADC im Tiny45 im Speziellen, aber mich interessiert
die Frage auch allgemein: Ist das Ergebnis eines ADCs eigentlich
gerundet? Also wenn ich eine Referenzspannung von 100 habe und 1.5 am
Eingang anliegen - erhalte ich denn als Wert 1 oder 2?

Im Datenblatt Tiny45 (10 Bit ADC) steht nur die allgemeine Formel
ADC=(Vin*1024)/Vref.

Grüsse,
Steffen

von A.K. (Gast)


Lesenswert?

Guck ins Datasheet zum Thema Genauigkeit vom ADC, und dann überleg dir
die Frage nochmal.

von Steffen Hausinger (Gast)


Lesenswert?

Oh ja, jetzt sehe ich es auch. Bei der Beschreibung des Offset-Fehlers
steht: "The deviation of the first transition (0x000 to 0x001)
compared to the ideal transition (at 0.5 LSB)."

D.h. er springt bei 0.5LSB um und rundet also?

von johnny.m (Gast)


Lesenswert?

> ...Referenzspannung von 100 habe und 1.5 am Eingang
> anliegen...

Du scheinst die Funktionsweise des ADC nicht verstanden zu haben. Bitte
setze Dich mal genauer mit der Beschreibung im Datenblatt auseinander,
v.a. was die Referenzspannung und den Wandlungsbereich angeht. Dann
erklärt sich das von selbst. Runden tut da niemand, weils nix zu runden
gibt...

von Steffen Hausinger (Gast)


Lesenswert?

Ja, es stimmt schon, dass ich mich noch nicht lange mit ADCs
beschäftige. Aber kannst Du mir nicht etwas genauer sagen, wo es hakt?
Irgendwo muss er doch vom Analogbereich eine Quantisierung vornehmen.

Aber ich glaube, Du spielst auf meine Werte an? Die sollten nur
veranschaulichen (stand auch keine Einheit hinter). Aber ein konkretes
Beispeil: 8-Bit ADC, Vref=2,55V und Vin=2,545V. Was steht im
Messregister - der Wert 254 (für 2,54V) oder 255 (für 2,55V)?

Oder auf die Spitze getrieben: 1-Bit ADC, Vref=1V, Vin=0,5V. Steht eine
0 oder eine 1 im Messregister?

Oder bitte nenn mir ein Stichwort, soo viel gibt das Datenblatt des
Tiny nun auch nicht her (oder ich überlese es).

von Dieter Werner (Gast)


Lesenswert?


von Bernd Rüter (Gast)


Lesenswert?

Um es einfach zu sagen:

Ein AD-Wandler "rundet" immer ab, weil er immer den unteren der
beiden Werte als Vergleich erzeugt.
Aufgrund der Meßfehler, Rauschen, ... sollte man sich nicht darauf
verlassen, daß auch immer die angelegte Spannung gemessen wird.

von Frank Simon (Gast)


Lesenswert?

Das hab ich aber anders gelernt: die unterste Stufe der treppenförmigen
Übertragungsfunktion ist nur 0,5 LSB breit, die oberste auch, alle
anderen 1 LSB. So erklärt sich, dass üblicherweise in den Formeln durch
1023 (bzw. 2^n -1) geteilt wird, obwohl es 1024 Stufen gibt. Das, was
üblicherweise Quantisierungsrauschen genannt wird,  ist also
symmetrisch links und rechts vom Schnittpunkt der Treppenfunktion mit
der idealen Übertragungsfunktion (Ursprungsgerade mit Steigung 1)
verteilt. Steffen nennt dies Rundung, und ich finde den Ausdruck
treffend.
mfg
Frank Simon
Meine Quelle: Principles of data aquisition.pdf, gibts irgendwo bei
ti.com zum Download

von A.K. (Gast)


Lesenswert?

Die Genaugkeit des ADC liegt bei 2 LSB. Und ihr diskutiert um 0,5 LSB.
Um geht was es hier eigentlich? Ums Prinzip?

von Frank Simon (Gast)


Angehängte Dateien:

Lesenswert?

Na klar gehts hier darum, das Prinzip zu verstehen.
Nochmal zu meinem Posting eben:
In der angegebenen Quelle stehts falsch drin, hab ich grad nochmal
nachgeschaut. Hier stehts richtig:
Understanding data converters.pdf , gibts ebenfalls bei TI.
Im Anhang ist die entsprechende Graphik zu sehen. Ihr müsst also in
Euren Programmen immer das LSB berechnen als
1 LSB = FSR /(2^n -1) , und nicht /(2^n).
mfg
Frank Simon

von johnny.m (Gast)


Lesenswert?

> 1 LSB = FSR /(2^n -1) , und nicht /(2^n)

Das stimmt so nicht (zumindest dann nicht, wenn FSR die Referenz sein
soll)! Die Formel im ATMEL-Datenblatt stimmt (ADC=(Vin*1024)/Vref -> 1
LSB = Vref / 2^10). Das Thema wurde hier schon mehrfach gründlich
diskutiert. Ein SAR-Wandler wie er im AVR drin steckt teilt die
Referenz durch 2^n. Das maximale Wandlungsergebnis ist aber 2^n - 1,
also 1023. Ein LSB geht prinzipbedingt oben immer 'verloren'. Bei
Vref = 2,56 V entspricht 1 LSB 2,5 mV, der maximal messbare Wert
beträgt 1023 * 2,5 mV = 2,5575 V.

Gruß

Johnny

von Frank Simon (Gast)


Lesenswert?

Hallo Johnny,
wir werden es wohl nicht letztendlich klären können.
Du zitierst richtig, und man kann das Datenblatt an der Stelle nicht
anders verstehen. Das hieße aber andererseits, dass der max.
Quantisierungsfehler -1LSB beträgt, oder mit Steffens Worten: immer
abgerundet wird. Kann ja auch sein, dass Atmel hier für das letzte Bit
kein Extrasüppchen kochen wollte.
Aber an anderer Stelle (ADC Accuracy Definitions) im selben Datenblatt
(Beim Mega8: Abb.100) steht, der Quantisierungsfehler betrage immer
+-0,5 LSB, das passt auch zu der Abbildung, bei der der Sprung von 0
auf 1 bei +0,5 LSB erfolgt. Und steht im Widerspruch zum oben Gesagten.
Vielleicht haben die Atmel-Leute da aus dem selben Theoriebuch
abgeschrieben wie ich, nur dass die Theorie nicht zu ihrem Wandler
passt.
So what, ist ja "in Wirklichkeit" ganz egal!

Gruß

Frank Simon

von johnny.m (Gast)


Lesenswert?

Nein, der Quantisierungsfehler ist etwas anderes. Der ist tatsächlich
konstant +-0,5 LSB, was lediglich heißt, dass das Wandlungsergebnis
bereits dann als 0x01 ausgegeben wird, wenn am Eingang ein bisschen
mehr als 0,5 LSB anliegen (wäre jetzt mit dem obigen Beispiel mit Vref
= 2,56 V 12,5 mV). Wenn man einen Wert von z.B. 125d ausgegeben
bekommt, heißt das, dass der der am Eingang anliegenden Spannung
entsprechende Wert irgendwo zwischen 124,5 und 125,5 liegt (in
Spannungen ausgedrückt zwischen 1,550 und 1,575 V). Das ist eigentlich
immer so. Die Aufteilung der Referenzspannung ist davon völlig
unabhängig und führt hier zu keinem Widerspruch. Ein (Successive
Approximation-)ADC kann nicht den vollen Bereich wandeln.
Prinzipbedingt bleibt immer 1 LSB übrig (was recht gut verständlich
ist, wenn man sich den Aufbau und die Funktionsweise des Wandlers
ansieht). Bei n Bit Auflösung ist 1 LSB grundsätzlich Vref/2^n, während
der maximal erfassbare Wert (2^n)-1 ist.

Ich habe leider den alten (klärenden) Thread nicht gefunden. Da hatten
wir das mal durchdiskutiert und waren eigentlich zu dem Schluss
gekommen, dass das so schon korrekt ist.

Gruß

Johnny

von Frank Simon (Gast)


Lesenswert?

Hosianna, der Geist ist endlich auch über mich gekommen!
Ich geb dir Recht, und alles ist ganz einfach, wenn man versteht, dass
URef und FSR nicht das gleiche sind:
Es gibt eine Formel mit 2^n, die richtig ist, und eine mit 2^n - 1, die
auch richtig ist.
 FSR (Full Scale Range):    FSR/1023=1LSB   => FSR  = 1023LSB
 URef:                      URef/1024=1LSB  => URef = 1024LSB
Das ganze ist ohne Widerspruch, wenn man weiß, dass beim SA-Wandler
"oben 1 LSB verloren geht", denn das heißt: FSR = VRef-1LSB.
Mein Fehler lag also in der Annahme, Referenzspannung URef und
Messbereich FSR seien das gleiche.
Gruß
Frank

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.