unsigned long antes100 = 0;
int valor100 = 0;
float corrente100 = 0;
float minimo100 =0; //Valor minimo do map()
float maximo100 =0; //Valor máximo do map()

//-----------------------Sensor de corrente 100A(RC)----------------------------------------------------------------------------------------
lcd.setCursor(14,1); // Local no Lcd onde vai der apresentada a tensão do regulador
lcd.print(12); // Valor da Tensão no regulador de carga

valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9010-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9010+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;

Serial.print("RC:"); // Apresentação da sigla do regulador de carga no Serial Monitor
Serial.print(corrente100); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(14,2); // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(14, 2); // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
lcd.print(corrente100); // Apresentação da corrente do regulador de carga no LCD

PRC=TRC*corrente100; // Calculo da potência de RC
lcd.setCursor(14,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
lcd.print(" "); // Limpeza do resultado anterior da potência do regulador de carga
lcd.setCursor(14,3); // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga
lcd.print(PRC); // Aprsentação do resultado da potência do regulador de carga no LCD

Exibições: 601

Responder esta

Respostas a este tópico

void loop()
{
if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
lcd.clear();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 250) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}
}
void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
vinstantaneo();
break;

case 1:
vacumulado();
break;

case 2:
temperatura();
break;
}
}

unsigned long antes100 = 0;
int valor100 = 0;
float corrente100 = 0;
float minimo100 =0; //Valor minimo do map()
float maximo100 =0; //Valor máximo do map()
float correnteToal = 0;

byte tela = 0; //esta variavel sera usada pra controle de qual tela sera mostrada

const byte botao = 10; //porta do botao
const byte botaoTela = 11; //porta do botao usado para a passagem da tela no LCD


void setup(){
//inicializacao
pinMode(botao, INPUT);
pinMode(botaoTela, INPUT);
}
void loop(){

unsigned long tempoFinal = millis() + 1000;//especifica o tempo de espera para prenter o codigo para executar as leituras e calculos
byte estadoAnteriorBotao = digitalRead(botao);// primeira leitura do botao
byte estadoAnteriorBotaoTela = digitalRead(botaoTela);//...

while(tempoFinal > millis()){//laço q q permaneçe por 1 seguindo lendo e colculando, para evitar q o sensor perca algun dado

byte estadoAtualBotao = digitalRead(botao); //segunda leitura do botao
byte estadoAtualBotaoTela = digitalRead(botaoTela); //...

valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9010-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9010+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;

correnteTotal = correnteTotal + (corrente100 * 3.6);//calculo por segundo ... e somatoria total


//Fazer leitura dos botões...
if(estadoAtualBotao != estadoAnteriorBotao && estadoAtualBotao == HIGH ){//se o botao mudou de estado do segundo anterior e esta precionado = verdadeiro
corrente100 = 0;// zera a variavel
estadoAnteriorBotao = estadoAtualBotao;
}

if(estadoAtualBotaoTela != estadoAnteriorBotaoTela && estadoAtualBotaoTela == HIGH ){//se o botao mudou de estado do segundo anterior e esta precionado = verdadeiro
switch(tela){// faz o controle de tela quando o botao é precionado, podese usar N telas e aqui vc decide qual é a ordem q sera mostrada, ou adicionar outra funcionalidades conforme a tela q esta sendo mostrada
case 0:
tela = 1;
break;
case 1:
tela = 2;
break;
case 2:
tela = 0;
break;
}
estadoAnteriorBotaoTela = estadoAtualBotaoTela;
}
}

Serial.print("RC:"); // Apresentação da sigla do regulador de carga no Serial Monitor
Serial.print(corrente100); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor

switch(tela){ //funcao q controla as tela individualmente ... cada tela add aque deve ser add um funcao na leitura e controle do botao
case 0:
lcd.setCursor(14,1); // Local no Lcd onde vai der apresentada a tensão do regulador
lcd.print(12); // Valor da Tensão no regulador de carga
lcd.setCursor(14,2); // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(14, 2); // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
lcd.print(corrente100); // Apresentação da corrente do regulador de carga no LCD
break;
case 1:
PRC=TRC*corrente100; // Calculo da potência de RC ....... "talves essa linha possa ir junto com os outros calculos, junto as While"
lcd.setCursor(14,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
lcd.print(" "); // Limpeza do resultado anterior da potência do regulador de carga
lcd.setCursor(14,3); // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga
lcd.print(PRC); // Aprsentação do resultado da potência do regulador de carga no LCD
break;
case 2:
// implementacao da tela do total de corrente
break;
}
}

//--------------------Definir LCD----------------------------------------------------------------------------------------------
#include<LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Pinos digitais onde o lcd esté conetado 12, 11, 5, 4, 3, 2

//-----------------Definir mudança do LCD--------------------------------------------------------------------------------------
#define SWITCH 10 //Ligação do Switch no pino digital 10
const byte SWITCHR = 9; //Ligação do botão de reset dos valores
#define NUM_MENUS 3 //exemplo, 2 menus...

unsigned char var_menus = 0;
unsigned char encrava = 0;
unsigned long refresh = 0;

//------------------Defenir variáveis para sensor de 45A------------------------------------------------------------------------
unsigned long antes45 = 0;
int valor45 = 0;
long corrente45 = 0;
float minimo45 =0; //Valor minimo do map()
float maximo45 =0; //Valor máximo do map()

//------------------Defenir vaiáveis para sensor de 100A-------------------------------------------------------------------------
unsigned long antes100 = 0;
int valor100 = 0;
float corrente100 = 0;
float minimo100 =0; //Valor minimo do map()
float maximo100 =0; //Valor máximo do map()


//------------------Defenir variáveis para sensor de 235A-------------------------------------------------------------------------
unsigned long antes235 = 0;
int valor235 = 0;
float corrente235 = 0;
float minimo235 =0; //Valor minimo do map()
float maximo235 =0; //Valor máximo do map()

//-------------------Definir variáveis de tensão(V)--------------------------------------------------------------------------------
int TAC = 230; //Tensão de AC
int TRC = 12 ; //Tensão do regulador de Carga
int TBAT = 12; //Tensão das baterias

//------------------Definir Variáveis de Potência(W)-------------------------------------------------------------------------------
int PAC ; //Potência em AC
int PRC ; //Potência no regulador de carga
int PBAT; //Potência nas baterias

//---------------Declarando os Sensores de temperatura-----------------------------------------------------------------------------
int SENSOR1 = A0; // Sensor 1 está no pino Analógico 0
int SENSOR2 = A1; // Sensor 2 está no pino Analógico 1
int SENSOR3 = A2; // Sensor 3 está no pino Analógico 3

float A = 0; // Sensor 1
float B = 0; // Sensor 1

float C = 0; // Sensor 2
float D = 0; // Sensor 2

float E = 0; // Sensor 3
float F = 0; // Sensor 3



float correnteToal = 0; //Corrente acumulada do sensor de A
//----------------------------------------------------------------------------------------------------------------------------------

void setup(){
lcd.begin(20, 4); // LCD 20x4
Serial.begin(9600); // Saída para o Serial Monitor
pinMode(SWITCH, INPUT); //Switch funciona como entrada
pinMode(SWITCHER, INPUT); //Botão de resetfunciona como entrada
}


void temperatura()
//----------------------Sensor de Temperatura 1 -----------------------------------------------------------------------------------
{
lcd.setCursor(0, 0); // Sensor de temperatura 1 Coluna 0 linha 0
lcd.print("T1-"); // Sensor de temperatura 1
lcd.setCursor(3, 0); // Colocando o cursor na coluna 0 e linha 1
A = analogRead(SENSOR1);
B = (A * 500.0)/1024.0; // Calculo da temperatura
Serial.println("T1-"); // Sensor de temperatura 1
Serial.print(B); // Apresentação do resultado/temperatura no Serial Monitor
Serial.println("C");
lcd.print(B); // Apresentação do resultado/temperatura no LCD
lcd.print("C");



//---------------------Sensor de Temperatura 2 -------------------------------------------------------------------------------------

lcd.setCursor(0, 1); // Sensor de temperatura 2 Coluna 0 linha 1
lcd.print("T2-"); // Sensor de temperatura 2
lcd.setCursor(3, 1); // Colocando o cursor na coluna 7 e linha 2
C= analogRead(SENSOR2);
D = (C * 500.0)/1024.0; // Calculo da temperatura
Serial.println("T2-"); // Sensor de temperatura 2
Serial.print(D); // Apresentação do resultado/temperatura no Serial Monitor
Serial.println("C");
lcd.print(D); // Apresentação do resultado/temperatura no LCD
lcd.print("C");



//----------------------Sensor de Temperatura 3 -------------------------------------------------------------------------------------

lcd.setCursor(0, 2); // Sensor de temperatura 3 Coluna 0 linha 2
lcd.print("T3-"); // Sensor de temperatura 3
lcd.setCursor(3, 2); // Colocando o cursor na coluna 7 e linha 2
E= analogRead(SENSOR3);
F = (E * 500.0)/1024.0; // Calculo da temperatura
Serial.println("T3-"); // Sensor de temperatura 3
Serial.print(F); // Apresentação do resultado/temperatura no Serial Monitor
Serial.println("C");
lcd.print(F); // Apresentação do resultado/temperatura no LCD
lcd.print("C");


}

//------------------------Arreio com os valores instantaneos--------------------------------------------------------------------------
void vinstantaneo()

{
//-------------------------------Estrutura do LCD-----------------------------------------------------------------------------------
lcd.setCursor(2,0); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,1); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,2); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,3); // Linha vertical na coluna 2
lcd.print("|");

lcd.setCursor(8,0); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,1); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,2); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,3); // Linha vertical na coluna 8
lcd.print("|");

lcd.setCursor(13,0); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,1); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,2); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,3); // Linha vertical na coluna 13
lcd.print("|");

lcd.setCursor(18,0); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,1); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,2); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,3); // Linha vertical na coluna 18
lcd.print("|");

// ----------------------------------- 1ªLinha ----------------------------------------------------------------------------------
lcd.setCursor(0, 0); // Coluna 0,1 linha 0(com traços)para criação de tabelas
lcd.print("VI");
lcd.setCursor(3, 0); // Coluna 4,5,6 Linha 0 (BAT)
lcd.print("_BAT_");
lcd.setCursor(9,0); // Coluna 10,11 Linha 0 (AC)
lcd.print("_AC_");
lcd.setCursor(14,0); // Coluna 15,16 Linha 0 (RC)
lcd.print("_RC_");

//-------------------------------------1ªColuna----------------------------------------------------------------------------------
lcd.setCursor(0,1); // Coluna 0,1 Linha 0 (V)
lcd.print("V=");
lcd.setCursor(0,2); // Coluna 0,1 Linha 1 (I)
lcd.print("I=");
lcd.setCursor(0,3); // Coluna 0.1 Linha 2 (P)
lcd.print("P=");

//-------------------------------------Coluna 19---------------------------------------------------------------------------------
lcd.setCursor(19,0); // Linha 0 (__)
lcd.print("_");
lcd.setCursor(19,1); // Linha 1 (V)
lcd.print("V");
lcd.setCursor(19,2); // Linha 2 (A)
lcd.print("A");
lcd.setCursor(19,3); // Linha 3 (W)
lcd.print("W");
/*
//----------------------------------Sensor de corrente 45A(AC)--------------------------------------------------------------------
lcd.setCursor(9,1); // Local no Lcd onde vai ser apresentada a tensão de AC
lcd.print("230"); // Valor da Tensão em AC

valor45 = analogRead(A5); // Valor do pino Analógico 3
//Sinal entre 1V e 3V
//5V=1024 1V = (1.02*1024)/5 = 208.896 ~ 209 // 1.96-(0.045*4.5)=1.02
//5V=1024 3V = (2.9*1024)/5 = 593.92 ~ 594 // 1.96+(0.045*9.4)=2.9
minimo45=((1.96-(0.045*12))*1024/5); // Calculo do valor minimo
maximo45=((1.96+(0.045*12))*1024/5); // Calculo do valor máximo
corrente45 = map(valor45, minimo45, maximo45, -45, 45); // Calculo corrente
Serial.print("AC:"); // Apresentação da sigla de AC no Serial Monitor
Serial.print(corrente45); // Apresentação dos resultados da corrente de AC no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(9, 2); // Local no LCD onde se vi iniciar o resultado da corrente de AC
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(9, 2); // Local onde se vai iniciar no LCD o resultado da corrente em AC
lcd.print(corrente45); // Apresentação da corrente de AC no LCD

PAC=TAC*corrente45; // Calculo da potência de AC
lcd.setCursor(9,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência em AC
lcd.print(" "); // Limpeza do resultado anterior da potência em AC
lcd.setCursor(9,3); // Local no LCD onde se vi iniciar o resultado da Potência em AC
lcd.print(PAC); // Aprsentação do resultado da potência do regulador de carga no LCD
// Tempo em milisegundos do refresh dos dados
*/
//-----------------------Sensor de corrente 100A(RC)----------------------------------------------------------------------------------------
lcd.setCursor(14,1); // Local no Lcd onde vai der apresentada a tensão do regulador
lcd.print(12); // Valor da Tensão no regulador de carga

valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9010-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9010+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;

Serial.print("RC:"); // Apresentação da sigla do regulador de carga no Serial Monitor
Serial.print(corrente100); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(14,2); // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(14, 2); // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
lcd.print(corrente100); // Apresentação da corrente do regulador de carga no LCD

PRC=TRC*corrente100; // Calculo da potência de RC
lcd.setCursor(14,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
lcd.print(" "); // Limpeza do resultado anterior da potência do regulador de carga
lcd.setCursor(14,3); // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga
lcd.print(PRC); // Aprsentação do resultado da potência do regulador de carga no LCD


//-----------------------Sensor de corrente 235A(BAT)------------------------------------------------------------------------------------------
lcd.setCursor(3,1); // Local no Lcd onde vai der apresentada a tensão da bateria
lcd.print(12); // Valor de tensão na bateria

valor235 = analogRead(A3); // Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808 // 1.96-(0.235*4.9)=0.8085
//5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639 // 1.96+(0.235*4.9)=3.115
minimo235=((1.9500-(0.235*4.8265))*1024/5); // Calculo do valor minimo
maximo235=((1.9500+(0.235*4.8265))*1024/5); // Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -23500, 23500);// Calculo da corrente
corrente235 = corrente235/100;
Serial.print("BAT:"); // Apresentação da sigla da bateria no Serial Monitor
Serial.print(corrente235); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(3, 2); // Local no LCD onde se vi iniciar o resultado da corrente da bateria
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(3, 2); // Local onde se vi iniciar no LCD o resultado da corrente na batreria
lcd.print(corrente235); // Apresentação da corrente no LCD

PBAT=TBAT*corrente235; // Calculo da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência da bateria
lcd.print(" "); // Limpeza do resultado anterior da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vi iniciar o resultado da Potência da bateria
lcd.print(PBAT); // Apresentação resultado da Potência da bateria
// Tempo em milisegundos do refresh dos dados
}
//-----------------------------------------------------------------------------------------------------------------------------------------------

//----------------Arreio com valores hora----------------------------------------------------------------------------------------------------------

void vacumulado()
{

//-------------------------------Estrutura do LCD--------------------------------------------------------------------------------------------------
lcd.setCursor(2,0); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,1); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,2); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,3); // Linha vertical na coluna 2
lcd.print("|");

lcd.setCursor(8,0); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,1); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,2); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,3); // Linha vertical na coluna 8
lcd.print("|");

lcd.setCursor(13,0); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,1); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,2); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,3); // Linha vertical na coluna 13
lcd.print("|");

lcd.setCursor(18,0); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,1); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,2); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,3); // Linha vertical na coluna 18
lcd.print("|");

// ----------------------------------- 1ªLinha ------------------------------------------------------------------------------------------------
lcd.setCursor(0, 0); // Coluna 0,1 linha 0(com traços)para criação de tabelas
lcd.print("VA");
lcd.setCursor(3, 0); // Coluna 4,5,6 Linha 0 (BAT)
lcd.print("_BAT_");
lcd.setCursor(9,0); // Coluna 10,11 Linha 0 (AC)
lcd.print("_AC_");
lcd.setCursor(14,0); // Coluna 15,16 Linha 0 (RC)
lcd.print("_RC_");

//-------------------------------------1ªColuna-------------------------------------------------------------------------------------------------
lcd.setCursor(0,1); // Coluna 0,1 Linha 0 (V)
lcd.print("V=");
lcd.setCursor(0,2); // Coluna 0,1 Linha 1 (I)
lcd.print("I=");
lcd.setCursor(0,3); // Coluna 0.1 Linha 2 (P)
lcd.print("P=");

//-------------------------------------Coluna 19------------------------------------------------------------------------------------------------
lcd.setCursor(19,0); // Linha 0 (__)
lcd.print("_");
lcd.setCursor(19,1); // Linha 1 (V)
lcd.print("V");
lcd.setCursor(19,2); // Linha 2 (A)
lcd.print("A");
lcd.setCursor(19,3); // Linha 3 (W)
lcd.print("W");
/*
//----------------------------------Sensor de corrente 45A(AC)-----------------------------------------------------------------------------------
lcd.setCursor(9,1); // Local no Lcd onde vai ser apresentada a tensão de AC
lcd.print("230"); // Valor da Tensão em AC

valor45 = analogRead(A5); // Valor do pino Analógico 3
//Sinal entre 1V e 3V
//5V=1024 1V = (1.02*1024)/5 = 208.896 ~ 209 // 1.96-(0.045*4.5)=1.02
//5V=1024 3V = (2.9*1024)/5 = 593.92 ~ 594 // 1.96+(0.045*9.4)=2.9
minimo45=((1.96-(0.045*12))*1024/5); // Calculo do valor minimo
maximo45=((1.96+(0.045*12))*1024/5); // Calculo do valor máximo
corrente45 = map(valor45, minimo45, maximo45, -45, 45); // Calculo corrente
Serial.print("AC:"); // Apresentação da sigla de AC no Serial Monitor
Serial.print(corrente45); // Apresentação dos resultados da corrente de AC no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(9, 2); // Local no LCD onde se vi iniciar o resultado da corrente de AC
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(9, 2); // Local onde se vai iniciar no LCD o resultado da corrente em AC
lcd.print(corrente45); // Apresentação da corrente de AC no LCD

PAC=TAC*corrente45; // Calculo da potência de AC
lcd.setCursor(9,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência em AC
lcd.print(" "); // Limpeza do resultado anterior da potência em AC
lcd.setCursor(9,3); // Local no LCD onde se vi iniciar o resultado da Potência em AC
lcd.print(PAC); // Aprsentação do resultado da potência do regulador de carga no LCD

*/

//------------------------------Sensor de corrente 100A(RC)-----------------------------------------------------------------------------------------
lcd.setCursor(14,1); // Local no Lcd onde vai der apresentada a tensão do regulador
lcd.print(12); // Valor da Tensão no regulador de carga

valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9010-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9010+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;

Serial.print("RC:"); // Apresentação da sigla do regulador de carga no Serial Monitor
Serial.print(corrente100); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(14,2); // Local no LCD onde se vi iniciar o resultado da corrente do regulador de carga
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(14, 2); // Local onde se vi iniciar no LCD o resultado da corrente no regulador de carga
lcd.print(corrente100); // Apresentação da corrente do regulador de carga no LCD

PRC=TRC*corrente100; // Calculo da potência de RC
lcd.setCursor(14,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência do regulador de carga
lcd.print(" "); // Limpeza do resultado anterior da potência do regulador de carga
lcd.setCursor(14,3); // Local no LCD onde se vi iniciar o resultado da Potência do regulador de carga
lcd.print(PRC); // Aprsentação do resultado da potência do regulador de carga no LCD


//-----------------------Sensor de corrente 235A(BAT)------------------------------------------------------------------------------------------
lcd.setCursor(3,1); // Local no Lcd onde vai der apresentada a tensão da bateria
lcd.print(12); // Valor de tensão na bateria

valor235 = analogRead(A3); // Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808 // 1.96-(0.235*4.9)=0.8085
//5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639 // 1.96+(0.235*4.9)=3.115
minimo235=((1.9500-(0.235*4.8265))*1024/5); // Calculo do valor minimo
maximo235=((1.9500+(0.235*4.8265))*1024/5); // Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -23500, 23500);// Calculo da corrente
corrente235 = corrente235/100;
Serial.print("BAT:"); // Apresentação da sigla da bateria no Serial Monitor
Serial.print(corrente235); // Apresentação dos resultados da corrente no serial monitor
Serial.println("A"); // Grandeza fisica(A) declarada no serial monitor
lcd.setCursor(3, 2); // Local no LCD onde se vi iniciar o resultado da corrente da bateria
lcd.print(" "); // Limpeza do LCD dos resultados anteriores
lcd.setCursor(3, 2); // Local onde se vi iniciar no LCD o resultado da corrente na batreria
lcd.print(corrente235); // Apresentação da corrente no LCD

PBAT=TBAT*corrente235; // Calculo da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vai iniciar a (limpeza) da Potência da bateria
lcd.print(" "); // Limpeza do resultado anterior da potência da bateria
lcd.setCursor(3,3); // Local no LCD onde se vi iniciar o resultado da Potência da bateria
lcd.print(PBAT); // Apresentação resultado da Potência da bateria

}




//------------------------------------------------------------------------------------------------------------------------------------------
void loop()
{

void acumulado100()
unsigned long tempoFinal = millis() + 1000;//especifica o tempo de espera para prenter o codigo para executar as leituras e calculos
byte estadoAnteriorBotao = digitalRead(botao);// primeira leitura do botao
byte estadoAnteriorBotaoTela = digitalRead(botaoTela);//...

while(tempoFinal > millis()){//laço q q permaneçe por 1 seguindo lendo e colculando, para evitar q o sensor perca algun dado


valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.9010-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.9010+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;

correnteTotal = correnteTotal + (corrente100 * 3.6);//calculo por segundo ... e somatoria total


// -----------------------------------------MUDANÇA DE TELAS-------------------------------------------------------------------------------------------

if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
lcd.clear();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 250) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}
}
void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
vinstantaneo();
break;

case 1:
vacumulado100();
break;

case 2:
temperatura();
break;
}
}


void acumulado()
{
//-------------------------------Estrutura do LCD-----------------------------------------------------------------------------------
lcd.setCursor(2,0); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,1); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,2); // Linha vertical na coluna 2
lcd.print("|");
lcd.setCursor(2,3); // Linha vertical na coluna 2
lcd.print("|");

lcd.setCursor(8,0); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,1); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,2); // Linha vertical na coluna 8
lcd.print("|");
lcd.setCursor(8,3); // Linha vertical na coluna 8
lcd.print("|");

lcd.setCursor(13,0); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,1); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,2); // Linha vertical na coluna 13
lcd.print("|");
lcd.setCursor(13,3); // Linha vertical na coluna 13
lcd.print("|");

lcd.setCursor(18,0); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,1); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,2); // Linha vertical na coluna 18
lcd.print("|");
lcd.setCursor(18,3); // Linha vertical na coluna 18
lcd.print("|");

// ----------------------------------- 1ªLinha ----------------------------------------------------------------------------------
lcd.setCursor(0, 0); // Coluna 0,1 linha 0(com traços)para criação de tabelas
lcd.print("Vh");
lcd.setCursor(3, 0); // Coluna 4,5,6 Linha 0 (BAT)
lcd.print("_BAT_");
lcd.setCursor(9,0); // Coluna 10,11 Linha 0 (AC)
lcd.print("_AC_");
lcd.setCursor(14,0); // Coluna 15,16 Linha 0 (RC)
lcd.print("_RC_");

//-------------------------------------1ªColuna----------------------------------------------------------------------------------
lcd.setCursor(0,1); // Coluna 0,1 Linha 0 (V)
lcd.print("AI");
lcd.setCursor(0,2); // Coluna 0,1 Linha 1 (I)
lcd.print("Ih");
lcd.setCursor(0,3); // Coluna 0.1 Linha 2 (P)
lcd.print("Ph");

//-------------------------------------Coluna 19---------------------------------------------------------------------------------
lcd.setCursor(19,0); // Linha 0 (__)
lcd.print("_");
lcd.setCursor(19,1); // Linha 1 (V)
lcd.print("V");
lcd.setCursor(19,2); // Linha 2 (A)
lcd.print("A");
lcd.setCursor(19,3); // Linha 3 (W)
lcd.print("W");

unsigned long tempoFinal = millis() + 1000; //especifica o tempo de espera para prenter o codigo para executar as leituras e calculos

while(tempoFinal > millis())
{ //laço q q permaneçe por 1 seguindo lendo e colculando, para evitar q o sensor perca algun dado

//---------------------------------------Sensor 45A----------------------------------------------------------------------
/* valor45 = analogRead(A5); // Valor do pino Analógico 3
//Sinal entre 1V e 3V
//5V=1024 1V = (1.02*1024)/5 = 208.896 ~ 209 // 1.96-(0.045*4.5)=1.02
//5V=1024 3V = (2.9*1024)/5 = 593.92 ~ 594 // 1.96+(0.045*9.4)=2.9
minimo45=((1.96-(0.045*12))*1024/5); // Calculo do valor minimo
maximo45=((1.96+(0.045*12))*1024/5); // Calculo do valor máximo
corrente45 = map(valor45, minimo45, maximo45, -45, 45); // Calculo corrente

correnteTotal45 = correnteTotal45 + (corrente45 * 3.6); //calculo por segundo ... e somatoria total
lcd.setCursor(1, 1);
lcd.print(correnteTotal45);

Ph45 = Ph45 +(correnteTotal45 / 3.6);
lcd.setCursor(1, 2);
lcd.print(Pac45);*/
//---------------------------------------------------------------------------------------------------------------------


valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.8965-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.8965+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;
lcd.setCursor(14, 1);
lcd.print(corrente100);
correnteTotal100 = correnteTotal100 + (corrente100 / 3600); //calculo por segundo ... e somatoria total
lcd.setCursor(14, 2);
lcd.print(correnteTotal100);

Ph100 = Ph100 +(correnteTotal100*12/(3600));
lcd.setCursor(14, 3);
lcd.print(Ph100);

//---------------------------------------------------------------------------------------------------------------------
valor235 = analogRead(A3); // Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808 // 1.96-(0.235*4.9)=0.8085
//5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639 // 1.96+(0.235*4.9)=3.115
minimo235=((1.9460-(0.235*4.8265))*1024/5); // Calculo do valor minimo
maximo235=((1.9460+(0.235*4.8265))*1024/5); // Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -23500, 23500);// Calculo da corrente
corrente235 = corrente235/100;
lcd.setCursor(3, 1);
lcd.print(corrente235);

correnteTotal235 = correnteTotal235 + (corrente235 /3600); //calculo por segundo ... e somatoria total
lcd.setCursor(3, 2);
lcd.print(correnteTotal235);

Ph235 = Ph235 +(correnteTotal235*12 /(3600));
lcd.setCursor(3, 3);
lcd.print(Ph235);
}
}



















//--------------------------------------------------------------------------------------------------------------------------------------
void loop()
{

if digitalRead(swr) ==0
if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
lcd.clear();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 100) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}
}


void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
vinstantaneo();
break;

case 1:
acumulado();
break;

case 2:
temperatura();
break;
}
}


//--------------------------------------------------------------------------------------------------------------------------------------
void loop()
{

if(digitalRead(SWR == 1){correnteTotal45 = 0; Ph45 = 0; correnteTotal100 = 0; Ph100 = 0; correnteTotal235 = 0; Ph235 = 0}


if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
lcd.clear();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 100) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}
}


void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
vinstantaneo();
break;

case 1:
acumulado();
break;

case 2:
temperatura();
break;
}
}

void Valorhora()
{


unsigned long tempoFinal = millis() + 1000; //especifica o tempo de espera para prenter o codigo para executar as leituras e calculos


while(tempoFinal > millis()){
} //laço q q permaneçe por 1 seguindo lendo e colculando, para evitar q o sensor perca algun dado

//---------------------------------------Sensor 45A----------------------------------------------------------------------
/* valor45 = analogRead(A5); // Valor do pino Analógico 3
//Sinal entre 1V e 3V
//5V=1024 1V = (1.02*1024)/5 = 208.896 ~ 209 // 1.96-(0.045*4.5)=1.02
//5V=1024 3V = (2.9*1024)/5 = 593.92 ~ 594 // 1.96+(0.045*9.4)=2.9
minimo45=((1.96-(0.045*12))*1024/5); // Calculo do valor minimo
maximo45=((1.96+(0.045*12))*1024/5); // Calculo do valor máximo
corrente45 = map(valor45, minimo45, maximo45, -45, 45); // Calculo corrente

correnteTotal45 = correnteTotal45 + (corrente45 * 3.6); //calculo por segundo ... e somatoria total
lcd.setCursor(1, 1);
lcd.print(correnteTotal45);

Ph45 = Ph45 +(correnteTotal45 / 3.6);
lcd.setCursor(1, 2);
lcd.print(Pac45);*/
//---------------------------------------------------------------------------------------------------------------------


valor100 = analogRead(A4); // Valor do pino Analógico 4
//Sinal entre 1V e 3V
//5V=1024 1V = (0.97*1023)/5 = 198.656 ~ 199 // 1.95-(0.1*9.4)=0.97
//5V=1024 3V = (2.85*1023)/5 = 583.68 ~ 584 // 1.95+(0.1*9.4)=2.85
minimo100=((1.8965-(0.1*9.7515))*1024/5); // Calculo do valor minimo
maximo100=((1.8965+(0.1*9.7515))*1024/5); // Calculo do valor máximo
corrente100 = map(valor100, minimo100, maximo100, -10000, 10000);// Calculo da corrente
corrente100 = corrente100/100;
lcd.setCursor(14, 1);
lcd.print(corrente100);
correnteTotal100 = correnteTotal100 + (corrente100 / 3600); //calculo por segundo ... e somatoria total
lcd.setCursor(14, 2);
lcd.print(correnteTotal100);

Ph100 = Ph100 +(corrente100*12/(3600));
lcd.setCursor(14, 3);
lcd.print(Ph100);

//---------------------------------------------------------------------------------------------------------------------
valor235 = analogRead(A3); // Valor do pino Analógico 5
//Sinal entre 1V e 3V
//5V=1024 1.47mV = (0.8085*1024)/5 = 165.5808 // 1.96-(0.235*4.9)=0.8085
//5V=1024 2.45mV = (3.115*1024)/5 = 638,952 ~639 // 1.96+(0.235*4.9)=3.115
minimo235=((1.9460-(0.235*4.8265))*1024/5); // Calculo do valor minimo
maximo235=((1.9460+(0.235*4.8265))*1024/5); // Calculo do valor máximo
corrente235 = map(valor235, minimo235, maximo235, -23500, 23500);// Calculo da corrente
corrente235 = corrente235/100;
lcd.setCursor(3,1);
lcd.print(" ");
lcd.setCursor(3, 1);
lcd.print(corrente235);

correnteTotal235 = correnteTotal235 + (corrente235 /3600); //calculo por segundo ... e somatoria total
lcd.setCursor(3, 2);
lcd.print(correnteTotal235);

Ph235 = Ph235 +(corrente235*12 /(3600));
lcd.setCursor(7, 3);
lcd.print(" ");
lcd.setCursor(3, 3);
lcd.print(Ph235);

}

 

void loop()
{


Valorhora;

if (digitalRead(SWR) == HIGH){ //Botão para pôr as variáveis do Vh zero
correnteTotal100 = 0;
Ph100 = 0;
correnteTotal235 = 0;
Ph235 = 0;
}


if (digitalRead(SWITCH) == HIGH && encrava == 0){ //Botão para pôr as variáveis do Mudança de tela
var_menus++;
lcd.clear();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 10) {
trata_lcd();
refresh = millis(); //actualiza a contagem.

}

}


unsigned long tempo = 0;

void loop() {

//mede a corrente e calcula a potência de segundo a segundo.
   if (millis() - tempo >= 1000) {
      tempo = millis();
      executa_medicao();
      actualiza_potencia();
   }

//refresca os valores para o LCD
   refresca_lcd();
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço