ESP32 ADC – Lue analogiset arvot Arduino IDE:llä

Esp32 Adc Lue Analogiset Arvot Arduino Ide Lla



ADC (analogi-digitaalimuunnin) on elektroninen piiri, joka toimitetaan eri mikrokontrollerikorteilla tai integroitu mikro-ohjaimen sisään. ADC:tä käytetään muuntamaan eri antureista tuleva analoginen jännite digitaaliseen muotoon. Kuten Arduino, ESP32:ssa on myös ADC, joka voi lukea analogista dataa. Katsotaanpa lisää ESP32 ADC:stä.

ESP32 ADC Johdanto

ESP32-kortissa on kaksi integroitua 12-bittistä ADC:tä, jotka tunnetaan myös nimellä SAR (Successive Approximation Registers) ADC. ESP32-kortin ADC:t tukevat 18 erilaista analogista tulokanavaa, mikä tarkoittaa, että voimme liittää 18 erilaista analogista anturia ottamaan tuloa niistä.

Mutta näin ei ole tässä; nämä analogiset kanavat on jaettu kahteen luokkaan kanava 1 ja kanava 2, molemmissa kanavissa on joitain nastaja, jotka eivät aina ole käytettävissä ADC-tuloa varten. Katsotaanpa, mitä nuo ADC-nastat ovat muiden kanssa.







ESP32 ADC-nastat

Kuten aiemmin mainittiin, ESP32-kortissa on 18 ADC-kanavaa. 18:sta vain 15 on saatavilla DEVKIT V1 DOIT -kortilla, joissa on yhteensä 30 GPIO:ta.



Katso levyäsi ja tunnista ADC-nastat, kuten korostimme ne alla olevassa kuvassa:







Kanavan 1 ADC-nastat

Seuraavassa on annettu ESP32 DEVKIT DOIT -kortin pin-kartoitus. ESP32:n ADC1:ssä on 8 kanavaa, mutta DOIT DEVKIT -kortti tukee vain 6 kanavaa. Mutta takaan, että nämä ovat edelleen enemmän kuin tarpeeksi.

ADC1 GPIO PIN ESP32
CH0 36
CH1 NA 30-pinnisessä versiossa ESP32 (Devkit MUST)
CH2 ETTÄ
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Seuraava kuva näyttää ESP32 ADC1 -kanavat:



Kanavan 2 ADC-nastat

DEVKIT DOIT -korteissa on 10 analogista kanavaa ADC2:ssa. Vaikka ADC2:ssa on 10 analogista kanavaa analogisen datan lukemiseen, nämä kanavat eivät aina ole käytettävissä. ADC2 on jaettu sisäänrakennettujen WiFi-ajureiden kanssa, mikä tarkoittaa, että kun kortti käyttää WIFI-yhteyttä, nämä ADC2:t eivät ole käytettävissä. Ratkaisu tähän ongelmaan on käyttää ADC2:ta vain, kun Wi-Fi-ohjain on pois päältä.

Alla olevassa kuvassa näkyy ADC2-kanavan pin-kartoitus.

ESP32 ADC:n käyttäminen

ESP32 ADC toimii samalla tavalla kuin Arduino, ainoa ero tässä on, että siinä on 12-bittinen ADC. Joten ESP32-kortti kartoittaa analogiset jännitearvot välillä 0 - 4095 digitaalisina diskreeteinä arvoina.

  • Jos ESP32 ADC:lle annettu jännite on nolla ADC-kanavalla, digitaalinen arvo on nolla.
  • Jos ADC:lle annettu jännite on maksimi, tarkoittaa 3,3 V, lähdön digitaalinen arvo on 4095.
  • Korkeamman jännitteen mittaamiseksi voimme käyttää jännitteenjakajamenetelmää.

merkintä: ESP32 ADC on oletusarvoisesti asetettu 12-bittiseksi, mutta se on mahdollista määrittää 0-, 10- ja 11-bittiseksi. 12-bittinen oletus-ADC voi mitata arvoa 2^12=4096 ja analoginen jännite vaihtelee välillä 0 V - 3,3 V.

ADC-rajoitus ESP32:lle

Tässä on joitain ESP32 ADC:n rajoituksia:

  • ESP32 ADC ei voi mitata suoraan yli 3,3 V:n jännitettä.
  • Kun Wi-Fi-ohjaimet ovat käytössä, ADC2:ta ei voida käyttää. Vain 8 ADC1-kanavaa voidaan käyttää.
  • ESP32 ADC ei ole kovin lineaarinen; se näyttää epälineaarisuus käyttäytymistä, eivätkä voi erottaa 3,2 V:n ja 3,3 V:n välillä. ESP32 ADC on kuitenkin mahdollista kalibroida. Tässä on artikkeli, joka opastaa sinua kalibroimaan ESP32 ADC:n epälineaarisuuden käyttäytymisen.

ESP32:n epälineaarisuus on nähtävissä Arduino IDE:n sarjanäytössä.

Ohjelmoi ESP32 ADC käyttämällä Arduino IDE:tä

Paras tapa ymmärtää ESP32 ADC:n toiminta on ottaa potentiometri ja lukea arvot nollaresistanssia vastaan ​​maksimiin. Seuraavassa on annettu piirikuva ESP32:sta potentiometrillä.

Liitä potentiometrin keskimmäinen nasta ESP32:n digitaaliseen nastaan ​​25 ja 2 liitinnastaa 3,3 V:n ja GND-nastalla.

Laitteisto

Seuraava kuva näyttää ESP32:n laitteiston potentiometrillä. Seuraavassa on luettelo tarvittavista komponenteista:

  • ESP32 DEVKIT DOIT -kortti
  • Potentiometri
  • Leipälauta
  • Hyppyjohtimet

Koodi

Avaa Arduino IDE ja lataa alla oleva koodi ESP32-levylle. Tarkista kuinka ESP32 asennetaan ja määritetään Arduino IDE:n kanssa napsauttamalla tässä .

konst int Pin_Potentiometri = 25 ; /*Potentiometri kytketty GPIO 25:een (analoginen ADC2_CH8)*/
int Val_Potentiometri = 0 ; /*Potentiometrin lukuarvo tallennetaan tähän*/
mitätön perustaa ( ) {
Sarja. alkaa ( 115 200 ) ; /*Sarjaviestintä alkaa*/
}
mitätön silmukka ( ) {
Val_Potentiometri = analoginen Read ( Pin_Potentiometri ) ; /*Potentiometrin arvon lukeminen*/
Sarja. println ( Val_Potentiometri ) ; /*Tulostaa potentiometrin arvon*/
viive ( 2000 ) ; /*2 sekunnin viive*/
}

Tässä yllä olevassa koodissa alustamme digitaalisen nastan 25 potentiometrille ESP32-kortilla. Seuraavaksi syötteen ottamiseksi alustetaan muuttuja Val_Potentiometer. Seuraava Sarjaliikenne aloitetaan määrittämällä siirtonopeus.

Vuonna silmukka AnalogRead()-funktiota käyttävän koodin osa ADC-arvot luetaan ESP32:n nastasta 25. Seuraavaksi Serial.print()-komennolla kaikki arvot tulostetaan sarjanäytölle.

Lähtö

Lähtö näyttää analogiset arvot yhdistettynä digitaalisiin diskreetteihin arvoihin. Kun lukujännite on maksimi, 3,3 V digitaalilähtö on yhtä suuri kuin 4095 ja kun lukujännite on 0 V, digitaalisesta lähdöstä tulee 0.

Johtopäätös

Analogia-digitaalimuuntimia käytetään kaikkialla, varsinkin kun meidän on liitettävä mikro-ohjainkortteja analogisiin antureisiin ja laitteistoihin. ESP32:ssa on kaksi kanavaa ADC:lle, ADC1 ja ADC2. Nämä kaksi kanavaa muodostavat 18 nastaa analogisten antureiden liittämistä varten. Niistä kolme ei kuitenkaan ole saatavilla ESP32 30-nastaisessa versiossa. Jos haluat lisätietoja analogisten arvojen lukemisesta, lue artikkeli.