Décodeur d’accessoires avec un Arduino, partie 4
Grace aux 3 précédents articles nous pouvons maintenant piloter plusieurs servos depuis notre centrale grâce à un Arduino Uno.
Sur mon réseau T-trak je possède une jonction double Kato qu’il me faut piloter. Les aiguillages Kato sont motorisés par des bobines à 2 fils, il suffit d’inverser la polarité aux bornes de la bobine pour passer l’aiguillage de la position droite à la position déviée.
Dans le cas de la jonction double, elle est composée de 4 aiguillages donc 4 bobines, et il y a donc un appel de courant de l’ordre de 2 Ampère lors de l’activations de celles-ci.
Afin de pouvoir passer ces 2 Ampère sous une tension de 12V continu, il faut utiliser un petit module pilotable par l’Arduino: un L298N.
Voici donc l’adaptation du code disponible dans le précédent article afin de piloter cet aiguillage Kato.
UAD4SERVOS+KATO
1 fichier·s 3.19 KB
Voyons en détails les nouvelles lignes de code :
Nous commençons par définir le nombre de nouvel accessoire qui n’est pas un servo, ici 1
Cet accessoire est le 4ème dans la numérotation interne de l’Arduino, et pour plus de clarté dans le code nous le nommons CISOR_KATO.
Pour piloter le module L298N il faut un nouveau driver en plus de l’Arduino:
Nous définissons le driver en disant que le PORT 1 du L298N est piloté par les broches 9 et 10 de l’Arduino. Les broches 9 et 10 sont connectées sur les entrée IN1 et IN2 du L298N.
Nous additionnons ici le nombre d’accessoires servos et autres:
Les bobines sont considérées comme des moteurs à courant continu, à 2 sens de rotation. Ceci permet d’alimenter une fois dans un sens et une fois dans l’autre la bobine pour changer l’état de l’aiguillage.
Voyons le détail de la ligne:
- 26: est l’adresse DCC de l’accessoire en tenant compte ici du décalage de +4 de la centrale Multimaus.
- 0: correspond au code du premier bouton de manoeuvre des aiguillages sur la centrale
- 26: est l’adresse DCC de l’accessoire en tenant compte ici du décalage de +4 de la centrale Multimaus.
- 1: correspond au code du deuxième bouton de manoeuvre des aiguillages sur la centrale
- 5000: est le temps d’activation de la sortie du L298N. Attention cette valeur correspond à 5 secondes ce qui est beaucoup trop pour l’alimentation d’une bobine. Cette valeur est programmée pour avoir le temps de visionner les changements de tension sur un multimètre. Pour piloter la bobine je pense qu’une valeur de 150ms est suffisante.
Nous finissons par attacher l’accessoire à son port. Ici
- PORT12 correspond à la sortie 1 (bornes 1 et 2) du L298N
- 255 correspond à la tension que nous souhaitons sur cette sortie. La valeur peut aller de 0 à 255. 0 pour 0v et 255 pour la tension maximum suivant la tension d’alimentation du L298N, elle peut donc aller jusque 35v mais dans mon cas cela fait 12v.
Il reste une dernière correction à faire dans la librairie de l’UAD. Cette astuce m’a été donnée par Thierry l’auteur du code.
“Il y a effectivement une bêtise dans AccessoryMotorTwoWays.cpp : remplace LEFT par RIGHT sur cette ligne, juste le dernier argument :”
Thierry est en train de préparer une nouvelle version de UAD permettant de gérer correctement les feux de signalisation complexes français sans grand codage, et il ajoutera cette modif dans le lot… Il n’y aura donc plus besoin de corriger le fichier de la bibliothèque une fois la nouvelle version sortie.
Bonjour, Je me pose une question concernant le controle des aiguillages bobines à 3 fils genre Jouef/Roco avec un LN298. D’aprés vous est il possible de les controler avec 1 seule sortie du LN298: On brancherait les 2 fils de commande sur la même sortie mais avec des diodes dans des sens opposés. ainsi, en inversant la polarité, on sélectionnerait l’un ou l’autre des fils.
Je ne suis pas trés expérimenté en électronique et je n’ai pas de notion du courant que peut supporter une diode pendant 2-300 ms
Cela permettrait de controler 2 aiguillages avec 1 seul LN298
Merci pour vos explications