Stap 4: Interfacing sensoren (AVR-ADC)
Meeste echte wereld gegevens is analoog. Of het nu de temperatuur, druk, spanning, enz, is hun variatie altijd analoog in de natuur. Dit alles is gewoon analoge gegevens en wij moeten verwerken de gegevens die we hebben ontvangen. Maar analoge signaalverwerking is vrij inefficiënt in termen van nauwkeurigheid, de snelheid en de gewenste output. Vandaar, wij hen omzetten in digitale vorm die met een analoog naar Digitaal Converter (ADC). De AVR beschikt over ingebouwde ADC in bijna alle de MCU. In ATMEGA16 bevat PORTA de ADC-pinnen. Nu hebt u meer dan één analoge spanningsbron, meer dan een sensor, bijvoorbeeld, kun je ze zo lang als het aantal bronnen is minder dan het aantal van ADC pins u allemaal op uw microcontroller. Met de Atmega16 zijn er 8 ADC pinnen. Het enige ding in gedachten te houden bij het programmeren van de ADC om te lezen van meerdere kanalen dat slechts één kanaal is kan worden gebruikt in de conversie op een moment.
In ATMega16 moet u enkel MUX kanaal wijzigen en waarden volgens gegevensblad voor het selecteren van de verschillende ADC kanaal wilt toewijzen.
Hier is hoe het heeft gedaan:
ADMUX – ADC Multiplexer selectie Register
MUX4:0-analoog kanaal en krijgen selectie Bits – er zijn 8 ADC kanalen (PA0... PA7).
Zie datasheet voor meer info.
Nu sinds analoge sensoren zal geven analoge spanningen dus volgens situaties moet u weten wat is de output van sensor dus als u kunt programmeren en verrichten respectieve dienovereenkomstig.
Om dat te doen, just check de uitgangsspanning van sensor met behulp van multi meter en formule gebruiken om te converteren naar adc waarde;
ADC = (V.input*1024) /V.out
En u zult nu met sensoren worden gedaan, hoewel sensoren vereist veel testen en ik heb veel testen om ervoor te zorgen dat resultaat na programmeren volgens de waarden die ik heb met behulp van multi meter juist en nauwkeurig zijn.
Zie deze link voor meer info over ADC programmering.