Por que as resposta analógicas variam sem nenhum gás?

Montei o diagrama  e gravei o código  ambos abaixo do resultado  "com3" que aparece no post

de onde copiei. Acontece que no meu resultado aparece variações de 1 até mais de 800 para o 

pino A0.

Alguém poderia me explicar? 

Serial monitor - dados sensor MQ-2

Circuito Arduino Uno sensor MQ-2

int pin_led_verm = 8;
int pin_led_verde = 9;
int pin_buzzer = 10;

// Definicoes dos pinos ligados ao sensor
int pin_d0 = 7;
int pin_a0 = A2;

int nivel_sensor = 800;

void setup()
{
// Define os pinos de leitura do sensor como entrada
pinMode(pin_d0, INPUT);
pinMode(pin_a0, INPUT);
// Define pinos leds e buzzer como saida
pinMode(pin_led_verm, OUTPUT);
pinMode(pin_led_verde, OUTPUT);
pinMode(pin_buzzer, OUTPUT);
// Inicializa a serial
Serial.begin(9600);
}

void loop()
{
// Le os dados do pino digital D0 do sensor
int valor_digital = digitalRead(pin_d0);
// Le os dados do ino analogico A0 do sensor
int valor_analogico = analogRead(pin_a0);
// Mostra os dados no serial monitor
Serial.print("Pino D0 : ");
Serial.print(valor_digital);
Serial.print(" Pino A0 : ");
Serial.println(valor_analogico);
// Verifica o nivel de gas/fumaca detectado
if (valor_analogico > nivel_sensor)
{
// Liga o buzzer e o led vermelho, e
// desliga o led verde
digitalWrite(pin_led_verm, HIGH);
digitalWrite(pin_led_verde, LOW);
digitalWrite(pin_buzzer, HIGH);

}
else
{
// Desliga o buzzer e o led vermelho, e
// liga o led verde
digitalWrite(pin_led_verm, LOW);
digitalWrite(pin_led_verde, HIGH);
digitalWrite(pin_buzzer, LOW);
}
delay(1000);
}

Exibições: 322

Responder esta

Respostas a este tópico

   Variações nas leituras são completamente normais. Isso se dá a diversos fatores, por exemplo, alterações nas propriedades dos componentes mediante a temperatura de operação,limite da resolução do processador e de conversores AD, ou nesse caso, a própria composição do ar que está ao redor do seu sensor sofrendo contastes mudanças.

   Existem diversas técnicas para reduzir as oscilações abruptas das leituras. Seja por hardware, como a associação de um capacitor ou algum circuito mais elaborado especificamente para isto. Ou via software, como realizar várias leituras consecutivas e fazer um pós tratamento, como uma média simples ou quadrática, por exemplo.

Muito Obrigado

Bom dia, 

Ações para melhorar a leitura do sinal analógico com o conversor ADC do Arduino

  • conecte as portas analógicas do conversor ADC não usadas para o terra (GND).
  • insira um capacitor de 10uF no pino AREF (5v) - negativo no terra. 
  • meça a tensão no pino AREF. Ela é a referência para todas as medições .

           por exemplo:  AREF = 4,90V      Vlsb = 4,90/1024 = 4,78 mV (bit menos significativo) 

  • Use uma fonte de alimentação de boa qualidade (sem ruídos eletrônicos) 
  • Dependendo da taxa de amostragem, conecte um capacitor de 10nF no pino analógico AX   

           (não use esse capacitor se a taxa de amostragem for rápida) 

  • Use filtros digitais para calcular a média das medições. 

Estou fazendo.

Muito obrigado

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço