Buenos dias desde Argentina, quisiera realizar una consulta, estoy armando una maquina para hacer hamburguesas, consta de un sensor que detecta que la bandeja esta cargando carne, si el sensor == LOW empieza el ciclo, tengo una entrada (sensor) y Dos salidas (dos relay que comandan las electrovalvulas de los pistones neumaticos, les dejo el codigo a continuacion
//Hamburguesera//
//Manejo de dos Electro_Valvulas mediante un Sensor Hall 3144
const int electroValvulaEmpuje = 2; //Constante de rele_1
const int electroValvulaPlato = 11; //Constante de rele_2
const int sensor = 9; //Constante de Sensor Hall 3144
int estado = 0; //Variable que toma valor de sensor para determinar tareas
void setup()
{
//Inicia el puerto serie para llevar control de tareas.
//Puede ser remplazado por Liquicrystal.h para reproducior monitoreo en una pantalla LCD
pinMode(electroValvulaPlato, OUTPUT); //Definimos la constante de rele_1 como salida
pinMode(electroValvulaEmpuje, OUTPUT); //Definimos la constante de rele_2 como salida
pinMode(sensor, INPUT); //Definimos la constante del Sensor Hall 3144 como entrada
digitalWrite(electroValvulaPlato, HIGH);
digitalWrite(electroValvulaEmpuje, LOW); //Iniciamos el rele_2 en estado "0"
}
void loop()
{
int estado = digitalRead(sensor); //Lee el estado del sensor
if (estado == LOW) //Si el sensor esta en estado 0 inicia el ciclo, (Detallado en el Serial o LCD)
{
delay(250);
//Consigna uno
unsigned long timpoInicioPlatoAfuera = millis();
while(millis() - timpoInicioPlatoAfuera < 2250){ //Tiempo de carga de carne
}
digitalWrite(electroValvulaPlato, LOW); //Salida de plato
delay(250);
//Consigna dos
unsigned long timpoInicioBajaEmpuje = millis();
while(millis() - timpoInicioBajaEmpuje < 1750){ //Tiempo que tarda en bajar empuje
}
digitalWrite(electroValvulaEmpuje, HIGH); //Baja empuje (piston chico)
delay(250);
unsigned long timpoInicioSubeEmpuje = millis();
while(millis() - timpoInicioSubeEmpuje < 1250){ //Tiempo que tarda en subir piston de empuje
}
digitalWrite(electroValvulaEmpuje, LOW); //Sube empuje (piston chico)
delay(250);
unsigned long tiempoInicioPlatoAdentro = millis();
while(millis() - tiempoInicioPlatoAdentro < 1750){ //Tiempo que tarda en guardar plato
}
digitalWrite(electroValvulaPlato, HIGH); //Entrada de plato
delay(250);
}
delay(250);
}
mi problema es que queda en la salida del plato, indicado por un comentario como //consigna uno, y no inicia nunca la //consigna dos, cuando inicio el arduino, funcion a perfectamente durante 10-15 min hasta que queda congelado entre esos dos puntos, a veces lo inicio y se congela antes de los 30seg. y asi, no es en una cantidad determinada de ciclos o en un tiempo especifico, siempre lo hace en diferentes momentos.
La placa es un arduino nano. Desde ya muchisimas gracias, espero puedan ayudarme.

