ADC-Auflösung und Messbereich
- ADC-Wert
- 1.489
- Hexadezimal
- 0x5D1
- 1 LSB
- 806 µV
- Stufe beginnt bei
- 1,1996 V
- Rest in der Stufe
- 366 µV
- Stufen
- 4.096
1 LSB = Uref / 2n, Code = ⌊U / LSB⌋ – so rechnen die meisten Datenblätter (z. B. AVR, STM32). Der größte Code 4.095 steht schon bei Uref − 1 LSB; Uref selbst wird nie erreicht. Wer durch 2n − 1 teilt, liegt um weniger als 1 LSB daneben. Ideale Kennlinie ohne Offset-, Verstärkungs- und Linearitätsfehler; wie genau die Referenz ist, bestimmt die Genauigkeit meist stärker als die Bitzahl.
Ein Analog-Digital-Wandler (ADC) macht aus einer Spannung eine ganze Zahl. Wie fein er dabei unterscheidet, hängt von zwei Größen ab: der Zahl der Bits und der Referenzspannung. Mit diesem Rechner findest du heraus, welchen Wert dein Mikrocontroller für eine Spannung liefert, welche Spannung hinter einem gemessenen Wert steckt und wie du mit einem Spannungsteiler auch 12 V oder 24 V messen kannst. Wie ein digitales Messgerät grundsätzlich arbeitet, steht unter Digitale Messgeräte.
So rechnet der Rechner
Ein ADC mit n Bit teilt den Bereich von 0 bis zur Referenzspannung Uref in 2n gleiche Stufen. Eine Stufe heißt LSB (least significant bit):
Den Code bestimmt der Rechner durch Abrunden:
Der größte Code ist 2n − 1, bei 12 Bit also 4095. Er steht schon ab Uref − 1 LSB an; die Referenzspannung selbst erreicht der Zahlenwert nie. Umgekehrt gehört zu einem Code nicht eine Spannung, sondern eine ganze Stufe von Code · LSB bis (Code + 1) · LSB. Der Rechner zeigt Anfang, Mitte und Ende dieser Stufe.
Achtung: Manche Beispielprogramme rechnen mit U = Code · Uref / (2n − 1), damit der größte Code genau Uref ergibt. Das ist nicht falsch, aber es passt nicht zu dem, was in den meisten Datenblättern steht, etwa bei AVR- und STM32-Controllern. Der Unterschied bleibt unter einem LSB; der Rechner zeigt beide Werte nebeneinander. Viele Wandler verschieben außerdem die erste Schwelle um ein halbes LSB, sodass der Fehler ±½ LSB beträgt statt 0 bis 1 LSB.
Für den größeren Messbereich schaltest du vor den ADC einen Spannungsteiler. Damit die größte Eingangsspannung Umax gerade Uref ergibt, gilt
Der Rechner rundet R1 auf den nächsten größeren Wert der gewählten E-Reihe, damit der ADC bei Umax nicht übersteuert. Danach rechnet er zurück, welcher Messbereich damit tatsächlich herauskommt und wie groß ein Schritt am Eingang ist:
So benutzt du ihn
Wähle die Auflösung zwischen 8 und 24 Bit und trag die Referenzspannung ein, etwa „3,3 V“ oder „2,048 V“. Dann den Modus:
- Spannung → Code: Eingangsspannung eintragen, etwa „1,2 V“ oder „850 mV“.
- Code → Spannung: den Messwert eintragen, dezimal („2048“) oder hexadezimal („0x800“). Wie die Zahlensysteme zusammenhängen, erklärt Zahlensysteme.
- Messbereich erweitern: größte Eingangsspannung, R2 und die Reihe für R1 wählen.
Die Grafik zeigt in den ersten beiden Modi einen vergrößerten Ausschnitt der Treppenkennlinie um deinen Messpunkt, im dritten Modus den Teiler mit allen Werten.
Beispiel
Voreingestellt ist ein 12-bit-ADC mit 3,3 V Referenz, wie in vielen 32-bit-Mikrocontrollern.
Im Modus Code → Spannung steht 2048. Das ist genau die Hälfte: 1,65 V, die Stufe reicht bis 1,6508 V. Mit 2n − 1 gerechnet kämen 1,6504 V heraus.
Im Modus Messbereich erweitern soll eine 12-V-Spannung mit R2 = 10 kΩ gemessen werden. Rechnerisch braucht es R1 = 10 kΩ · (12 / 3,3 − 1) ≈ 26,4 kΩ, der nächste größere E24-Wert ist 27 kΩ. Damit reicht der Messbereich bis 12,2 V, bei 12 V liegen 3,24 V am ADC, und ein Schritt entspricht 2,98 mV am Eingang. Der ADC sieht eine Quelle von 7,3 kΩ, durch den Teiler fließen 324 µA.
Praxis und typische Fehler
- Auflösung mit Genauigkeit verwechseln. Ein 12-bit-ADC löst 0,02 % auf, aber eine Referenz mit 1 % Toleranz macht den Messwert um 1 % ungenau. Dazu kommen Offset, Verstärkungsfehler und Rauschen; die Grundlagen stehen unter Messfehler.
- Zu hochohmige Quelle. Beim Abtasten lädt der ADC einen kleinen Kondensator über die Quelle. Das Datenblatt des ATmega328P zum Beispiel nennt etwa 10 kΩ als größten Quellwiderstand. Ein größerer Teiler braucht eine längere Abtastzeit oder einen Kondensator von etwa 100 nF direkt am Pin, der die Ladung liefert. Der bildet mit dem Teiler einen Tiefpass, siehe RC-Grenzfrequenz.
- Teiler unten vergessen. Ohne R2 liegt die volle Spannung über die Schutzdioden am Pin. Das geht nur gut, solange der Strom sehr klein bleibt.
- Referenz aus der Versorgung. Nutzt der ADC VDD als Referenz, wandert jeder Messwert mit der Versorgung. Für Batteriespannungen nimmst du die interne Bandgap-Referenz oder misst ratiometrisch wie beim NTC-Thermistor.
- Toleranzen des Teilers. Zwei 1-%-Widerstände können das Teilerverhältnis um bis zu 2 % verschieben. Kalibriere einmal mit einer bekannten Spannung oder nimm 0,1-%-Widerstände.
Häufige Fragen
- Wie viele Bits brauche ich? Rechne aus, welche Spannungsänderung du am Eingang noch sehen willst, und teile den Messbereich dadurch. Für 10 mV bei 12 V reichen 11 Bit; mit Reserve für Rauschen nimmst du 12.
- Warum nicht einfach 24 Bit? Hochauflösende Wandler sind langsamer, und ihre unteren Bits gehen ohne sauberes Layout und gute Referenz im Rauschen unter.
- Was bringt Mitteln? Mitteln über viele Messungen senkt das Rauschen und kann die effektive Auflösung um ein, zwei Bits erhöhen, wenn das Signal etwas rauscht.