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
Guck ins Datasheet zum Thema Genauigkeit vom ADC, und dann überleg dir die Frage nochmal.
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?
> ...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...
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).
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.
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
Die Genaugkeit des ADC liegt bei 2 LSB. Und ihr diskutiert um 0,5 LSB. Um geht was es hier eigentlich? Ums Prinzip?
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
> 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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.