Bom dia a todos

Adicionei este tópico para apresentar uma lógica (básica), de um comando de gerador.

Fiz os testes de emergencia, e partida manual e até o momento está funcionando.

Como ainda falta algumas coisas, a partida automática só parte pela concessionária, pois a lógica automática do gerador ainda estou pensando como fazer..

Conforme for melhorando o código eu posto aqui..

Aproveito para agradecer ao Rui Viana e ao Carlos kwiek que sempre estão me auxiliando para entendimento de lógica de programação além do LDG por disponibilizar este espaço para quem realmente quer aprender..

Att

Léo

int CHAM = 2; // Chave Automático/Manual - 1=Automático e 0=Manual
int CHEM = 3; // Botão Emergencia
int CHLG = 4; // Chave liga gerador
int CONG = 5; // Confirma gerador ligado
int CHLC = 6; // Chave liga concessionária
int CONC = 7; // Confirma tensão da concessionária
int KCA = 8; // Contatora carga
int KCO = 9; // Contatora concessionária
int KGE = 10; // Contatora gerador
int KFA = 11; // Contatora Falha
int LEDP = 12; // Led partidas do gerador
int LEDM = 13; // Led Manual
int LEDA = 14; // Led Automático
int LEDF = 15; //Led Falha
int leituraCHAM ;
int leituraCHEM ;
int leituraCHLG ;
int leituraCONG ;
int leituraCHLC ;
int leituraCONC ;
int leituraKCA ;
int leituraKCO ;
int leituraKGE ;
int leituraKFA ;
unsigned int falhou = 0; // Variavel indicar que nao partiu.
byte comando;//tipo de comando a ser utilizado
String modo= "Em condições de operação";

void setup()
{
Serial.begin(9600);
pinMode(CHAM,INPUT);
pinMode(CHEM,INPUT);
pinMode(CHLG,INPUT);
pinMode(CONG,INPUT);
pinMode(CHLC,INPUT);
pinMode(CONC,INPUT);
pinMode(KCA,OUTPUT);
pinMode(KCO,OUTPUT);
pinMode(KGE,OUTPUT);
pinMode(KFA,OUTPUT);
pinMode(LEDP,OUTPUT);
pinMode(LEDM,OUTPUT);
pinMode(LEDA,OUTPUT);
pinMode(LEDF,OUTPUT);
}
void loop()
{
leituraCHAM=digitalRead(CHAM); // Chave Automático/Manual - 1=Automático e 0=Manual
leituraCHEM=digitalRead(CHEM); // Botão Emergencia
leituraCHLG=digitalRead(CHLG); // Chave liga gerador
leituraCONG=digitalRead(CONG); // Confirma gerador ligado
leituraCHLC=digitalRead(CHLC); // Chave liga concessionária
leituraCONC=digitalRead(CONC); // Confirma tensão da concessionária
leituraKCA=digitalRead(KCA); // Confirma carga ligada
leituraKCO=digitalRead(KCO); // Confirma concessionaria ligada
leituraKGE=digitalRead(KGE); // Confirma gerador ligada
leituraKFA=digitalRead(KFA) ; // Confirma Falha

// INICIO DA LÓGICA DO COMANDO
if(leituraCHEM==HIGH)//****EMERGENCIA PULSIONADO
{comando=1;}
else//****EMERGENCIA SOLTO
{ comando=0;
if(leituraCHAM==HIGH)//****CHAM AUTOMATICO
{
digitalWrite(LEDA,HIGH);
digitalWrite(LEDM,LOW);
if(falhou<5)//CASO NÃO TENHA AINDA AS 5 TENTATIVAS DE PARTIDA
{
if(leituraCONC==HIGH)//TEM TENSÃO NA CONCESSIONÁRIA
{comando=4;}
else//NÃO TEM TENSÃO NA CONCESSIONÁRIA
{
if(leituraCONG==HIGH)//GERADOR PARTIU
{comando=5;}
else//GERADOR NÃO PARTIU
{
digitalWrite(KGE,HIGH);
comando=2;
}
}
}
else//JA TEVE AS 5 TENTATIVAS
{comando=3;}
}
else{//****CHAM MANUAL
if (leituraCHLG==LOW&&leituraCHLC==LOW)
{
comando=0;
digitalWrite(LEDM,HIGH);
digitalWrite(LEDA,LOW);

}
else if (leituraCHLG==LOW&&leituraCHLC==HIGH)//****LIGAR PELA CONCESSIONÁRIA MANUAL
{
comando=4;
digitalWrite(LEDM,HIGH);
digitalWrite(LEDA,LOW);
}
else if (leituraCHLG==HIGH&&leituraCHLC==LOW)//****LIGAR PELO GERDADOR MANUAL
{
comando=5;
digitalWrite(LEDM,HIGH);
digitalWrite(LEDA,LOW);
}
else if (leituraCHLG==HIGH&&leituraCHLC==HIGH)//****CHLG E CHLC NÃO PODE SER LIGADAS JUNTAS - FALHA NA PARTIDA
{comando=3;}
}
}

//TIPOS DE COMANDOS

switch(comando)
{

case 0://comando preparado

modo= "Pronto";
digitalWrite(LEDF,LOW);
digitalWrite(CHLG,LOW);
digitalWrite(CHLC,LOW);
digitalWrite(KCA,LOW);
digitalWrite(KCO,LOW);
digitalWrite(KGE,LOW);
digitalWrite(KFA,LOW);
digitalWrite(LEDP,LOW);
falhou=0;
Serial.println(modo);
delay(2000);

break;

case 1://comando emergencia

modo= "Emergencia";
digitalWrite(LEDF,HIGH);
delay(300);
digitalWrite(LEDF,LOW);
delay(300);
digitalWrite(CHLG,LOW);
digitalWrite(CHLC,LOW);
digitalWrite(KCA,LOW);
digitalWrite(KCO,LOW);
digitalWrite(KGE,LOW);
digitalWrite(KFA,HIGH);
digitalWrite(LEDP,LOW);
digitalWrite(LEDM,LOW);
digitalWrite(LEDA,LOW);
Serial.println(modo);
break;

case 2://comando tentativas

modo="Tentativa de Partida do Gerador";
falhou++;
Serial.print(modo);
Serial.print("\t");
Serial.print(falhou);
digitalWrite(LEDP,HIGH);
break;

case 3://falha na partida

modo= "Falha na Partida do Gerador";
digitalWrite(CHLG,LOW);
digitalWrite(CHLC,LOW);
digitalWrite(KCA,LOW);
digitalWrite(KCO,LOW);
digitalWrite(KGE,LOW);
digitalWrite(KFA,HIGH);
digitalWrite(LEDP,LOW);
digitalWrite(LEDF,HIGH);
Serial.println(modo);
break;

case 4://Ligado pela Concessionária

modo= "Ligado pela Concessionaria";
digitalWrite(CHLG,LOW);
digitalWrite(KGE,LOW);
digitalWrite(KFA,LOW);
digitalWrite(KCO,HIGH);
delay(1000);
digitalWrite(KCA,HIGH);
Serial.println(modo);
break;

case 5://Ligado pelo Gerador
modo= "Ligado pelo Gerador";
digitalWrite(CHLC,LOW);
digitalWrite(KGE,HIGH);
digitalWrite(KFA,LOW);
digitalWrite(KCO,LOW);
delay(1000);
digitalWrite(KCA,HIGH);
Serial.println(modo);
break;
}
}

Exibições: 1291

Responder esta

Respostas a este tópico

Segue os arquivos agora com o funcionamento automático em fase de teste....

Anexos

Boa sorte no seu projeto Leonardo!

Sempre que precisar estou a disposição, como todos os colegas que fazem parte como você deste excelente fórum.

Abs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço