Module de détection pour canton DCC

Pour détecter la présence d’un train dans un canton, on utilise un circuit électronique qui détecte une consommation de courant dans cette zone.
Les circuits classiques de détection de consommation de courant font appel à des diodes, mais ils ont 2 inconvénients:
La chute de tension de 0,7V inhérente à l’emploi de diodes et l’exposition de celles-ci en cas de court circuit.

J’ai préféré opter pour la détection par induction qui utilise un petit transfo torique.

Le principe est de prélever une boucle du fil du circuit DCC qui alimente le canton et de l’enrouler autour du transfo.
Le circuit est donc parfaitement isolé du DCC.
J’ai utilisé le célèbre circuit de Paisley qui a fait ses preuves.

Le passage de courant DCC dans le canton va générer un courant induit dans le transfo qui va être amplifié par un transistor.
Le signal est ensuite mis en forme par un circuit LM556 qui transmet l’information à l’arduino.
Les transfos AS-103 sont disponibles chez Radio-Spares.

Schéma détection canton DCC

J’obtiens une sensibilité de 0,7 mA pour un circuit DCC de 15V (détection d’une résistance de 21,3 K Ohm dans le canton).

J’ai réalisé un circuit imprimé simple face de 100 mm x 50 mm qui regroupe 4 circuits de détection indépendants.
Il s’alimente en 5V et les sorties sont au niveau bas pour une détection et au niveau haut en l’absence de détection.

Détection 4 cantons CAO PCB

Ci-joint les fichiers au format Eagle, ainsi que les fichiers Gerber pour la fabrication.

Si vous voulez faire fabriquer le circuit imprimé je vous recommande JLCPCB qui fait un travail soigné à des prix canons.

Module de détection cablé

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é.