Estou montando um sensor de fluxo de agua, mas quando mando o programa pra o arduino o LCD fica como mostrado a baixo... Ficando distorcido e com metade da tela do LCD meio apagada.

Utilizo 5v no LCD separado..sem utilizar a saida 5v do arduino. ja tentei outros codigos na IDE do arduino mas continua falhado... como nao entendo muito de programaçao nao sei ao certo o que pode esta ocorrendo.


Se caso alguem saiba o que esta acontecendo e saiba resolver, desde ja agradeço. XD

O codigo que estou utilizando é o que esta logo a baixo.

#include <LiquidCrystal.h>

float vazao; //Variável para armazenar o valor em L/min
float media=0; //Variável para fazer a média
int contaPulso; //Variável para a quantidade de pulsos
short int i=0; //Variável para contagem
float Litros = 0; //Variável para Quantidade de agua
float MiliLitros = 0; //Variavel para Conversão


LiquidCrystal lcd(12, 11, 7, 6, 5, 4);


void setup()
{
Serial.begin(9600);

lcd.begin(16, 2);
lcd.setCursor( 0, 0);
lcd.println("Sensoriamento de");
lcd.setCursor( 0, 1);
lcd.println(" fluxo de Agua ");
delay(3000);

lcd.clear();
pinMode(2, INPUT);
attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
}


void loop ()
{
contaPulso = 0;//Zera a variável
sei(); //Habilita interrupção
delay (1000); //Aguarda 1 segundo
cli(); //Desabilita interrupção

vazao = contaPulso / 5.5; //Converte para L/min
media=media+vazao; //Soma a vazão para o calculo da media
i++;
lcd.setCursor(0,0);
lcd.println(vazao); //Escreve no display o valor da vazão
lcd.println(" L/min "); //Escreve L/min
lcd.setCursor(0,1);
lcd.println(i); //Escreve a contagem i (segundos)
lcd.println("s "); //Escreve s indicando que está em segundos
MiliLitros = vazao/60;
Litros = Litros + MiliLitros;
lcd.println(Litros);
lcd.println("L ");

// Neste conjunto de linhas fizemos a média das leituras obtidas a cada 1 minuto
if(i==60)
{
media = media/60; //faz a média
Serial.print("\nMedia por minuto = "); //Imprime a frase Media por minuto =
Serial.print(media); //Imprime o valor da media
Serial.println(" L/min - "); //Imprime L/min
media = 0; //Zera a variável media para uma nova contagem
i=0; //Zera a variável i para uma nova contagem
}

}


void incpulso ()
{
contaPulso++; //Incrementa a variável de pulsos
}

Exibições: 4331

Responder esta

Respostas a este tópico

Acho que seu LCD estava com defeito. Veja se não tem solda "fria" (com mau contato).

Agora que trocou, funcionou.

ola José Gustavo, sei que este topico ja jaz bastante tempo, mas no meu caso acredito que seja interferencia, pois fiz varios testes com e sem carga,e quando não tem carga nos reles o circuito funciona perfeitamente, mas ao colocar cargas o display 16x2 fica louco exibindo caracteres especiais em chines etc... se perde toda a informação, eu estou usando um sensor de vazao e um sensor de temperatura, e um ds18b20 sensor de temp, que quando a temperatura esta alta aciona um rele, mas como disse, somente quando tem carga nso reles é que o problema ocorre, o rele que estou usando, teoricamente esta protegido com transistor, resistor etc... pude perceber que quando o display fica proximo ao motor que no caso tem 400 wats de potencia e é acionado ele fica louco o display, estava tendo o mesmo problema quando acionava um sinaleiro do tipo buzzer e led, vi algumas dicas para fazer certo tipos de filtros, mas meu conheciemnto atualmente é bem nulo a respeito da eletronica, vc ou alguem teria alguma dica para me ajudar? pesquisei e vi que varias pessoas estao com o mesmo problema, a fonte do arduino é separada e so dele, estou usando uma fonte de 3amper 5v, a bomba que esta sendo ligada esta num afonte de 24 volts e que tbm alimenta um contator que é acionado por um rele que aciona o motor

Boa noite, 

O seu problema parece ser interferência externa. 

Talvez tenha que usar filtros de ruídos (snubber) no motor. 

Qual é o modulo de relé que esta usando ?

https://pt.wikipedia.org/wiki/Snubber

estou usando um modulo rele 4 canais como consta em anexo e que segundo sua característica é protegido, mas é so acionar cargas na rede AC que o display e as veses o arduino fica louco, ate pensei em fazer o meu proprio modulo com esta proteção mas o arduino se não me engano consegue mandar uma corrente de no máx 40 ma o que segundo observei as bobinas dos reles consomen aprox, 50 ma.

eu não manjo nada de eletronica e arduino estou entrando neste mundo agora e por isso tenho muitas duvidas, teria como eu fazer esse snuber no proprio modulo ou seria melhor fazer o meu proprio modulo rele snuber? desde ja agradeço muito

Anexos

ola pessoal para quem passou ou ainda continua a passar por este problema que mencionei eu consegui solucionar, adicionando um filtro RC de 150nf x 400V e um R de 150 ohm em paralelo com a carga que no caso era um motor de geladeira, fica a dica ae pro pessoal, agradeço a todos.

muito obrigado SR Gustavo pela dica do snuber, 

Bom dia, Davidson

A utilização correta do snubber é em paralelo com o contato do Relé e não em paralelo com o motor. 

ola boa tarde Gustavo, como disse o modulo que estou usando segundo sua especificação é composto por diodos, transistors, e resistores, isso segundo o fabricante, tanto é que fiz o teste com este filtro so no motor e quando acionei o sinaleiro/sirene na hora deu problema, ae fiz o teste com o filtro e ate o momento fiz varios testes e não apresentou problemas ate então, isso que fiz sei que foi de forma empirica pois não tenho ociloscopio para medir a frequencia para então achar a capacitancia ideal.

mas vou fazer aqui ainda mais testes para ver como se comporta e posto novamente, e mais uma vez muito obrigado

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço