Funktionsweise des ADC-Auflösungsrechners
Der ADC-Auflösungsrechner ermittelt die LSB-Schrittweite, den Quantisierungsfehler und das ideale Signal-Rausch-Verhältnis (SNR) eines Analog-Digital-Wandlers basierend auf seiner Bitbreite und der Referenzspannung. Über eine einheitliche Benutzeroberfläche können sowohl unipolare als auch bipolare Eingangsbereiche evaluiert, Spannungen in digitale Codes (und umgekehrt) konvertiert sowie die minimal erforderliche Bitbreite für eine gewünschte Spannungsänderung bestimmt werden. Das Tool stellt für jede Berechnung die vollständigen mathematischen Einsetzungen dar, was die Überprüfung der zugrundeliegenden Formeln erleichtert.
Sämtliche eingegebenen Zahlen verbleiben in diesem Browser – nichts wird hochgeladen. Alle Berechnungen werden lokal auf dem Gerät des Nutzers ausgeführt.
Eingabeparameter des Werkzeugs
Für die Berechnung benötigt das Tool folgende Eingaben:
- Auflösung N (Bits): Eine ganze Zahl von 1 bis 32 — die nominale Bitbreite des Wandlers.
- Referenzspannung: Ein positiver numerischer Wert für die Referenzspannung.
- Referenzeinheit: Die physikalische Einheit der Referenzspannung.
- Eingangsbereich: Die Auswahl zwischen „Unipolar · 0 bis Vref“ und „Bipolar · −Vref bis +Vref“.
- Angezeigte Dezimalstellen: Die Anzahl der Nachkommastellen in der Ausgabe.
- Konvertieren (optionaler Messpunkt): Ein Umschalter zwischen den Modi „Spannung → Code“ und „Code → Spannung“.
- Eingangsspannung (optional): Der Spannungswert, der in einen digitalen Code übersetzt werden soll.
- Code (Schritte) (optional): Eine ganze Zahl von 0 bis zum höchsten Code des Wandlers zur Rückrechnung in eine Spannung.
- Spannungseinheit: Die Einheit für die Eingangsspannung oder die berechnete Code-Spannung.
- Kleinste aufzulösende Änderung (optional): Eine positive Ziel-Spannungsstufe zur Bestimmung der benötigten Bitbreite.
- Schritteinheit: Die physikalische Einheit für die kleinste aufzulösende Änderung.
Über die Schaltflächen „Beispiel laden“ und „Leeren“ lassen sich die Felder schnell belegen oder zurücksetzen.
Berechnete Ergebnisse und Ausgabe-Labels
Die Ergebnisse werden unter exakt definierten Bezeichnungen ausgegeben:
Schrittweite und Rauschen
- LSB-Schrittweite: Die berechnete Schrittweite des niederwertigsten Bits (Least Significant Bit), inklusive Prozentanteil des Vollausschlag-Bereichs und ppm-Wert.
- Quantisierungsstufen: Die Gesamtzahl der diskreten Stufen (2ᴺ).
- Höchster Code: Der maximale digitale Ausgangswert (2ᴺ − 1).
- Vollaussteuerungs-Bereich: Die gesamte Spannungsspanne des Wandlers.
- Max. Quantisierungsfehler (±½ LSB): Der maximale theoretische Quantisierungsfehler.
- Quantisierungsrauschen (rms): Die effektive Rauschspannung der Quantisierung.
- Ideales SNR (Vollaussteuerungs-Sinus): Die theoretische Obergrenze des Signal-Rausch-Verhältnisses in Dezibel.
- Dynamikbereich: Der theoretische Dynamikbereich in Dezibel.
Am Messpunkt
- Ausgangscode: Der digitale Code aus der Spannungs-Konvertierung.
- Binär: Die binäre Darstellung des Ausgangscodes.
- Hexadezimal: Die hexadezimale Darstellung des Ausgangscodes.
- Code-Spannung: Die exakte Spannung, die dem digitalen Code entspricht.
- Quantisierungsfehler: Die Differenz zwischen der Eingangsspannung und der Code-Spannung.
- Eingangsfenster für diesen Code: Der Spannungsbereich, der auf diesen Code abgebildet wird.
Sizing-Status (Auflösungsprüfung)
Wenn eine kleinste Änderung definiert wurde, gibt das Tool an, wie viele Bits für diese Auflösung nötig sind und ob der aktuelle Wandler dies abdeckt. Falls nicht, wird die tatsächlich auflösbare Schrittweite des aktuellen Wandlers genannt.
Mathematische Formeln und Einsetzungen
Das Tool zeigt die symbolischen Formeln und die konkreten Einsetzungen mit den Benutzerwerten:
- LSB-Schrittweite: LSB = FSR ÷ 2ᴺ
- Max. Quantisierungsfehler: ±LSB ÷ 2
- Quantisierungsrauschen (rms): LSB ÷ √12
- Ideales SNR (Vollaussteuerungs-Sinus): SNR = 6.02 × N + 1.76 dB
- Dynamikbereich: 6.02 × N dB
- Unipolarer Code: Code = round(Vin ÷ LSB)
- Bipolarer Code: Code = round((Vin + Vref) ÷ LSB)
- Unipolare Spannung: V = Code × LSB
- Bipolare Spannung: V = Code × LSB − Vref
- Quantisierungsfehler am Messpunkt: Code-Spannung − Eingangsspannung
- Auflösungsprüfung: N ≥ log₂(FSR ÷ step), aufgerundet auf die nächste ganze Zahl
Berechnungsbeispiel (Standard-Beispielwerte)
Bei einer Auflösung von 12 Bits, einer Referenzspannung von 3.3 V und unipolarem Bereich ergeben sich folgende Werte:
- Quantisierungsstufen: 2¹² = 4.096
- Höchster Code: 4.095
- LSB-Schrittweite: 3.3 V ÷ 4.096 ≈ 805.6641 µV
- Max. Quantisierungsfehler: ±402.832 µV
- Quantisierungsrauschen: ≈ 232.5752 µV rms
- Ideales SNR: ≈ 74.01 dB
- Dynamikbereich: ≈ 72.25 dB
Ein Eingangssignal von exakt 1.65 V liegt genau in der Mitte des Bereichs und wird auf den Code 2.048 abgebildet (Binär: 1000 0000 0000, Hexadezimal: 0x800) mit einem Quantisierungsfehler von null.
Mathematische Regeln und Grenzfälle
- Quantisierungsmodell: Das Tool nutzt das Modell eines idealen Quantisierers, bei dem der erste Code-Übergang bei einem halben LSB-Schritt (½ LSB) stattfindet. Die LSB-Breite ist als FSR ÷ 2ᴺ definiert.
- Gültigkeitsbereich: Alle Berechnungen beschreiben einen idealen Wandler. Reale Bauteile weisen zusätzliche Fehler wie INL, DNL, Offset-, Verstärkungs- und Referenzfehler auf. Die berechneten Werte für SNR, Dynamikbereich und den Quantisierungsfehler von ±½ LSB stellen theoretische Limits dar. Die nominale Auflösung eines Wandlers ist nicht mit seiner realen Genauigkeit gleichzusetzen.
- Unipolarer Bereich: Der Vollaussteuerungs-Bereich (FSR) entspricht Vref. Der Eingangsbereich erstreckt sich von 0 bis Vref.
- Bipolarer Bereich: Der Vollaussteuerungs-Bereich (FSR) entspricht 2 × Vref. Der Eingangsbereich reicht von −Vref bis +Vref. Der Code 0 entspricht −Vref, der mittlere Code 2ᴺ⁻¹ entspricht 0 V, und der höchste Code liegt eine LSB-Stufe unter +Vref.
- Sättigung am oberen Limit: Liegt die Eingangsspannung über der oberen Grenze, sättigt der Ausgang beim höchsten Code (2ᴺ − 1). Das Tool gibt folgende Warnung aus: „Der Eingang liegt über der oberen Grenze: Der Ausgang sättigt beim höchsten Code und der angezeigte Fehler ist der tatsächliche Restfehler — die Grenze von ±½ LSB gilt nicht mehr.“
- Sättigung am unteren Limit: Liegt die Eingangsspannung unter der unteren Grenze, sättigt der Ausgang bei Code 0. Das Tool gibt folgende Warnung aus: „Der Eingang liegt unter der unteren Grenze: Der Ausgang sättigt bei Code 0 und der angezeigte Fehler ist der tatsächliche Restfehler — die Grenze von ±½ LSB gilt nicht mehr.“
- Eingang in der Mitte des Bereichs: Liegt die Eingangsspannung exakt in der Mitte, vermerkt das Tool, dass die Hälfte der Spanne mit einem Quantisierungsfehler von null auf den mittleren Code abgebildet wird.
Fehlermeldungen der Benutzeroberfläche
Das Tool validiert alle Eingaben und gibt bei Fehlern präzise Meldungen aus:
- Bei nicht-numerischen Eingaben:
"‹field›: „‹token›“ ist keine Zahl." - Bei ungültiger Bitbreite:
"Die Auflösung muss eine ganze Zahl von Bits zwischen 1 und 32 sein." - Bei ungültiger Referenzspannung:
"Die Referenzspannung muss größer als null sein." - Bei nicht-ganzzahligen Codes:
"Ein Code ist eine ganze Zahl von Schritten." - Bei Codes außerhalb des Wandlerbereichs:
"Der Code muss bei einem ‹bits›-Bit-Wandler zwischen 0 und ‹max› liegen." - Bei ungültiger Ziel-Schrittweite:
"Die kleinste aufzulösende Änderung muss größer als null sein." - Bei mathematischen Überläufen:
"Ein Wert oder Zwischenergebnis überschreitet den unterstützten Zahlenbereich."
Häufig gestellte Fragen (FAQ)
Bedeutet eine 12-Bit-Auflösung auch eine 12-Bit-Genauigkeit?
Nein. Die Auflösung ist lediglich die Breite des Codes — also wie fein der Bereich unterteilt ist. Die Genauigkeit wird durch die INL und Offset-/Verstärkungsfehler des Wandlers, die Toleranz und das Rauschen der Referenz sowie die umgebende Schaltung begrenzt. Deshalb geben Datenblätter die ENOB an: Ein 12-Bit-SAR liefert typischerweise 10–11 effektive Bits. Das hier gezeigte ideale SNR von 74 dB ist die theoretische Obergrenze, die kein realer 12-Bit-Wandler erreicht.
Wie verändert ein Eingangsbereich von ±Vref die Berechnung?
Die Spanne verdoppelt sich auf 2 × Vref, sodass derselbe Wandler doppelt so große Schritte auflöst: LSB = 2 × Vref ÷ 2^N. Die Codes reichen von der negativen bis zur positiven Versorgungsspannung — Code 0 entspricht −Vref, der mittlere Code 2^(N−1) entspricht 0 V und der höchste Code liegt einen Schritt unter +Vref. Wählen Sie oben den bipolaren Bereich aus, damit null Volt genau auf dem mittleren Code landen.
Warum teilen einige Quellen durch 2^N und andere durch 2^N − 1?
Es handelt sich um zwei verschiedene Modelle desselben Wandlers. Datenblätter und die klassische Quantisierungstheorie definieren LSB = FSR ÷ 2^N, wobei der erste Code-Übergang bei einem halben Schritt liegt — das ist das Modell, das diese Seite verwendet. Die Variante Vref ÷ (2^N − 1) resultiert daraus, dass der höchste Code exakt auf Vref abgebildet wird, was in Mikrocontroller-Tutorials üblich ist. Bei 12 Bits unterscheiden sich die beiden um etwa 0.02%, was weit unter der Toleranz jeder realen Referenz liegt; mischen Sie die beiden Varianten nur nicht, wenn Sie Zahlen aus verschiedenen Quellen vergleichen.
Was kann ich tun, wenn die Schrittweite zu grob ist?
Überabtastung und Mittelwertbildung erhöhen die Auflösung, wenn das Signal ein wenig Rauschen enthält: Die Mittelung der 4×-fachen Anzahl an Abtastwerten bringt etwa ein effektives Bit Gewinn, die 16×-fache bringt zwei, vorausgesetzt, das Rauschen ist weiß und unkorreliert — ein perfekt sauberes, völlig stilles Signal wiederholt nur immer denselben Code. Darüber hinaus sollten Sie auf einen Wandler mit mehr Bits umsteigen oder eine Stufe mit programmierbarer Verstärkung hinzufügen, damit das Signal einen größeren Teil des Bereichs ausfüllt.