arduino uno se raya y bloquea

Buenas... Tengo un problema con mi proyecto, es muy sencillo, ya que solo manejo Relehes 7 en total, mas 3 salidas para sevos, fuente de alimentación para arduino uno de 12v 10A, fuente ext. para los Relehes de 5v 10A, una tercera de 24v que pasó a través de uno de los Relehes, todos los negativos unidos, en principio funciona, pero hay veces que se raya y empieza sin la orden pertinente, que es un Relehes externo que corta la señal del pin del A0 al pin 2. Y cuando se ejecuta solo luego es muy raro que vuelva a empezar con la señal original, incluso hay veces que empieza y se conectan Relehes que no toca al principio de programación.
Leyendo varios temas de por aquí, he probado ya separar los Relehes de la placa lo máximo posible, tiene filtros de anti parásitos en todos los cables de señal. He cambiado 4 veces la placa arduino uno, hace lo mismo con todas, ahora por último instale un mega y lo mismo, el almacenamiento esta a un 2% utilizada, y 7% memoria dinámica.

El Código:

#include <Servo.h>



int INICIO = 2;
int MUSICA = 3;
int LUCES = 4;
int RIO = 5;
int FLORES =6;
int PRINCIPALES_TENSION =7;
int ACCION = 8;
int BURBUJAS=9;
Servo SECUNDARIOS1;
Servo SECUNDARIOS2;
Servo SECUNDARIOS3;
int LED =13;
int repe;
int AO=A0;




void setup() {
  Serial.begin(9600);
 
  pinMode (INICIO,INPUT);
  pinMode (MUSICA,OUTPUT);
  pinMode (LUCES,OUTPUT);
  pinMode (RIO,OUTPUT);
  pinMode (FLORES,OUTPUT);
  pinMode (PRINCIPALES_TENSION,OUTPUT);
  pinMode (ACCION,OUTPUT);
  pinMode (BURBUJAS,OUTPUT);
  SECUNDARIOS1.attach(10);
  SECUNDARIOS2.attach(11);
  SECUNDARIOS3.attach(12);
  pinMode (LED,OUTPUT);
  pinMode (AO, OUTPUT);
  int repe;

  digitalWrite(MUSICA,HIGH); 
  digitalWrite(RIO,HIGH);
  digitalWrite(FLORES,HIGH);
  digitalWrite(BURBUJAS,HIGH);
  digitalWrite(PRINCIPALES_TENSION,HIGH);
  digitalWrite(LUCES,HIGH);
  digitalWrite(ACCION,HIGH);
  digitalWrite (LED,LOW);
}



void loop() {
  Serial.begin(9600);
 

   if(digitalRead(INICIO)==LOW)
  {  digitalWrite (LED,LOW);
     Serial.println("ESPERA");
    delay(1000);
  }
  if (digitalRead(INICIO)==HIGH)
  {  digitalWrite (LED,HIGH);

    Serial.println("COMIENZO");
    digitalWrite(PRINCIPALES_TENSION,LOW);
    Serial.println("PRINCIPALES_TENSION ACTIVADO");
    digitalWrite(RIO,LOW);
    Serial.println("RIO ACTIVADO");
    digitalWrite(MUSICA,LOW);
    Serial.println("MUSICA ACTIVADA");
    delay(1000);
   
   
    digitalWrite(LUCES,LOW);
    Serial.println("LUCES ACTIVADAS");
    delay (8000);
   
    digitalWrite(ACCION,LOW);
    Serial.println("ACCION ACTIVADO");
   
    delay(2000);
   
    digitalWrite(ACCION,HIGH);
    Serial.println("ACCION DES-ACTIVADO");
   
    delay(40000);
    digitalWrite(FLORES,LOW);
    Serial.println("FLORES ACTIVADAS");
    digitalWrite(BURBUJAS,LOW);
    Serial.println("BURBUJAS ACTIVADAS");
   



    int repe=70;
   
while(repe>0)
       {
    SECUNDARIOS1.write(0);
    SECUNDARIOS2.write(180);
    SECUNDARIOS3.write(0);
    delay(1000);
     
   
    SECUNDARIOS1.write(180);
    SECUNDARIOS2.write(0);
    SECUNDARIOS3.write(180);
    delay(1000);
    repe--;

    }
   
    delay(7000);

   
    digitalWrite(MUSICA,HIGH);
    Serial.println("MUSICA DES-ACTIVADA");
    digitalWrite(RIO,HIGH);
    Serial.println("RIO DES-ACTIVADO");
    digitalWrite(FLORES,HIGH);
    Serial.println("FLORES DES-ACTIVADAS");
    digitalWrite(BURBUJAS,HIGH);
    Serial.println("BURBUJAS DES-ACTIVADAS");

    delay (3000);
   
    digitalWrite(PRINCIPALES_TENSION,HIGH);
    Serial.println("PRINCIPALES_TENSION DES-ACTIVADA");
    digitalWrite(LUCES,HIGH);
    Serial.println("LUCES DES-ACTIVADA");
    delay(500);
    digitalWrite (LED,LOW);
   
   
   

  }
 delay(1000);
 
 
   
  }

Por favor, ya no se que hacer estoy desesperado.

Gracias de anantemano.

En el otro post te he pedido que edites el código, ya que en este lo hiciste, te ahorro la tarea, pero sigues con el título INUTIL "Ayuda por favor".
Asi que debes corregir el título.

https://forum.arduino.cc/index.php?topic=651473.0 Fue eliminado

Si estas alimentando tu arduino y los reles con la fuente que indicas el problema simplemente esta ahi.
El arduino no tiene capacidad para alimentar mas de 4 Reles. En su lugar debes alimentar los Reles por fuera del Arduino compartiendo GND y todas las conexiones como estan ahora pero, la alimentación de los reles será de la fuente que mencionas.
Como alimentas el Arduino es otra cosa.
Tienes la posiblidad de olvidarte de alimentar el Arduino via VIN o por jack externo pero en este caso si lo alimentas por el pin de 5V al igual que los RELES, jámas se te ocurra programar el Arduino conectado a la fuente de 5V 10A porque vas a quemar algo

Moderador:
Esta consulta no es para esta sección, ya te lo pedí en el primer hilo pero no lo leíste, de modo que te daré un tiempo y luego seguirás el mismo en Hardware.

Perdona, no es ese el problema, puede ser que me exprese mal, el arduino tiene una fuente de alimentación de 12v 10A, y los relés, es otra fuente aparte de 5v 10A, No cojo los 5v del arduino.

Ahora disculpa tu, porque lo explicaste bien y yo lo entendí mal

Vamos otra vez con el posible problema

Cuenta que estas activando porque no dices nada de lo que los Relés accionan. Son electroválvulas? Si lo son, debes colocar un diodo en antiparalelo (catodo al positivo y anodo al negativo de la electroválvula) para evitar los sobrepicos generados por las electroválvulas en el momento que le desconectas la energía.

Los relés accionan

  • un radio mp3 220v
  • bombilla les 220v
    -5 ventiladores USB 5v (0'4A los 5)
    -bomba agua, 24v
    -Máquina burbujas 220v
    -Fuente alimentación ( la entrada220v, )
    -la fase de un relé bobina 220v

Si que no he mencionado, que los ventiladores USB y los servos, están conectados a la misma fuente que alimenta los relés, pero no creo que tenga que ver con el problema, ya que estamos hablando de que tengo 10A y solo uso 2,2 como mucho.

Bien, Empieza a hacer una serie de pruebas para identificar el culpable pero tengo dos sospechosos de alto porcentaje.

  1. bomba agua, 24v
    Este es seguramente el mas responsable, sino el único. Asi que desconécta la bomba, solo deja el rele que se accione.

  2. la fase de un relé bobina 220v,
    otro posible responsable. Lo mismo, desconéctalo.

  3. máquina de burbujas.
    si sigue fallando desconéctala tmb

  4. Fuente alimentación ( la entrada220v)
    la dejamos para el final

Bien, tienes una secuencia de pruebas.
A ver que ocurre.
Desconecta del 1 al 4 y en cada caso tómate el tiempo para observar comportamiento.

Voy ha hacer esas pruebas, me llevará un poco de tiempo, ya que el fallo sale a las horas de funcionamiento, pero entre esta tarde y toda la noche las haré, te informó.

De a 1 cosa por vez, y si la primera no genera el problema debes repetir todo con la segunda e ir identificando los responsables.

Es seguro que tienes problemas de ruido electrico. Como dije la 1) es la mas sospechosa pero luego tienes otros posibles... responsables.

Buenas.... Vamos por partes, (como dijo Jack el destripador), desde ayer tarde hasta ahora, tras innumerables pruebas de quitar uno a uno los consumos de los relés, he solucionado uno de los dos problemas que tenia.
He averiguado el porque del inicio sin señal programada, era el relé de final de programación, apaga luces, lo pasaba por un contactor para aliviar sufrimiento al relé, ese contactor, cuando desconectaba generaba ruido eléctrico y activaba el relé de inicio de programación, estando a 45cm del relé inicio, lo he tenido que sacar del cuadro de maniobra, así esta solucionado el problema que iniciaba solo, sin programación ninguna.

Por otra parte, la señal de inicio de programación por relé, ( que a veces no se activaba) creo, no estoy seguro, hasta que pase más tiempo de prueba, yo le daba un corte de señal de 4 segundos, lo he subido a 15 segundo por si el motivo era poco tiempo de Corte ya que al arduino, le programe que un "if" Delay (1000) en espera y otro de 1000 al final, me di cuenta que desde el Corte de señal hasta que detecta el inicio, había veces que con 4 seg no era bastante, ya que me tardaba en ocasiones unos 6 seg, lo he subido a 15 seg para curarme en salud, y parece que ahora siempre inicia, aunque, hay veces que tarda 10seg en iniciar. Por eso no estoy del todo seguro, inexplicable para mi, el porque, antes tardaba 6seg y al subir a 15seg ahora me tarda más, también he añadido un Reset programado, he leído que así es menos probable que se cuelgue, no se si esto tiene algo que ver.

Así que tenías razón en el ruido en la señal era el problema que iniciará solo, aun poniendo 5 filtros en todos los cables de señal.

Esperemos que el fallo de no iniciar, lo solucione con los 15 seg de corte.

Muchas muchísimas gracias, de verdad surbyte, no se de donde eres, pero una paella Valenciana tienes aquí cuando quieras.
No dudes en pedirmela, encantadisimo de pagarla con gusto.

Gracias

Soy de Argentina.. el otro dia me gané una cerveza, y otro me regaló una comida tambien, pero le dije, yo pago la cena pero tu el pasaje jajajaja.

Cuando vaya a España lo avisare por TVE.

Jajajja. Pues va a salirme cara la paella, de todas maneras hoy acaba de fallar el inicio, ahora ya si que no entiendo porque, con 15 seg. De Corte de señal

Bueno nueva prueba, como he cambiado al arduino mega, he cambiado la señal de Corte para inicio, que estaba del A0 al Pin 2, por el Pin 14 al 2, parece ser que empieza casi de inmediato, de momento, creo que he logrado quitar ese tedioso retardo. Y te cuento

Bueno.... Oficialmente, se puede decir que ya funciona, con un retardo de unos 5 seg desde mandar señal, hasta que empieza, pero lo importante que ya siempre inicia.

Me da gusto que hayas resuelto tu problema.
Como habrás visto una cosa es programar y otra diferentes es hacer que funcione como se espera. Aparencen cosas que uno desconocía que pueden traer tantos problemas.
Muchos elementos generan ruido. En tu caso pudiste resolverlo de forma aparentemente fácil y rápida. No siempre ocurre asi.
Has tenido suerte!!