- De analoge wereld met digitale elektronica
- Wat is ADC en hoe gebruik je het?
- Resolutie (bits) en kanalen in ADC
- Referentiespanning voor een ADC
- Voorbeeld
- ADC-typen en werken
- Enkele veel voorkomende vragen over ADC
De analoge wereld met digitale elektronica
Enkele jaren geleden waren alle elektronische apparaten die we tegenwoordig gebruiken, zoals telefoons, computers, televisies enz., Analoog van aard. Langzaamaan werden de vaste telefoons vervangen door moderne mobiele telefoons, CRT-televisies en monitoren werden vervangen door LED-displays, computers met vacuümbuizen evolueerden naar krachtiger met microprocessors en microcontrollers erin enzovoort.
In het huidige digitale tijdperk zijn we allemaal omringd door de geavanceerde digitale elektronische apparaten, dit zou ons kunnen misleiden door te denken dat alles om ons heen digitaal van aard is, wat niet waar is. De wereld is altijd analoog van aard geweest, zo is alles wat wij mensen voelen en ervaren zoals snelheid, temperatuur, luchtsnelheid, zonlicht, geluid enz. Analoog van aard. Maar onze elektronische apparaten die op microcontrollers en microprocessors werken, kunnen deze analoge waarden niet rechtstreeks lezen / interpreteren, omdat ze alleen op nullen en enen werken. We hebben dus iets nodig dat al deze analoge waarden omzet in nullen en enen, zodat onze microcontrollers en microprocessors ze kunnen begrijpen. Dit wordt de analoog naar digitaal converters of kortweg ADC genoemd. In dit artikel zullen we lerenalles over ADC en hoe je ze kunt gebruiken.
Wat is ADC en hoe gebruik je het?
Zoals eerder gezegd staat ADC voor analoog naar digitaal conversie en wordt het gebruikt om analoge waarden uit de echte wereld om te zetten in digitale waarden zoals enen en nullen. Dus wat zijn deze analoge waarden? Dit zijn degenen die we in ons dagelijks leven zien, zoals temperatuur, snelheid, helderheid enz. Maar wacht !! Kan een ADC temperatuur en snelheid direct omzetten in digitale waarden zoals nullen en enen?
Nee, zeker niet. Een ADC kan alleen analoge spanningswaarden omzetten in digitale waarden. Dus welke parameter we ook willen meten, deze moet eerst in spanning worden omgezet, deze conversie kan worden gedaan met behulp van sensoren. Om bijvoorbeeld temperatuurwaarden in spanning om te zetten, kunnen we een thermistor op dezelfde manier gebruiken om helderheid in spanning om te zetten, we kunnen een LDR gebruiken. Als het eenmaal is omgezet in spanning, kunnen we het lezen met behulp van ADC's.
Om te weten hoe u een ADC moet gebruiken, moeten we eerst enkele basistermen leren kennen, zoals kanaalresolutie, bereik, referentiespanning enz.
Resolutie (bits) en kanalen in ADC
Wanneer u de specificatie van een Microcontroller of ADC IC leest, worden de details van de ADC weergegeven met behulp van de termen kanalen en resolutie (bits). De ATmega328 van een Arduino UNO heeft bijvoorbeeld een 8-kanaals 10-bits ADC. Niet elke pin op een microcontroller kan analoge spanning lezen, de term 8-kanaals betekent dat er 8 pinnen op deze ATmega328 microcontroller zitten die analoge spanning kunnen lezen en elke pin kan de spanning lezen met een resolutie van 10 bit. Dit varieert voor verschillende soorten microcontrollers.
Laten we aannemen dat ons ADC-bereik van 0V tot 5V is en dat we een 10-bit ADC hebben, dit betekent dat onze ingangsspanning 0-5 Volt zal worden opgesplitst in 1024 niveaus van discrete analoge waarden (2 10 = 1024). Dit betekent dat 1024 de resolutie is voor een 10-bits ADC, evenzo voor een 8-bits ADC-resolutie is 512 (28) en voor een 16-bits ADC-resolutie 65.536 (2 16).
Hiermee als de werkelijke ingangsspanning 0 V is, leest de ADC van de MCU dit als 0 en als het 5 V is, leest de MCU 1024 en als het ergens tussenin, zoals 2,5 V, leest de MCU 512. We kunnen de onderstaande formules gebruiken om de digitale waarde te berekenen die door de MCU wordt gelezen op basis van de resolutie van de ADC en de bedrijfsspanning.
(ADC-resolutie / bedrijfsspanning) = (ADC digitale waarde / werkelijke spanningswaarde)
Referentiespanning voor een ADC
Een andere belangrijke term waarmee u bekend moet zijn, is de referentiespanning. Tijdens een ADC-conversie wordt de waarde van een onbekende spanning gevonden door deze te vergelijken met een bekende spanning, deze bekende spanning wordt referentiespanning genoemd. Normaal gesproken hebben alle MCU een optie om de interne referentiespanning in te stellen , wat betekent dat u deze spanning intern op een beschikbare waarde kunt instellen met behulp van software (programma). In een Arduino UNO-bord is de referentiespanning standaard intern ingesteld op 5V, indien nodig kan de gebruiker deze referentiespanning extern instellen via de Vref-pin, ook na het maken van de vereiste wijzigingen in de software.
Onthoud altijd dat de gemeten analoge spanningswaarde altijd lager moet zijn dan de referentiespanningswaarde en de referentiespanningswaarde altijd lager moet zijn dan de bedrijfsspanningswaarde van de microcontroller.
Voorbeeld
Hier nemen we een voorbeeld van ADC met een resolutie van 3 bits en een referentiespanning van 2 V. Het kan dus de 0-2v analoge spanning in kaart brengen met 8 (2 3) verschillende niveaus, zoals weergegeven in de onderstaande afbeelding:
Dus als de analoge spanning 0,25 is, is de digitale waarde 1 in decimaal en 001 in binair. Evenzo, als de analoge spanning 0,5 is, is de digitale waarde 2 in decimaal en 010 in binair.
Sommige microcontrollers hebben ingebouwde ADC zoals Arduino, MSP430, PIC16F877A, maar sommige microcontrollers hebben het niet zoals 8051, Raspberry Pi enz. En we moeten externe analoog-naar-digitaal converter-IC's gebruiken, zoals ADC0804, ADC0808.
Hieronder vind je verschillende voorbeelden van ADC met verschillende microcontrollers:
- Hoe ADC te gebruiken in Arduino Uno?
- Raspberry Pi ADC-zelfstudie
- Koppeling tussen ADC0808 met 8051 Microcontroller
- 0-25V digitale voltmeter met AVR-microcontroller
- Hoe ADC te gebruiken in STM32F103C8
- Hoe ADC te gebruiken in MSP430G2
ADC-typen en werken
Er zijn veel soorten ADC, de meest gebruikte zijn Flash ADC, Dual Slope ADC, Opeenvolgende benadering en Dual Slope ADC. Om uit te leggen hoe elk van deze ADC's werken en het verschil daartussen, valt buiten het bereik van dit artikel, aangezien ze vrij complex zijn. Maar om een globaal idee te geven heeft ADC een interne condensator die wordt opgeladen door de analoge spanning die moet worden gemeten. Vervolgens meten we de spanningswaarde door de condensator gedurende een bepaalde tijd te ontladen.
Enkele veel voorkomende vragen over ADC
Hoe meet ik meer dan 5V met mijn ADC?
Zoals eerder besproken kan een ADC-module de spanningswaarde niet hoger meten dan de bedrijfsspanning van de microcontroller. Dat is een 5V-microcontroller die met zijn ADC-pin maximaal 5V kan meten. Als u meer wilt meten dan dat, bijvoorbeeld, u wilt 0-12V meten, dan kunt u de 0-12V in 0-5V omzetten door een potentiaalverdeler of spanningsdelercircuit te gebruiken. Dit circuit gebruikt een paar weerstanden om de waarden voor een MCU in kaart te brengen, u kunt meer weten over het spanningsdelercircuit met behulp van de link. Voor ons bovenstaande voorbeeld moeten we een 1K-weerstand en een 720 ohm-weerstand in serie met de spanningsbron gebruiken en de spanning tussen de weerstanden meten zoals besproken in de bovenstaande link.
Hoe digitale waarden van ADC om te zetten in werkelijke spanningswaarden?
Bij gebruik van een ADC-omzetter om analoge spanning te meten, is het resultaat dat door de MCU wordt verkregen, digitaal. Bijvoorbeeld in een 10-bit 5V microcontroller wanneer de werkelijke spanning die gemeten moet worden 4V is, zal de MCU dit lezen als 820, we kunnen opnieuw de hierboven besproken formules gebruiken om de 820 om te zetten naar 4V zodat we deze kunnen gebruiken in onze berekeningen. Laten we hetzelfde kruisen.
(ADC-resolutie / bedrijfsspanning) = (ADC digitale waarde / werkelijke spanningswaarde) Werkelijke spanningswaarde = ADC digitale waarde * (bedrijfsspanning / ADC-resolutie) = 820 * (5/1023) = 4,007 = ~ 4V
Ik hoop dat je een goed idee hebt van ADC en hoe je ze voor je toepassingen kunt gebruiken. Als u een probleem had met het begrijpen van de concepten, kunt u uw opmerkingen hieronder plaatsen of op onze forums schrijven.