Tässä opetusohjelmassa aiomme liittää FLEX-anturin ATMEGA8-mikrokontrolleriin. ATMEGA8: ssa aiomme käyttää tämän työn suorittamiseen 10-bittistä ADC (analoginen digitaalimuunnos) -ominaisuutta. Nyt ATMEGA: n ADC ei voi ottaa yli + 5 V: n tuloa.
Mikä on Flex-anturi?
FLEX anturi on anturi, joka muuttaa sen vastusta sen muoto on muuttunut. Se on esitetty alla olevassa kuvassa.
Tätä anturia käytetään havaitsemaan lineaarisuuden muutokset. Joten kun FLEX-anturi on taivutettu, vastus taivutetaan voimakkaasti. Tämä on esitetty alla olevassa kuvassa.
Nyt tämän vastusmuutoksen muuntamiseksi jännitteen muutokseksi aiomme käyttää jännitteenjakajan piiriä. Tässä resistiivisessä verkossa meillä on yksi vakio vastus ja muu vastus muuttuva. Kuten alla olevassa kuvassa on esitetty, R1 on vakiovastus ja R2 on FLEX-anturi, joka toimii vastuksena. Haaran keskipiste mitataan. Kun vastus R2 muuttuu, Vout muuttuu sen kanssa lineaarisesti. 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ä resistanssipohjaisen jännitteenjakajan kuormitusvaikutus on tärkeä, koska jännitteenjakajan Vout-jännite lisää virheprosenttia, toistaiseksi meidän ei tarvitse huolehtia kuormitusvaikutuksesta.
Otamme kaksi vastusta ja muodostamme jakajapiirin niin, että 25 V: n Vin: lle saadaan 5 V: n Vout. Joten meidän on vain kerrottava Vout-arvo luvulla 5, jotta saadaan todellinen tulojännite.
Tarvittavat komponentit
LAITTEET: ATMEGA8, virtalähde (5v), AVR-ISP-OHJELMOINTI, JHD_162ALCD (16x2LCD), 100uF kondensaattori, 100nF kondensaattori (5 kpl), 100KΩ vastus.
OHJELMISTO: Atmel studio 6.1, progisp tai flash magic.
Piirikaavio ja selitys työstä
Piirissä ATMEGA8: n PORTD on kytketty dataportin LCD-näyttöön. 16x2 LCD -näytössä on kaikkiaan 16 nastaa, jos taustavaloa on, jos taustavaloa ei ole, on 14 nastaa. Voidaan kytkeä päälle tai jättää taustavalon nastat. Nyt 14 nastat on 8 data nastat (7-14 tai D0-D7), 2 virtalähde nastat (1 & 2 tai VSS ja VDD tai GND ja + 5V), 3 rd pin kontrastin säätö (VEE-ohjaimet kuinka paksu merkkien pitäisi olla kuvassa) ja 3 ohjaintappia (RS & RW & E).
Piirissä voit havaita, että olen ottanut vain kaksi ohjaintappia. Kontrastibittiä ja LUKU / KIRJOITA ei käytetä usein, joten ne voidaan oikosulkea maahan. Tämä asettaa LCD-näytön suurimmalle kontrastille ja lukutilaan. Meidän on vain hallittava ENABLE- ja RS-nastoja merkkien ja tietojen lähettämiseksi vastaavasti.
LCD-liitännät ATmega8: n kanssa ovat seuraavat:
PIN1 tai VSS maahan
PIN2- tai VDD- tai VCC-jännite + 5 V: n tehoon
PIN3 tai VEE maahan (antaa parhaan kontrastin parhaiten aloittelijalle)
PIN4 tai RS (Rekisteröi valinta) uC: n PB0: lle
PIN5 tai RW (luku / kirjoitus) maahan (LCD-näytön asettaminen lukutilaan helpottaa viestintää käyttäjälle)
PIN6 tai E (käytössä) uC: n PB1: een
UC: n PIN7 tai D0 - PD0
UC: n PIN8 tai D1 - PD1
UC: n PIN9 tai D2 - PD2
UC: n PIN10 tai D3 - PD3
U11: n PIN11 tai D4 - D4
UC: n PIN12 tai D5 - PD5
UC: n PIN13 tai D6 - PD6
UC: n PIN14 tai D7 - PD7
Piirissä näet, että olemme käyttäneet 8-bittistä tiedonsiirtoa (D0-D7), mutta tämä ei ole pakollista, voimme käyttää 4-bittistä viestintää (D4-D7), mutta 4-bittisellä viestintäohjelmalla tulee vähän monimutkainen, joten menimme juuri 8-bittisellä viestintä. (Tarkista myös tämä opetusohjelma: 16x2 LCD-liitäntä AVR-mikrokontrolleriin)
Joten pelkästä havainnosta ylhäältä taulukosta yhdistämme 10 LCD-nastaa ohjaimeen, jossa 8 nastaa on datanastoja ja 2 nastaa ohjaukseen.
R2: n jännite ei ole täysin lineaarinen; se on meluisa. Suodattamiseksi kohinakondensaattorit sijoitetaan jakajapiirin kunkin vastuksen yli kuvan osoittamalla tavalla.
Tässä olevan 1K-potin on säädettävä ADC: n tarkkuutta. Keskustellaan nyt ATMEGA8: n ADC: stä.
ATMEGA8: ssa voimme antaa analogisen tulon mihin tahansa NELJÄÄ PORTC: n kanavaa, ei ole väliä minkä kanavan valitsemme, koska kaikki ovat samat, aiomme valita PORTC: n kanavan 0 tai PIN0.
ATMEGA8: ssa ADC: n resoluutio on 10 bittiä, joten ohjain pystyy havaitsemaan merkityksen Vref / 2 ^ 10: n minimimuutoksesta, joten jos referenssijännite on 5 V, saamme digitaalisen lähdön lisäyksen jokaista 5/2 ^ 10 = 5mV. 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.
FLEX-anturin rajapinta ATmega8: n kanssa selitetään vaihe vaiheelta alla olevassa C-koodissa.