Werking van de ADC-resolutiecalculator
De ADC-resolutiecalculator is een gratis online tool die de LSB-stapgrootte, de kwantisatiefout en de ideale signaal-ruisverhouding (SNR) van een analoog-digitaal-converter berekent op basis van de bitresolutie en de referentiespanning. Vanuit één enkele interface kunnen gebruikers zowel unipolaire als bipolaire ingangsbereiken evalueren, heen en weer converteren tussen ingangsspanningen en digitale codes, en bepalen welke minimale bitresolutie vereist is om een specifieke doelspanning te kunnen oplossen. De tool toont volledig uitgewerkte wiskundige substituties voor elke berekening, wat helpt bij het verifiëren van de onderliggende formules en het begrijpen van de theoretische limieten van de converter.
Invoerparameters van de calculator
De gebruiker voert de volgende gegevens in de tool in om de berekeningen uit te voeren:
- Resolutie N (bits): Een geheel getal van 1 tot 32 dat de nominale bitbreedte van de converter vertegenwoordigt.
- Referentiespanning: Een positief getal dat de referentiespanning van de converter definieert.
- Referentie-eenheid: De meeteenheid waarin de referentiespanning is uitgedrukt.
- Ingangsbereik: Een selectie tussen "Unipolair · 0 tot Vref" en "Bipolair · −Vref tot +Vref".
- Weergegeven decimalen: Het aantal decimalen dat in de resultaten moet worden getoond.
- Converteren (optioneel): Een keuzeschakelaar om de conversiemodus in te stellen op "Spanning → code" of "Code → spanning".
- Ingangsspanning (optioneel): De spanning die moet worden omgezet in een digitale code. Dit veld kan leeg worden gelaten om de meting over te slaan.
- Code (stappen) (optioneel): Een geheel getal van 0 tot de hoogste code van de converter om om te rekenen naar een spanning.
- Spanningseenheid: De meeteenheid voor de ingangsspanning of de berekende codespanning.
- Kleinste op te lossen verandering (optioneel): Een positieve doelspanning die wordt gebruikt om de minimaal vereiste bitresolutie te bepalen.
- Stapeenheid: De meeteenheid voor de kleinste op te lossen verandering.
De interface bevat daarnaast de knoppen "Voorbeeld laden" en "Wissen" om de invoervelden snel te vullen met voorbeeldwaarden of volledig leeg te maken.
Uitvoer en resultaten
De calculator groepeert de resultaten onder specifieke labels in de interface:
Stapgrootte en ruis
- LSB-stapgrootte: De berekende stapgrootte van het minst significante bit (LSB), inclusief een sub-label dat deze stap toont als percentage van de volledige schaal en in ppm.
- Kwantisatieniveaus: Het totale aantal discrete niveaus (2^N).
- Hoogste code: De maximale digitale uitgangscode (2^N - 1).
- Volledig bereik (FSR): De totale spanningsspanne van de converter.
- Max. kwantisatiefout (±½ LSB): De maximale theoretische kwantisatiefout.
- Kwantisatieruis (rms): De effectieve (rms) kwantisatieruisspanning.
- Ideale SNR (volledige sinus): Het theoretische plafond voor de signaal-ruisverhouding in decibels.
- Dynamisch bereik: Het theoretische dynamische bereik in decibels.
Op het meetpunt
- Uitgangscode: De resulterende digitale code na een spanning-naar-code-conversie.
- Binair: De binaire weergave van de uitgangscode.
- Hexadecimaal: De hexadecimale weergave van de uitgangscode.
- Codespanning: De exacte spanning die hoort bij een specifieke digitale code.
- Kwantisatiefout: Het verschil tussen de werkelijke ingangsspanning en de spanning die door de resulterende code wordt vertegenwoordigd.
- Ingangsvenster voor deze code: Het bereik van ingangsspanningen dat op de berekende digitale code wordt afgebeeld.
Hoeveel bits heb je nodig?
Wanneer er een waarde is ingevoerd bij de kleinste op te lossen verandering, geeft de tool aan hoeveel bits er nodig zijn om die stap op te lossen. Er wordt direct vermeld of de momenteel geselecteerde bitbreedte hiervoor volstaat. Als dat niet het geval is, toont de melding welke stapgrootte de huidige converter daadwerkelijk kan oplossen.
Formules en substitutie
De calculator toont eerst de symbolische formules en geeft daaronder de berekeningen weer waarin de ingevoerde getallen op de plaats van de variabelen zijn ingevuld:
- LSB-stapgrootte: LSB = FSR ÷ 2^N
- Max. kwantisatiefout: ±LSB ÷ 2
- Kwantisatieruis (rms): LSB ÷ √12
- Ideale SNR (volledige sinus): SNR = 6.02 × N + 1.76 dB
- Dynamisch bereik: 6.02 × N dB
- Unipolaire code: code = round(Vin ÷ LSB)
- Bipolaire code: code = round((Vin + Vref) ÷ LSB)
- Unipolaire spanning: V = code × LSB
- Bipolaire spanning: V = code × LSB − Vref
- Kwantisatiefout op het meetpunt: codespanning − ingangsspanning
- Resolutiebepaling: N ≥ log₂(FSR ÷ stap), naar boven afgerond op het eerstvolgende gehele aantal bits
Uitgewerkt rekenvoorbeeld
Bij het laden van het ingebouwde voorbeeld gebruikt de tool de volgende waarden: een resolutie van 12 bits, een referentiespanning van 3.3 V en een unipolair ingangsbereik.
Dit leidt tot de volgende resultaten:
- Aantal niveaus: 4.096
- Hoogste code: 4.095
- LSB-stapgrootte: 3.3 V ÷ 4.096 ≈ 805.6641 µV
- Maximale kwantisatiefout: ±402.832 µV
- Kwantisatieruis: ≈ 232.5752 µV rms
- Ideale SNR: ≈ 74.01 dB
- Dynamisch bereik: ≈ 72.25 dB
Wanneer een ingangsspanning van 1.65 V wordt ingevoerd (exact het midden van het bereik), resulteert dit in uitgangscode 2.048 (binair: 1000 0000 0000, hexadecimaal: 0x800) met een kwantisatiefout van exact nul.
Systeemregels en randvoorwaarden
- Kwantisatiemodel: De calculator modelleert een ideale kwantiseerder waarbij de eerste code-overgang plaatsvindt op een halve stap (1 / 2 LSB). De LSB is gedefinieerd als FSR ÷ 2^N.
- Ideaal versus praktijk: Alle berekende waarden gelden voor een theoretisch perfecte converter. Een echte ADC introduceert extra fouten zoals offset, versterkingsfouten, INL/DNL en referentieruis. De ideale SNR, het dynamisch bereik en de grens van ±½ LSB zijn dan ook theoretische maxima en geen gegarandeerde meetwaarden. Resolutie (het aantal bits) is een fundamenteel andere specificatie dan de uiteindelijke nauwkeurigheid van het systeem.
- Unipolair bereik: Het volledige bereik (FSR) is gelijk aan Vᵣef. De ingangsspanning loopt van 0 tot Vᵣef.
- Bipolair bereik: Het volledige bereik (FSR) is gelijk aan 2 × Vᵣef. De ingangsspanning loopt van -Vᵣef tot +Vᵣef. Code 0 komt overeen met -Vᵣef, de middelste code 2^(N-1) komt overeen met 0 V, en de hoogste code ligt één LSB-stap onder +Vᵣef.
- Afronding: De omzetting van spanning naar code maakt gebruik van de formule
round(Vin ÷ LSB)voor unipolaire ingangen enround((Vin + Vref) ÷ LSB)voor bipolaire ingangen. - Begrenzing bovenkant (High Rail Clipping): Als de ingangsspanning boven de positieve voedingsgrens ligt, satureert de uitgang op de hoogste code (2^N - 1). De tool toont dan de waarschuwing: "De ingang ligt boven de positieve voedingsgrens: de uitgang satureert op de hoogste code en de getoonde fout is het werkelijke restant — de grens van ±½ LSB is niet meer van toepassing.". In de berekening wordt vermeld dat de ingang buiten het bereik valt en de code is begrensd.
- Begrenzing onderkant (Low Rail Clipping): Als de ingangsspanning onder de negatieve voedingsgrens ligt, satureert de uitgang op code 0. De tool toont de waarschuwing: "De ingang ligt onder de negatieve voedingsgrens: de uitgang satureert op code 0 en de getoonde fout is het werkelijke restant — de grens van ±½ LSB is niet meer van toepassing.". De berekening geeft aan dat de ingang buiten het bereik valt en de code is begrensd.
- Midden van het bereik: Wanneer de ingangsspanning exact op het midden van de schaal ligt, geeft de calculator aan dat de helft van het bereik mapt naar de middelste code met een kwantisatiefout van nul.
Foutmeldingen in de interface
De calculator valideert alle invoer direct en toont specifieke foutmeldingen bij ongeldige waarden:
- Bij niet-numerieke invoer:
"‹field›: “‹token›” is geen getal." - Bij een ongeldige resolutie:
"De resolutie moet een geheel getal zijn tussen 1 en 32 bits." - Bij een ongeldige referentiespanning:
"De referentiespanning moet groter zijn dan nul." - Bij een niet-geheel getal als code:
"Een code is een geheel getal aan stappen." - Bij een code buiten het bereik:
"De code moet tussen 0 en ‹max› liggen voor een ‹bits›-bit converter." - Bij een ongeldige doelstapgrootte:
"De kleinste op te lossen verandering moet groter zijn dan nul." - Bij het overschrijden van numerieke limieten:
"Een waarde of tussenresultaat overschrijdt het ondersteunde getallenbereik."
Privacy en gegevensverwerking
Elk getal dat u invoert blijft in deze browser — er wordt niets geüpload. Alle berekeningen worden lokaal op het apparaat van de gebruiker uitgevoerd.
Toepassingsgebieden
- ADC-selectie: Ontwerpers kunnen snel bepalen hoeveel bits resolutie minimaal nodig zijn om een specifieke minimale spanningsverandering van een sensor te detecteren.
- Foutopsporing in signaalketens: Ingenieurs kunnen ruwe digitale codes uit microcontrollerregisters converteren naar fysieke spanningen om sensorwaarden te verifiëren.
- Systeemruisbudgettering: Hardware-ontwerpers berekenen de theoretische maximale SNR en de kwantisatieruisvloer om deze te vergelijken met de werkelijke ruis in het systeem.
- Firmware-ontwikkeling: Programmeurs gebruiken de tool om analoge ingangen te mappen naar digitale codes en hun schalingsalgoritmen te controleren aan de hand van de uitgewerkte wiskundige stappen.
Veelgestelde vragen (FAQ)
Betekent een 12-bit resolutie ook een 12-bit nauwkeurigheid?
Nee. Resolutie is alleen de breedte van de code — hoe fijn het bereik is onderverdeeld. De nauwkeurigheid wordt beperkt door de INL en offset-/versterkingsfouten van de converter, de tolerantie en ruis van de referentie, en het omliggende circuit. Daarom vermelden datasheets ENOB: een 12-bit SAR levert typisch 10–11 effectieve bits. De hier getoonde ideale SNR van 74 dB is het theoretische plafond dat geen enkele echte 12-bit converter haalt.
Hoe verandert een ±Vref-ingang de berekening?
Het bereik verdubbelt naar 2 × Vref, waardoor dezelfde converter stappen oplost die twee keer zo groot zijn: LSB = 2 × Vref ÷ 2^N. Codes lopen van de negatieve voedingsspanning naar de positieve — code 0 is −Vref, de middelste code 2^(N−1) is 0 V, en de hoogste code ligt één stap onder +Vref. Selecteer hierboven het bipolaire bereik en nul volt zal exact op de middelste code uitkomen.
Waarom delen sommige bronnen door 2^N en andere door 2^N − 1?
Het zijn twee verschillende modellen van dezelfde converter. Datasheets en de klassieke kwantisatietheorie definiëren LSB = FSR ÷ 2^N, met de eerste code-overgang op een halve stap — dat is het model dat deze pagina gebruikt. De variant Vref ÷ (2^N − 1) komt voort uit het exact mappen van de hoogste code op Vref, wat veel voorkomt in microcontroller-tutorials. Bij 12 bits verschillen de twee ongeveer 0.02%, ver onder de tolerantie van elke echte referentie; combineer de twee simpelweg niet wanneer je getallen uit verschillende bronnen vergelijkt.
Wat kan ik doen als de stapgrootte te grof is?
Oversampling en middeling leveren extra resolutie op wanneer het signaal een beetje ruis bevat: het gemiddelde nemen van 4× zoveel monsters levert ongeveer één effectieve bit winst op, en 16× levert twee bits winst op, mits de ruis wit en ongecorreleerd is — een perfect schoon, perfect stilstaand signaal herhaalt simpelweg steeds dezelfde code. Stap daarbuiten over naar een converter met meer bits of voeg een versterkertrap met instelbare versterking toe zodat het signaal een groter deel van het bereik vult.