La Base Station DCC++

A l’origine, DCC++ est un projet open-source de l’américain Gregg E. Berman.
Il utilise un micro-controlleur arduino pour générer des signaux de commande DCC.
Ces commandes DCC sont utilisées pour contrôler les décodeurs DCC des locomotives et les accessoires du réseau.
DCC++ permet de réaliser à moindre côut une centrale DCC compatible avec les logiciels de gestion de réseau JMRI et ROCRAIL.
Le site Locoduino a décrit plusieurs articles en français consacrés à DCC++ et une bibliothèque arduino DCCpp lui a été dédiée.

C’est sur la base de ces articles que j’ai réalisé ma centrale.
Il y a plusieurs façons possibles de réaliser une centrale DCC++.
J’ai choisi d’utiliser un arduino MEGA car il comporte un grand nombre d’entrées/sorties.
J’ai en effet 12 aiguillages donc 24 bobines à commander et 20 cantons à détecter (la présence d’un train).
DCC++ peut gérer en effet des sensors sur les entrées de l’arduino et communiquer leur état au PC qui héberge JMRI.

A la base DCC++ utilise une carte amplificatrice « shield moteur » de 2 Ampères à enficher sur l’arduino, ce qui simplifie le cablage.
J’ai choisi cependant d’utiliser des cartes moteurs LMD18200 un peu plus puissantes, 3 Ampères, à module indépendant.
Il en faut 2, une pour la voie principale et une pour la voie de programmation des décodeurs de locomotives.
Il faut également 2 petites cartes MAX471 qui détectent la consommation de courant et les court-circuits.
Ces circuits semblent en fin de vie et ceux que l’on trouve aujourd’hui sur internet sont souvent défectueux.
On lui préfère maintenant le MAX472 son frère qui ne se trouve pas hélas sous forme de module.
L’alimentation fait appel à un bloc 15V 5A, alimentation de PC laptop classique.
J’ai fixé ces différents éléments sur une planche de contreplaqué de 5 mm d’épaisseur qui prend place sous le réseau.

schéma centrale DCC++
La Base Station DCC++

Pour la partie logiciel, j’ai téléchargé dans l’arduino MEGA la bibliothèque DCCpp de Locoduino.
L’arduino une fois chargé avec son programme est capable de recevoir des commandes à l’intention des locomotives ainsi que des commandes d’aiguillage.
De même, il est capable d’indiquer si un canton est occupé car il est relié à des modules détecteurs que j’ai réalisé également.
Toutes ces informations transitent par sa prise USB qui est relié au PC qui héberge le logiciel JMRI.
Le logiciel reçoit des commandes de l’opérateur, par exemple des commandes de direction et de vitesse de locomotive ou des commandes d’aiguillage.
Le logiciel transmet alors ces commandes à l’arduino DCC++ qui les exécute en les envoyant sur la voie.

L’arduino MEGA n’est pa capable de commander directement les bobines des moteurs d’aiguillage.
Il est relié à 24 relais qui commandent les bobines des 12 aiguillages (2 bobines par aiguillage).
J’ai utilisé pour cela 3 modules bon marché de cartes 8 relais qui se trouvent facilement sur Ebay.
Pour faciliter le cablage, je les ai fixés sous le réseau près de la base station.

Cartes Relais

Pour définir l’état d’un aiguillage, normalement JMRI positionne une sortie « pin » de l’arduino à 0 ou à 1 (état bas ou haut) pour l’état droit ou dévié.
Or pour commander un aiguillage à 2 solénoïdes il faut 2 pins.
Pour que DCCpp puisse commander directement 2 pins, (1 pin par relais) il a fallu que je modifie un peu le programme de base, en l’occurence le fichier Outputs.cpp. J’ai pu ainsi réserver les 24 pins 14 à 37 à la commande d’aiguillages.
Aiguillage 1: pins 14 et 15, Aiguillage 2: pins 16 et 17, etc…
Je fournis ici le source de ce fichier modifié.