Worum es geht: Wie aus einer Spannung eine Zahl wird, und welche drei Dinge darüber entscheiden, was diese Zahl wert ist: Auflösung, Referenz und Quellwiderstand.
Wozu du das brauchst: Weil 12 Bit nichts nützen, wenn die Referenz um ein Prozent danebenliegt — das sind 41 Stufen Fehler bei einem Wandler, der 0.8 mV auflöst. Auflösung bekommt man geschenkt, Genauigkeit muss man sich verdienen.
Danach kannst du: eine Stufenbreite und den Fehler durch eine ungenaue Referenz ausrechnen, beurteilen ob deine Quelle niederohmig genug ist, und einschätzen, wofür der ADC im ESP32 taugt und wofür nicht.
Zwei Wörter, die verwechselt werden
In Modul 1 hast du einen NTC über einen Teiler an einen Analogeingang gehängt. Was dort herauskommt, ist keine Spannung, sondern eine Zahl. Wie diese Zahl entsteht, entscheidet, wie viel deine Messung wert ist.
Die beiden Begriffe, die dabei ständig durcheinandergeraten:
- Auflösung — in wie viele Stufen der Bereich geteilt wird. Eine Eigenschaft der Zahl.
- Genauigkeit — wie nah der ausgegebene Wert an der wirklichen Spannung liegt. Eine Eigenschaft der Messung.
Ein Wandler kann 16 Bit auflösen und trotzdem um ein Prozent danebenliegen. Auflösung bekommt man geschenkt, Genauigkeit muss man sich verdienen.
Die amberne Treppe ist die Kennlinie eines Wandlers, die gestrichelte Gerade der ideale Verlauf. Innerhalb einer Stufe ändert sich der ausgegebene Wert nicht — jede Spannung in diesem Fenster ergibt dieselbe Zahl.
Die Breite einer Stufe heisst LSB, least significant bit, und sie ergibt sich aus Referenzspannung und Auflösung:
1 LSB = U(ref) / 2ⁿ
| Auflösung | Stufen | 1 LSB bei 3.3 V |
|---|---|---|
| 10 Bit | 1024 | 3.223 mV |
| 12 Bit | 4096 | 0.806 mV |
| 16 Bit | 65 536 | 50.4 µV |
Bei 1.65 V, also der halben Referenz, liefert ein 12-Bit-Wandler den Code 2048.
2ⁿ oder 2ⁿ − 1?
Manche Datenblätter rechnen mit 4095 statt 4096, weil der grösste ausgebbare Code 4095 ist. Beides ist verbreitet, und der Unterschied beträgt 0.02 % — für jede Messung, die dieser Kurs behandelt, belanglos.
Dieser Kurs rechnet durchgehend mit 2ⁿ, also 4096. Wenn du eine Zahl aus einem Datenblatt nachrechnest und knapp danebenliegst, ist das oft die Erklärung.
Die Referenz ist der Massstab
Ein Wandler misst nicht Volt. Er misst Bruchteile seiner Referenzspannung. Die Referenz ist das Lineal, und ein falsches Lineal macht jede Messung falsch — gleichmässig und unauffällig.
Liegt die Referenz um 1 % daneben, also um 33 mV bei 3.3 V, dann verschiebt sich jeder Messwert um:
33 mV / 0.806 mV = 41 Stufen
Einundvierzig Stufen Fehler bei einem Wandler, der 0.806 mV auflöst. Die Auflösung ist damit nicht falsch — sie ist nur wertlos, weil die Stufen am falschen Ort liegen.
Daraus folgt eine Regel, die man sich sparen kann zu diskutieren: Wenn es auf Genauigkeit ankommt, braucht es eine Referenzquelle — einen Baustein, der eine feste Spannung liefert, unabhängig von der Versorgung. Die Versorgungsspannung selbst als Referenz zu nehmen ist bequem und für alles taugt, was man ohnehin nur vergleicht: «heller als vorher», «wärmer als vorher».
Der Eingang zieht doch Strom
Ein Analogeingang gilt als hochohmig, und für Gleichspannung stimmt das. Im Augenblick der Messung stimmt es nicht.
Der Wandler schaltet für kurze Zeit einen kleinen Kondensator — typisch 15 pF — an den Pin und lädt ihn auf die Eingangsspannung. Diese Abtast-und-Halte-Schaltung braucht in diesem Moment sehr wohl Strom, und wenn die Quelle zu hochohmig ist, ist der Kondensator nicht fertig geladen, bevor der Wandler ihn wieder abklemmt. Dann misst er zu wenig.
Wie hochohmig die Quelle sein darf, folgt aus dem RC-Vorgang aus Modul 3: Der Kondensator muss innerhalb der Abtastzeit auf besser als ein halbes LSB geladen sein.
R(max) = t(s) / (C(s) · ln(2 · 2ⁿ))
Mit 1 µs Abtastzeit, 15 pF und 12 Bit ergibt das 7.4 kΩ. Daher die überall zu findende Faustregel: Quellwiderstand unter 10 kΩ.
Und damit schliesst sich der Kreis zu Modul 4: Der hochohmige Teiler mit Rth = 50 kΩ, der dort schon am Impedanzwandler scheiterte, scheitert auch hier — nur diesmal unauffälliger, weil er nicht gar nichts liefert, sondern etwas leicht Falsches.
Mitteln hilft, aber nur mit der Wurzel
Zufälliges Rauschen lässt sich wegmitteln. Der Gewinn wächst allerdings nur mit der Wurzel aus der Anzahl der Messungen:
| gemittelte Messungen | Rauschen kleiner um |
|---|---|
| 16 | Faktor 4 |
| 64 | Faktor 8 |
| 256 | Faktor 16 |
Viermal so viele Messungen halbieren das Rauschen — mehr nicht. Und der wichtige Vorbehalt: Das gilt nur für zufälliges Rauschen. Ein Referenzfehler, ein Offset oder eine krumme Kennlinie sind keine Zufälle; sie bleiben nach tausend Mittelungen exakt so gross wie vorher.
Der ADC des ESP32 ist ein schlechtes Beispiel für einen guten ADC
Alles bisher Gesagte gilt allgemein. Der Wandler im ESP32 hält sich nur teilweise daran, und wer die obigen Formeln blind auf ihn anwendet, bekommt falsche Zahlen.
- Seine Referenz liegt nicht bei 3.3 V, sondern bei etwa 1.1 V. Grössere Bereiche entstehen über schaltbare Dämpfungsstufen vor dem Wandler.
- Diese Referenz streut von Chip zu Chip. Jedes Exemplar trägt deshalb Kalibrierwerte in seinen eFuses, und die Herstellerbibliothek rechnet damit.
- Die Kennlinie ist merklich nichtlinear, besonders an den Rändern des Bereichs.
- Bei Nutzung des Funkteils wird es zusätzlich unruhig.
Brauchbar ist er trotzdem — für Werte, die man vergleicht statt sie absolut anzugeben. Für eine Messung mit Anspruch nimmt man einen externen Wandler mit eigener Referenz, etwa über I²C. Der ist dann auch der Grund, warum du Modul 8 gelesen hast.
Kurze Selbstkontrolle
Zählt nicht — nur zum Prüfen, ob es angekommen ist.
1.Ein 12-Bit-Wandler arbeitet mit 3.3 V Referenz. Wie gross ist eine Stufe, und was bedeutet ein Referenzfehler von 1 %?
2.Warum darf die Quelle an einem Analogeingang nicht beliebig hochohmig sein, obwohl der Eingang als hochohmig gilt?