from machine import ADC # Importa a biblioteca para ler portas analógicas
from utime import sleep # Importa o tempo para usar o delay (sleep)
import math # Importa a biblioteca matemática para usar logaritmos
sensor_gas = ADC(26) # Usa o pino GP26 como entrada analógica (ADC0)
RL = 5000 # Valor do resistor de carga (RL) no módulo, normalmente 5kΩ
R0 = 10000 # Valor de Rs em ar limpo (ajuste após calibrar, aqui está como 10kΩ)
# Parâmetros da curva do sensor MQ-2 para detectar fumaça (do datasheet)
m = -0.42 # Inclinação da curva no gráfico log(ppm) x log(Rs/R0)
b = 1.92 # Intercepto da curva (valor fixo com base na substância)
while True:
leitura = sensor_gas.read_u16()
print("Nível de gás/fumaça:", leitura)
sleep(1)
"""
leitura = sensor_gas.read_u16() # Lê valor analógico de 0 a 65535 (16 bits)
tensao = (leitura / 65535) * 3.3 # Converte leitura para tensão (0V a 3.3V)
rs = (3.3 - tensao) * RL / tensao # Calcula a resistência Rs do sensor
razao = rs / R0 # Razão entre Rs atual e Rs em ar limpo (R0)
ppm = 10 ** ((math.log10(razao) - b) / m) # Aplica fórmula logarítmica para estimar ppm
print("Leitura ADC:", leitura, # Imprime valor cru do ADC
"| Tensão: {:.2f} V".format(tensao), # Imprime tensão calculada
"| Rs: {:.0f} Ω".format(rs), # Imprime resistência Rs em ohms
"| Fumaça estimada: {:.0f} ppm".format(ppm)) # Imprime estimativa da concentração de fumaça
sleep(1) # Aguarda 1 segundo antes de repetir a leitura
"""