ESP32 ADC – Ler valores analógicos com Arduino IDE

Esp32 Adc Ler Valores Analogicos Com Arduino Ide



ADC (conversor analógico para digital) é um circuito eletrônico que vem com diferentes placas microcontroladoras ou integrados dentro do microcontrolador. O ADC é usado para converter a tensão analógica de diferentes sensores em formato digital. Assim como o Arduino, o ESP32 também possui um ADC que pode ler dados analógicos. Vamos descobrir mais sobre o ESP32 ADC.

Introdução ao ESP32 ADC

A placa ESP32 possui dois ADCs de 12 bits integrados, também conhecidos como ADCs SAR (Successive Approximation Registers). Os ADCs da placa ESP32 suportam 18 canais de entrada analógica diferentes, o que significa que podemos conectar 18 sensores analógicos diferentes para receber entrada deles.

Mas este não é o caso aqui; esses canais analógicos são divididos em duas categorias canal 1 e canal 2, ambos esses canais possuem alguns pinos que nem sempre estão disponíveis para entrada ADC. Vamos ver o que são esses pinos ADC junto com outros.







Pinos ADC ESP32

Como mencionado anteriormente, a placa ESP32 possui 18 canais ADC. De 18, apenas 15 estão disponíveis na placa DEVKIT V1 DOIT, com um total de 30 GPIOs.



Olhe para sua placa e identifique os pinos do ADC conforme os destacamos na imagem abaixo:







Pinos ADC do Canal 1

A seguir está o mapeamento de pinos da placa ESP32 DEVKIT DOIT. O ADC1 no ESP32 possui 8 canais, porém a placa DOIT DEVKIT suporta apenas 6 canais. Mas garanto que ainda são mais do que suficientes.

ADC1 PIN GPIO ESP32
CH0 36
CH1 NA na versão de 30 pinos ESP32 (Devkit DEv)
CH2 ESTE
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

A imagem a seguir mostra os canais ESP32 ADC1:



Pinos ADC do Canal 2

As placas DEVKIT DOIT possuem 10 canais analógicos em ADC2. Embora o ADC2 tenha 10 canais analógicos para ler dados analógicos, esses canais nem sempre estão disponíveis para uso. O ADC2 é compartilhado com drivers WiFi integrados, o que significa que no momento em que a placa estiver usando WIFI, esses ADC2 não estarão disponíveis. A solução para esse problema é usar o ADC2 somente quando o driver Wi-Fi estiver desligado.

A imagem abaixo mostra o mapeamento de pinos do canal ADC2.

Como usar o ESP32 ADC

O ESP32 ADC funciona de maneira semelhante ao Arduino, a única diferença aqui é que ele possui um ADC de 12 bits. Assim, a placa ESP32 mapeia os valores de tensão analógica variando de 0 a 4095 em valores digitais discretos.

  • Se a tensão fornecida ao ESP32 ADC for zero um canal ADC o valor digital será zero.
  • Se a tensão fornecida ao ADC for máxima significa 3,3V, o valor digital de saída será igual a 4095.
  • Para medir uma tensão mais alta, podemos usar o método do divisor de tensão.

Observação: O ESP32 ADC é definido por padrão em 12 bits, mas é possível configurá-lo em 0 bits, 10 bits e 11 bits. O ADC padrão de 12 bits pode medir o valor 2^12=4096 e a tensão analógica varia de 0V a 3,3V.

Limitação ADC no ESP32

Aqui estão algumas limitações do ESP32 ADC:

  • O ESP32 ADC não pode medir diretamente uma tensão superior a 3,3 V.
  • Quando os drivers Wi-Fi estão ativados, o ADC2 não pode ser usado. Apenas 8 canais de ADC1 podem ser usados.
  • O ESP32 ADC não é muito linear; isto mostra Não-linearidade comportamento e não pode distinguir entre 3,2 V e 3,3 V. No entanto, é possível calibrar o ESP32 ADC. Aqui é um artigo que o guiará para calibrar o comportamento de não linearidade do ESP32 ADC.

O comportamento de não linearidade do ESP32 pode ser visto no monitor serial do Arduino IDE.

Programa ESP32 ADC usando Arduino IDE

A melhor maneira de entender o funcionamento do ESP32 ADC é pegar um potenciômetro e ler os valores contra a resistência zero ao máximo. A seguir está a imagem do circuito do ESP32 com potenciômetro.

Conecte o pino do meio do potenciômetro com o pino digital 25 do ESP32 e 2 pinos terminais com pino 3.3V e GND respectivamente.

Hardware

A imagem a seguir exibe o hardware do ESP32 com potenciômetro. Segue a lista de componentes necessários:

  • Placa ESP32 DEVKIT DOIT
  • Potenciômetro
  • Protoboard
  • Fios de ligação

Código

Abra o Arduino IDE e faça o upload do código abaixo na placa ESP32. Para verificar como instalar e configurar o ESP32 com Arduino IDE clique aqui .

const int Pin_Potenciômetro = 25 ; /*Potenciômetro conectado no GPIO 25 (Analog ADC2_CH8)*/
int Val_Potenciômetro = 0 ; /*O valor lido do potenciômetro será armazenado aqui*/
vazio configurar ( ) {
Serial. começar ( 115200 ) ; /*A comunicação serial começa*/
}
vazio ciclo ( ) {
Val_Potenciômetro = analogRead ( Pin_Potenciômetro ) ; /*Lendo o valor do potenciômetro*/
Serial. imprimir ( Val_Potenciômetro ) ; /* Imprime o valor do potenciômetro */
atraso ( 2000 ) ; /*atraso de 2 segundos*/
}

Aqui no código acima, inicializamos o pino digital 25 para potenciômetro na placa ESP32. Ao lado da entrada uma variável Val_Potentiometer é inicializada. A próxima comunicação serial é iniciada definindo a taxa de transmissão.

No ciclo parte do código usando a função analogRead() valores ADC serão lidos no pino 25 do ESP32. Em seguida, usando Serial.print() todos os valores são impressos no monitor serial.

Resultado

A saída exibe valores analógicos mapeados em relação a valores digitais discretos. Quando a tensão de leitura é máxima que é 3,3V a saída digital é igual a 4095 e quando a tensão de leitura é 0V a saída digital se torna 0.

Conclusão

Conversores analógicos para digitais são usados ​​em todos os lugares, especialmente quando temos que fazer a interface de placas de microcontroladores com sensores analógicos e hardware. O ESP32 possui dois canais para ADC que são ADC1 e ADC2. Esses dois canais se combinam para fornecer 18 pinos para interface de sensores analógicos. No entanto, 3 deles não estão disponíveis na versão ESP32 de 30 pinos. Para saber mais sobre a leitura de valores analógicos, leia o artigo.