AREF-analogireferenssi | Arduino Shop and Tutorials

    • Adc-muuntimien resoluutio.
    • Arduinon sisäiset vertailuviitteet.
    • Ulkoinen AREF-viite.
Tarvittava materiaali.
Espanja Espanja Espanja Meksiko
UNO Starter Kit UNO Starter Kit
MEGA Starter Kit
MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit MEGA Starter Kit

Analogi-digitaalimuunnos

Edellisellä istunnolla sanoimme jo, että Arduinossa on 6 analogi-digitaalimuunninta (ADC), jotka ovat nastat A0 A5, ja sanoimme, että ne pystyvät muuntamaan jännitearvoja enintään 5 V:iin asti, joka on Arduinon viitejännite.

Totesimme myös, että yksi muuntimen tärkeimmistä ominaisuuksista on sen bittimäärä, joka määrittelee hienovaraisuuden, jolla voimme kvantifioida tuon muuntamisen digitaaliseksi. Arduinon tapauksessa on 10 bittiä, joita se käsittelee analogisissa porteissa, mikä tarkoittaa, että sen resoluutio on 210 = 1 024 mahdollista arvoa.

Mitä suurempi tämä resoluutio on, sitä parempi on kyky lähestyä todellista arvoa, jonka muuntamista etsimme.

  • On tärkeää ymmärtää, että analogisen signaalin muuntaminen digitaaliseksi on aina approksimaatio, ja silloinkin, kun on epätodennäköistä, että analoginen arvo on täsmälleen se, mitä muunnin kertoo, meillä on aina epävarmuutta.
  • Arduino-muuntimessa, jossa on 10-bittinen resoluutio, jokainen mittausaskel on 5V/1024 = 0,0048828125 V, eli hieman alle 5mV, mikä tarkoittaa, että se ei pysty erottamaan jännitearvoja, joiden ero on tätä pienempi.

Menemättä liian pitkälle yksityiskohtiin, on syytä sanoa, että ADC-muunnin tekee sen, että se vertaa peräkkäin tulossa olevaa signaalia, jota haluamme kvantifioida, referenssijännitteeseen, johon se tekee vertailuja.

Muilla sanoilla ADC-muunnin ei tuota absoluuttisia arvoja, vaan tarjoaa kvantifioidun vertailun referenssiarvoon nähden. TMP36-lämpötila-anturisessiossa olemme siis laskeneet yhden analogisen nastan tulojännitteen lukemana kerrottuna 5V:n tulon maksimiarvon ja 1024-muuntimella mitatun maksimiarvon suhteella.

Koska normaalisti käsittelemämme signaalit Arduinolla ovat noin 5V:n luokkaa, vertaaminen 5V:hen on järkevää, koska teollisuudessa on myös koko joukko antureita, joiden maksimiarvo palauttaa 5V:n.

Mutta yhä useammin teollisuus tuottaa 3,3 V:n elektroniikkaa, itse Arduino DUE on esimerkki siitä, ja jos käytämme ADC:tä digitoimaan 3,3 V:n huippusignaaleja, menetämme tarkkuutta ja resoluutiota, koska tuhlaamme osan mahdollisista vertailuista, itse asiassa kolmasosan.

Käytännössä se, että 3,3 V on suurin tulojännite verrattuna 5 V:iin, tarkoittaa, että meillä ei koskaan ole lukemia, jotka ovat suurempia kuin 1 024 * 3,3 /5 = 675, ja meillä on edelleen 5 mV:n tuloaskeleita.

Mutta jos muunnin on jännitekomparaattori, jos voisimme muuttaa jännitearvon, johon vertaamme, 3,3V:ksi, askeleet olisivat 3,3V/1024 = 0,00322265625 eli 3,2 mV. Tämä tarkoittaa, että olemme parantaneet muuntimemme resoluutiota kuluttamatta penniäkään.

Ideaalitilanteessa vertailujännitteen, jota vasten suoritamme muuntamisen analogisesta digitaaliseksi, pitäisi siis olla tulosignaalin suurin mahdollinen arvo. Koska silloin meillä on paras mahdollinen resoluutio muuntimella.

Arduinon kaverit olivat tietoisia tästä ongelmasta, ja siksi he lisäsivät ulkoisen nastan, jota emme olleet käyttäneet tähän asti, jonka avulla voit liittää ulkoisen referenssijännitteen, johon verrataan signaalia, jota luemme A0-A5-porttien avulla.

Tämän nastan nimi on AREF (Analog Reference) ja se on kaksi pinniä digitaalisen nastan 13 yläpuolella:

Ulkoisen analogisen referenssin käyttäminen

Kysymys analogisesta referenssistä, jota vasten vertaamme näytteitä porttien A0-A6 näytteissä, on niin tärkeä, että Arduino tarjoaa useita sisäisiä jännitteitä, joita vasten voidaan verrata ja jotka voimme aktivoida referenssin vaihtamiseksi.

Aktivoidaksesi 1.1V:n sisäisen referenssin Arduino UNO:ssa käytä ohjetta

analogReference(INTERNAL);

Jos käytät MEGA:ta, voit käyttää yksinomaan:

analogReference(INTERNAL1V1);
analogReference(INTERNAL2V56);

Joka aktivoi 1.1V:n ja 2.56V:n referenssit vastaavasti.

Jos käytät DEFAULT-näppäintä, palaat takaisin vakiomuotoiseen 5V:n referenssiin lähes kaikissa Arduino-malleissa.

analogReference(DEFAULT);
  • Varoittelehan DEFAULT-referenssistä, sillä DUE:ssa se tarkoittaa 3,3V:tä, koska se on sen referenssijännite. Varmista tämä ennen kuin käytät sitä iloisesti.

Kun kytkemme viitejännitteen AREF-nastaan, meidän on kerrottava Arduinolle, että haluamme käyttää sitä. Ja teemme sen ohjeella

analogReference(EXTERNAL);

Käyttäkää päätänne, kun muokkaatte analogista referenssiä, sillä jos ette ole varovaisia, syötte Arduinon päivälliseksi. On suhteellisen helppoa mokata tietyillä viattomalta vaikuttavilla toimilla:

  • Varmista, että jos käytät ulkoista referenssiä, että Arduinon ja referenssin GND:t ovat samat linkittämällä ne yhteen. Tämän tekemättä jättämisellä on erittäin huono ennuste ensimmäisellä vaihdolla.
  • Älä missään tapauksessa käytä alle 0v:n jännitettä AREF-nastassa (TAI signaalia, joka vaihtelee ja jossa voi olla negatiivisia transientteja), koska tulos on arvaamaton.
  • Jos kytket ulkoisen vertailujännitteen, älä kutsu analogRead() ennen analogReference(EXTERNAL) -ohjeen suorittamista, koska oikosuljet sisäisen vertailusignaalin ulkoiseen jännitteeseen AREF:ssä ja mahdollisesti käytät tilaisuutta ostaaksesi sen uuden Arduinon, jonka olet niin innokkaasti ostamassa.
  • Älä kytke AREF:iin alle 1V tai yli 5V, et voi vain asettaa 12 ja odottaa sen antavan arvoa.

Testipiiri

Sovitamme testipiirin, jossa on I2C-näyttö, kuten näimme istunnossa… ja potentiometri. Mutta tällä kertaa kytkemme potentiometrin päihin GND:n ja 3.3V:n niin, että keskimmäisessä nastassa, jonka luemme A1:llä, se ei voi koskaan ylittää 3.3V:tä simuloiden anturia, jolla on tämä maksimiarvo.

Kun käännämme potentiometriä, luemme jännitehäviön 0V:n ja 3.3V:n välillä. ja A1-nastan lukeminen antaa arvoja välillä 0-670, koska olemme tapauksessa, jonka määrittelimme hieman edellä.

Ohjelma yksinkertaisesti lukee analogisen A1-nastan ja lähettää sen arvon I2C-näyttöön, joka on 16 merkkiä kahdella rivillä, kuten näimme istunnossa….

Content only available for subscribers. Access the content!

Tässä on minivideo, jossa on potentiometrin lukemat

Jos nyt kytkemme Arduinon sisäisen 3,3V jännitteen AREF-nastaan, saamme tällaisen piirin:

Katsotaan nyt ohjelmaa:

Tässä on video, jossa on ero:

Session yhteenveto

Tällä arduino-kurssilla olemme oppineet seuraavaa:

    • Olemmekin vaatineet kysymyksen analogi-digitaalimuunnoksesta ja nähneet, että pohjimmiltaan kyse on vertailusta vertailuarvoon.
    • Olemme nähneet, että voimme käyttää sisäistä tai ulkoista jännitearvoa, joka on muu kuin tavallinen 5V.
    • Me tiedämme nyt tarkat ohjeet tuon ulkoisen referenssin aktivoimiseksi ja varotoimenpiteet, jotka on otettava sitä käytettäessä.