ADC's zijn cruciaal voor het omzetten van allerlei analoge signalen naar digitaal, maar hoe werken ze eigenlijk?
Belangrijkste leerpunten
- ADC's worden veel gebruikt om analoge signalen, zoals geluid en licht, om te zetten in digitale waarden die in verschillende toepassingen kunnen worden gebruikt.
- De bemonsteringsfrequentie van een ADC bepaalt het aantal metingen per seconde, waarbij hogere bemonsteringsfrequenties een nauwkeurigere signaalrepresentatie mogelijk maken.
- De bitsnelheid van een ADC beïnvloedt de kwaliteit van het verkregen monster, waarbij meer bits resulteren in vloeiendere en nauwkeurigere metingen. Verschillende typen ADC's bieden verschillende compromissen op het gebied van snelheid, precisie en energieverbruik.
Analoog-naar-digitaalconverters (ADC's) zijn ongelooflijk handig om fenomenen uit de echte wereld om te zetten in waarden die we kunnen gebruiken bij programmeerprojecten. Maar hoe kan een ADC analoge signalen omzetten in digitale signalen die we overal kunnen gebruiken?
Waar worden ADC's voor gebruikt?
Je vindt ADC's vrijwel overal. Ze zitten op je telefoon en zetten je stem om in een reeks binaire waarden. Ze zitten in je auto en meten de rotatie van je wielen. Ze zitten in oscilloscopen en helpen signalen op te vangen en weer te geven. Toch zullen de meeste mensen ze gebruikt hebben in de wereld van video en audio, waar het van fundamenteel belang is om licht en geluid in een digitale ruimte te brengen.
Wat is een monsterfrequentie? Welke invloed heeft de samplefrequentie op een ADC?
Een van de meest kritische kengetallen van een ADC is de sample rate: het aantal metingen dat per seconde wordt gedaan.
Een zeer hoogwaardige oscilloscoop kan tien miljard monsters per seconde nemen. De moedige kleine MCP3008 ADC kan een relatief bescheiden tweehonderdduizend aan. In de audiowereld is een samplefrequentie van 44.100 per seconde (44,1 kHz) typisch.
Hoe meer monsters we nemen, hoe nauwkeuriger we een signaal kunnen weergeven. Soms is dit essentieel; soms is dat niet het geval. Laten we zeggen dat we een faderbank bouwen (ontworpen om elektronica te besturen, zoals je zou zien op een verlichtings- of audiobureau) met een paar dozijn potentiometers. In dit geval is het onwaarschijnlijk dat de waarden die we moeten meten miljoenen keren per seconde zullen veranderen, omdat onze vingers niet zo snel kunnen bewegen. We hebben alleen voldoende monsters nodig om het resultaat soepel en responsief te laten zijn.
Wat is bitsnelheid? Heeft Bitrate invloed op de kwaliteit van een ADC?
We moeten ook nadenken over de kwaliteit van het monster dat we krijgen. Dit wordt grotendeels bepaald door de bitrate, die ons vertelt hoeveel aan-uit-toestanden we kunnen gebruiken om de spanning digitaal weer te geven. Hoe meer bits we hebben, hoe meer mogelijke waarden we in een bepaald monster kunnen vastleggen en hoe vloeiender en nauwkeuriger het eindresultaat.
We hebben geschreven over binair en hoe het werkt, dus als u het niet zeker weet, is dit een goed beginpunt. Hoeveel bits hebben we nodig? Nogmaals, het hangt af van wat we proberen te bereiken. Soms worden we beperkt door het protocol dat we gebruiken. Het MIDI 1.0-protocol is bijvoorbeeld beperkt tot waarden van zeven bits (en soms veertien bits). In andere gevallen kan de menselijke perceptie de beperkende factor zijn. Als de verhoogde betrouwbaarheid geen merkbare verbetering van het resultaat oplevert, is het misschien niet de moeite waard.
Hoe verbetert multiplexing de ADC-kwaliteit?
Populaire ADC-chips zoals de ADS1115 en de MCP3008 veel input bieden. Maar onder de motorkap bevatten ze eigenlijk maar één ADC. Dit is mogelijk dankzij de multiplexers die in deze apparaten zijn ingebouwd. Multiplexers zijn absoluut overal in de wereld van elektronica en telecommunicatie te vinden. Het zijn digitale schakelaars die fungeren als verkeerscontrole voor uw ADC. De ADC kan het ene kanaal bemonsteren, en dan het volgende, en dan het volgende. Dus als je acht kanalen hebt en een bemonsteringsfrequentie van 200.000, kun je ze allemaal doorlopen, waarbij je 25.000 monsters per kanaal neemt.
Welke soorten ADC zijn er?
ADC's werken op verschillende manieren, afhankelijk van de vereiste kosten en mogelijkheden.
A Flits-ADC werkt via een zeer complexe spanningsdeler. Een reeks weerstanden verdeelt de referentiespanning in stappen, die vervolgens via een reeks comparatoren aan de ingang worden getest. Flash ADC's zijn razendsnel, maar ze zijn beperkt als het gaat om bitdiepte vanwege het aantal benodigde comparatoren. Om dezelfde reden zijn ze ook hongerig naar macht.
A ADC onderverdelen probeert deze zwakke punten te compenseren door het werk over twee afzonderlijke eenheden te verdelen: één om de spanning grofweg te bepalen en vervolgens een tweede om deze nauwkeurig uit te werken. Door de zaken op te splitsen kunnen we het aantal vergelijkers verkleinen. Sommige ADC's verdelen het werk in drie fasen, waarbij foutcorrectie onderweg wordt ingebouwd.
SAR (Opeenvolgende benaderingsregister) ADC's doen hun werk via een soort binaire zoekopdracht. Stel dat we acht bits moeten vullen. De SAR begint bij 10000000, wat de middelste waarde is (00000000 is de laagste en 11111111 is de hoogste). Als de spanning dit middelpunt overschrijdt, behoudt de SAR het meest linkse cijfer op 1; Als dit niet het geval is, stelt de SAR het meest linkse cijfer in op 0. We kunnen het proces recursief herhalen met het volgende cijfer, enzovoort. Hierdoor zal de geraden waarde geleidelijk in de richting van de werkelijke waarde verschuiven:
Op deze manier beperken we de zoekopdracht voortdurend, splitsen we de mogelijkheden in tweeën en vragen we ons af of het resultaat hoger of lager is dan het middelpunt. In dit geval ligt de waarde ergens tussen 0 en 255; na een paar iteraties heeft de ADC berekend dat het rond de 77 ligt.
Sigma-delta converters zijn waarschijnlijk het moeilijkst te begrijpen. Ze worden gebruikt voor zeer nauwkeurige muziek- en signaalmetingstoepassingen. Ze werken door een signaal te overbemonsteren en het resultaat te verfijnen met behulp van duivels ingewikkelde filtering en wiskunde. Dit proces vermindert effectief de bemonsteringssnelheid en verhoogt de precisie. Deze ADC's zijn geweldig als geluid en precisie belangrijker zijn dan snelheid.
Eindelijk hebben we dat gedaan ADC's integreren, die zelfs langzamer zijn dan sigma-delta. Ze werken met behulp van een condensator, waarvan de lading kan worden gebruikt om de ingangsspanning te bepalen. De samplefrequentie wordt hier vaak gesynchroniseerd met de voedingsfrequentie, die kan worden gebruikt om ruis tot een absoluut minimum te beperken.
Wat is de Nyquist-Shannon-theorie?
Laten we zeggen dat we een analoog signaal digitaal willen beschrijven. Om dit te doen hebben we voor elke cyclus minstens twee punten nodig: één bovenaan en één onderaan. Onze bemonsteringsfrequentie moet dus minstens tweemaal de hoogste frequentie zijn die we verwachten te meten.
Dit staat bekend als de Nyquist-frequentie, naar de Zweeds-Amerikaanse natuurkundige Harry Nyquist. De theorie is vernoemd naar Nyquist en Claude Shannon (een vooraanstaand wiskundige en cryptograaf), maar niet naar Edmund Whittaker, die vóór een van hen op het idee kwam.
Aan wie we de theorie ook toevertrouwen, er is een probleem mee. Het is onmogelijk om van tevoren te weten wanneer de boven- en onderkant van een golfvorm zullen arriveren. Wat als we onze monsters halverwege de inkomende golfvorm nemen? Kijk hoe een verschuiving in het binnenkomende signaal ons vastgelegde resultaat volledig kan afvlakken:
Of hallucineer zelfs nieuwe golfvormen die voorheen niet eens bestonden:
Deze hallucinaties staan bekend als aliassen.
Het probleem met aliasing
U kent waarschijnlijk de illusie van het 'wagenwiel' die soms optreedt wanneer een draaiend object wordt gefilmd. De wielen van een auto, of de wieken van een helikopter, lijken achteruit te draaien – alleen heel langzaam. In sommige gevallen stoppen de messen mogelijk helemaal (met eerlijk gezegd vreemde resultaten – bekijk de video hieronder!).
Tijdens het spelen van een oudere videogame is het je misschien ook opgevallen dat parallelle lijnen soms vreemde kromgetrokken artefacten veroorzaken. Hekken, trappen en gestreepte truien beginnen er inderdaad heel vreemd uit te zien. Of hoe zit het met die vreemde fluitgeluiden die je soms hoort als je iemand hoort spreken via een digitale verbinding van slechte kwaliteit? Het is vervorming, maar een bepaald soort vervorming. Hoe zit het met al die lelijke frequenties die uit het geluid komen? Als je naar harmonisch rijke inhoud luistert, zoals een drumstel, is het effect zelfs nog duidelijker, vooral in de hoge tonen.
Als je de oorzaak van een van deze begrijpt, ben je op weg om ze allemaal te begrijpen. In het geval van het wagenwiel betekent de vaste framesnelheid dat we de beweging niet goed kunnen vastleggen. Als iets elk frame 350° draait, is het niet meer dan normaal om te zien dat het daadwerkelijk 10° naar achteren wordt verplaatst. Met andere woorden: er is niet genoeg informatie om getrouw weer te geven wat er gebeurt. De monsters die we nemen komen niet overeen met wat we proberen te meten.
Dit is geen probleem dat uniek is voor analoog-digitaal-conversie. In veel van deze gevallen zetten we het ene soort digitale signaal om in het andere.
Dus, wat is de oplossing? Er zijn meerdere. We zouden een speciaal filter kunnen toepassen om met deze artefacten om te gaan, wat veel ADC's onder de motorkap doen. Of we kunnen veel, veel meer monsters nemen dan we nodig hebben. Hoe meer monsters we nemen, hoe nauwkeuriger ons beeld van de golf wordt:
Monster met hogere kwaliteit voor de beste resultaten
Als je dit soort dingen interessant vindt, is het goede nieuws dat we ons nauwelijks in dit onderwerp hebben verdiept. Er zijn hier diepten om te peilen: ADC's zijn buitengewoon ingewikkeld.
Maar vanuit het oogpunt van de eindgebruiker of de gemiddelde Arduino-liefhebber zijn ze ook heel eenvoudig. Er gaan spanningen in en er komen cijfers uit. Dus wat u ook wilt meten – of het nu gaat om het vochtgehalte van een stukje grond, de schommelingen van een menselijk stemgeluid, of een stroom fotonen die door een lens breken – de kans is groot dat er een ADC is die het doet functie.