PROJETO DE MONITORAMENTO DE UM GERADOR RESIDENCIAL A GASOLINA

Bom Dia amigos, devido a muitas dúvidas minhas e falta de informação detalhadas, decidi colocar este tópico para além de mim, todos os amigos aqui na comunidade possam realizar este projeto interessante, vou colcar os diagramas aqui do projeto do comando elétrico e as partes dos códigos que eu for conseguindo realizar, conto também com a ajuda de nossos amigos mais experientes, e que possam me dar a luz para me desenvolver e ajudar também nossos colegas, Desde já Obrigado pelo apoio de todos, abraços amigos.

Segue o código de uma parte do projeto, logo abaixo tem os anexos dos diagramas, a lógica de funcionamento e o projeto simulado no proteus, lembrando que os códigos ainda devem ser melhorados e está pela metade, abraços.

int uno = 1; // entrada Modo stand bye
int run = 2; // habilita partida do gerador
int pg = 3; // aciona partida do gerador
int kc = 4; // aciona contator da compania
int kg = 5; // aciona contator do gerador
int kca = 6; // aciona contator da carga
int rs = 7; // entrada botão reset
int ffg = 8; // entrada falta de fase do gerador
int ffc = 9; // entrada falta de fase da compania
int fp = 10; // falha de partida

void setup()
{
pinMode(uno, INPUT);
pinMode(run, OUTPUT);
pinMode(pg, OUTPUT);
pinMode(kc, OUTPUT);
pinMode(kg, OUTPUT);
pinMode(kca, OUTPUT);
pinMode(rs, INPUT);
pinMode(ffg, INPUT);
pinMode(ffc, INPUT);
pinMode(fp, OUTPUT);
}

void loop()
{
int leitura1 = digitalRead(uno);
int leitura9 = digitalRead(ffc);
int leitura8 = digitalRead(ffg);
if (leitura1 == HIGH && leitura9 == HIGH && leitura8 == LOW)
{
{
delay(4000);
digitalWrite(kc, HIGH); // aciona contator da compania
delay(3000);
digitalWrite(kca, HIGH);
digitalWrite(kg, LOW);
}
}
}

Exibições: 4695

Anexos

Responder esta

Respostas a este tópico

Segue mais uma foto para referenciar melhor as saídas, o código que fiz vai até o contador e necessito que quando o  a porta "1" (Entrada) fique LOW, então o Arduino precisa desativar o Gerador, seguindo a sequencia de desligamento do mesmo, e também deverá deixar o restante tudo em nivel LOW, pois a entrada "1" será como um sinal para o arduino que estará em modo automatico,abraços.

Anexos

Boa tarde galera, NOVIDADES, CONSEGUI FAZER Q FOSSE DESATIVADO O MODO AUTOMATICO ACRESCENTANDO MAIS UM IF! segue o código atualizado logo abaixo. agora só vai faltar alguem me ajudar ocm um contador interno do arduindo, ou um contador externo, abraços.

 
int uno = 1; // habilita modo automatico
int run = 2; // habilita partida do gerador
int pg = 3; // aciona partida do gerador
int kc = 4; // aciona contator da compania
int kg = 5; // aciona contator do gerador
int kca = 6; // aciona contator da carga
int rs = 7; // entrada botão reset
int ffg = 8; // entrada falta de fase do gerador
int ffc = 9; // entrada falta de fase da compania
int fp = 10; // falha de partida

//controle

void setup()
{
pinMode(uno, INPUT);
pinMode(run, OUTPUT);
pinMode(pg, OUTPUT);
pinMode(kc, OUTPUT);
pinMode(kg, OUTPUT);
pinMode(kca, OUTPUT);
pinMode(rs, INPUT);
pinMode(ffg, INPUT);
pinMode(ffc, INPUT);
pinMode(fp, OUTPUT);
}
void loop()
{
int leitura1 = digitalRead(uno);
int leitura8 = digitalRead(ffg);
int leitura9 = digitalRead(ffc);
int leitura4 = digitalRead(kc);
int leitura3 = digitalRead(pg);

if (leitura1 == HIGH)
{
if (leitura9 == HIGH)
{
digitalWrite(kg, LOW);
digitalWrite(pg, LOW);
digitalWrite(run, LOW);
delay(300);
digitalWrite(kc, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
else
{
if(leitura9 ==LOW && leitura1 == HIGH)
{
delay(300);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kca, LOW);
digitalWrite(run, HIGH);
delay(300);
digitalWrite(kg, HIGH);
}
else
{
digitalWrite(run, LOW);
digitalWrite(kg, LOW);
}
}
}
if(leitura1 == LOW)
{
digitalWrite(kca, LOW);
digitalWrite(kg, LOW);
digitalWrite(run, LOW);
digitalWrite(kc, LOW);
}
}

Boa tarde pessoal, desculpe, talvez tenha dado algum erro aqui, se possivel quem se interessar me envie um email, nilodiniz@yahoo.com.br, ou deixe seu email aqui no tópico, abraços.

Boa Tarde pessoal, o projeto foi atualizado, e coloquei uma função usando delays para simular as tentativas de

partir o gerador, está tudo perfeito, mas só preciso q a tentativa de partida dele seja realizado uma unica vez e eu ainda não consegui realizar, ele está repetindo constantemente a função, segue o código abaixo, abraços.


int uno = 1; // habilita modo automatico
int run = 2; // habilita partida do gerador
int pg = 3; // aciona partida do gerador
int kc = 4; // aciona contator da compania
int kg = 5; // aciona contator do gerador
int kca = 6; // aciona contator da carga
int rs = 7; // entrada botão reset
int ffg = 8; // entrada falta de fase do gerador
int ffc = 9; // entrada falta de fase da compania
int fp = 10; // falha de partida

//controle

void setup()
{
pinMode(uno, INPUT);
pinMode(run, OUTPUT);
pinMode(pg, OUTPUT);
pinMode(kc, OUTPUT);
pinMode(kg, OUTPUT);
pinMode(kca, OUTPUT);
pinMode(rs, INPUT);
pinMode(ffg, INPUT);
pinMode(ffc, INPUT);
pinMode(fp, OUTPUT);
}
void loop()
{
int leitura1 = digitalRead(uno);
int leitura8 = digitalRead(ffg);
int leitura9 = digitalRead(ffc);
int leitura4 = digitalRead(kc);
int leitura3 = digitalRead(pg);

if (leitura1 == HIGH)
{
if (leitura9 == HIGH)
{
digitalWrite(kg, LOW);
digitalWrite(pg, LOW);
digitalWrite(run, LOW);
delay(300);
digitalWrite(kc, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
else
{
if(leitura9 ==LOW && leitura1 == HIGH)
{
if(leitura8 == LOW)
{
delay(300);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kca, LOW);
digitalWrite(run, HIGH);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, LOW);
}
else
{
if(leitura8 == HIGH)
{
digitalWrite(pg, LOW);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kg, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
}
}
}
}
if(leitura1 == LOW)
{
digitalWrite(kca, LOW);
digitalWrite(kg, LOW);
digitalWrite(run, LOW);
digitalWrite(kc, LOW);
}
}

/*

Tenho varias sugestoes para melhorar, mas por enquanto, isso deve servir

*/

int uno = 1; // habilita modo automatico
int run = 2; // habilita partida do gerador
int pg = 3; // aciona partida do gerador
int kc = 4; // aciona contator da compania
int kg = 5; // aciona contator do gerador
int kca = 6; // aciona contator da carga
int rs = 7; // entrada botão reset
int ffg = 8; // entrada falta de fase do gerador
int ffc = 9; // entrada falta de fase da compania
int fp = 10; // falha de partida

//controle

void setup() {
pinMode(uno, INPUT);
pinMode(run, OUTPUT);
pinMode(pg, OUTPUT);
pinMode(kc, OUTPUT);
pinMode(kg, OUTPUT);
pinMode(kca, OUTPUT);
pinMode(rs, INPUT);
pinMode(ffg, INPUT);
pinMode(ffc, INPUT);
pinMode(fp, OUTPUT);
}
void loop() {
int leitura1 = digitalRead(uno);
int leitura8 = digitalRead(ffg);
int leitura9 = digitalRead(ffc);
int leitura4 = digitalRead(kc);
int leitura3 = digitalRead(pg);

if (leitura1 == HIGH) {
if (leitura9 == HIGH) {
digitalWrite(kg, LOW);
digitalWrite(pg, LOW);
digitalWrite(run, LOW);
delay(300);
digitalWrite(kc, HIGH);
delay(300);
digitalWrite(kca, HIGH);
} else {
if(leitura9 ==LOW && leitura1 == HIGH) {
if(leitura8 == LOW) {
delay(300);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kca, LOW);
digitalWrite(run, HIGH);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {exit;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {exit;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {exit;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {exit;}
digitalWrite(pg, LOW);
//delay(300);
//digitalWrite(pg, LOW);
} else {
if(leitura8 == HIGH) {
digitalWrite(pg, LOW);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kg, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
}
}
}
}
if(leitura1 == LOW) {
digitalWrite(kca, LOW);
digitalWrite(kg, LOW);
digitalWrite(run, LOW);
digitalWrite(kc, LOW);
}
}

Boa tarde Gabriel. infelizmente ainda não funcionou, preciso que faça uma interrupção geral se acaso na ultima sequencia do "pg" o gerador não parta("kg")

Bom dia Gabriel, hoje fiz mais uma modificação no programa e a função return, juntamente com a comparação if me ajudou muito amigo, agradeço mesmo pelas idéias,fiz também um "trap" no programa para fazer o modo falha, ficou excelente, ainda tem mais algumas idéias de alguns amigos meu pra implementar, mas o programa em geral está praticamente pronto, abraços.

segue o código atualizado, abraços.


int uno = 1; // habilita modo automatico
int run = 2; // habilita partida do gerador
int pg = 3; // aciona partida do gerador
int kc = 4; // aciona contator da compania
int kg = 5; // aciona contator do gerador
int kca = 6; // aciona contator da carga
int rs = 7; // entrada botão reset
int ffg = 8; // entrada falta de fase do gerador
int ffc = 9; // entrada falta de fase da compania
int fp = 10; // falha de partida

//controle

void setup()
{
pinMode(uno, INPUT);
pinMode(run, OUTPUT);
pinMode(pg, OUTPUT);
pinMode(kc, OUTPUT);
pinMode(kg, OUTPUT);
pinMode(kca, OUTPUT);
pinMode(rs, INPUT);
pinMode(ffg, INPUT);
pinMode(ffc, INPUT);
pinMode(fp, OUTPUT);
}
void loop()
{
int leitura1 = digitalRead(uno);
int leitura8 = digitalRead(ffg);
int leitura9 = digitalRead(ffc);
int leitura4 = digitalRead(kc);
int leitura3 = digitalRead(pg);
int leitura10 = digitalRead(fp);

if (leitura1 == HIGH)
{
if (leitura9 == HIGH)
{
digitalWrite(fp, LOW);
digitalWrite(kg, LOW);
digitalWrite(pg, LOW);
digitalWrite(run, LOW);
delay(300);
digitalWrite(kc, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
else
{
if(leitura9 ==LOW && leitura1 == HIGH)
{
if(leitura8 == LOW && leitura10 == LOW)
{
delay(300);
digitalWrite(kg, LOW);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kca, LOW);
digitalWrite(run, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {return;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {return;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {return;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {return;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
if (digitalRead(ffg) == HIGH) {return;}
digitalWrite(pg, LOW);
delay(300);
digitalWrite(fp, HIGH);
}
if(leitura8 == HIGH && leitura9 == LOW)
{
digitalWrite(fp, LOW);
digitalWrite(pg, LOW);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kg, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
}
}
}
if(leitura1 == LOW)
{
digitalWrite(fp, LOW);
digitalWrite(kca, LOW);
digitalWrite(kg, LOW);
digitalWrite(run, LOW);
digitalWrite(kc, LOW);
}
if(leitura10 == HIGH)
{
delay(100);
digitalWrite(pg, LOW);
}
}

Eu to muito interessado nisso.

Posso te ajudar se me explicar melhor o que quer.

Contador para quê?

Boa tarde Sidney, o funcionamento é o seguinte, estou pensado em duas formas de fazer isto, ou utilizar um contador externo ou fazer um contador na programação, que seria a cada contagem deverá tentar partir o gerador como se fosse tentar ligar um carro, e na primeira vez que o gerador acionar, o contador deverá parar e pular para a próxima função que seguirá adiante, ou se por acaso se em 5 tentativas o motor do gerador não partir, ele deverá entrar em falha e assim sendo ele deverá deixar todas as saídas em nivel baixo e entrar em falha, coloquei um anexo no tópico explicando em texto toda a parte lógica necessária do projeto, parei de escrever o programa até na entrar do contador que no cado identifiquei como kg como sinal alto para o contador, mas kg deverá ser contactor elétrico da partida do Gerador, espero que tenha sido claro, qualquer dúvida estaremos sempre aqui, abraços.

Danilo, gostei da sua iniciativa e gostaria de ajudar.

Tentei baixar o arquivos fotos do esquema elétrico mas diz que não tenho permissões.

Pode upar de novo ou em outro local?

Obrigado

Sérgio

Também não consegui.

Boa Noite Pesoal, agora vai heim ^^, testei algumas alterações que fiz no código, agora to quase la mesmo heim, vou ver se consigo aperfeiçoa-lo mais, mas ja consegui fazer entrar em modo de falha se não partir o gerador, segue o código, abraços.


int uno = 1; // habilita modo automatico
int run = 2; // habilita partida do gerador
int pg = 3; // aciona partida do gerador
int kc = 4; // aciona contator da compania
int kg = 5; // aciona contator do gerador
int kca = 6; // aciona contator da carga
int rs = 7; // entrada botão reset
int ffg = 8; // entrada falta de fase do gerador
int ffc = 9; // entrada falta de fase da compania
int fp = 10; // falha de partida

//controle

void setup()
{
pinMode(uno, INPUT);
pinMode(run, OUTPUT);
pinMode(pg, OUTPUT);
pinMode(kc, OUTPUT);
pinMode(kg, OUTPUT);
pinMode(kca, OUTPUT);
pinMode(rs, INPUT);
pinMode(ffg, INPUT);
pinMode(ffc, INPUT);
pinMode(fp, OUTPUT);
}
void loop()
{
int leitura1 = digitalRead(uno);
int leitura8 = digitalRead(ffg);
int leitura9 = digitalRead(ffc);
int leitura4 = digitalRead(kc);
int leitura3 = digitalRead(pg);
int leitura10 = digitalRead(fp);

if (leitura1 == HIGH)
{
if (leitura9 == HIGH)
{
digitalWrite(fp, LOW);
digitalWrite(kg, LOW);
digitalWrite(pg, LOW);
digitalWrite(run, LOW);
delay(300);
digitalWrite(kc, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
else
{
if(leitura9 ==LOW && leitura1 == HIGH)
{
if(leitura8 == LOW && leitura10 == LOW)
{
delay(300);
digitalWrite(kg, LOW);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kca, LOW);
digitalWrite(run, HIGH);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(pg, HIGH);
delay(300);
digitalWrite(pg, LOW);
delay(300);
digitalWrite(fp, HIGH);
}
if(leitura8 == HIGH && leitura9 == LOW)
{
digitalWrite(fp, LOW);
digitalWrite(pg, LOW);
digitalWrite(kc, LOW);
delay(300);
digitalWrite(kg, HIGH);
delay(300);
digitalWrite(kca, HIGH);
}
}
}
}
if(leitura1 == LOW)
{
digitalWrite(fp, LOW);
digitalWrite(kca, LOW);
digitalWrite(kg, LOW);
digitalWrite(run, LOW);
digitalWrite(kc, LOW);
}
if(leitura10 == HIGH)
{
delay(100);
digitalWrite(pg, LOW);
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço