LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

lundi 25 septembre 2017

6 visiteurs en ce moment

Un décodeur d’accessoires universel (1)

. Par : Thierry

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

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

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

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

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.

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

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 »

Bibliothèque Servo

Bibliothèque SoftWare Serial

Bibliothèque Serial

Bibliothèque EEPROM

Bibliothèque Wire : I2C

Bibliothèque LCD

Bibliothèque ScheduleTable

Bibliothèque MemoryUsage

Bibliothèque EEPROMextent

Bibliothèque Commanders

Bibliothèque Accessories (1)

Bibliothèque Accessories (2)

Bibliothèque LcdUi (1)

Bibliothèque LcdUi (2)

Les derniers articles

Bibliothèque LcdUi (2)


Thierry

Bibliothèque LcdUi (1)


Thierry

Bibliothèque Accessories (2)


Thierry

Bibliothèque Accessories (1)


Thierry

Bibliothèque Commanders


Thierry

Bibliothèque MemoryUsage


Thierry

Bibliothèque Wire : I2C


Dominique, Guillaume

Bibliothèque Serial


Dominique, Guillaume, Jean-Luc

Bibliothèque SoftWare Serial


Dominique, Guillaume

Bibliothèque LCD


Dominique, Guillaume, Jean-Luc

Les articles les plus lus

Bibliothèque Wire : I2C

Bibliothèque Serial

Un décodeur d’accessoires universel (1)

Bibliothèque EEPROM

Bibliothèque Commanders

Bibliothèque Servo

Bibliothèque LCD

Un décodeur d’accessoires universel (3)

Bibliothèque Accessories (1)

Bibliothèque SoftWare Serial