Trabalhando com Sinais Analógicos no ESP32 com MicroPython

Resumo

Para ler valores analógicos em um ESP32 com MicroPython, utilize adc = machine.ADC(machine.Pin(numero_do_pino)) (por exemplo, pino 36). adc.read() retorna um valor bruto (geralmente de 0 a 4095). Para converter para tensão, multiplique o valor bruto por 3.3 / 4095 (para um ESP32 de 3.3V). Sempre verifique o diagrama de pinagem e a tensão de operação da sua placa.

Informações Detalhadas

A utilização de pinos analógicos no ESP32 com MicroPython envolve a leitura de níveis de tensão de um pino específico. O ESP32 possui vários canais ADC (Conversor Analógico-Digital), que são acessíveis através de pinos GPIO designados. Abaixo, detalhamos como utilizá-los:

1. Importando o Módulo machine

O primeiro passo é importar o módulo machine, que fornece as classes necessárias para interagir com os periféricos de hardware, incluindo o ADC.

import machine

2. Criando um Objeto ADC

Para ler um sinal analógico, você precisa criar um objeto ADC associado a um pino analógico específico.

# Cria um objeto ADC associado ao pino GPIO 36
adc = machine.ADC(machine.Pin(36))

Substitua 36 pelo número do pino analógico desejado. Pinos como 36, 39, 34 e 35 são comumente usados para ADC no ESP32. É crucial consultar a documentação da sua placa ESP32 para confirmar a pinagem exata e os pinos disponíveis para ADC.

3. Lendo o Valor Bruto

Após configurar o objeto ADC, você pode ler o valor analógico bruto do pino:

valor_bruto = adc.read()

Este método retorna um valor inteiro que representa o nível de tensão lido. A faixa desse valor depende da resolução do ADC, que no ESP32 é tipicamente de 12 bits. Isso significa que os valores brutos estarão entre 0 e 4095 ().

4. Convertendo para Tensão

Para obter a tensão real em Volts, você precisa converter o valor bruto lido. A maioria dos ESP32 opera com uma tensão de referência de 3.3V.

# Para um ESP32 operando a 3.3V
tensao = adc.read() * (3.3 / 4095)

Nesta fórmula, 3.3 é a tensão de referência máxima que o ADC pode medir, e 4095 é o valor máximo que um ADC de 12 bits pode retornar. Se o seu ESP32 ou a configuração do ADC usar uma tensão de referência diferente, ajuste o valor 3.3 de acordo.

Considerações Importantes

  • Seleção de Pinos: Sempre verifique a documentação da sua placa ESP32 para confirmar quais pinos são compatíveis com a funcionalidade ADC. Usar um pino incorreto resultará em falha.
  • Faixa de Tensão de Entrada: O ADC do ESP32 tem uma faixa de entrada padrão de 0 a 3.3V (ou a tensão de operação da sua placa específica). Aplicar uma tensão fora dessa faixa pode danificar o ESP32.
  • Resolução: A resolução de 12 bits significa que o ADC pode distinguir entre 4096 () diferentes níveis de tensão. Isso determina a precisão das suas leituras.
  • Atenuação (Attenuation): O ESP32 permite configurar a atenuação do ADC, o que expande a faixa de tensão de entrada. Isso é útil para medir tensões maiores que 3.3V, mas pode reduzir a precisão. Consulte a documentação do módulo machine.ADC para detalhes sobre como configurar a atenuação.
    • Exemplo: adc.atten(machine.ADC.ATTN_11DB) configura a atenuação para permitir uma faixa de entrada de até aproximadamente 2.5V (dependendo do chip ESP32 específico), mapeando-a para a faixa de 0-4095. Outras opções incluem ATTN_0DB, ATTN_2_5DB, ATTN_6DB.
  • Calibração: Para leituras mais precisas, especialmente em aplicações críticas, considere calibrar o ADC. Isso envolve medir tensões conhecidas e ajustar seus cálculos para compensar quaisquer desvios ou não linearidades do sensor e do ADC.

Esta explicação abrangente deve ajudá-lo a começar a usar os pinos analógicos no seu ESP32 com MicroPython. Lembre-se de adaptar o código e as considerações aos requisitos específicos do seu hardware e aplicação.