Franzininho WiFi: Leitura de entradas analógicas com Arduino

Este post faz parte da série Franzininho WiFI - Arduino

O conversor analógico para digital (ADC) é um periférico usado para converter um sinal externo analógico em um formato digital, que pode ser lido e interpretado pelo microcontrolador. O processo de aquisição desse sinal envolve técnicas de amostragem e aproximações sucessivas, resultando em um valor binário quantizado na saída do conversor.

A Franzininho WiFi possui 17 canais ADC conectados a 2 ADCs integrados que podem ser configurados para a resolução e atenuação desejadas para realizar a leitura de cada canal. O conversor AD é um periférico amplamente utilizado em projetos que precisam ler sinais analógicos, como leitura de pressão, luz, vibração, força e outros.

Nesse artigo veremos como fazer leitura de entradas analógicas na Franzininho WiFi com as funções Arduino.

API Analog do Arduino

Nesta sessão apresentaremos as funções usadas para configurar o ADC e adquirir as leituras analógicas. 

analogRead

Função utilizada para capturar as leituras analógicas dada pelo pino selecionado

uint16_t analogRead(uint8_t pin);
  • pin :  pino selecionado

Retorna os valores analógicos  

analogReadMilivolts

Função utilizada para captura as leituras analogicas e transformar em milivolts 

uint32_t analogReadMilivolts(uint8_t pin);
  • pin : seleciona o pino físico 

Retorna os valores de tensão em mV (0 – 3300)  

analogResolution

Configura a resolução das analógicas. Por padrão a resolução utilizada é 12 bits (0 – 4096). O intervalo de bits é entre 9 a 12 bits, lembrando quanto menor a resolução, menor será a precisão das leituras analógicas

void analogReadResolution(uint8_t bits);
  • bits : define  o pino físico

analogSetAttenuation

Configura a atenuação para todo o canal ADC. Para cada valor de atenuação há uma faixa específica de tensão de entrada.

void analogSetAttenuation(adc_attenuation_t attenuation);
  • attenuation : seleciona o valor da atenuação
Atenuação Faixa de tensão
ADC_ATTEN_DB_00 mV ~ 750 mV
ADC_ATTEN_DB_2_50 mV ~ 1050 mV
ADC_ATTEN_DB_60 mV ~ 1300 mV
ADC_ATTEN_DB_110 mV ~ 2500 mV

analogSetPinAttenuation

Configura a atenuação para um canal em específico. 

void analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation)  
  • pin : seleciona o pino específico para receber as configurações 
  • attenuation : seleciona o valor da atenuação

Materiais necessários

Os materiais utilizados nesse artigo foram:

  • Placa Franzininho WiFi
  • Protoboard
  • Potenciômetro 10 K Ω 
  • Resistor 150 Ω 
  • LED 
  • Jumpers
  • Arduino IDE 

Circuito exemplo para leitura de entradas analógicas com a Franzininho WiFi

Na imagem abaixo apresentamos o circuito proposto neste artigo. Vamos utilizar um potenciômetro conectado ao pino GPIO 4 e um LED na GPIO 2.

entradas analógicas Franzininho WiFi

Código

No projeto proposto utilizamos o potenciômetro para interagir com o LED, para isso foram feitas leituras analógicas em loop e à medida que rotaciona o eixo do potenciômetro os valores ADC mudam linearmente. Quando o valor ADC ultrapassar o limiar o LED é acionado ou caso contrário desliga.  

/*
 Autor: Equipe Embarcados
*/
#define POTENCIOMETRO 4
#define LED           2
#define LIMIAR 3000 // Leitura ADC


void setup()
{
 /*Configura o LED com saída digital*/
 pinMode(LED, OUTPUT);


 /*Configura o canal ADC*/
 analogReadResolution(12);
}


void loop()
{
 /* Se a leitura analógica ultrapassar o limiar ...
   aciona o LED */
 if(analogRead(POTENCIOMETRO)> LIMIAR)
 {
   digitalWrite(LED, HIGH);
 }
  /*Caso contrário desliga o LED*/
 else
 {
   digitalWrite(LED, LOW);
 }


}

Simule esse projeto no Wokwi: https://wokwi.com/projects/362363400146330625

Explicação do Código

Nessa sessão explicaremos cada trecho do código. 

Mapeamento dos pinos que serão utilizados e o valor limiar para acionar o LED:

#define POTENCIOMETRO 4
#define LED           2
#define LIMIAR        3000 // Leitura ADC

No void setup() , configura o LED como saída digital e a resolução do canal ADC para uma resolução de 12 bits (0 – 4095):

void setup()
{
 /*Configura o LED com saída digital*/
 pinMode(LED, OUTPUT);


 /*Configura o canal ADC*/
 analogReadResolution(12);
}

No void loop() , define a lógica de acionamento do LED dado o valor da leitura ADC.

void loop()
{
 /* Se a leitura analógica ultrapassar o limiar ...
   aciona o LED */
 if(analogRead(POTENCIOMETRO)> LIMIAR)
 {
   digitalWrite(LED, HIGH);
 }
  /*Caso contrário desliga o LED*/
 else
 {
   digitalWrite(LED, LOW);
 }


}

Conclusão

Neste artigo, foi abordado o conversor A/D da Franzininho WiFi e a como podemos ler valores analógicos através dele, após a conversão em valores digitais. O projeto proposto é uma aplicação simples para exemplificar como controlar uma saída com base nas leituras de uma entrada. Além disso, foram apresentadas as funções de configuração para ajustar os canais individualmente ou em conjunto, conforme a necessidade de cada projeto.

Para assegurar a compreensão do tema, recomendamos fortemente que faça a leitura de outros sensores analógicos usando o ADC.

Compre sua Franzininho WiFi (com frete gratis) clicando neste link.

Saiba mais

Franzininho WiFi – Entrada Analógica ESP-IDF

Franzininho WiFi: Pinos de Toque Capacitivo com CircuitPython

Franzininho WiFI - Arduino

Franzininho WiFi: Explorando as GPIOs com Arduino Franzininho WiFi: PWM (Pulse Width Modulation) com Arduino
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Arduino » Franzininho WiFi: Leitura de entradas analógicas com Arduino

EM DESTAQUE

WEBINARS

VEJA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: