AD-Wandler mit 10Bit eichen

Gast #2423880
Lesenswert?

Mit 10 Bit hast du 1024 mögliche Messwerte, also 1023 Intervalle.

Die Breite eines Intervalls ist dann Uref/1023 = 0,00249267 Volt pro 
Bit.

Ist dein ADC-Wert nun 1023, eingrößerer Wert ist nicht möglich, so ist 
deine gemessene Spannung 1023 * Uref/1023 = Uref, so wie es sein soll.
Hättest du durch 1024 dividiert, dann ergäbe sich als maximaler Messwert 
1023 * Uref/1024 < Uref. Das kann nicht richtig sein.

Wenn dein Digitalwert nun 500 beträgt, dann ist die Spannung 
500*0,00249267 = 1,246335V erreicht oder geringfügig überschritten.
Die Eingangsspannung des ADC ist noch etwas kleiner als 501*0,00249267 = 
1,248827V. Die Differenz pro Bit liegt bei rund 2,5mV.

Der Hinweis in dem von Falk genannten Artikel ist falsch!

Joe
#2423892
Lesenswert?

Joe schrieb:
> Mit 10 Bit hast du 1024 mögliche Messwerte, also 1023 Intervalle.
Nope. Du hast 1024 Intervalle, aber der größte Wert der vorkommen kann 
ist 1023

2 Bit und Referenzspannung sei 4V (= maximal mögliche Spannung)

   00     0V - 1V
   01     1V - 2V
   10     2V - 3V
   11     3V - 4V

4 Intervalle, jedes Intervall ist 1V gross.

> Der Hinweis in dem von Falk genannten Artikel ist falsch!

Ist er nicht.
Wenn der ADC 11 (also 3) liefert, kann die Spannung irgendwo im Bereich 
3V bis 4V sein. Nur weil der ADC den höchstmöglichen Wert liefert, heißt 
das nicht, dass da 4V am Eingang anliegen. Es können genausogut auch 
3.0001V sein. Genauso in der anderen Richtung: Nur weil der ADC 00 
liefert, heißt das noch lange nicht, dass am Eingang genau 0V anliegen. 
Es können genausogut auch 0.9999V sein.
Gast #2423914
Lesenswert?

Leute, nochmal: Es hängt vom verwendeten ADC ab. Und dazu schaut bitte 
ins Datenblatt. Die Intervalle können nämlich genauso bei

   00     0V - 0.5V
   01     0.5V - 1.5V
   10     1.5V - 2.5V
   11     2.5V - 3V

mit 3V Referenz (als anschauliches Beispiel) sein.

Ausserdem würde ich bei 10 bit im AVR lässig durch 1024 teilen, weil das 
mit paar Shifts machbar ist, während durch 1023 eine zeit- und 
codeaufwändige Softwaredivision erfordert. Der Fehler ist 
vernachlässigbar und wird durch die Fehler des AVR (Vref, 
Steigungsfehler) locker überdeckt.
#2424079
Lesenswert?

Timm Thaler schrieb:
> Leute, nochmal: Es hängt vom verwendeten ADC ab. Und dazu schaut bitte
> ins Datenblatt. Die Intervalle können nämlich genauso bei
>
>    00     0V - 0.5V
>    01     0.5V - 1.5V
>    10     1.5V - 2.5V
>    11     2.5V - 3V
>
> mit 3V Referenz (als anschauliches Beispiel) sein.

Beim AVR (um den es in der Ursprungsfrage geht) ist das nicht so. Und 
auch sonst wüsst ich jetzt keinen ADC, der nicht zumindest versucht, 
seine Schaltpunkte gleichmäßig zu verteilen.

Vielleicht hast du ja ein Beispiel für so einen Sonderling.

Timm Thaler schrieb:
> Ausserdem würde ich bei 10 bit im AVR lässig durch 1024 teilen, weil das
> mit paar Shifts machbar ist, während durch 1023 eine zeit- und
> codeaufwändige Softwaredivision erfordert. Der Fehler ist
> vernachlässigbar und wird durch die Fehler des AVR (Vref,
> Steigungsfehler) locker überdeckt.

Andersherum wir ein Schuh draus:

Man teilt durch 1024, weil das richtig ist.
Man teilt nicht durch 1023, weil das a) langsam ist, und b) falsch ist.
Gast #2424124
Lesenswert?

Timm Thaler schrieb:
> Ausserdem würde ich bei 10 bit im AVR lässig durch 1024 teilen, weil das
> mit paar Shifts machbar ist, während durch 1023 eine zeit- und
> codeaufwändige Softwaredivision erfordert. Der Fehler ist
> vernachlässigbar und wird durch die Fehler des AVR (Vref,
> Steigungsfehler) locker überdeckt.

wurde zwar schon mehrmals gesagt, aber das mit 1023 ist FALSCH!
Richtig ist U = ADC-Wert*Uref/1024   !!!!
#2424128
Lesenswert?

Walter schrieb:
> Richtig ist U = ADC-Wert*Uref/1024

oder "Richtiger™":
U liegt irgendwo zwischen
ADC-Wert*Uref/1024
und
(ADC-Wert+1)*Uref/1024

Als Mittelwert zum weiterrechnen könnte man
(ADC-Wert+0.5)*Uref/1024.0
nehmen, oder etwas wie:
(ADC-Wert*2+1)*Uref/2048

Aber auf das halbe LSB kommt es meist eh nicht an, weil der ADC da 
sowieso rumwackelt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren