Olá a todos!

Não sei o que está causando  a flutuação nos pinos digitais. Arduino Uno.

Pluguei 8 sensores MQ 02 nas entradas D2 a D9.

Alimentação externa 12v para os sensores. uso o 7805 em cada sensor e 7809 para alimentar a placa.

O sinal digital do sensor vai direto pras entradas.

Estou usando o Pull Up

  pinMode (sinal_sensor_02, INPUT_PULLUP);

Que mais posso fazer?

Exibições: 48

Responder esta

Respostas a este tópico

Mande uma foto... Pelo menos.

O q vc chama de variar ? Quantos % ? 

Pelo que vi (não conheço) a saída dele é digital. Isso eliminaria problemas de ligação de dados. Ou ele é assim mesmo... Ou há um problema de alimentação.

Sugestão:

Alimente ele com pilhas. é de 4,5 a 6V, use 3 pilhas novas alcalinas. Se ficar melhor era a alimentação..

Boa noite, Sr. Eduardo!

Já li algumas respostas suas, inclusive sobre este assunto, vc me parece ser bem competente no assunto!!!

Durante o monitoramento o nível lógico fica em High (5v). Por uma pequena fração de segundo flutua para Low (0), disparando a central. Isto acontece em todos os pinos digitais aleatóriamente que recebem o sinal do sensor.

Tentei inserir um delay, mais sem efeito.

Segue o projeto que escrevi para sua análise!

// Central Repetidora P/ 10 sensores
// Master - 12/05/18.

int led_vermelho = 13; // Definicoes dos pinos
int led_verde = 12;
int buzzer = 11;
int sinal_rele_sirene_geral = 10;

int sinal_sensor_01 = 9; // Definicoes dos pinos - setor
int sinal_sensor_02 = 8;
int sinal_sensor_03 = 7;
int sinal_sensor_04 = 6;
int sinal_sensor_05 = 5;
int sinal_sensor_06 = 4;
int sinal_sensor_07 = 3;
int sinal_sensor_08 = 2;

void setup() {

pinMode(led_vermelho, OUTPUT); // Define pinos como saida
pinMode(led_verde, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(sinal_rele_sirene_geral, OUTPUT);

pinMode (sinal_sensor_01, INPUT_PULLUP); // Define os pinos de leitura do setor entrada/saída
pinMode (sinal_sensor_02, INPUT_PULLUP);
pinMode (sinal_sensor_03, INPUT_PULLUP);
pinMode (sinal_sensor_04, INPUT_PULLUP);
pinMode (sinal_sensor_05, INPUT_PULLUP);
pinMode (sinal_sensor_06, INPUT_PULLUP);
pinMode (sinal_sensor_07, INPUT_PULLUP);
pinMode (sinal_sensor_08, INPUT_PULLUP);

Serial.begin(9600); // Inicializa a serial
}
void loop()
{
int valor_sinal_sensor_01 = digitalRead(sinal_sensor_01); // Le os dados do pino digital D0 do sensor
int valor_sinal_sensor_02 = digitalRead(sinal_sensor_02);
int valor_sinal_sensor_03 = digitalRead(sinal_sensor_03);
int valor_sinal_sensor_04 = digitalRead(sinal_sensor_04);
int valor_sinal_sensor_05 = digitalRead(sinal_sensor_05);
int valor_sinal_sensor_06 = digitalRead(sinal_sensor_06);
int valor_sinal_sensor_07 = digitalRead(sinal_sensor_07);
int valor_sinal_sensor_08 = digitalRead(sinal_sensor_08);

Serial.print(" 1 = Supervisao; 0 = Disparo "); // Imprime a escrita no monitor
Serial.println(); // Mantem a impressão na linha vertical

Serial.print("Sensor 01: "); // Mostra os dados no serial monitor
Serial.print(valor_sinal_sensor_01);
Serial.println();
Serial.print(" Sensor 02: ");
Serial.print(valor_sinal_sensor_02);
Serial.println();
Serial.print(" Sensor 03: ");
Serial.print(valor_sinal_sensor_03);
Serial.println();
Serial.print(" Sensor 04: ");
Serial.print(valor_sinal_sensor_04);
Serial.println();
Serial.print(" Sensor 05: "); // Mostra os dados no serial monitor
Serial.print(valor_sinal_sensor_05);
Serial.println();
Serial.print(" Sensor 06: ");
Serial.print(valor_sinal_sensor_06);
Serial.println();
Serial.print(" Sensor 07: ");
Serial.print(valor_sinal_sensor_07);
Serial.println();
Serial.print(" Sensor 08: ");
Serial.print(valor_sinal_sensor_08);
Serial.println();

if (valor_sinal_sensor_01 == 0) // Verifica o nivel de particulas detectado
{
digitalWrite(led_vermelho, HIGH); // Liga o led vermelho
digitalWrite(led_verde, LOW); // Desliga o led verde
digitalWrite(buzzer, HIGH); // Liga o led verde
digitalWrite(sinal_rele_sirene_geral, HIGH); // Liga a sirene geral
delay(1500);
}
else if (valor_sinal_sensor_02 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}
else if (valor_sinal_sensor_03 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}
else if (valor_sinal_sensor_04 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}
else if (valor_sinal_sensor_05 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}
else if (valor_sinal_sensor_06 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}
else if (valor_sinal_sensor_07 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}
else if (valor_sinal_sensor_08 == 0)
{
digitalWrite(led_vermelho, HIGH);
digitalWrite(led_verde, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(sinal_rele_sirene_geral, HIGH);
delay(1500);
}

else
{
digitalWrite(led_vermelho, LOW);
digitalWrite(led_verde, HIGH);
digitalWrite(buzzer, LOW);
digitalWrite(sinal_rele_sirene_geral, LOW);
delay(1500);
}

delay(2000); // Tempo de leitura dos dados recebidos
}

de cara tem um erro na sua lógica. Os "else" são desnecessários, pois na ocorrência de um alarme ele ignora os demais.

Verifica suas ligações e coloque todos os negativos em comun.

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço