LOCODUINO

Forum de discussion
Dépôt GIT Locoduino

jeudi 19 janvier 2017

33 visiteurs en ce moment

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Assemblage des éléments d’une mini-centrale DCC

. Par : Dominique

L’article N°1 de la série "Comment piloter trains et accessoires en DCC   avec Arduino" présentait le montage minimal pour tester la bibliothèque CmdrArduino, décrite en détail à l’article N°2.

Nous allons assembler maintenant les ingrédients matériels et logiciels d’une petite centrale DCC  .

L’architecture générale d’une centrale DCC  

On a vu comment une carte Arduino peut générer des signaux DCC   de commande de vitesse, de fonction et d’accessoire, voire de programmation.

Entre notre carte Arduino et les rails, il faut, bien-sûr, amplifier ces signaux pour qu’ils puissent commander les moteurs des locomotives (via son décodeur) à partir de l’alimentation électrique du réseau : il faut un Booster. Ce Booster convertit un petit signal 0-5 volts de quelques milliampères en un gros courant de 2 à 3 ampères sous +15 à -15 volts (+12 à -12 volts pour le N).

Ensuite, et surtout, il faut des organes de commande pour décider quelles commandes DCC envoyer vers les rails selon la volonté du conducteur (vous) : il faut une manette de commande, par utilisateur et par train, de préférence.

Enfin, notre centrale doit pouvoir réagir automatiquement à certains événements comme la détection de présence d’un autre train qui occupe le prochain canton, ou un carré qui nécessite un arrêt devant le feu :

  • pour le découpage du circuit en Cantons, pour la régulation du trafic, en agissant directement sur les commandes de vitesse des locomotives,
  • ou pour l’activation des feux ou le changement de sens des aiguilles, en agissant sur les commandes des accessoires

Notre système complet pourrait ressembler à cette architecture générale :

JPEG - 221.9 ko

Mais une telle architecture dépasserait allègrement les limites de cet article qui ne traitera pas :

  • de tous les types de capteurs (courant, infrarouge, RFID, etc…),
  • de tous les types de manettes, détecteurs, PC, tablettes, smartphone et leurs protocoles de communication (LocoNet, XpressNet, S88, TCP/IP, WiFi, Bus, etc..),
  • et des alimentations électriques.

Ces sujets sont traités dans d’autres articles ailleurs dans ce site.

Mais pour se fixer les idées, nous allons décrire un exemple de mise en oeuvre d’une voie unique pour un train unique capable de circuler entre 2 gares aux extrémités selon un va-et-vient automatique ou manuel.

Tous les éléments de cet exemple pourront être réutilisés dans votre projet.

Compléter la centrale avec un Booster

Une broche de sortie d’un Arduino ne peut délivrer que 40 mA maximum (mais compter plutôt sur 20 mA) : il est donc impossible de faire rouler une loco qui a besoin de plusieurs centaines de milliampères. Il faut, d’une part, amplifier le signal et, d’autre part, monter la tension à 12-13 Volts (pour du N) ou 15 Volts (pour du HO).

Il faut donc un module d’interface appelé Booster dans la littérature ferroviaire. En réalité c’est un hacheur dit 4Q (pour 4 quadrants ou pont en H), réversible en tension et en courant dont la tension de sortie moyenne varie entre -15V à 15V.

On trouve des modules tout faits dans le commerce qui semblent faits pour cela (mais c’est un heureux hazard !).

Le principe de ce booster est le suivant :

On peut représenter le booster par un montage de transistors de puissance en H selon le schéma ci-dessous :

JPEG - 73.1 ko

Le signal DCC généré par notre Arduino est appliqué à l’entrée DIR qui commande l’ouverture de 2 transistors/commutateurs et la fermeture des 2 autres, de telle sorte que la tension envoyée aux rails est soit dans un sens, soit dans l’autre sens. On a ainsi toute la puissance disponible mais elle est positive pendant 50% d’un bit du signal DCC et négative pendant l’autre 50%.

Le module à base de LMD18200 ci-dessous remplit exactement cette fonction.

JPEG - 165.6 ko

Le signal DCC de notre Arduino est connecté à l’entrée DIR. Ce signal DCC sera généré en permanence par l’Arduino par un processus sous interruption, tournant en tâche de fond.

Une broche de sortie de l’Arduino sera connectée à l’entrée PWM   : elle permettra de commander la livraison ou l’arrêt du courant sur les rails, à partir du logiciel (c’est important pour de multiples raisons de sécurité que nous verrons dans le logiciel).

La masse de l’Arduino est reliée à la masse du Booster et l’entrée BRAKE est mise à la masse car elle n’est pas utile dans cette application (on préfère se servir des paramètres CV de la loco).

Le circuit LMD18200 comporte aussi 2 signaux de sortie qui ne sont pas câblés sur les borniers :

  • C/S, analogique, est proportionnel au courant délivré
  • T/S, digital, indique si la température du composant dépasse 145°C.

J’ai choisi de raccorder ces sorties sur des entrées de l’Arduino, pour surveiller le booster et couper l’alimentation des rails dans les cas extrêmes.
Pour ce faire j’ai soudé 2 fils directement sur les pattes du LMD18200, sous le circuit imprimé :

JPEG - 41 ko

Entre temps j’ai trouvé une meilleure solution pour la mesure du courant DCC et détecter les court-circuits : en ajoutant un petit circuit de mesure de courant à base de Max471, intercalé en série dans l’alimentation continue du LMD18200, comme représenté sur cette figure :

Ajouter une manette

On ne peut pas faire plus simple qu’un potentiomètre, un inverseur de direction et un inverseur pour la commande de lumière. Dans notre exemple, j’ai mis 2 potentiomètres, l’un pour la marche avant, l’autre pour la marche arrière. Cela évite d’être obligé d’utiliser un potentiomètre à point milieu, difficile à trouver ou un inverseur de direction. Et l’avantage sera qu’en mode automatique les vitesses aller et retour pourront être différentes.

Ajouter un TCO

Le TCO le plus simple sera ici constitué de 3 Leds :

  • une Led verte pour matérialiser la marche avant,
  • une Led rouge pour matérialiser l’arrêt,
  • one Led jaune pour matérialiser la marche arrière,
  • un afficheur LCD de 2 lignes de 16 caractères pour afficher les paramètres utiles à la conduite.
JPEG - 799.3 ko

J’ai monté ces composants sur une plaque de plexi qui permet de voir l’électronique en action !

Les Leds de mouvement ci-dessus sont placées à gauche.

Pour équilibrer le TCO, j’ai placé d’autres éléments à droite (de bas en haut) :

  • un Inter Marche/Arrêt général,
  • un voyant vert présence tension d’alimentatio »,
  • deux Leds jaunes présence signal DCC sur les Rails,
  • une Led rouge arrêt du signal DCC (correspondant à la broche PWM  ),
  • un Inter Marche/Arrêt du DCC.

Ajouter des détecteurs

Nous utiliserons seulement 2 barrières infrarouges pour détecter le passage du train à l’approche des gares, afin d’automatiser l’arrêt automatique.

Le schéma est simple (n’importe quel transistor NPN devrait faire l’affaire) :

JPEG - 48.5 ko

Pour 2 détecteurs seulement j’ai monté les composants discrets sur une plaque pastillée.

JPEG - 669.4 ko

On place les diodes IR émettrice et réceptrice de chaque coté des rails :

JPEG - 287.2 ko

Il est possible, à ce stade d’envisager d’utiliser d’autres types de détecteurs tels que :

  • détecteur de consommation de courant
  • détecteur magnétique à effet Hall
  • détecteur de code barre
    qui feront l’objet de descriptions détaillées ailleurs dans ce site, tous ces détecteurs étant interfacés avec notre Arduino de manière équivalente à celle du détecteur décrit dans cet article.

Le schéma des connexions de notre Arduino

Un Nano suffit !

JPEG - 99.3 ko

Pour la construction, j’ai percé une plaque de plexi, fixé et connecté tous les composants

JPEG - 468.1 ko

Puis, sur une 2eme plaque plus petite, j’ai fixé l’Arduino Nano sur une plaque pastillée à l’aide de barrettes à souder et le booster LMD18200.

JPEG - 501.6 ko

Et le câblage de l’ensemble, en réunissant les 2 plaques de plexi :

JPEG - 376.8 ko

Pour l’afficheur LCD 16x2, un petite carte SerLCD permet de le raccorder avec 3 fils seulement (+5, 0V et la sortie Tx de l’Arduino).

JPEG - 12.5 ko
PNG - 26.1 ko

Que doit faire cette centrale avec tous ces ingrédients ?

C’est ce qu’on appelle une spécification. Elle décrit toutes les fonctionnalités de la centrale, qu’il faudra ensuite programmer :

  • Pilotage d’une seule locomotive ou train en mode DCC, 128 crans de vitesse. L’adresse DCC est programmable par configuration en EEPROM.
  • Un écran LCD permet de visualiser les paramètres de fonctionnement (adresse DCC, sens de la marche, cran de vitesse, vitesse réelle et km/h et cm/s, détections de passage devant les détecteurs IR, états d’automate, configuration des paramètres en EEPROM).
  • Deux réglages de vitesse indépendants pour la marche avant et la marche arrière :
    • en mode manuel, c’est la vitesse la plus grande qui impose le sens de la marche ;
    • en mode automatique, chaque sens dispose de sa propre vitesse ;
    • en mode configuration, les valeurs de 0 à 128 sont obtenues par l’addition de la rotation des 2 boutons.
  • Un commutateur permet la mise en ou hors service de l’éclairage de la locomotive.
  • Un commutateur permet le choix entre un pilotage manuel ou un Va-et-Vient automatique.
  • Un bouton poussoir MODE permet de choisir parmi 3 affichages et 10 écrans de configuration.
  • 3 Leds, à gauche, visualisent la marche du train :
    • vert : marche avant
    • rouge : arrêt. Cette Led s’allume aussi au passage du train devant un capteur IR
    • jaune : marche arrière
  • 3 Leds, à droite, visualisent le fonctionnement de la centrale
    • vert : présence tension si une alimentation 12 à 15 V est raccordée et en service
    • rouge : aucun courant n’est envoyé aux rails (arrêt du Booster)
    • jaune (paire) : visualise la tension sur les rails (l’inversion du courant permet d’allumer les 2 Leds)
  • Un commutateur Arrêt/Marche allume la centrale qui démarre une séquence d’initiatisation (c’est l’interrupteur Arrêt/Marche général).
  • Un commutateur d’alimentation des rails autorise l’envoi du courant DCC sur les rails (c’est un interrupteur logiciel car il est recommandé de couper l’alimentation DCC des rails avant d’installer ou retirer une loco).

Développer le logiciel pour l’Arduino

Maintenant que tout est réuni, la programmation pourrait commencer !
Mais, attention, notre Arduino doit faire pas mal de choses à la fois :

  • générer le signal DCC,
  • alimenter la bibliothèque CmdrArduino par des commandes de vitesse et de lumière qui dépendent des événements d’entrée suivants qu’il faut détecter,
  • lire les organes d’entrées (potentiomètres, boutons, inverseurs, capteurs infrarouge, sorties du Booster)
  • afficher des données sur le LCD
  • agir en automate ou en commande manuelle
  • allumer et éteindre des Leds
  • etc.. (vous verrez !)

Face à tous ces tâches, il faut éviter la programmation spaghetti, ou encore éviter de se mélanger les bogies quand le développement aura pris une certaine ampleur.

PNG - 152.3 ko

Nous aborderons la partie du logiciel dans la 4e partie

27 Messages

Réagissez à « Comment piloter trains et accessoires en DCC avec un Arduino (3) »

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 « Projets »

Un chenillard de DEL

Enseigne de magasin

Feux tricolores

Multi-animations lumineuses

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Une barrière infrarouge

Un capteur RFID

Un TCO xpressnet

Une animation sonore

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Calcul de la vitesse d’un train miniature avec l’Arduino

La génèse d’un réseau 100% Arduino

Une horloge à échelle H0

Simulateur de soudure à arc

Un automatisme de Passage à Niveau

La rétro-signalisation sur Arduino

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

La PWM : qu’est-ce ? (1)

La PWM : qu’est-ce ? (2)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

Les derniers articles

Un gestionnaire en C++ pour votre réseau (4)


Pierre59

Un décodeur DCC pour 16 feux tricolores


Dominique, JPClaude, Thierry

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)


bobyAndCo

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)


Dominique

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation


JPClaude

Un gestionnaire en C++ pour votre réseau (3)


Pierre59

Réalisation pratique d’un système de mesure de vitesse à l’échelle N


Dominique

Etude d’un passage à niveau universel


Dominique, JPClaude

Un gestionnaire en C++ pour votre réseau (2)


Pierre59

Gestion d’une gare cachée (3)


Jean-Luc

Les articles les plus lus

La PWM : qu’est-ce ? (1)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Une barrière infrarouge

Calcul de la vitesse d’un train miniature avec l’Arduino

Comment piloter trains et accessoires en DCC avec un Arduino (1)

L’Arduino et le système de commande numérique DCC

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

La génèse d’un réseau 100% Arduino