LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: jcg95 le avril 10, 2023, 03:53:26 pm

Titre: Mini reseau analogique echelle n
Posté par: jcg95 le avril 10, 2023, 03:53:26 pm
Bonjour,
J'ai déjà réalisé un réseau complet en numérique et je souhaite passer à une autre forme de réalisation, des petits plateaux de 45x45 cm de côté avec des décors différents sur chaque plateau. Ces plateaux pourront être reliés et interconnectés ensuite. Je souhaite surtout réaliser des décors avec animations différentes, toutes à base d'Arduino que j'ai découvert, il n'y a pas très longtemps et que j'ai apprécié immédiatement.
Mes plateaux auront comme thèmes : un paysage de village avec zone industrielle (les portes et mouvement de certains véhicules seront mus automatiquement), un petit paysage de montagne avec de l'éclairage et surtout un téléphérique fait maison), un circuit automobile où les voitures seront mobiles et suivront un tracé déterminé, un paysage de fleuve avec un pont levant (type pont de Londres), et d'autres idées à venir. Les deux premiers sont terminés et "presque" fonctionnels. Une voie unique fera le lien entre tous ces plateaux et parcourra la longueur selon les raccordements de mes plateaux.
C'est cette voie qui me pose un problème actuellement et pour laquelle j'ai besoin de votre aide.
J'ai choisi de présenter cette voie en analogique, car je n'ai pas besoin de toute la sophistication du numérique et que j'ai déjà mon premier réseau totalement numérique. Je souhaite que tout soit géré par Arduino et en particulier la locomotive qui fera le trajet aller-retour sur cette voie.
J'utilise des nanos (ici en phase de test j'utilise une Uno) et pont en H (un mini L293D).

Voici le schéma de mon montage. (en bas de page)


Voici le programme simplifié au maximum (le programme final est bien plus complet) mais contient le nécessaire pour faire rouler (théoriquement) ma locomotive.
/*
  L'objectif est de faire faire des aller-retours à une locomotive analogique entre les deux extremites de la voie
 
  Utilisatioin de mini L293D pour gérer l'alimentation de la voie.
  La vitesse de la locomotive utilise une PIN PWM

*/

//************************************************************************************//
// Association des entrées du Mini L293D, aux sorties utilisées sur notre Arduino Uno //
//************************************************************************************//

//*************************//
// Constantes du programme //
//*************************//
#define borneIN1        4       // 4 On associe la borne "IN1" du L293D à la pin D4 de l'Arduino
#define borneIN2        5       // 5 On associe la borne "IN2" du L293D à la pin D6 de l'Arduino
#define borneENA        7       // 7 On associe la borne "ENA" du L293D à la pin D7 de l'Arduino (PWM possible sur cette broche)
#define delaiChangementVitesse  10        // Défini un petit délai, exprimé en millisecondes, avant tout autre changement de vitesse
#define vitessealler            254       // signal PWM, pour definir la vitesse du moteur Pas besoin d'une précedure d'acceleration/deceleration

//*******//
// SETUP //
//*******//
void setup() {
  Serial.begin(9600);
  pinMode(borneIN1, OUTPUT);
  pinMode(borneIN2, OUTPUT);
  pinMode(borneENA, OUTPUT);
}

//**************************//
// Boucle principale : LOOP //
//**************************//
void loop() {
    digitalWrite(borneIN1, HIGH);                 // L'entrée IN1 doit être au niveau haut
    digitalWrite(borneIN2, LOW);                  // L'entrée IN2 doit être au niveau bas   
    delay(10000);
    configurerSensDeRotationPontA(false);
    VitesseMoteur(vitessealler);            // Met à jour la vitesse du moteur, en modifiant le rapport cyclique du signal PWM envoyé
    delay(delaiChangementVitesse);                // ... et on rajoute un petit délai pour que tout n'aille pas trop vite !
    delay(1000);
    configurerSensDeRotationPontA(true);
    VitesseMoteur(vitessealler);            // Met à jour la vitesse du moteur, en modifiant le rapport cyclique du signal PWM envoyé
    delay(delaiChangementVitesse);                // ... et on rajoute un petit délai pour que tout n'aille pas trop vite !
    delay(1000);
}
//************************************************************************************//
// Fonction : configurerSensDeRotationPontA()                                         //
// But :      Permet de définir le sens de rotation du moteur branche sur le pont A    //
//************************************************************************************//
void configurerSensDeRotationPontA(boolean sensDeRotation) {

  if(sensDeRotation == true) {
    // Configuration du L293D en "marche avant", pour le moteur connecté au pont A. Selon sa table de vérité, il faut que :
    digitalWrite(borneIN1, HIGH);                 // L'entrée IN1 doit être au niveau haut
    digitalWrite(borneIN2, LOW);                  // L'entrée IN2 doit être au niveau bas   
  }
 
  if(sensDeRotation == false) {
    // Configuration du L293D en "marche arrière", pour le moteur câblé sur le pont A. Selon sa table de vérité, il faut que :
    digitalWrite(borneIN1, LOW);                  // L'entrée IN1 doit être au niveau bas
    digitalWrite(borneIN2, HIGH);                 // L'entrée IN2 doit être au niveau haut
  }
}

//************************************************************************************//
// Fonction : VitesseMoteur()                                                         //
// But :      donne la vitesse de rotation du moteur branché sur le pont A            //
//************************************************************************************//
void VitesseMoteur(int nouvelleVitesse) {
 
  // Génère un signal PWM permanent, de rapport cyclique égal à "nouvelleVitesse" (valeur comprise entre 0 et 255)
  analogWrite(borneENA, nouvelleVitesse);
}

Mon problème est que ce montage et ce programme fonctionnaient parfaitement, mais que je n'arrive plus, maintenant, à faire rouler ma loco. Elle nécessite 12V pour rouler, mais la sortie du L293D ne produit pas suffisamment (autour de 5 V seulement). Je ne comprends pas que ça ait marché et plus maintenant.
Comment faire en sorte que le L293D produise ce qu'il faut ?
L'alimentation produit bien du 12 V (vérifié).
Merci de votre aide. SI cela vous intéresse je pourrai compléter ce sujet avec les différentes réalisations.
Cordialement
Titre: Re : Mini reseau analogique echelle n
Posté par: msport le avril 10, 2023, 05:29:10 pm
Bonjour,
je n'ai pas regardé le programme, mais avant, le GND du module n'est pas référencé au GND de l’Arduino.
Et il est probable que le VCC du module doive être alimenté en 5V depuis l'Arduino. (voir la notice)
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 10, 2023, 05:54:43 pm
Merci MSPORT pour ton retour. J'ai relié le VCC et le GND du L293D à la UNO et ça ne change rien.
Voici le nouveau schéma.
(http://)

Merci.
Titre: Re : Mini reseau analogique echelle n
Posté par: msport le avril 10, 2023, 06:06:53 pm
Halte au feu : le VIN c'est normalement 9 ou 12V !

... reste à tester le module en solo :

alimenter le 5V / GND
IN1 au 5V
IN2 au GND
EN1 au 5V puis au GND

idem pour le 2e canal.
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 10, 2023, 07:20:40 pm
Merci encore msport, j'ai corrigé mon schéma pour bien brancher le VCC du L293D au 5V de l'arduino. Même comme cela, ça ne change rien.
Pour le test en solo, une alimentation en 5V ne me permet pas de voir si ma voie est correctement alimentée en 12 V. Sinon, le module juste alimenté sans connexion à une Arduino et à un programme corrects ne fonctionne pas, elle ne fournit rien du tout en sortie.
En réponse au programme, le L293D réagit correctement via les LED associées aux sorties A+ et A- qui s'allument alternativement selon le sens donné par le programme. Mais une tension trop faible.
Un testeur d'alimentation de voies n'allume que les LED Rouge et Jaune indiquant que la tension est comprise entre 5 et 9 V, soit loin des 12 nécessaires qui allumerait le vert en plus.
Nouveau schéma :
Titre: Re : Mini reseau analogique echelle n
Posté par: Tony04 le avril 10, 2023, 09:29:01 pm
Bonsoir jcg95,

je viens de me casser les dents avec le même problème et cela venait tout simplement d'un 12V trop limite en tension (11,8V). Essaye avec une tension légèrement supérieure à 12V pour voir.

Cordialement
Antoine
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 10, 2023, 10:04:53 pm
Bonsoir Tony04,
Mon alimentation donne12.4 V (testé au multimètre). J’ai essayé avec du 24v, théoriquement compatible en entrée avec une L293D,  ça a fournit plus mais j’ai cramé le L293D.
Je vais essayer avec un peu plus que 12 V mais je ne sais pas si je trouverai des alimentations le permettant sur le marché.
En tout cas merci et je vous tiens au courant
Titre: Re : Mini reseau analogique echelle n
Posté par: Tony04 le avril 10, 2023, 10:37:21 pm
De plus j'ai mal regardé ton schéma car chez moi j'utilisais un L298 plus costaud, mais pourquoi ne pas en essayer un ?
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 10, 2023, 10:39:13 pm
J’ai exactement le même problème avec un L298
Titre: Re : Mini reseau analogique echelle n
Posté par: Tony04 le avril 10, 2023, 10:42:59 pm
Et avec la loco directement sur le 12 V, tourne-t-elle normalement ?
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 10, 2023, 10:45:33 pm
Je n’ai pas essayé de peur de cramer la loco mais je vais tenter tout de même demain matin.
Merci et bonne soirée
Titre: Re : Mini reseau analogique echelle n
Posté par: msport le avril 11, 2023, 10:27:12 am
Bonjour,

la loco peut être testée en 5V ...

Et pour revenir 8 posts en arrière, si les modules moteur ont pris du 12 V (Vin) sur leur VCC, il ne faut plus en espérer grand chose ...
Titre: Re : Mini reseau analogique echelle n
Posté par: msport le avril 11, 2023, 11:11:02 am
... et pour tester vos modules :
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 11, 2023, 11:42:49 am
Bonjour,
Je viens de tester ma loco en direct 12v et elle ne marchait pas, mais j'en ai essayé une autre qui elle fonctionne parfaitement en direct ou via le montage présenté.
C'est donc ma loco qui a pris un "chtar". Comme c'était la seule loco analogique dont je disposais, je m'acharnais avec elle. L'autre que j'ai essayée est digitalisée, mais fonctionne tout de même sur ma voie de test analogique.
J'ai changé l'arduino UNO et le module L293D qui ont certainement été affectés par la mauvaise connexion VIN.
Je vais donc pouvoir continuer mes tests de l'automatisation des aller-retour avec des temps de pause à chaque extrémité et à l'arrivée en gare.  (j'utilise de interrupteurs magnétiques).
Si cela vous intéresse, je pourrai continuer ce sujet.

Désolé de vous avoir déranger avec mes problèmes que j'aurais dûs vérifier par avant.
Merci encore, il me faut maintenant voir si je peux réparer ma loco.
Titre: Re : Mini reseau analogique echelle n
Posté par: msport le avril 11, 2023, 12:36:09 pm
Bon courage, et bravo Antoine, tu as identifié la problème.
Titre: Re : Mini reseau analogique echelle n
Posté par: jcg95 le avril 11, 2023, 04:13:28 pm
J'ai trouvé d'où venait le problème.
Mon objectif était de gérer les aller-retour avec des capteurs magnétiques. Pour cela, il me fallait placer un aimant sous la locomotive, or, cette locomotive a quelques particularités qui ont généré ces dysfonctionnements.
L'alimentation entre le plus et le moins est gérée par la structure même de la locomotive qui est complétement métallique. Sur la photo, on voit bien une ligne de séparation sur toute la longueur. En la démontant, pour tenter de la réparer après mes problèmes, j'ai constaté que ces deux moitiés alimentaient les deux pôles.
On voit également aux deux extrémités, deux points (marqués par les flèches) sont les deux LEDS de l'éclairage avant et arrière de cette locomotive. Ces LEDS sont également alimentées par les côtés métalliques et laissent dépasser très légèrement les deux fils de ces LEDS.
Pour mes essais, j'avais donc placé un petit aimant (sur la photo, celui-ci a été déplacé au centre et collé sur du double-face pour éviter les faux contacts) qui en fait adhérait aux fils des LEDS créant ainsi un faux contact, voire un court-circuit. Et c'est de là que venait tous mes problèmes.
Après avoir déplacé ces aimants et utilisé du double-face, tout redevenait comme avant. C'est pour cela que je ne comprenais pas pourquoi, j'avais déjà réussi à faire fonctionner cette locomotive, avant de placer mes aimants.
Ceci pourra peut-être être utile à quelqu'un.
Merci encore pour votre aide.
Titre: Re : Mini reseau analogique echelle n
Posté par: Tony04 le avril 11, 2023, 04:40:21 pm
Il fallait savoir en effet !
Titre: Re : Mini reseau analogique echelle n
Posté par: loulout le août 03, 2023, 11:52:22 pm
J'ai un projet assez similaire en analogique, mais avec 3 rames (HOm) en va-et-vient en voie unique avec croisement possible en gare intermédiaire, et avec des capteurs Hall pour détecter l'approche des trains. Le code du programme inclus dans ce topic devrait donc bien m'aider...

D'autre part j'ai créé ma 1ere centrale DCC avec une carte Uno (Wifi Rev2) et le Motor Shield Arduino. Comme je suis débutant dans Arduino, j'ai quelques questions concernant le réseau analogique :
Titre: Re : Mini reseau analogique echelle n
Posté par: loulout le août 05, 2023, 12:10:18 pm
Bon, j'ai finalement pu répondre aux 3 premières questions et à la moitié de la 4e. Je ne parvenais pas à obtenir le courant nécessaire dans les voies à cause d'une particularité (encore une) de la carte Uno Wifi Rev2 que j'utilise. Dans ce cas il faut relier les broches 10 et 11 entre elles pour utiliser le canal B.