ESP32 valores analógicos de leitura ADC com Arduino IDE

este artigo mostra como ler entradas analógicas com o ESP32 usando Arduino IDE. A leitura analógica é útil para ler valores de resistências variáveis como potenciômetros ou sensores analógicos.

ESP32 ADC lê valores analógicos com Arduino IDE

ler entradas analógicas com a ESP32 é tão fácil como usar a função analogRead(GPIO), que aceita como argumento, a GPIO que você quer ler.

temos também outros tutoriais sobre como usar o analógico pinos com controlo electrónico de VELOCIDADE a bordo:

  • ESP8266 ADC – Leitura de Valores Analógicos com o Arduino IDE, MicroPython e Lua
  • ESP32 Leituras Analógicas com MicroPython

veja o Vídeo

Você pode assistir ao vídeo de tutorial ou continue lendo esta página para instruções escritas.

entradas analógicas (ADC)

leitura de um valor analógico com o ESP32 significa que pode medir níveis de tensão variáveis entre 0 V e 3.3 V.

a tensão medida é então atribuída a um valor entre 0 e 4095, no qual 0 V corresponde a 0, e 3.3 V corresponde a 4095. A qualquer tensão entre 0 V e 3.3 V será dado o valor correspondente no intervalo.

ESP32 ADC valor da Gama de entradas de leitura analógica

ADC é não-linear

idealmente, você esperaria um comportamento linear ao usar os pinos de ADC ESP32. No entanto, isso não acontece. O que você vai obter é um comportamento como mostrado no seguinte gráfico:

este comportamento significa que o seu ESP32 não é capaz de distinguir 3.3 V de 3.2 V. você terá o mesmo valor para ambas as tensões: 4095.

o mesmo acontece para valores de muito baixa tensão: para 0 V e 0.1 V você terá o mesmo valor: 0. Você precisa ter isso em mente ao usar os pinos de ADC ESP32.

há uma discussão sobre GitHub sobre este assunto.

analogRead () Function

Reading an analog input with the ESP32 using the Arduino IDE is as simple as using the analogRead () function. Aceita como argumento, o GPIO que deseja ler:

analogRead(GPIO);

o ESP32 suporta medições em 18 canais diferentes. Apenas 15 estão disponíveis no DevKit V1 doit board (versão com 30 GPIOs). Pegue no pin da placa ESP32 e localize os pinos ADC. Estas são destacadas com uma fronteira vermelha na figura abaixo.

ESP32 alfinetes de GPIOs ADC

Saiba mais sobre a GPIOs ESP32: ESP32 Pinout Reference.

estes pinos de entrada analógicos têm resolução de 12 bits. Isto significa que quando você lê uma entrada analógica, seu intervalo pode variar de 0 a 4095.Nota: Os pinos ADC2 não podem ser utilizados quando se utiliza Wi-Fi. Então, se você está usando Wi-Fi e você está tendo problemas para obter o valor de um GPIO ADC2, você pode considerar usar um GPIO ADC1 em vez disso, que deve resolver o seu problema.

outras funções úteis

existem outras funções mais avançadas para usar com os pinos ADC que podem ser úteis em outros projetos.

  • analogReadResolution( resolution): set the sample bits and resolution. Pode ser um valor entre 9 (0 – 511) e 12 bits (0-4095). O padrão é resolução de 12 bits.
  • analogSetWidth( largura): define os bits e a resolução da amostra. Pode ser um valor entre 9 (0 – 511) e 12 bits (0-4095). O padrão é resolução de 12 bits.
  • analogsetciclos (ciclos): definir o número de ciclos por amostra. O padrão é 8. Distância: 1 a 255.
  • analogSetSamples( amostras): definir o número de amostras na gama. O padrão é 1 amostra. Tem um efeito de aumentar a sensibilidade.
  • analogSetClockDiv (atenuação): definir o divisor para o relógio ADC. O padrão é 1. Distância: 1 a 255.
  • analogSetAttenuation( atenuação): define a atenuação de entrada para todos os pinos ADC. O valor por omissão é ADC_11db. Valores aceites:
    • ADC_0db: não define atenuação. ADC pode medir até aproximadamente 800 mV (1v entrada = leitura ADC de 1088).
    • ADC_2_5db: a tensão de entrada do ADC será atenuada, alargando a gama de medições até aproximadamente. 1100 mV. (1v input = ADC reading of 3722).
    • ADC_6db: a tensão de entrada do ADC será atenuada, alargando a gama de medições até aproximadamente. 1350 mV. (1v input = ADC reading of 3033).
    • ADC_11db: a tensão de entrada do ADC será atenuada, alargando a gama de medições até aproximadamente. 2600 mV. (1v entrada = leitura ADC de 1575).
  • analogSetPinAttenuation( pin, atenuação): define a atenuação de entrada para o pin especificado. O padrão é ADC_11db. Os valores de atenuação são os mesmos da função anterior.
  • adcAttachPin( pin): anexar um pin ao ADC (também limpa qualquer outro modo analógico que possa estar ligado). Devolve um resultado verdadeiro ou falso.
  • adcStart (pin), adcBusy(pin) e resultadcEnd(pin): inicia uma conversão de ADC no barramento do PIN em anexo. Verifique se a conversão no bus ADC do pin está a correr de momento (devolve TRUE ou FALSE). Obtenha o resultado da conversão: devolve um número inteiro de 16 bits.

há um vídeo muito bom explicando estas funções que você pode assistir aqui.

ler valores analógicos a partir de um potenciômetro com ESP32

para ver como tudo se une, faremos um exemplo simples para ler um valor analógico a partir de um potenciômetro.

para este exemplo, você precisa das seguintes partes:

  • ESP32 DOIT DEVKIT V1 Diretoria (leia-se Melhor ESP32 desenvolvimento de placas)
  • Potenciômetro
  • Protoboard
  • Jumper fios

Você pode usar o anterior links ou ir diretamente para MakerAdvisor.com/tools para encontrar todas as peças para seu projetos com o melhor preço!

esquemático

Wire a potentiometer to your ESP32. O pino médio do potenciómetro deve ser ligado à GPIO 34. Você pode usar o seguinte diagrama esquemático como referência.

Leia o valor do Potenciômetro ESP32 IDE Arduino

Código

vamos programa o ESP32 usando Arduino IDE, portanto, certifique-se de que você tem o ESP32 add-on instalado antes de prosseguir:

  • Instruções para Windows – ESP32 Placa de Arduino IDE
  • Mac e Linux instruções – ESP32 Placa de Arduino IDE

Abrir seu Arduino IDE e copie o código a seguir.

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}

Ver código bruto

este código simplesmente lê os valores do potenciômetro e imprime esses valores no Monitor Serial.

no código, você começa por definir a GPIO a que o potenciômetro está conectado. Neste exemplo, GPIO 34.

const int potPin = 34;

In the setup (), initialize a serial communication at a baud rate of 115200.

Serial.begin(115200);

In The loop(), use the analogRead()function to read the analog input from the potPin.Finalmente, imprime os valores lidos do potenciómetro no monitor serial.

Serial.println(potValue);

Upload the code provided to your ESP32. Certifique-se de que tem o tabuleiro e o porta de comunicações seleccionados no menu Ferramentas.

Testing the Example

After uploading the code and pressing the ESP32 reset button, open the Serial Monitor at a baud rate of 115200. Rodar o potenciómetro e ver os valores a mudar.

potenciómetro de leitura ESP32 analógico

o valor máximo que você terá é 4095 e o valor mínimo é 0.

Leia potenciômetro ESP32 analogRead serial monitor Arduino IDE demonstração

resumindo

neste artigo, você aprendeu como ler entradas analógicas usando o ESP32 com o Arduino IDE. Em resumo:

  • a placa de DEVKIT V1 doit ESP32 (versão com 30 pinos) tem 15 pinos ADC que você pode usar para ler entradas analógicas.
  • estes pinos têm uma resolução de 12 bits, o que significa que você pode obter valores de 0 a 4095.
  • para ler um valor na Arduino IDE, você simplesmente usa a função analogRead ().
  • os pinos de ADC ESP32 não têm um comportamento linear. Você provavelmente não será capaz de distinguir entre 0 e 0.1 V, ou entre 3.2 e 3.3 V. Você precisa ter isso em mente ao usar os pinos ADC.

esperamos que tenha achado útil este guia curto. Se quiser saber mais sobre o ESP32, Inscreva-se no nosso curso: Aprenda ESP32 com Arduino IDE. Outros guias ESP32 que Poderá também gostar:

  • ESP32 OLED com o Arduino IDE
  • ESP32 com DHT de Temperatura e Umidade Sensor utilizando o Arduino IDE
  • ESP32 Servidor Web com DHT leituras
  • 20+ ESP32 Projetos e Tutoriais

Obrigado pela leitura.

Deixe uma resposta

O seu endereço de email não será publicado.

Previous post Alaska In December: A Guide To Know All About This Charmer
Next post especialistas ortopédicos da Capital-Lanham