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 por3.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 machine2. 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.ADCpara 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 incluemATTN_0DB,ATTN_2_5DB,ATTN_6DB.
- Exemplo:
- 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.