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?
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);
}
Tags:
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
por exemplo: AREF = 4,90V Vlsb = 4,90/1024 = 4,78 mV (bit menos significativo)
(não use esse capacitor se a taxa de amostragem for rápida)
Estou fazendo.
Muito obrigado
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por