Tässä projektissa aiomme tehdä matalan ampeerimittarin ATMEGA8-mikrokontrollerilla. ATMEGA8: ssa aiomme käyttää tätä varten 10-bittistä ADC (analoginen digitaalimuunnos) -ominaisuutta. Vaikka meillä on muutama tapa saada nykyinen parametri piiriltä, aiomme käyttää resistiivistä pudotusmenetelmää, koska se on helpoin ja yksinkertaisin tapa saada nykyinen parametri.
Tässä menetelmässä siirrämme mitattavan virran pieneen vastukseen, jolloin saamme pudotuksen vastuksen yli, joka liittyy sen läpi virtaavaan virtaan. Tämä vastuksen yli oleva jännite syötetään ATMEGA8: een ADC-muunnosta varten. Sen myötä meillä on nykyinen digitaalinen arvo, joka näytetään 16x2-nestekidenäytöllä.
Tätä varten aiomme käyttää jännitteenjakajan piiriä. Syötämme virtaa täydellisen vastushaaran kautta. Haaran keskipiste mitataan. Kun virta muuttuu, sille lineaarisessa vastuksessa tapahtuu pudotusmuutos. Joten tällä meillä on jännite, joka muuttuu lineaarisuuden kanssa.
Nyt on tärkeää huomata, että ohjaimen ottama ADC-muunnos on vain 50µAmp. Tämä vastusperusteisen jännitteenjakajan kuormitusvaikutus on tärkeä, koska jännitteenjakajan Voutista otettu virta lisää virheprosentin kasvua, toistaiseksi meidän ei tarvitse huolehtia kuormitusvaikutuksesta.
Tarvittavat komponentit
Laitteisto: ATMEGA8, virtalähde (5v), AVR-ISP-OHJELMOINTI, JHD_162ALCD (16 * 2LCD), 100uF kondensaattori, 100nF kondensaattori (4 kpl), 100Ω vastus (7 kpl) tai 2,5Ω (2 kpl), 100KΩ vastus.
Ohjelmisto: Atmel studio 6.1, progisp tai flash magic.
Piirikaavio ja selitys työstä
R2: n ja R4: n jännite ei ole täysin lineaarinen; se on meluisa. Kohinan suodattamiseksi kondensaattorit sijoitetaan jakajapiirin kunkin vastuksen yli kuvan osoittamalla tavalla.
ATMEGA8: ssa voimme antaa analogisen tulon mille tahansa PORTC: n NELJÄN kanavasta, sillä ei ole väliä minkä kanavan valitsemme, koska kaikki ovat samat. Valitsemme PORTC: n kanavan 0 tai PIN0. ATMEGA8: ssa ADC: n resoluutio on 10 bittiä, joten ohjain pystyy havaitsemaan pienimmän muutoksen Vref / 2 ^ 10, joten jos referenssijännite on 5 V, saamme digitaalisen lähdön lisäyksen jokaista 5/2 ^ 10 = 5mV kohden. Joten jokaista 5mV: n lisäystä kohti tuloa meillä on yhden lisäys digitaalisessa lähdössä.
Nyt meidän on määritettävä ADC-rekisteri seuraavien ehtojen perusteella:
1. Ensinnäkin meidän on otettava ADC-ominaisuus käyttöön ADC: ssä.
2. Täältä saadaan enimmäistulojännite ADC-muunnokselle + 5V. Joten voimme asettaa ADC: n maksimiarvon tai viitteen 5V: iin.
3. Ohjaimessa on liipaisimen muunnosominaisuus, joka tarkoittaa, että ADC-muunnos tapahtuu vasta ulkoisen liipaisun jälkeen, koska emme halua, että meidän on asetettava rekisterit ADC: lle toimimaan jatkuvassa vapaassa käynnissä.
4. Minkä tahansa ADC: n muuntotiheys (analoginen arvo digitaaliarvoon) ja digitaalisen lähdön tarkkuus ovat kääntäen verrannollisia. Joten digitaalisen lähdön tarkkuuden parantamiseksi meidän on valittava pienempi taajuus. Normaalille ADC-kellolle asetamme ADC: n esiasetuksen maksimiarvoon (2). Koska käytämme 1 MHz: n sisäistä kelloa, ADC: n kello on (1000000/2).
Nämä ovat ainoat neljä asiaa, jotka meidän on tiedettävä aloittaa ADC.
Kaikki yllä olevat neljä ominaisuutta on asetettu kahdella rekisterillä,
PUNAINEN (ADEN): Tämä bitti on asetettava, jotta ATMEGA: n ADC-ominaisuus voidaan ottaa käyttöön.
SININEN (REFS1, REFS0): Näitä kahta bittiä käytetään asettamaan referenssijännite (tai maksimi tulojännite, jonka annamme). Koska haluamme referenssijännitteen 5 V, REFS0 tulisi asettaa taulukon mukaan.
KELTAINEN (ADFR): Tämä bitti on asetettava, jotta ADC toimii jatkuvasti (vapaakäyttötila).
PINK (MUX0-MUX3): Nämä neljä bittiä ovat tulokanavan kertomiseen. Koska aiomme käyttää ADC0: ta tai PIN0: ta, meidän ei tarvitse asettaa yhtään bittiä kuten taulukossa.
RUSKEA (ADPS0-ADPS2): nämä kolme bittiä määrittävät ADC: n esiasteen. Koska käytämme 2: n esiastetta, meidän on asetettava yksi bitti.
TUMMA VIHREÄ (ADSC): tämä bitti asetettiin ADC: lle muuntamisen aloittamiseksi. Tämä bitti voidaan poistaa käytöstä ohjelmassa, kun muunnos on lopetettava.