ESP32 ADC: lectura de valors analògics amb Arduino IDE

Esp32 Adc Lectura De Valors Analogics Amb Arduino Ide



L'ADC (conversor analògic a digital) és un circuit electrònic que ve amb diferents plaques de microcontrolador o integrat dins del microcontrolador. L'ADC s'utilitza per convertir la tensió analògica de diferents sensors en forma digital. Igual que Arduino, ESP32 també té un ADC que pot llegir dades analògiques. Descobrim més sobre ESP32 ADC.

ESP32 ADC Introducció

La placa ESP32 té dos ADC integrats de 12 bits també coneguts com ADC SAR (Registres d'aproximació successives). Els ADC de la placa ESP32 admeten 18 canals d'entrada analògics diferents, cosa que significa que podem connectar 18 sensors analògics diferents per prendre'n entrada.

Però aquest no és el cas aquí; aquests canals analògics es divideixen en dues categories canal 1 i canal 2, ambdós canals tenen alguns pins que no sempre estan disponibles per a l'entrada ADC. Vegem quins són aquests pins ADC juntament amb els altres.







Pins ADC ESP32

Com s'ha esmentat anteriorment, la placa ESP32 té 18 canals ADC. De 18 només 15 estan disponibles a la placa DOIT DEVKIT V1 amb un total de 30 GPIO.



Mireu el vostre tauler i identifiqueu els pins ADC tal com els vam destacar a la imatge següent:







Pins ADC del canal 1

A continuació es mostra el mapa de pins donat de la placa ESP32 DEVKIT DOIT. ADC1 a ESP32 té 8 canals, però la placa DOIT DEVKIT només admet 6 canals. Però us asseguro que encara són més que suficients.

ADC1 PIN GPIO ESP32
CH0 36
CH1 NA a la versió ESP32 de 30 pins (Devkit MUST)
CH2 AIXÒ
CH3 39
CH4 32
CH5 33
CH6 34
CH7 35

La imatge següent mostra els canals ESP32 ADC1:



Pins del canal 2 ADC

Les plaques DEVKIT DOIT tenen 10 canals analògics en ADC2. Tot i que ADC2 té 10 canals analògics per llegir dades analògiques, aquests canals no sempre estan disponibles per utilitzar-los. L'ADC2 es comparteix amb els controladors WiFi integrats, el que significa que en el moment en què la placa està utilitzant WIFI, aquests ADC2 no estaran disponibles. La solució a aquest problema és utilitzar ADC2 només quan el controlador Wi-Fi està desactivat.

La imatge següent mostra el mapa de pins del canal ADC2.

Com utilitzar ESP32 ADC

ESP32 ADC funciona de manera similar a Arduino, l'única diferència aquí és que té ADC de 12 bits. Per tant, la placa ESP32 mapeja els valors de voltatge analògic que van de 0 a 4095 en valors digitals discrets.

  • Si la tensió donada a ESP32 ADC és zero un canal ADC, el valor digital serà zero.
  • Si la tensió donada a l'ADC és màxima significa 3,3 V, el valor digital de sortida serà igual a 4095.
  • Per mesurar una tensió més alta, podem utilitzar el mètode del divisor de tensió.

Nota: ESP32 ADC està configurat per defecte a 12 bits, però és possible configurar-lo en 0 bits, 10 bits i 11 bits. L'ADC predeterminat de 12 bits pot mesurar el valor 2^12=4096 i la tensió analògica oscil·la entre 0V i 3,3V.

Limitació ADC a ESP32

Aquí hi ha algunes limitacions de l'ESP32 ADC:

  • L'ADC ESP32 no pot mesurar directament una tensió superior a 3,3 V.
  • Quan els controladors Wi-Fi estan activats, no es pot utilitzar ADC2. Només es poden utilitzar 8 canals d'ADC1.
  • L'ADC ESP32 no és gaire lineal; mostra no linealitat comportament i no pot distingir entre 3,2 V i 3,3 V. Tanmateix, és possible calibrar ESP32 ADC. Aquí és un article que us guiarà per calibrar el comportament no lineal de l'ADC ESP32.

El comportament no lineal de l'ESP32 es pot veure al monitor sèrie d'Arduino IDE.

Programa ESP32 ADC amb Arduino IDE

La millor manera d'entendre el funcionament de l'ESP32 ADC és agafar un potenciòmetre i llegir valors contra la resistència zero al màxim. A continuació es mostra la imatge del circuit de l'ESP32 amb potenciòmetre.

Connecteu el pin central del potenciòmetre amb el pin digital 25 d'ESP32 i 2 pins de terminal amb pin de 3,3 V i GND respectivament.

Maquinari

La imatge següent mostra el maquinari de l'ESP32 amb un potenciòmetre. A continuació es mostra la llista de components necessaris:

  • Placa ESP32 DEVKIT DOIT
  • Potenciòmetre
  • Tauler
  • Cables de pont

Codi

Obriu l'IDE Arduino i carregueu el codi següent a la placa ESP32. Per comprovar com instal·lar i configurar ESP32 amb Arduino IDE, feu clic aquí .

const int Pin_Potenciómetre = 25 ; /*Potenciómetre connectat a GPIO 25 (ADC2_CH8 analògic)*/
int Val_Potenciómetre = 0 ; /*El valor de lectura del potenciòmetre s'emmagatzemarà aquí*/
buit configuració ( ) {
Serial. començar ( 115200 ) ; /*Comença la comunicació en sèrie*/
}
buit bucle ( ) {
Val_Potenciómetre = AnalogRead ( Pin_Potenciómetre ) ; /*Llegint el valor del potenciòmetre*/
Serial. imprimirln ( Val_Potenciómetre ) ; /*Imprimeix el valor del potenciòmetre*/
retard ( 2000 ) ; /*retard de 2 segons*/
}

Aquí, al codi anterior, inicialitzem el pin digital 25 per al potenciòmetre a la placa ESP32. Al costat de prendre entrada, s'inicialitza una variable Val_Potentiometer. A continuació, la comunicació en sèrie s'inicia definint la velocitat de transmissió.

En el bucle part del codi que utilitza la funció analogRead() Els valors ADC es llegiran al pin 25 de l'ESP32. A continuació, utilitzant Serial.print() tots els valors s'imprimeixen al monitor sèrie.

Sortida

La sortida mostra valors analògics assignats a valors digitals discrets. Quan la tensió de lectura és màxima, la sortida digital de 3,3 V és igual a 4095 i quan la tensió de lectura és de 0 V, la sortida digital passa a 0.

Conclusió

Els convertidors d'analògic a digital s'utilitzen a tot arreu, especialment quan hem d'interconnectar plaques de microcontroladors amb sensors i maquinari analògics. ESP32 té dos canals per a ADC que són ADC1 i ADC2. Aquests dos canals es combinen per proporcionar 18 pins per connectar sensors analògics. Tanmateix, 3 d'ells no estan disponibles a la versió ESP32 de 30 pins. Per obtenir més informació sobre la lectura de valors analògics, llegiu l'article.