[Help] plantage arduino nano après quelques cycles

Bonjour à tous,

Afin de piloter une électrovanne pour de l'encollage, j'ai besoin d'une tempo très courte (0,3 secondes) pour un encollage d'une pièce, ainsi que d'une tempo plus longue (6 secondes) pour faire la purge, j'ai fait un petit programme basique :

/*
 Temporisation courte ou longue
 Active la temporisation sur 6 seconde si action sur le bouton "Purge"
 Active la temporisation sur 0.1seconde si action sur bouton "Pulse"
 attend 1,5 secondes avant la possibilité de refaire un nouveau cycle après une action sur "Pulse",
 et pas de tempo après le cycle "Purge"
 
 creation le 03/12/2015 par Qiko68
 */

// Déclaration des Pin:
const int boutonPulse = 2;   // Pin du bouton "Pulse"
const int boutonPurge = 3;  // Pin du bouton "Purge"
const int relaisEV =  12;   // Pin de commande du relais de sortie

void setup() {
  // définition de la commande du relais en mode output:
  pinMode(relaisEV, OUTPUT);
  // définition des boutons poussoir en mode input:
  pinMode(boutonPulse, INPUT);
  pinMode(boutonPurge, INPUT);
  }

void loop() {
   digitalWrite (relaisEV,LOW);
  // si action sur les 2 boutons = cycle de purge
   if ((digitalRead(boutonPurge)==1) && (digitalRead(boutonPulse)==1))
      {
      digitalWrite (relaisEV,HIGH);     // activation relais
      delay (6000);                      // tempo 6 secondes
      digitalWrite (relaisEV,LOW);      // arret relais
      }

  // si action uniquement sur bouton "pulse" = cycle court
   if ((digitalRead(boutonPulse)==1) && (digitalRead(boutonPurge)==0))
      {
      digitalWrite (relaisEV,HIGH);      // activation relais
      delay (30);                       // tempo 0.03 seconde
      digitalWrite (relaisEV,LOW);       // arret relais
      delay (1500);                      // pause antirebond de 1,5 secondes
      }
 }

Le Circuit:

  • un module relais arduino est branché sur la sortie 12 vers la masse, ce micro relais commande un relais plus gros via un contact NO
  • 1 Bouton poussoir "Purge" vers Pin 3 à partir du +5V (contact NO)
  • 1 Bouton poussoir "Pulse" vers Pin 2 à partir du +5V (contact NO)
  • 1 résistance de 10K entre Pin 2 et masse
  • 1 résistance de 10K entre Pin 3 et masse
  • 1 arduino nano
  • 1 un StepDown qui lui est alimenté en 24V DC (filtré et régulé) et fournit le +5V pour le montage

L'arduino nano + les résistances + le module relais + le StepDown sont assemblé sur une platine époxy à pastilles et placé dans un boitier en alu qui est relié à la masse (terre) de ma machine

Les 2 boutons sont sur une boite à boutons type télémécanique avec un câble de liaison de type 12G1 de 1 m de longueur

le cycle de purge est conditionné par l'action simultané sur les 2 boutons pour éviter un cycle purge pendant la phase purement production qui elle est juste une succession de collage 'cycle court)

Mon soucis :
Je met sous tension, je purge, je colle, je colle, je colle, et sa marche plus, m'obligeant à faire un reset sur l'arduino pour relancer,
Parfois ça me met 2 impulsions courte à la suite sans respecter la tempo des 1,5 secondes
Parfois ça me fait un double cycle de purge (12 secondes au lieu de 6)
Parfois ça fonctionne nickel durant 7-8 cycle de collage, parfois durant 25 cycles, puis l'arduino se bloque
parfois même ça bloque en laissant la sortie active (ouff j'ai appuyé à temps sur le bouton reset, sinon bonjour le pâté de colle :wink: )

Je pensais à des parasites donc j'ai mis la platine dans un boitier blindé sans succès,
Je penche soit pour une arduino nano défaillante, soit un parasite via l'alimentation, mais le StepDown est clean à l'oscillo, et je ne dépasse largement pas ses capacités maxi, donc je sèche.

Pouvez vous m'aider sur ce type de panne, j'ai déjà fait plusieurs montages avec de l'arduino (Mega, Uno et nano), mais c'est la première fois que j'ai ce type de souci.

Merci de vos lumières
Cordialement,
Christophe

Intéressant comme réalisation.

Je pense que tu devrais ajouter des fonction de debugage dans les fonctions pour savoir la ou sa bloque.

Ou sinon la plus simple solution et moins sérieuse de faire un reset.

bonjour Standby,

seulement ça plante jamais pareil, parfois dans le cycle court, parfois dans le cycle long, en laissant parfois le relais actif, parfois en faisant 2 ou 3 cycle à la suite sans respecter la pause de 1,5 seconde

un lien sur l'électrovanne ?
un lien sur le stepdown ?

le step down est alimenté en 24 et donne du 5V
chauffe t'il beaucoup ?

quelle est la résistance de l'enroulement de l'électrovanne?

quelle tension sur l'électrovanne?

les relais en cascade:
résistance des bobines?
tension des bobines?
pouvoir de coupure des contacts des relais ?

des diodes de roue libre ?

Anti-rebonds ( condensateurs ) sur les contacts?

Bonsoir, et merci,

Electrovanne Noname (simple électrovanne electro pour ouvrir le passage de l'air) alimenté par le 24V DC de la machine, pas de lien car était fournit avec la machine

Module Step Down Converter , Convertisseur DC-DC 3A : http://www.ebay.fr/itm/400358408922

Le StepDown ne chauffa pas, il alimente uniquement l'arduino nano et le module micro-relais ( http://www.ebay.fr/itm/1x-Module-1-relais-5V-1-RT-ARDUINO-envoi-de-France-E095-/191734912160?hash=item2ca44a94a0:g:gSMAAOSwuMFUiQSS )

micro-relais qui commande un relais plus gros (enfin pas trop ), ce relais plus gros est alimenté par le 24V DC machine et c'est lui qui pilote l'électrovanne

Le micro-relais est commandé via transistor et à sa diode de roue libre, l'autre relais est bien équipé d'une diode de roue libre, (relais OMRON 24VDC, pouvoir de coupure 10 A avec 3 contact NO/NC)
le micro relais à un pouvoir de coupure de 5A
lorsque l'arduino est planté je peu déclencher le micro relais en faisant un pont entre le +5 et la pin de commande, donc les relais sont ok,

mon montage est en fait une modification d'une machine qui habituellement fonctionne pour un type de pièce avec son automate siemens et commande l'électrovanne via 1 relais (relais qui est déjà dans l'armoire de la machine, j'ai simplement brancher un commutateur pour choisir si l'électrovanne est piloté par le relais de la machine ou par le mien.

je ne peu pas et ne veux pas toucher à la programmation de l'automate (en S7+) qui n'a de toute façon plus d'entrées de libre.
d'où un passage par arduino

J'ai un doute sur ma programmation (peut-etre trop simpliste) :sleeping: , voir sur l'arduino nano, mais comme il réagit bien avec un blink ou d'autres script de test (bouton test, chenillard à led)

petite précision, je ne sais pas si c'est utile, si j'utilise la pin 13 pour piloter mon micro relais, ben ça ne fonctionne pas, je supposait à cause de la led du blink-test qui est dessus alors j'ai utilisé la pin 12.

j'envisage d'augmenter un peu mon 5V pour voir si c'est pas ça qui déconne ? une nano ça bouffe pas tant que ça quand même non ?

bonjour,
si tu remplace les relais par des leds, ca fait pareil?
un input_pullup sur les boutons, ca évitera les rebonds

Bonjour Infobarquee,

oui on m'a parlé hier soir du problème des rebond avec une démo sur oscilloscope, comment puis-je fait un debounce par programme ? ou faut-il obligatoirement le faire de façon matériel ?

Salut,

pour le faire de façon logiciel, il faut configurer un Timer ( le timer 2 ), qui déclenchera une interruption toute les X millisecondes ( X dépendera de tes contacts, 2ms peut-être bien ) qui appellera la fonction de lecture des entrées.

de façon matériel, des condensateurs de 10 nF ( c' est un exemple ) entres les entrées et le "GND".

ou faut-il obligatoirement le faire de façon matériel ?

Non bien sûr !

Mais c'est tellement plus simple et plus efficace --> tu empèche le défaut de se manifester au lieu de le subir et de traiter ses conséquences.
Ca c'est mon avis, chacun fait comme il le sent.
j'irai plus volontiers sur des condos de 100 nF qui est une valeur passe-partout pour les découplages secondaires.