bom estou fazendo um protejo académico no qual estou implementando um chuveiro electrónico.

o meu chuveiro vai ter o controle da vazão onde vai poder ter a medida da velocidade da agua e a quantidade de litros gastos. também marcara a temperatura da agua e o tempo de banho.

agora estou tentando acrescenta o consumo de energia em kWh.

para que eu acrescento essa esse consumo a minha ideia de raciocino básico é  aperta um botão, quando esse botao for apertado ele limpara a minha tela do display, desligara a minha válvula e imprimira o resultado na tela. so que não to conseguindo encaixa essa parte da programação, sempre que faço da error.

só para constar é a primeira vez que mexo com Arduino e programação e tbm é o primeiro protejo que to desenvolvendo. só tenho 20 dias que to mexendo com isso e nesse tempo estudando e desenvolvendo o protejo vou deixa aqui o código do que fiz ate agora . se alguém poder ajudar com termina a programação de acrescenta o kWh eu fico agradecido.

++++++++++++++++++++++++++++++++++++++++

#include <LiquidCrystal.h> //incluir o lcd para o reconhecimento do Arduino
#define sensor 0 //Define o pino A0 como “sensor de Tempreratura"

//Declarar a variavel controle de vazão (sensor Ultrasonico HC-SR04)
int valvula = 11; //Configura o pino 11 da Arduino para conexão do valvula solenoide
int trig = 9; //Configura o pino 9 do Arduino para conexão do Trig do sonar
int echo = 10; //Configura o pino 10 (PWM) do Arduino para conexão do Echo do sonar

//Declarar a variavel de Temperatura (Sensor LM35)
float Temp; // Variável que recebe o valor convertido para temperatura.
int Tempentrada; // Variável para ler o sinal do pino do Arduino "A0"

// Declarar a variavel do Medidor (Nivel de Vazão 1/2)
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
int s = 0; //Variável para segundos
int Min = 00; //Variável para minutos
int Hor=00;
float Litros = 0; //Variável para Quantidade de agua
float MiliLitros = 0; //Variavel para Conversão

//Declara a variavel do Alarme Sonoro
int buzzer = 12 ; //Configura o alarme no pino 12 do arduino

//Declara a variavel da Energia Gasta
const int botao = 13; //Configura o botão no pino 1
int estadobotao = 0; // variavel que conterá os estados do botão ( 0 low, 1 HIGH)



LiquidCrystal lcd(8, 7, 6, 5, 4, 3);
//Esta função acima declara quais os pinos do Arduino serão utilizados para o controle do LCD

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

lcd.begin(16, 2); // Diz para o Arduino que o display é 16x2.
lcd.setCursor( 0, 0);
lcd.print(" PROJETO "); // Manda o texto para a tela do display
lcd.setCursor( 0, 1);
lcd.print(" Wellyson Souza"); // Manda o texto para a tela do display
delay(1000); //Aguarda 6 segundo para efetuar a leitura do texto acima
lcd.clear();
/*
lcd.print(" CHUVEIRO "); // Manda o texto para a tela do display
lcd.setCursor( 0, 1);
lcd.print(" ELETRONICO "); // Manda o texto para a tela do display
delay(1000); //Aguarda 3 segundo para efetuar a leitura do texto acima
lcd.clear();

lcd.print("Controlador de"); // Manda o texto para a tela do display
lcd.setCursor( 0, 1);
lcd.print(" Temperatura "); // Manda o texto para a tela do display
delay(1000); //Aguarda 3 segundo para efetuar a leitura do texto acima
lcd.clear();

lcd.print("Controlador de"); // Manda o texto para a tela do display
lcd.setCursor( 0, 1);
lcd.print(" Vazao e Tempo"); // Manda o texto para a tela do display
delay(1000); //Aguarda 3 segundo para efetuar a leitura do texto acima
lcd.clear();
*/
// Declarando entrada PinMode Para sensor Ultrasonico Abaixo:
pinMode(trig, OUTPUT); //define o pino 9 como um output (envia sinal do sensor)
pinMode(echo, INPUT); //define o pino 10 como um input (recebe sinal do sensor)
pinMode(valvula, OUTPUT); //define o pino 11 como um output (aciona a valvula solenoide)

// Declarando entrada no PinMode para o sensor de Nivel d'agua Abaixo:
pinMode(2, INPUT);
attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção

//Declarando a entrada no PinMode do Alarme Sonoro Abaixo:
pinMode (buzzer, OUTPUT); // define o pino 12 como output (enviar o alarme "BUZZER")

//Declarando a entrada no PinMode da Energia Gasta Abaixo:
pinMode(botao,INPUT); //define o pino 1 com input para o botão.

}

void loop (){

//Abaixo a configuração do sensor ultrasonico HC-SR04 (Calculos ncessarios)
float tempo, cm; //comandos para enviar um pulso do sonar e armazenar o tempo de resposta
digitalWrite(trig, LOW); //seta o pino 9 com pulso BAIXO "zero"
delayMicroseconds(2); // Tempo de 2 microssegundos
digitalWrite(trig, HIGH); //Seta o pino 9 com pulso ALTO ou em "1"
delayMicroseconds(10); // Tempo de 10 microssegundos
digitalWrite(trig, LOW); // Seta novamento o pino 9 pulso BAIXO "zero"
delayMicroseconds(2); // Tempo de 2 microssegundos
tempo = pulseIn(echo, HIGH);// tempo, recebe o tempo de ida e volta do sinal
cm = tempo/29/2; //converte duration em centímetros
Serial.println(cm); // escrever a distancia no serial obs: usso para teste do sensor HC-SR04
if (cm <= 30) { // Se a distancia for menor ou igual a 30cm o acionar a valvula selenoide.
digitalWrite(valvula, HIGH); //Pino que aciona a valvula solenoide


//Abaixo a Configuração do sensor de nivel de vazão (Calculos necessarios)
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
s++; // encrementando a variavel "SEGUNDO"
lcd.setCursor(0, 0);
lcd.print(vazao); //Escreve no display o valor da vazão
lcd.print("L/min "); //Escreve no display a unidade L/min
MiliLitros = vazao / 60; //Calculos para achar o valor de Mililitros
Litros = Litros + MiliLitros; // Calculos para achar o valor de Litros
lcd.print(Litros); //Escreve no display o valor de Litros
lcd.print("L "); //Escreve no display a unidade L
lcd.setCursor(0, 1);
lcd.print(Hor); //Escrever no display o valor de horas
lcd.print (":"); //Escreve ":"
lcd.print(Min); //Escreve no display o valor da mimutos
lcd.print(":"); //Escreve ":"
lcd.print(s); //Escreve a contagem s (segundos)
lcd.print("Min ");//Escreve no display a unidade Min

//Abaixo as Configuração do sensor de Temperatura LM35 (Calculos necessarios)
Tempentrada = analogRead (sensor); // Manda o Arduino ler o pino e armazena o valor em “entrada”.
Temp=(500*Tempentrada)/1023; //Converte o valor de tensão em temperatura e armazena na variável “Temperatura”
lcd.print(Temp); // Exibe o valor de temperatura no display.
lcd.print("C");


//Neste conjunto de linhas foram feitas a média das leituras da vazão obtidas a cada 1 minuto
if (s >= 60){ // se 1 segund for menor ou igal a 60 milisegundo
Min++; // encrementar minuto
if (Min >= 60){ // se 1 minuto for menor ou igaul a 60 segundo
Min = 0; // minuto igal a zero
Hor++; // encrementar horas
if (Hor >=60){ //se 1 horas for menor ou igaul a 60 minutos
Hor = 0;
}
}


}
}


else{ // Se a distancia não for menor ou igual a 30cm a valvula mantera fechada.
digitalWrite(valvula, LOW); //Pino que mantém a valvula solenoide desligado
}

//Abaixo as configuraçoes do Alarme Sonoro
if (s == 10){
digitalWrite(buzzer, HIGH);
lcd.clear ();
lcd.print("kisuk");
delay (1000);
}


estadobotao = digitalRead(botao);
if (estadobotao == LOW) {
lcd.clear();
lcd.print ("nosss");
}
//else {
// digitalWrite(valvula,LOW); //Botão não pressionado, apaga o led.
//}
}

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

Exibições: 325

Responder esta

Respostas a este tópico

Medição de consumo de energia?

Minha indicação é essa (não é tão simples, como pensa) 

http://openenergymonitor.org/emon/

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço