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);
}
}
}
Tags:
Entendo Francisco, vai firme que tudo dá certo, o Arduino é muito intuitivo para isso, o programa que criei( logo acima ), dará uma boa noção para dsenvolver seu projeto, mas lembre-se, nada de delay kkkk, boa sorte, abraços.
Ola amigo muito bom seu projeto executei aqui e ficou massa.Porem tenho uma duvida meio simploria pois estou adaptando este projeto a uma bomba de agua com motor a diesel pra sistemas de incedio..Mas veja a situação..Quado o motor parte o meu rele de partidas fica ainda dando partidas no motor pois nao tenho a ideia de onde viria um sinal para mandar o rele de partida parar..Tens alguma dica..?
opa, Boa tarde Geovane, a cada vez que vc enviar o sinal de partida, pode-se colocar dentro de um bloco de codigo com uma programação de comparação, ou seja, tipo assim, se deu nivel alto(ou baixo, dependendo da sua logica) para de partir, podendo colocar uma fonção "return" que volta ao estado anterior, isso é algumas dicas aqui, mas para te facilitar, segue o código completo do Projeto, Boa Sorte!!
int uno = 1; // habilita modo automatico
int run = 2; // Aciona 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
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h> // F Malpartida's NewLiquidCrystal library
//Download: https://bitbucket.org/fmalpartida/new-liquidcrystal/downloads
// Move original LiquidCrystal library elsewhere, copy this in it's place
/*-----( Declare Constants )-----*/
#define I2C_ADDR 0x27 // Define I2C Address for the PCF8574T
//---(Following are the PCF8574T pin assignments to LCD connections )----
// This are different than earlier/different I2C LCD displays
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7
//#define LED_OFF 1 //Those were used to the BackLight LED
//#define LED_ON 0 //Not needed anymore.
/*-----(Declare variables)-----*/
//Declare variables here if needed.
/*-----( Declare objects )-----*/
LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); //Here you pass-through by parameter the constants of the I2C/LCD breakout
//controle
void setup()
{
lcd.begin (16, 2);
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);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
lcd.setBacklight(HIGH);
lcd.print(" BEM VINDO");
delay(3000);
lcd.clear();
delay(1000);
lcd.setCursor(1, 1);
lcd.print("TCC SENAI 2014");
delay(3000);
}
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);
int leitura7 = digitalRead(rs);
if (leitura1 == HIGH)
{
if (leitura9 == HIGH)
{
lcd.clear();
delay(1000);
digitalWrite(fp, LOW);
digitalWrite(kg, LOW);
digitalWrite(pg, LOW);
delay(1000);
digitalWrite(run, LOW);
delay(1000);
digitalWrite(kc, HIGH);
delay(300);
digitalWrite(kca, HIGH);
lcd.print(" CARGA ");
lcd.setCursor(1, 1);
lcd.print("CPFL");
}
else
{
if (leitura9 == LOW && leitura1 == HIGH)
{
if (leitura8 == LOW && leitura10 == LOW)
{
lcd.clear(); // Limpa o display
delay(1000);
lcd.print(" ACIONANDO ");
lcd.setCursor(1, 1);
lcd.print("PARTIDA");
delay(1000);
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);
lcd.clear();
geradorligado();
}
}
}
}
if (leitura1 == LOW)
{
digitalWrite(fp, LOW);
digitalWrite(kca, LOW);
digitalWrite(kg, LOW);
digitalWrite(run, LOW);
digitalWrite(kc, LOW);
}
if (leitura10 == HIGH)
{
delay(500);
digitalWrite(pg, LOW);
lcd.clear(); // Limpa o display
delay(500);
lcd.print(" MODO FALHA");
}
if (leitura7 == HIGH)
{
digitalWrite(fp, LOW);
}
}
void geradorligado()
{
// Limpa o display
lcd.print(" GERADOR ");
lcd.setCursor(1, 1);
lcd.print("LIGADO");
}
Pessoal resolvi disponabilizar o código completo do projeto, OBS: Código funcional, porém buga seu uso por ter utilizado o recurso delay, necessitando criar funções novas utilizando a função millis ou equivalente a uma leitura continua.Se alguem fizer uma melhoria, adoraria ver como fica :) , Obrigado.
ola luiz sr tem fotos de montagem de componen
tes desse seu projeto
tem como envia nesse email claudiomorais2016@hotmail.com
eu agradeço se enviar e mais as fotos a onde vai cada componentes eletronicos
ola bom dia sr r Danilo José Diniz
sr tem como envia uma foto do projeto arduino da montagem dos componentes desse seu
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por