Tässä projektissa käytämme ADC (Analog to Digital Conversion) -konseptia ARDUINO UNO: ssa. Aiomme käyttää Hall-tehosensoria ja Arduino unoa magneetin kentänvoimakkuuden mittaamiseen. Tässä käytetty anturi on UGN3503U. Tämä on halli-anturi, joka tunnistaa magneettikentän voimakkuuden ja tuottaa vaihtelevan jännitteen lähdössä verrannollisena kentän voimakkuuteen. Tämä anturi kerää kentän voimakkuuden GAUSS- yksiköissä.
Joten tällä anturilla meillä on kentän voimakkuus vaihtelevana jännitteenä. Käyttämällä ADC-ominaisuutta muunnamme tämän jännitteen luvuksi. Tämä numero edustaa kentän voimakkuutta ja näkyy nestekidenäytössä.
Arduinolla on kuusi ADC-kanavaa. Niissä yhtä tai kaikkia niistä voidaan käyttää analogisen jännitteen tuloina. UNO ADC: n resoluutio on 10 bittiä (joten kokonaislukuarvot ((0- (2 ^ 10) 1023)). Tämä tarkoittaa, että se kartoittaa 0 - 5 voltin syöttöjännitteet kokonaislukuiksi välillä 0 - 1023. Joten jokaiselle (5/1024 = 4,9 mV) yksikköä kohden.
Kaikessa tässä yhdistämme potentiometrin tai potin A0-kanavaan ja näytämme ADC-tuloksen yksinkertaisessa näytössä. Yksinkertaiset näytöt ovat 16x1 ja 16x2 näyttöyksikköjä. 16x1-näyttöyksikössä on 16 merkkiä ja se on yhdellä rivillä. 16x2 on 32 merkkiä yhteensä 16in 1 s rivi ja toinen 16 2 toinen rivi. Tässä on ymmärrettävä, että jokaisessa merkissä on 5x10 = 50 pikseliä, joten yhden merkin näyttämiseksi kaikkien 50 pikselin on toimittava yhdessä, mutta meidän ei tarvitse huolehtia siitä, koska näyttöyksikössä on toinen ohjain (HD44780), joka pikseleiden hallinta (näet sen LCD-yksikössä, se on takana oleva musta silmä).
Tarvittavat komponentit
Laitteisto: ARDUINO UNO, virtalähde (5v), JHD_162ALCD (16x2LCD), 100uF kondensaattori (2kpl), UGn3503U.
Ohjelmisto: arduino IDE (Arduino nightly)
Piirikaavio ja selitys
Yllä olevassa kuvassa on piirikaavio magneettikentän mittaamiseksi arduino unolla.
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).
Yllä olevassa piirissä voit havaita, että olen ottanut vain kaksi ohjaintappia, kontrastibittiä ja READ / WRITE: tä ei käytetä usein, jotta ne voidaan oikosuljettaa 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 ovat alla:
PIN1 tai VSS maahan
PIN2- tai VDD- tai VCC-jännite + 5 V: n tehoon
PIN3 tai VEE maahan (antaa parhaan kontrastin aloittelijalle)
PIN4 tai RS (Rekisteröi valinta) ARDUINO UNOn PIN8: een
PIN5 tai RW (luku / kirjoitus) maahan (asettaa LCD-näytön lukutilaan helpottamaan viestintää käyttäjälle)
PIN6 tai E (käytössä) ARDUINO UNOn PIN9-koodiin
ARDUINO UNO: n PIN11 tai D4 - PIN10
ARDUINO UNOn PIN12 tai D5 - PIN11
ARDUINO UNOn PIN13 tai D6 - PIN12
ARDUINO UNOn PIN14 tai D7 - PIN13
ARDUINO IDE sallii käyttäjän käyttää LCD-näyttöä 4-bittisessä tilassa. Tämän tyyppinen tiedonsiirto antaa käyttäjälle mahdollisuuden vähentää PIN-koodin käyttöä ARDUINO: ssa, toisin kuin muut, ARDUINO: ta ei tarvitse ohjelmoida erikseen sen käyttämiseksi 4 it-tilassa, koska ARDUINO on oletusarvoisesti asetettu kommunikoimaan 4-bittisessä tilassa. Piirissä näet, että käytimme 4-bittistä tiedonsiirtoa (D4-D7). Joten pelkästä havainnosta ylhäältä taulukosta yhdistämme 6 LCD-nastaa ohjaimeen, jossa 4 nastaa ovat datanastoja ja 2 nastaa ohjausta varten.
Työskentely
LCD-näytön liittämiseksi ARDUINO UNO: han meidän on tiedettävä muutama asia.
|
Ensinnäkin UNO ADC -kanavien oletusarvo on 5 V. Tämä tarkoittaa, että voimme antaa enimmäisjännitteen 5 V ADC-muunnokselle missä tahansa tulokanavassa. Koska jotkut anturit tarjoavat jännitteitä 0-2,5 V, 5 V: n referenssillä saamme vähemmän tarkkuutta, joten meillä on ohje, jonka avulla voimme muuttaa tätä vertailuarvoa. Joten meillä on vertailuarvo ("analogReference ();")
Oletuksena saamme levyn ADC-enimmäistarkkuuden, joka on 10 bittiä, tätä resoluutiota voidaan muuttaa käskyllä ("analogReadResolution (bits);"). Tämä resoluution muutos voi olla hyödyllinen joissakin tapauksissa.
Jos edellä mainitut ehdot asetetaan oletusarvoiksi, voimme lukea arvon kanavan '0' ADC: stä kutsumalla suoraan toimintoon "analogRead (pin);", tässä "pin" edustaa nastaa, johon liitimme analogisen signaalin, tässä tapauksessa se olla “A0”. ADC: n arvo voidaan ottaa kokonaislukuksi muodossa “int ADCVALUE = analogRead (A0); ”, Tällä ohjeella arvo ADC: n jälkeen tallennetaan kokonaislukuun“ ADCVALUE ”.
NYT puhutaan vähän 16x2 LCD: stä. Ensin meidän on otettava käyttöön otsikkotiedosto ('#include
Toiseksi meidän on kerrottava piirilevylle, minkä tyyppistä nestekidenäyttöä täällä käytämme. Koska meillä on niin paljon erityyppisiä LCD-näyttöjä (kuten 20x4, 16x2, 16x1 jne.). Tässä aiomme liittää 16x2-nestekidenäytön UNO: hon, jotta saisimme 'lcd.begin (16, 2);'. 16x1: lle saadaan 'lcd.begin (16, 1);'.
Tässä ohjeessa aiomme kertoa taululle, johon nastat on liitetty, Kytketyt nastat on esitettävä järjestyksessä "RS, En, D4, D5, D6, D7". Nämä nastat on esitettävä oikein. Koska olemme liittäneet RS: n PIN0: een ja niin edelleen, kuten piirikaaviossa on esitetty, Esittelemme taulun pin-numeroa nimellä "LiquidCrystal lcd (0, 1, 8, 9, 10, 11);".
Yläpuolella on jäljellä vain tietojen lähettäminen, LCD-näytöllä näkyvät tiedot tulisi kirjoittaa "cd.print (" hei, maailma! ");". Tällä komennolla nestekidenäytössä näkyy "hei, maailma!". Kuten näette, meidän ei tarvitse huolehtia mistään muusta, meidän on vain alustettava ja UNO on valmis näyttämään tietoja. Meidän ei tarvitse kirjoittaa ohjelmasilmukkaa lähettämään BYTE byte byte-tiedot tähän.
Kun magneetti on viety anturin lähelle, anturi edustaa jännitettä lähdössä, joka on verrannollinen kenttään, Uno ottaa tämän arvon ja näyttää nestekidenäytössä. Tämän magneettikentän mittausprojektin toimintaa selitetään tarkemmin alla olevan C-koodin avulla.