LOCODUINO

Un décodeur d’accessoires universel

Un décodeur d’accessoires universel (1)

.
Par : Thierry

DIFFICULTÉ :

Attention : cette bibliothèque a été remplacée par Bibliothèque Commanders et Bibliothèque Accessories (1). Ces nouvelles bibliothèques sont plus simples à utiliser : presque plus de pointeurs et beaucoup d’autres simplifications... Elles gèrent aussi beaucoup plus de donneurs d’ordre (bus CAN ou I2C) et d’accessoires (moteur pas à pas...). Bref, je vous conseille vivement de passer aux successeurs de UAD !
La bibliothèque objet de cet article ne sera plus d’ailleurs maintenue pour cause de quantité de temps de son auteur limitée !

Le pilotage d’accessoires est une partie souvent compliquée et/ou onéreuse à mettre en place. La grande diversité d’appareils à commander rend la généralisation difficile, et trouver, dans la jungle des fabricants et des modèles le décodeur DCC adapté à tel ou tel type d’accessoire, n’est pas toujours simple, et encore moins économique. Je vous propose d’utiliser une librairie dédiée qui va tenter de fédérer tous les accessoires sous une bannière Arduino, et pour un prix bien inférieur.

Schéma général
Schéma général

Voici l’organisation générale de la librairie. Ne soyez pas effrayés par l’apparente complexité du modèle. Tout s’explique !

Pour piloter quoi ?

Voyons d’abord quels types d’accessoires sont à piloter. Il s’agit du cadre ’Accessories’ à droite du schéma. Je les range en deux catégories : les motorisés (des actionneurs en jargon électronique), et les lumineux.

La catégorie ’motorisés’ comprend tous les aiguillages, les dételeurs, mais aussi les ponts tournants, les passages à niveau motorisés, jusqu’aux accessoires de décor type roue de fête foraine ou moulin à vent... Bref tout ce qui bouge grâce à un moteur ! Parmi les moteurs utilisés dans ces accessoires, il y une grande diversité. Prenons le cas des aiguillages. Il y a l’aiguillage classique, à double solénoïde (bobine pour simplifier) et trois fils qu’il faut commander par une impulsion (Jouef, Fleischmann, Arnold, Peco, Marklin...) . Il y a l’aiguillage à deux fils pour une seule bobine, type Kato ou Rokuhan, dont la direction de fonctionnement dépend de la polarité des fils de commande.

Toujours chez Kato, nous avons le double crossing :

Double Crossing Kato
Double Crossing Kato

Il s’agit d’une sorte de pool d’aiguillages qui regroupe quatre aiguillages, soit quatre bobines pour deux fils, et qui consomme surtout de 1.5 à 2 ampères à chaque mouvement ! Et comme cela ne suffisait pas, il y a les aiguillages commandés par des moteurs lents, type Fulgurex, Tortoise, Cobalt (deux fils) ou Conrad (trois fils). Il y a aussi les servos, catégorie à part de moteurs lents indexables, c’est à dire dont la position n’est pas limitée à une ou deux. Tout comme les moteurs pas à pas (stepper) pilotés en général par deux ou quatre fils. Donc on le voit, il existe quantité de motorisations différentes qu’il va falloir alimenter et piloter via une interface commune.

La seconde catégorie comprend tous les éclairages de ville, les feux de signalisation, routière ou ferroviaire. On peut y ajouter les clignotants de chantier, de passage à niveau, les enseignes publicitaires, de pharmacie, ou les simulations d’écran de télé ou de poste à souder... Bref tout ce qui s’allume, s’éteint, clignote...

En bas du dessin, il y a les groupes d’accessoires, utiles pour associer des positions ou des états d’accessoire sous un unique identifiant DCC. Les groupes d’accessoires sont pratiques pour faire bouger des aiguillages l’un après l’autre, ou changer l’état d’un feu de signalisation comprenant plusieurs leds.

Comment donner les ordres ?

Tout à gauche sur le schéma, il y a les Commanders (prononcez ’commandeur’, pour faire référence au grade de Commandeur dans l’univers Star Trek !) qui sont là pour simplifier le traitement de toutes les possibilités de commande. Il y a un Commander DCC qui utilise une librairie disponible sur Mynabay.com. Cette librairie analyse les paquets DCC sur la voie (à travers un petit montage électronique proposé sur ce même site, qui va réduire la tension de 18v à 5v de manière à être acceptable par l’Arduino) et les envoie à l’Arduino. Elle est également utilisée dans un article à paraître « Un moniteur de signaux DCC ». On n’a pas forcément envie d’utiliser du DCC pour piloter ses accessoires, et la librairie peut très bien s’en passer. Par contre elle utilise partout les codes DCC des accessoires pour les identifier de manière unique, il faut donc les remplir. Un code DCC est un numéro d’accessoire compris entre 1 et 1024, et un 0 ou un 1. Cela correspond sur ma commande DCC Mobile Station 2 de Trix aux numéros d’aiguillages de 1 à 320. Le 0 représente la touche Rouge, le 1 la touche Vert.

Le Commander pour les boutons peut gérer des poussoirs à une position, des interrupteurs à deux ou plusieurs positions, les potentiomètres...

Le Commander série est destiné à recevoir des ordres par une liaison série : console série de l’IDE Arduino ou récepteur BlueTooth/WiFi/RF ...

Donc moins de code à écrire pour les boutons, juste une déclaration dans un Commander.

Et avec quoi on fait ça ?

Au centre de tout ça en vert, le fichier ino de votre projet. Il contrôle l’Arduino et joue les chefs d’orchestre. J’utilise un Arduino Mega2560, une déclinaison de l’Arduino Uno qui dispose de bien plus de ports d’entrée/sortie en digital et en analogique. J’ai trouvé le mien, un Arduino Mega2560, autour de 10€ sur la toile. C’est un compatible asiatique (rappelons que ce n’est pas interdit puisque l’Arduino est Open Source...), mais il marche bien... 54 ports sont disponibles, ce qui fait que même si un shield pour Uno recouvre le Mega, une bonne partie des ports reste accessible pour d’autres applications.

Besoin de puissance ?

Mais l’Arduino, fut-il Mega, possède tout juste assez de puissance pour alimenter au plus une demi douzaine de leds, ou deux servos. Et il n’est pas capable d’alimenter le plus petit moteur... En effet, le Mega peut servir jusqu’à 50mA par port, et au maximum 500mA tous ports confondus. On voit bien que le moindre aiguillage réclamant 800mA, voire beaucoup plus, fera griller votre Arduino ou au mieux il disjonctera... Pour compenser cela, il faut disposer d’une source de puissance extérieure, en clair un petit transfo comme le chargeur de votre téléphone, et faire transiter cette puissance par des circuits spécialisés. C’est le rôle des Drivers en bleu sur le dessin. Chaque Driver dispose d’un certain nombre de ports qui sont physiquement les endroits où brancher les accessoires. Ces ports sont de types différents selon le type d’appareil à y connecter. Par exemple le DriverL293d, le shield Arduino ci dessous, dispose de quatre ports pour des moteurs/lumières (ce sont les mêmes...) en bleu foncé, de deux ports pour des servos en bleu clair, et d’un port pour un stepper en vert... Si sur le dessin il y a trois ports stepper, c’est qu’en réalité il est possible d’en brancher un par quatre fils, ou deux par deux fils chacun ! Il importe donc de choisir le bon port. Notez que certains driver comme les relais ou l’Arduino lui même n’ont pas un nombre fixe de ports. Cela dépendra de l’usage que vous en ferez ! Détaillons les différents types de driver disponibles aujourd’hui :

Il y a le shield L293D :

Shield L293D
Shield L293D

Ce module est disponible sur la toile pour moins de dix euros. Il peut commander quatre moteurs DC en PWM, ou deux servos et quatre moteurs DC, ou un stepper. La puissance est limitée à 0,6A par canal, et il n’est pas empilable avec d’autres shields. Sur un Arduino classique il est donc limité définitivement à quatre actionneurs. Tous les canaux PWM de l’Arduino sont monopolisés par le shield, même s’il ne les utilise pas tous ! Sur le Mega, seuls des pins analogiques et digitales restent disponibles pour d’autres applications.

Le module L298N :

H Bridge L298N
H Bridge L298N

Il s’agit un petit circuit trouvé sur la toile à moins de 8 euros. Deux moteurs DC ou un stepper sont pilotables, avec 2A Maxi pour chacun. Chaque moteur réclame deux pins numériques pour se mettre en route. Ce qui fait un vingtaine de moteurs pilotables sur un Mega !

Les relais :

Différentes cartes relais compatibles Arduino.
Différentes cartes relais compatibles Arduino.

Les barres de relais sont disponibles par un, deux, quatre, huit voire seize et tout à moins de dix euros ! Les relais sont bruyants, mais ils assurent une transmission de puissance bien supérieure à ce que permettent des H Bridges comme les deux précédents...

L’Arduino lui même est un Driver possible pour des actionneurs de faible puissance comme des servos, et bien sûr pour des leds. Il faut malgré tout faire attention de ne pas dépasser ses capacités en y branchant trop d’appareils consommateurs. Comme le driver de relais, l’Arduino n’a pas un nombre fixe de ports. La quantité voulue de ports de chaque type doit être spécifiée à la création du driver.

Faute de pouvoir tester, il y a encore beaucoup de drivers potentiels que je n’ai pas implémenté dans la librairie. C’est le cas des transistors. Un transistor peut être utilisé en commutation, par exemple pour commander une bobine de moteur d’aiguille, et se pilote en tout ou rien comme un relais.

La suite, pour ’décoder’ un exemple fourni dans la librairie, est présenté dans « Un décodeur d’accessoires universel (2) ».

12 Messages

  • Un décodeur d’accessoires universel (1) 8 décembre 2014 22:17, par stéphane

    Excusez moi mais où trouver cette librairie ?

    Merci beaucoup et merci encore pour ce super site. Je me lance dans Arduino à mon tour et je dois dire que pour le moment ma tête à mal ;-)

    Répondre

  • Un décodeur d’accessoires universel (1) 9 décembre 2014 09:33, par Thierry

    Bonjour, et merci pour votre commentaire. Effectivement, il n’y a pas de lien direct vers la librairie, et je tente de modifier l’article pour l’ajouter. En attendant, vous pourrez la trouver là. Je vous conseille fortement de prendre la V4 Beta plutôt que la version officielle...

    Répondre

  • Un décodeur d’accessoires universel (1) 22 décembre 2015 20:40, par cardon samuel

    Bonjour,

    Afin de piloter un "double crossover" kato, il faut un bridge L298N je suppose afin de passer les 2A ?

    Répondre

  • C’est exactement ça. Il peut délivrer 4A en crête, ce qui est large pour les moteurs Kato. Et on le trouve pour pas cher sur ibete ou au pays de la Grande Muraille... Il y a aussi le DRV8829 qui peut délivrer 5A, mais il est un peu plus cher...

    Répondre

  • Un décodeur d’accessoires universel (1) 26 janvier 2016 22:35, par cardon samuel

    Bonjour,

    Encore des question concernant le double crossing Kato.
    Comment faut-il le brancher au bridge L298 ?
    A priori il me faudra 2 sortie arduino connectées sur 2 pin sur le bridge. mais les fils d’alimentation et ceux allant sur le crossing se connectent ou ?

    Merci pour l’aide

    Répondre

  • Un décodeur d’accessoires universel (1) 26 janvier 2016 23:09, par Thierry

    C’est exactement ça. Deux sorties de l’Arduino qui vont piloter un moteur, et le double crossover connecté à cette sortie moteur par les fils rouge et noir. Les moteurs Kato fonctionnent avec seulement deux fils : la polarité décide de la direction du moteur, et donc des aiguilles droites ou déviées. Les fils d’alimentation se connectent sur l’entrée +12V / GND du L298N.
    Par exemple sur cette image https://www.fabtolab.com/image/cach...
    L’Arduino dse connecte à droite sur in1/in2 pour le moteur A ou in3/in4 pour le B. Les sorties moteur sont en jaune à gauche. Entre les deux sorties moteur, l’entrée de puissance VMS (5 à 30V) et GND. Une sortie 5V est disponible pour alimenter l’Arduino si besoin. A noter que dans ce cas la masse devra être commune entre l’Arduino et les moteurs.

    Répondre

  • Un décodeur d’accessoires universel (1) 17 novembre 2016 12:25, par bagou91

    bonjour,
    j’ai lu vos 3 articles à propos de ce décodeur universel. J’ai également commencé à regarder la librairie et les exemples fournis avec.
    Je débute dans le monde numérique du modélisme ferroviaire et j’essaye de comprendre comment cela fonctionne à travers la lecture des différents articles du site.
    J’ai déjà réaliser des montages électroniques à base d’arduino, donc j’ai un peu de connaissances pour les programmer.

    J’ai des aiguillages Jouef à 3 fils (2 solénoïdes). Comment les actionner avec un bouton poussoir via un driver L298N ou ULN2803A ?
    Je n’ai pas trouver d’exemple d’utilisation.

    Merci pour votre aide.

    Répondre

  • Un décodeur d’accessoires universel (1) 28 mars 2017 13:30, par morin jacky

    je fonctionne en digital avec multimaus Roco et j’ai des aiguillages Rokuhan avec 2 fils.
    Comment faire pour les piloter par mon décodeur ?

    Répondre

  • Un décodeur d’accessoires universel (1) 28 mars 2017 23:05, par Dominique

    Il faudrait un peu plus de précisions : dans la documentation des aiguilles Rokuhan, à quoi correspondent ces 2 fils, quel est le schéma de branchement préconisé ?

    Répondre

Réagissez à « Un décodeur d’accessoires universel (1) »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Bibliothèques »

Les derniers articles

Les articles les plus lus