Arduino - SIRENA DE BOMBEROS

 
Vista:

SIRENA DE BOMBEROS

Publicado por santiago (1 intervención) el 23/06/2019 17:07:38
Hola buenos días, mi nombre es santiago, estoy intentando automatizar la sirena de los bomberos de mi localidad, la misma cuenta con un motor trifasico y una llave de conmutación con la que se selecciona un punto inicial para el arranque y otro para el trabajo (la necesidad actual son realizar secuencias de 1, 2 y 3 toques). Mi intención es a través de la placa de arduino manejar 2 contactores y con estos hacer las veces de los 2 puntos de la llave de conmutación. para esto implemente una lógica con transistores reles y contactores para ir elevando la tensión de control y agregue 3 salidas mas de la placa arduino para encender 3 testigos que informan si se trata de 1, 2 o 3 toques de sirena.
El problema radica en que generalmente en al presionar el pulsador para los 2 toques empieza todo a funcionar Ok, pero en el segundo ciclo de arranque de la sirena el programa deja de funcionar y se "resetea". Para un solo toque a veces sucede lo mismo y el de 3 toques generalmente nunca falla. quería compartirles el código a ver si ustedes pueden ayudarme y guiarme en cual puede ser el error.

int SubidaPunto1 = 25000; //tiempo en levantar la sirena en punto 1
int BajadaPunto1 = 05000; //tiempo en bajar la sirena en punto 1
int DelayEntrePunto1y2 = 1500; //tiempo de conmutacion entre puento 1 y 2
int SubidaPunto2 = 18000; //tiempo en levantar la sirena en punto 2
int BajadaPunto2 = 10000; //tiempo en bajar la sirena en punto 2
int Conmutacion = 1000; //tiempo de conmutacion

void setup()
{
pinMode(A0, INPUT);
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(A1, INPUT);
pinMode(10, OUTPUT);
pinMode(A2, INPUT);
pinMode(9, OUTPUT);
pinMode(A3, INPUT);
}

void loop()
{
if (digitalRead(A0) == LOW) {
// Un toque
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(11, HIGH); //se enciende led 1
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(13, HIGH); // inicia el punto 1 de la llave
delay(SubidaPunto1); // Wait for 250000 millisecond(s)
digitalWrite(13, LOW); //se desconecta el punto 1 de la llave
delay(DelayEntrePunto1y2); // Wait for 1000 millisecond(s)
digitalWrite(12, HIGH); // inicia el punto 2 de la llave
delay(SubidaPunto2); // Wait for 250000 millisecond(s)
digitalWrite(12, LOW); // se desconecta el punto 2 de la llave
delay(BajadaPunto2); // Wait for 1000 millisecond(s)
digitalWrite(11, LOW); //se apaga el led 1
delay(Conmutacion); //tiempo de espera de seguridad
} else {

}
if (digitalRead(A1) == LOW) {
// 2 toques
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(11, HIGH); //se enciende led 1
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(10, HIGH); //se enciende led 2
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(13, HIGH); // inicia el punto 1 de la llave
delay(SubidaPunto1); // Wait for 10000 millisecond(s)
digitalWrite(13, LOW); //se desconecta el punto 1 de la llave
delay(DelayEntrePunto1y2); // Wait for 1000 millisecond(s)
digitalWrite(12, HIGH); // inicia el punto 2 de la llave
delay(SubidaPunto2); // Wait for 10000 millisecond(s)
digitalWrite(12, LOW); // se desconecta el punto 2 de la llave
delay(BajadaPunto2); // Wait for 8000 millisecond(s)
digitalWrite(12, HIGH); // inicia el punto 2 de la llave
delay(SubidaPunto2); // Wait for 10000 millisecond(s)
digitalWrite(12, LOW); // se desconecta el punto 2 de la llave
delay(BajadaPunto2); // Wait for 1000 millisecond(s)
digitalWrite(11, LOW); //se apaga el led 2
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(10, LOW); //se apaga el led 1
delay(Conmutacion); //tiempo de espera de seguridad
} else {
}
if (digitalRead(A2) == LOW) {
// tres toqeus
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(11, HIGH); //se enciende led 1
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(10, HIGH); //se enciende led 2
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(9, HIGH); //se enciende led 3
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(13, HIGH); // inicia el punto 1 de la llave
delay(SubidaPunto1); // Wait for 10000 millisecond(s)
digitalWrite(13, LOW); //se desconecta el punto 1 de la llave
delay(DelayEntrePunto1y2); // Wait for 1000 millisecond(s)
digitalWrite(12, HIGH); // inicia el punto 2 de la llave
delay(SubidaPunto2); // Wait for 10000 millisecond(s)
digitalWrite(12, LOW); // se desconecta el punto 2 de la llave
delay(BajadaPunto2); // Wait for 8000 millisecond(s)
digitalWrite(12, HIGH); // inicia el punto 2 de la llave
delay(SubidaPunto2); // Wait for 10000 millisecond(s)
digitalWrite(12, LOW); // se desconecta el punto 2 de la llave
delay(BajadaPunto2); // Wait for 8000 millisecond(s)
digitalWrite(12, HIGH); // inicia el punto 2 de la llave
delay(SubidaPunto2); // Wait for 10000 millisecond(s)
digitalWrite(12, LOW); // se desconecta el punto 2 de la llave
delay(BajadaPunto2); // Wait for 8000 millisecond(s)
digitalWrite(11, LOW); //se apaga el led 1
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(10, LOW); //se apaga el led 2
delay(Conmutacion); //tiempo de espera de seguridad
digitalWrite(9, LOW); //se apaga el led 3
delay(Conmutacion); //tiempo de espera de seguridad

} else {
}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder