ADC'er er afgørende for at konvertere alle slags analoge signaler til digitale, men hvordan fungerer de egentlig?
Nøgle takeaways
- ADC'er bruges i vid udstrækning til at konvertere analoge signaler, såsom lyd og lys, til digitale værdier, der kan bruges i forskellige applikationer.
- Samplingsfrekvensen for en ADC bestemmer antallet af aflæsninger, der tages pr. sekund, med højere samplingsfrekvenser, der muliggør en mere nøjagtig signalrepræsentation.
- Bithastigheden af en ADC påvirker kvaliteten af den opnåede prøve, med flere bits, der resulterer i jævnere og mere præcise målinger. Forskellige typer ADC'er tilbyder forskellige afvejninger med hensyn til hastighed, præcision og strømforbrug.
Analog-til-digital-konvertere (ADC'er) er utrolig nyttige til at omdanne fænomener fra den virkelige verden til værdier, vi kan bruge i programmeringsprojekter. Men hvordan kan en ADC konvertere analoge signaler til digitale, vi kan bruge overalt?
Hvad bruges ADC'er til?
Du finder ADC'er næsten overalt. De er på din telefon og konverterer din stemme til en række binære værdier. De er i din bil og måler dine hjuls rotation. De er i oscilloskoper og hjælper med at fange signaler og repræsentere dem. Alligevel er det sted, de fleste mennesker vil have brugt dem, verden af video og lyd, hvor det er fundamentalt at få lys og lyd ind i et digitalt rum.
Hvad er en prøvefrekvens? Hvordan påvirker Sample Rate en ADC?
En af de mest kritiske overskrifter for en ADC er samplingsfrekvensen: antallet af aflæsninger, der tages hvert sekund.
Et meget avanceret oscilloskop kan tage ti milliarder prøver i sekundet. Den smarte lille MCP3008 ADC kan tage relativt beskedne to hundrede tusinde. I lydverdenen er en samplerate på 44.100 pr. sekund (44,1 kHz) typisk.
Jo flere prøver vi tager, jo mere præcist kan vi repræsentere et signal. Nogle gange er dette vigtigt; nogle gange er det ikke. Lad os sige, at vi bygger en faderbank (designet til at styre elektronik, som du ville se på et lys- eller lydbord) med et par dusin potentiometre. I dette tilfælde er det usandsynligt, at de værdier, vi skal måle, ændres millioner af gange i sekundet, da vores fingre ikke kan bevæge sig så hurtigt. Vi mangler bare nok prøver til, at resultatet bliver glat og responsivt.
Hvad er Bitrate? Påvirker bitrate kvaliteten af en ADC?
Vi bør også tænke på kvaliteten af den prøve, vi får. Dette bestemmes i høj grad af bithastigheden, som fortæller os, hvor mange on-off-tilstande vi kan bruge til digitalt at repræsentere spændingen. Jo flere bits vi har, jo flere mulige værdier kan vi registrere i en given prøve, og jo glattere og mere præcist bliver slutresultatet.
Vi har skrevet om binær, og hvordan det virker, så hvis du er usikker, er det et godt sted at komme i gang. Hvor mange bits har vi brug for? Igen, det afhænger af, hvad vi forsøger at opnå. Nogle gange kan vi være begrænset af den protokol, vi bruger. For eksempel er MIDI 1.0-protokollen begrænset til syv-bit (og lejlighedsvis fjorten-bit) værdier. I andre tilfælde kan den begrænsende faktor være menneskelig opfattelse. Hvis den øgede troskab ikke giver nogen mærkbar forbedring af resultatet, er det måske ikke umagen værd.
Hvordan forbedrer multipleksing ADC-kvaliteten?
Populære ADC-chips som ADS1115 og MCP3008 tilbyde mange input. Men under motorhjelmen indeholder de reelt kun en enkelt ADC. Dette er muligt på grund af de indbyggede multipleksere i disse enheder. Multiplexere er absolut overalt i verden af elektronik og telekommunikation. De er digitale switche, der fungerer som trafikkontrol for din ADC. ADC'en kan muligvis sample én kanal og derefter den næste og så den næste. Så hvis du har otte kanaler og en samplerate på 200.000, kan du rotere gennem dem alle og tage 25.000 samples pr. kanal.
Hvilke typer ADC findes der?
ADC'er fungerer på forskellige måder, afhængigt af omkostningerne og de nødvendige muligheder.
EN Flash ADC fungerer via en meget kompleks spændingsdeler. En bank af modstande opdeler referencespændingen i trin, som derefter testes mod input via en bank af komparatorer. Flash ADC'er er lynhurtige, men de er begrænsede, når det kommer til bitdybde på grund af antallet af komparatorer, der kræves. De er også magtkrævende af samme grund.
EN Underområde ADC søger at udligne disse svagheder ved at opdele arbejdet mellem to separate enheder: en til groft at beregne spændingen og derefter en anden for at regne den præcist ud. Ved at dele tingene op, kan vi mindske antallet af komparatorer. Nogle subranging ADC'er vil opdele arbejdet i tre faser, med fejlkorrektion indbygget undervejs.
SAR (Successivt tilnærmelsesregister) ADC'er udfører deres arbejde via en slags binær søgning. Antag, at vi har otte bits at udfylde. SAR vil starte fra 10000000, som er den midterste værdi (00000000 er den nederste og 11111111 er den øverste). Hvis spændingen overstiger dette midtpunkt, beholder SAR cifferet længst til venstre som 1; hvis den ikke gør det, sætter SAR cifferet længst til venstre til 0. Vi kan gentage processen med det næste ciffer og så videre rekursivt. Dette vil få den gættede værdi til at bevæge sig mod den faktiske værdi gradvist:
På denne måde indsnævrer vi løbende søgningen, deler mulighederne i to og spørger, om resultatet er højere eller lavere end midtpunktet. I dette tilfælde er værdien et sted mellem 0 og 255; efter et par gentagelser har ADC fundet ud af, at det er omkring 77.
Sigma-delta konvertere er nok de sværeste at forstå. De bruges til musikalske og signalmålingsapplikationer med høj præcision. De virker ved at oversample et signal og forfine resultatet ved hjælp af djævelsk kompliceret filtrering og matematik. Denne proces reducerer effektivt prøvehastigheden og øger samtidig præcisionen. Disse ADC'er er fantastiske, når støj og præcision betyder mere end hastighed.
Endelig har vi Integrering af ADC'er, som er endnu langsommere end sigma-delta. De arbejder ved hjælp af en kondensator, hvis ladningshastighed kan bruges til at bestemme indgangsspændingen. Samplingsfrekvensen her er ofte synkroniseret med strømforsyningens frekvens, som kan bruges til at holde støj på et absolut minimum.
Hvad er Nyquist-Shannon teori?
Lad os sige, at vi vil beskrive et analogt signal digitalt. For at gøre dette har vi brug for mindst to point for hver given cyklus: et øverst og et nederst. Vores samplingsfrekvens skal således være mindst det dobbelte af den højeste frekvens, vi forventer at måle.
Dette er kendt som Nyquist-frekvensen efter den svensk-amerikanske fysiker Harry Nyquist. Teorien er opkaldt efter Nyquist og Claude Shannon (en fremtrædende matematiker og kryptograf), men ikke efter Edmund Whittaker, som kom på ideen før nogen af dem.
Uanset hvem vi krediterer teorien, er der et problem med den. Det er umuligt at vide på forhånd, hvornår toppen og bunden af en bølgeform ankommer. Hvad hvis vi tager vores prøver midtvejs op ad den indkommende bølgeform? Bemærk, hvordan et skift i det indkommende signal kan udjævne vores optagne resultat fuldstændigt:
Eller endda hallucinere nye bølgeformer, der ikke engang eksisterede før:
Disse hallucinationer er kendt som aliaser.
Problemet med aliasing
Du vil sikkert være bekendt med "vognhjul"-illusionen, der nogle gange opstår, når et snurrende objekt filmes. Hjulene på en bil, eller knivene på en helikopter, ser ud til at dreje bagud - kun meget langsomt. I nogle tilfælde kan knivene stoppe helt (med ærligt talt underlige resultater - se videoen nedenfor!).
Mens du spiller et ældre videospil, har du måske også bemærket, at parallelle linjer nogle gange producerer mærkelige vridningsartefakter. Hegn, trapper og stribede jumpere begynder at se meget ejendommelige ud. Eller hvad med de mærkelige fløjtelyde, du nogle gange får, når du lytter til nogen tale over en digital forbindelse af dårlig kvalitet? Det er forvrængning, men en særlig form for forvrængning. Hvad er der med alle de grimme frekvenser, der kommer frem fra støjen? Hvis du lytter til harmonisk rigt indhold, som et trommesæt, er effekten endnu mere tydelig - især i den høje ende.
Hvis du forstår årsagen til en af disse, er du på vej til at forstå dem alle. I tilfældet med vognhjulet betyder den faste billedhastighed, at vi ikke kan fange bevægelsen ordentligt. Hvis noget roterer 350° for hvert billede, er det helt naturligt at opfatte, at det faktisk er flyttet 10° bagud. Med andre ord er der ikke nok information til trofast at repræsentere, hvad der sker. De prøver, vi tager, stemmer ikke overens med det, vi prøver at måle.
Dette er ikke et problem, der er unikt for analog-digital konvertering. I mange af disse tilfælde konverterer vi en slags digitalt signal til et andet.
Så hvad er løsningen? Der er flere. Vi kunne anvende et specielt filter til at håndtere disse artefakter, hvilket er, hvad mange ADC'er gør under emhætten. Eller vi kan tage mange, mange flere prøver, end vi har brug for. Jo flere prøver vi tager, jo mere nøjagtigt bliver vores billede af bølgen:
Prøve med højere kvalitet for de bedste resultater
Hvis du finder denne slags ting interessant, er den gode nyhed, at vi knap har dykket vores tå i dette emne. Der er dybder her: ADC'er er ekstremt komplicerede.
Men set fra slutbrugerens eller den gennemsnitlige Arduino-entusiasts synspunkt er de også meget enkle. Spændinger går ind, og tal kommer ud. Så uanset hvad du søger at måle - hvad enten det er fugtindholdet i et jordstykke, oscillationerne af en menneskelig stemmeboks eller en strøm af fotoner, der brydes gennem en linse - chancerne er gode for, at der er en ADC, der vil gøre job.