ESP32 ADC – čitanje analognih vrijednosti s Arduino IDE

Esp32 Adc Citanje Analognih Vrijednosti S Arduino Ide



ADC (analogno-digitalni pretvarač) je elektronički sklop koji dolazi s različitim pločama mikrokontrolera ili je integriran unutar mikrokontrolera. ADC se koristi za pretvaranje analognog napona iz različitih senzora u digitalni oblik. Kao i Arduino, ESP32 također ima ADC koji može čitati analogne podatke. Saznajmo više o ESP32 ADC.

Uvod u ESP32 ADC

ESP32 ploča ima dva integrirana 12-bitna ADC-a također poznata kao SAR (registri sukcesivne aproksimacije) ADC-ovi. ADC-ovi na ploči ESP32 podržavaju 18 različitih analognih ulaznih kanala, što znači da možemo spojiti 18 različitih analognih senzora za primanje ulaznih podataka od njih.

Ali ovdje to nije slučaj; ovi analogni kanali podijeljeni su u dvije kategorije, kanal 1 i kanal 2, oba ova kanala imaju neke pinove koji nisu uvijek dostupni za ADC ulaz. Pogledajmo što su ti ADC pinovi zajedno s ostalima.







ESP32 ADC pinovi

Kao što je ranije spomenuto ESP32 ploča ima 18 ADC kanala. Od 18 samo 15 je dostupno na DEVKIT V1 DOIT ploči s ukupno 30 GPIO-ova.



Pogledajte svoju ploču i identificirajte ADC pinove kako smo ih istaknuli na slici ispod:







Kanal 1 ADC pinovi

Slijedi dano mapiranje pinova ESP32 DEVKIT DOIT ploče. ADC1 u ESP32 ima 8 kanala, ali DOIT DEVKIT ploča podržava samo 6 kanala. Ali jamčim da je ovo i dalje više nego dovoljno.

ADC1 GPIO PIN ESP32
CH0 36
CH1 Nije dostupno u 30 pinskoj verziji ESP32 (Devkit MORA)
CH2 DA
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Sljedeća slika prikazuje ESP32 ADC1 kanale:



Kanal 2 ADC pinovi

DEVKIT DOIT ploče imaju 10 analognih kanala u ADC2. Iako ADC2 ima 10 analognih kanala za čitanje analognih podataka, ti kanali nisu uvijek dostupni za korištenje. ADC2 se dijeli s ugrađenim WiFi drajverima, što znači da u vrijeme kada ploča koristi WIFI ovi ADC2 neće biti dostupni. Rješenje ovog problema je korištenje ADC2 samo kada je Wi-Fi upravljački program isključen.

Donja slika prikazuje mapiranje pinova ADC2 kanala.

Kako koristiti ESP32 ADC

ESP32 ADC radi na sličan način kao Arduino, jedina razlika je što ima 12-bitni ADC. Dakle, ESP32 ploča preslikava analogne vrijednosti napona u rasponu od 0 do 4095 u digitalne diskretne vrijednosti.

  • Ako je napon dodan ESP32 ADC nula, digitalna vrijednost ADC kanala bit će nula.
  • Ako je napon dodan ADC-u maksimalan, znači 3,3 V, izlazna digitalna vrijednost bit će jednaka 4095.
  • Za mjerenje višeg napona možemo koristiti metodu djelitelja napona.

Bilješka: ESP32 ADC je prema zadanim postavkama postavljen na 12 bita, no moguće ga je konfigurirati na 0-bit, 10-bit i 11-bit. 12-bitni zadani ADC može mjeriti vrijednost 2^12=4096 a analogni napon se kreće od 0V do 3,3V.

ADC ograničenje na ESP32

Evo nekih ograničenja ESP32 ADC:

  • ESP32 ADC ne može izravno mjeriti napon veći od 3,3 V.
  • Kada su Wi-Fi upravljački programi omogućeni, ADC2 se ne može koristiti. Može se koristiti samo 8 kanala ADC1.
  • ESP32 ADC nije baš linearan; to pokazuje nelinearnost ponašanje i ne može razlikovati 3,2 V od 3,3 V. Međutim, moguće je kalibrirati ESP32 ADC. Ovdje je članak koji će vas voditi kako kalibrirati ponašanje nelinearnosti ESP32 ADC.

Nelinearno ponašanje ESP32 može se vidjeti na serijskom monitoru Arduino IDE.

Programirajte ESP32 ADC koristeći Arduino IDE

Najbolji način za razumijevanje rada ESP32 ADC je uzeti potenciometar i očitati vrijednosti protiv nultog otpora do maksimuma. Slijedi slika kruga ESP32 s potenciometrom.

Spojite srednji pin potenciometra s digitalnim pinom 25 ESP32 i 2 terminalna pina s 3,3 V i GND pinom.

Hardver

Sljedeća slika prikazuje hardver ESP32 s potenciometrom. Slijedi popis potrebnih komponenti:

  • ESP32 DEVKIT DOIT ploča
  • Potenciometar
  • Breadboard
  • Premosne žice

Kodirati

Otvorite Arduino IDE i prenesite donji kod na ESP32 ploču. Kako biste provjerili kako instalirati i konfigurirati ESP32 s Arduino IDE kliknite ovdje .

konst int Pin_potenciometar = 25 ; /*potenciometar spojen na GPIO 25 (analogni ADC2_CH8)*/
int Val_potenciometar = 0 ; /*Očitana vrijednost potenciometra bit će pohranjena ovdje*/
poništiti postaviti ( ) {
Serijski. početi ( 115200 ) ; /*Počinje serijska komunikacija*/
}
poništiti petlja ( ) {
Val_potenciometar = analogniČitaj ( Pin_potenciometar ) ; /*Očitavanje vrijednosti potenciometra*/
Serijski. println ( Val_potenciometar ) ; /*Ispisuje vrijednost potenciometra*/
odgoditi ( 2000. godine ) ; /*kašnjenje od 2 sekunde*/
}

Ovdje u gornjem kodu inicijaliziramo digitalni pin 25 za potenciometar na ESP32 ploči. Sljedeća za unos inputa je inicijalizirana varijabla Val_Potentiometer. Sljedeća serijska komunikacija pokreće se definiranjem brzine prijenosa podataka.

u petlja dio koda pomoću funkcije analogRead() ADC vrijednosti će se očitati na pinu 25 ESP32. Zatim koristeći Serial.print() sve se vrijednosti ispisuju na serijskom monitoru.

Izlaz

Izlaz prikazuje analogne vrijednosti preslikane na digitalne diskretne vrijednosti. Kada je napon očitanja maksimalan, a to je 3,3 V, digitalni izlaz je jednak 4095, a kada je napon očitanja 0 V, digitalni izlaz postaje 0.

Zaključak

Analogno-digitalni pretvarači se koriste posvuda, posebno kada moramo spojiti mikrokontrolerske ploče s analognim senzorima i hardverom. ESP32 ima dva kanala za ADC, a to su ADC1 i ADC2. Ova dva kanala u kombinaciji daju 18 pinova za povezivanje analognih senzora. Međutim, 3 od njih nisu dostupna na ESP32 30 pinskoj verziji. Za više informacija o čitanju analognih vrijednosti pročitajte članak.