BB 25200

La gare de LORMEDY

H0

Le DCC

Firmware : Genèse d'une bibliothèque DCCpp

En DCC l'énergie électrique pour faire avancer nos locos est modulée par un signal numérique au travers de laquelle les commandes sont envoyées vers les décodeurs. En modélisme ferroviaire, nous avons besoin d'une centrale DCC pour piloter nos trains avec une commande numérique. Un projet de commande DCC a été concrétisé par Gregg E. Berman qui a écrit le projet DCC++ pour Arduino. Il a ensuite été repris et étendu par Thierry Paris qui en a fait une bibliothèque DCCpp. (Voir www.locoduino.org). Finalement j'ai ajouté la lecture de 2 ports de rétro-signalisation S88 dans cette bibliothèque qui s'appelle désormais : DCCpp_S88.
En résumé voici les possibilités fournis par cette bibliothèque logicielle :  (d'après une traduction du texte du premier auteur par le second et complété par moi même)


DCC++ BASE STATION est un programme C++ pour l’Arduino Uno/Nano et l’Arduino Mega utilisant l’Arduino IDE 1.6.6 ==> 1.8.9

Il permet à un Arduino Uno/Nano ou Mega standard équipé d’un Arduino Motor Shield (ou d’un autre) d’être utilisé comme une centrale DCC complète, conforme aux standards DCC du NMRA, pour un réseau de modélisme ferroviaire numérique.

Cette version de DCC++ BASE STATION supporte :
  • Adresse de décodeur sur deux octets (128 adresses courtes) et quatre octets (10240 adresses longues)
  • Contrôle simultané de plusieurs locomotives (99 dans mon projet)
  • Commande à 128 pas de vitesse
  • Fonctions F0 à F28
  • Activation d’accessoires utilisant 512 adresses, chacune avec 4 sous-adresses (norme NMRA complète)
  • Est incluse la possibilité de stocker l’état courant d’aiguillages connectés à cette centrale
  • Programmation d’un décodeur sur la voie principale
    • Ecriture de CV par octets
    • Ecriture de CV par mise à jour de certains bits individuellement
  • Programmation sur une voie dédiée de programmation
    • Ecriture de CV par octets
    • Ecriture de CV par mise à jour de certains bits individuellement
    • Lecture de CV ou données émises par le décodeur en cours de programmation
  • Lecture de 2 bus S88 qui supportent jusqu'à 512 capteurs (2x256)
  • Lecture du courant sur la voie principale

DCC++ BASE STATION est contrôlé par des commandes textes reçues par l’interface série de l’Arduino. Elles peuvent être envoyées par la console série de l’IDE Arduino, ou par des interfaces ou des programmes extérieurs.

Sur un Arduino Mega, un shield Ethernet peut être utilisé pour recevoir des ordres via un réseau informatique plutôt que par la liaison série.

Shield : Carte d’extension munie de connecteurs mâles et qui s’enfichent dans les connecteurs des cartes Arduino Uno, Duemilanove et Mega. Un shield peut également présenter des connecteurs gigognes qui permettent d’empiler plusieurs shields.



Hardware : Arduino

Mes projets utilisent une seule carte Arduino Mega 2560 mais il est possible d'utiliser une carte Arduino Uno ou même Arduino Nano avec cependant certaines limitations dues à la petite taille mémoire de ces deux dernières. A la sortie PWM de l'Arduino je connecte un circuit AM26C31 pour générer deux signaux symétriques qui commandent des modules Booster L298. Les circuits compatibles RS422/RS485 conviennent à condition de savoir les brancher. J'ajoute des modules MAX471 pour la mesure du courant et une alimentation 19VDC protégée contre les court-circuits. Enfin je cable 2 prises RJ45 sur les 2 ports S88-N que j'ai crée sur l'Arduino. Mes projets sont décrits dans les onglets suivants du menu "Alimentation DCC".


Software sur Arduino : DCCpp_S88

DCCpp est une bibliothèque C++ pour l'Arduino Uno/Nano et l'Arduino Mega compatible avec l'Arduino IDE 1.8.4. Les trains sont pilotés à partir de commandes texte ou par des entrées/sorties cablées avec des boutons que vous déclarez dans votre projet software.

J'ai intégré dans DCCpp une interface S88 pour lire la rétro-signalisation avec le même Arduino. Cette extension S88 s'interface parfaitement avec un programme qui supervisera tout votre réseau : JMRI par exemple. Cette bibliothèque s'appelle désormais DCCpp_S88. Voir dans le menu "Alim DCC" et sélectionner l'onglet : "Le générateur DCC".


Software sur PC : CDT

Vous pouvez utiliser un programme compatible avec DCC++ pour commander automatiquement tout votre réseau. Personnellement je me suis inspiré de logiciels créés par d'autres modélistes pour me lancer dans l'écriture de logiciels de commande manuelle de mon réseau. J'ai créé le logiciel CDT31 (Conducteur De Train) pour utilisateur confirmé. Enfin j'utilise le moteur d'exécution software Node.js pour interconnecter efficacement mon logiciel avec Arduino. Mes logiciels de commande sont décrits dans les onglets correspondants que vous retrouverez dans le menu "Logiciel". De plus, il est possible de piloter individuellement des trains en mode manuel dans un dépôt ou un triage avec CDT31 pendant que JMRI contrôle le réseau principal. Il suffit que le serveur accepte des requêtes venant d'un autre port ce qui est possible avec le moteur logiciel Node.js.


Contact : Envoyer un e-mail    (Remplir le champ "adresse" avec le nom de la gare en minuscule sans guillemet)

  Texte, photos, conception et réalisation :  Lormedy © 2017-2020 visiteurs