Perte du moniteur série pendant le déroulement d'un cycle sur une UNO

Bonjour, Le contexte : Je suis débutant aussi bien avec Arduino qu'en électronique, j'ai de bonnes notions d'informatique de gestion. J'ai commencé à jouer avec mon train électrique et Arduino. Pour ce faire j'ai fait les emplettes suivantes :

  • une carte UNO,
  • deux cartes qui contrôlent chacune quatre relais 5v (pour les aiguillages et dételeurs) ,
  • une carte qui peut contrôler deux moteurs CC,
  • quelques couples de Led émettrice/réceptrice IR.

Après de nombreuses heures de tâtonnement j'arrive à faire circuler un train contrôler les aiguillages et réaliser quelques manœuvres programmées. Pour affiner la gestion des circulations j'ai besoin de pouvoir modifier des variables dans le programme de la UNO sans modifier ce dernier, pour cela la liaison série via le port USB semble tout indiquée, le pilotage par un programme en C# ou autre via cette interface semble tout à fait abordable seulement, là, vient se loger le problème : Voici mon problème (celui qui m'occupe en ce moment) La connexion série avec le moniteur série de l'éditeur Arduino "tombe". J'ai codé un rapidement un programme en Delphi (6) pour voir mais la connexion "tombe" aussi. Mon hypothèse est que les moteurs des locomotives génèrent des parasites qui viennent faire "tomber" la liaison USB, j'ai cherché dans les forums mais si le problème a déjà été évoqué je n'ai pas réussi à le retrouver. Si quelqu'un connait ce problème ou un qui s'en rapproche merci d'avance de me dire si mon hypothèse est la bonne ou si c'est autre chose qui provoque la perte de liaison entre la UNO et le moniteur série.

Salut,

Tu peux nous montrer ton montage ? Schéma + photo si possible. Ca sent plus le problème de masse/surconsommation

Bon je vais essayer, mais pour l’instant je n’ai fait que des petits bout de schéma sur des feuilles volantes, et le câblage est un fatras innommable de fils partant d’une carte à l’autre en passant parfois des nappes bricolées maison, parfois par des grand bouts de fil tout seuls,
Petit détail qui a son importance, je suis daltonien donc il ne vaut mieux pas se fier à mes choix de couleur pour les fils :wink:
en plus simple j’ai honte :slight_smile:

En plus je ne sais même pas comment mettre une photo dans un post du coup j’en ai mis une en pièce jointe mais à mon avis elle ne sera pas adaptée à ta demande.

Bon de toutes façons le fait de faire un schéma propre ne devrait en aucun cas faire de mal, idem pour la clarification physique du câblage, mais ça va me prendre un peu de temps.

Je n’ai pas le temps pour détailler plus maintenant,
voilà toujours le schéma de principe global.
Dis-mois la partie qu’il faudrait détailler en premier lieu

MAsses.bmp (31.1 KB)

Ca arrive quand exactement que la liaison série est perdue ? Comme tu évoques des parasites moteur je suppose que c'est quand tu mets ta loco en marche ?

EDIT : je viens de calculer un truc : tu alimentes tes relais en 5V via arduino ? Si c'est le cas aie aie aie ... enfin normalement pas de dégâts puisqu'il semblerait que juste l'Atmega32u4 "lâche". Un relais comme ça de mémoire c'est 40-50 mA. x8 ... on a allègrement dépassé les capacités de l'Arduino

Le problème se situ à des moments différents. La séquence de manœuvre qui fonctionne bien se déroule en 22 étapes pour l'instant demande juste à voir le numéro de chaque étape s'afficher dans le moniteur série. Je n'ai fais que peu de tests, pour l'instant la liaison série est tombée plusieurs fois après l'étape 9 et plusieurs fois après l'étape 10

Pour la consommation des relais je n'y avais pas pensé. Bon le x8 j'imagine que c'est lorsque l'on commande les 8 relais en même temps, comme il me servent à commander des impulsions de courte durée 700 millis max et jamais simultanément. Je ne commute qu'un appareil de voie à la fois donc un seul relais en position travail à la fois et pendant une durée généralement de 500 millis.

Je viens de refaire des tests :

Le fait de faire la photo m'a obligé à déplacer un peu les cartes et débrancher et rebrancher les nappes vers les relais du coup ça a fonctionné il n'a pas perdu la liaison série pendant plusieurs cycle, puis l'a à nouveau perdu à l'étape 17 puis après un autre test il l'a perdu au bout de quatre cycle à l'étape 16 puis à l'étape 5 du 2nd cycle, ça semble complètement aléatoire.

Ok donc ça ressemble à un problème d'alimentation (alimentation trop faiblarde entrainant une chute de tension => le chip qui fait la conversion USB-Série reboot ou bien les masses ne sont pas bien tirée) Pour le x8 oui mais c'est vrai que si c'est un à la fois alors ...

Ce que je te conseille : - déjà tu peux essayer en débranchant les cartes relais : au moins si ça plante pas on aura bien localisé le coupable - si c'est bien ça : utiliser une autre alimentation - tirer des masses en étoile : tout bon montage doit être réalisé ainsi, surtout quand on a des gros consommateurs soudains (des relais par exemple ou des moteur). Chaque consommateur doit avoir ses propres lignez d'alimentation tirée depuis l'alimentation elle-même. C'est particulièrement vrai avec les Atmega qui sont très sensible à la qualité de l'alimentation. - solution à court terme : ajouter un condensateur sur l'arduino dans les pins 5V et GND. Utiliser une autre alimentation 5V pour les cartes relais.

Sinon que se passe-t-il lors des étape 9 et 10

en 9 et 10 il y a changement d’une aiguille (donc un relais en travail pendant 35 millis)
inversion du sens et modification de la vitesse de la loco

Effectivement le circuit et les aiguillages disposent d’une alim propre, mais toutes les cartes sont alimentées par l’Arduino et donc en l’occurrence par le port USB.

Je vais retrouver un petit transfo qui délivre du 5 volt (bon je joint une petit schéma pour que tu me dises si c’est bien ça une alimentation en étoile (je suis une truffe, comme je suis daltonien on m’a interdit l’électricité, l’électronique et les paras pour les paras je regrette pas vraiment)

Alim_Etoile.bmp (386 KB)

Oui c'est bien ça ;)

C’est affreux à chaque étape je mesure l’étendue de plus en plus abyssale de mon ignorance.
Bon j’ai cablé un petit bornier sur un vieux transfo que j’avais trouvé sur une brocante (2 x 5v + 2 x 12v + 1 masse commune) j’ai mesuré, elle délivrent raisonnablement bien les tensions annoncées aux bornes c’est déjà ça.
Pour la carte Arduino Motor shield pas de souci les bornes Power(VIN, GND) sont clairement identifiées.
Pour les carte relais, j’ai pas trouvé la doc et les bornes indiquées sont les suivantes :
P4(GND, IN1, IN2, IN3, IN4, VCC) d’une part et P3(JD-VCC, VCC) Jusqu’ici j’utilisais une nappe qui connectait P4 à 6 broches sur la platine d’essai que je reliais ensuite à la UNO.
Du coup j’ai l’impression que je vais devoir connecter P3.VCC et P4.GND à l’alim 5v ce qui m’obligerait à refaire mes nappes. j’avais vaguement caressé l’espoir de connecter l’alim directement sur P3 mais P3.JD-VCC ne m’inspire pas outre mesure comme masse.

D’autre part tant que je suis dans les problèmes d’alimentation, j’ai cherché dans les petits transfos que j’avais voir si il n’y en avait pas un susceptible de se connecter sur la borne de la UNO.
J’en ai trouvé cinq avec la bonne fiche, j’en ai éliminé 3 car ils ne délivraient que du 5v ou moins et les spécifications disent qu’il faut 7 à 12v sur cette connexion.
Il m’en reste donc deux potentiellement adaptés un 9v et un 10,5v par contre il me semble que le + et le - ne sont pas toujours aux mêmes endroits de la fiche (extérieur+ intérieur- ou l’inverse suivant le petit schéma sur le transfo) mais bien sur loi de Murphy oblige d’une part je ne suis pas sur de la signification du symbole sur le transfo 9v et l’autre n’en a carrément pas. De toutes façon je ne sais pas ce qu’attend la UNO sur sa borne.

J’ai joint le symbole avec mon interprétation mais est-ce la bonne et est-ce que ça correspond aux attentes de la UNO ?
Pour la UNO de toutes façons je peux éventuellement utiliser les fiches Power(VIN, GND) avec du 5v, mon vrai souci est quand même l’alimentation externe des cartes relais.

BORNE8aLIM.bmp (2.33 KB)

Bon je viens de trouver grâce au liens du forum "liens pour bien commencer avec Arduino" apparemnt la sortie de mon transfo est à l'envers pour l'utiliser avec la UNO. Exit le transfo. Reste les cartes relais