Ma première centrale DCC

. Par : msport. URL : https://www.locoduino.org/spip.php?article304

L’article Une station DCC complète, polyvalente et économique avec JMRI. a un succès mérité et décrit précisément toutes les étapes pour mener à bien ce projet très élaboré.
Mais commencer par un tel projet nécessite de bien maitriser non seulement l’environnement Arduino mais également le câblage et l’électronique.
Avec ce nouvel article nous proposons la réalisation d’un montage basique permettant de commencer avec le DCC de manière simple et peu onéreuse.

Dans le cahier des charges,

  • l’utilisation d’un programme tout fait, sans modification.
  • un coût minimal
  • pas de fer à souder, et donc pas de soudures
  • du matériel que l’on trouve facilement
  • pas d’intervention sur le matériel
  • un montage qui prend 10 mn.
  • et qui permet de valider une configuration JMRI.
  • mais sans Ethernet

Prérequis :

  • connaître les bases de la gestion des fichiers de votre ordinateur
  • savoir télécharger des fichiers et les décompresser
  • et donc savoir les placer au bon endroit
  • savoir utiliser l’IDE Arduino pour charger un programme sur une carte Arduino
  • savoir lire un schéma simple.
  • et quand même avoir entendu parler de DCC, de DCC++ et de ses avatars.

Installation de l’IDE Arduino :

On pourra se référer à : https://wiki.mdl29.net/lib/exe/fetc...
(ardublock n’est pas utile ici)
et également à Arduino : toute première fois !
Pour votre culture, vous pouvez voir : https://www.arduino.cc/reference/fr/

Principe de fonctionnement

On le trouvera dans l’article Réalisation de centrales DCC avec le logiciel libre DCC++ (3) au niveau du schéma reproduit ci-dessous.

Schéma
Schéma

La BaseStation :

Pour cet article, la référence est le paragraphe DCC++ et les shields moteurs de l’article Réalisation de centrales DCC avec le logiciel libre DCC++ (3) : Quel matériel et quelle mise en œuvre ? qui vous permettra de comprendre le fonctionnement de cette centrale.

Le matériel nécessaire

Matériel
Matériel

Une carte Arduino-uno-rev3 (ou clone)
Un arduino-motor-shield-rev3 (ou clone du modèle ci-dessus).
Un bloc secteur 12V 2 ou 3A
Deux ponts DuPont mâle-mâle 10 cm ou deux fils rigides équivalents
Un câble USB type A-B

Nous avons voulu éviter toute modification sur le matériel :

Il est donc impératif d’employer un bloc secteur en 12 V. En effet, telle quelle, l’alimentation du shield moteur est commune entre la carte Arduino et le shield moteur. Or, les concepteurs de la carte Arduino recommandent de ne pas dépasser 12 V pour l’alimenter.
12 V convient au N et au HO et permet déjà une exploitation correcte d’un réseau familial tout en respectant les normes du NMRA. 2 ou 3A permet de faire tourner plusieurs locomotives, et de voir à partir de quel nombre vous obtenez le déclenchement (probablement plus de 4 ou 5). La tension de 12V limite seulement la vitesse.
Ce qui veut dire que vous ne couperez pas de piste au dos du shield moteur, comme vous pouvez le lire dans l’article de référence pour utiliser un deuxième bloc secteur en 15 V ou 18 V.

A noter que l’environnement Arduino est très magnanime avec les clones et les prend en charge. Dans la pratique, il n’y a pas de différence à l’utilisation.

Montage

Le montage
Le montage

En faisant attention à respecter le sens de montage (voir les encoches) et ne pas décaler les broches, on enfiche le shield moteur sur le module Arduino R3

Les ponts
Les ponts

On enfiche les ponts entre les points des connecteurs du module Arduino R3 : entre 10 et 12 et entre 5 et 13. (à fond, pas comme sur la photo)

JPEG - 5.6 kio
JPEG - 132.5 kio
Au complet
Au complet

Le programme

Pour la BaseStation de Gregg Berman, il faut et il suffit de décompresser le zip disponible sur le GitHub de DCC++ et on obtient le répertoire DCCpp_Uno complet. (18 fichiers) qu’on place dans le répertoire des sketches (les programmes) comme :
C:\Users\vous\Documents\Arduino
Il faut donc que les .h et les .cpp soient dans ce répertoire en compagnie du DCCpp_Uno.ino
Il n’y a pas de bibliothèque dans ce cas là.

dccpp_uno.zip

Le fichier se trouve aussi ici :
https://github.com/DccPlusPlus/Base...

le répertoire que l’on doit avoir après décompression

JPEG - 66.6 kio

Si on a bien installé l’IDE (le programme Arduino) on peut double-cliquer sur le nom du fichier DCCpp_Uno.ino qui est précédé du petit logo Arduino. Cela ouvrira le fichier et lancera l’interface que vous voyez plus bas.

La documentation de référence (faire un clic droit puis "Ouvrir le lien dans un nouvel onglet").

Documention du programme

On branche son Arduino en USB sur son ordinateur et on effectue le choix de la carte et du port COM (ce n’est pas forcément le COM1). Version Windows.

Carte et COM
Carte et COM

Et version Mac. Sur Linux ça sera proche, quelque chose comme /dev/ttyXX

Port Arduino sur Mac
Port Arduino sur Mac

On téléverse le sketch (le programme) dans l’Arduino

Téléverser
Téléverser

Premier test : On ouvre le moniteur série configuré à 115200 bauds, il répond :

<DCC++ BASE STATION FOR ARDUINO UNO / ARDUINO MOTOR SHIELD: V-1.2.1+ / Jan 17 2022 21:47:01>><<N0: SERIAL>

Moniteur
Moniteur
Vitesse
Vitesse

Deuxième test : On branche l’alimentation 12V et on tape <1> dans la ligne du Moniteur série configuré à 115200 bauds. Les quatre LED s’allument.

Sur table
Sur table

Ensuite, on branche la voie principale sur A+ et A-
A partir du moniteur série, on peut tester les commandes disponibles pour DCC++ :

La liste originale des commandes disponibles en anglais :
https://github.com/DccPlusPlus/Base...

Et une traduction avec Google à peine améliorée :

Commandes pour DCC++

A ce point de cet article, ces documents ne vous sont proposés que comme référence, il n’est pas nécessaire de les consulter.

Il faut simplement retenir que pour faire démarrer la locomotive neuve que vous venez de sortir de sa boite et que vous venez de placer sur la voie principale alimentée par A+/A-, vous taperez dans le moniteur série :
<1> pour mettre les voies sous tension DCC.
<t 1 3 20 1> où :
<   ...    > encadre une commande DCC valide

  • t est la commande pour invoquer la "Throttle" (les gaz)
  • 1 le registre qui reçoit la vitesse de la locomotive
  • 3 l’adresse de la locomotive (3 est celle d’une locomotive neuve)
  • 20 le cran de vitesse
  • 1 le sens, ici vers l’avant.

Si vous avez une locomotive d’occasion dont vous connaissez l’adresse, vous remplacerez 3 par cette adresse.

Et si vous ne connaissez pas l’adresse de la locomotive que vous venez d’acquérir mais que vous êtes sûr qu’elle est équipée d’un décodeur, vous pouvez lire cette adresse (le CV 1) sur la voie de programmation alimentée par B+/B-.
Attention, certains vendeurs, par méconnaissance qualifient de digitales des locomotives qui ne sont équipées que d’une prise pour recevoir un décodeur, sans qu’il soit installé.
Donc avec la locomotive sur la voie de programmation (B+ et B-), on tape dans le moniteur série :
<R 1 123 123> , la centrale répond dans ce moniteur série :
<r123|123|1 xxx>xxx est l’adresse de la locomotive posée dessus. Si xxx vaut -1, ça a raté.
<   ...    > encadre une commande DCC valide

  • R est la commande pour lire sur la voie de programmation
  • 1 le registre de l’adresse de la locomotive
  • 123 une valeur choisie arbitrairement pour contrôle
  • 123 idem
    A noter que les locomotives peuvent disposer d’une adresse longue (supérieure à 128) et la commande précédente ne fonctionne pas. On peut souhaiter réinitialiser le décodeur à l’adresse 3 avec une des commandes standard sur la voie de programmation :
    <W 8 8 123 123> ou
    <W 8 33 123 123>
    L’adresse de la locomotive redevient 3.
    La lecture d’une adresse longue sort du cadre de cet article.

Les pièges dans lesquels on peut tomber pour la lecture de l’adresse :
1. on oublie de mettre les voies sous tension avec <1>
2. on ne se met pas sur la voie de programmation
3. il y a un mauvais contact avec la voie

Attention, il est vivement déconseillé de mettre une locomotive analogique sur une voie alimentée en DCC.

Où acheter ?

Où acheter ? : une liste de fournisseurs, et ci-dessous des liens directs :

https://www.amazon.fr/Arduino-A0000... 24€

https://store.arduino.cc/collection... 20€
https://store.arduino.cc/collection... 24€

Les liens ci-dessous peuvent disparaitre au gré de la disponibilité chez les fournisseurs. Si vous voulez éviter eBay et Aliexpress, reportez vous aux liens ci-dessus. Sur eBay, vous trouverez également des fournisseurs en France.

https://www.ebay.fr/itm/173654508592 12V 2A 4,8€
https://www.ebay.fr/itm/401878537847 motor shield 8€
https://www.ebay.fr/itm/313621201790 DuPont 1,27€

https://fr.aliexpress.com/item/1005... R3 9,3€
https://fr.aliexpress.com/item/3293... R3 8,8€
https://fr.aliexpress.com/item/3280... motor shield 5,08 €
https://fr.aliexpress.com/item/1005... 12V 3A 4,59€

Attention au shield moteur : ceux qui ont des fonctions complémentaires : LED, buzzer, etc. ne sont pas compatibles car les broches correspondantes sont occupées.

Quelles limites pour ce montage ?

Le shield moteur ne comporte pas de protection de court circuit, c’est le sketch (le programme) qui l’assure.
La BaseStation de Gregg Berman (DCC++) a une protection contre les courts-circuits qui limite le courant à 1,5 A.
On retiendra que ce montage convient très largement pour trois locomotives récentes en simultané aussi bien en N qu’en HO. La voie de programmation est utilisée occasionnellement, et en tout cas pas en même temps que la voie principale.

Comment piloter Ma première centrale DCC :

On a vu que l’on pouvait entrer les séquences de commandes depuis le serial moniteur de l’IDE de l’Arduino. Ce qui veut dire que c’est le cas de tout dispositif permettant d’envoyer ces séquences sur le RX (broche 0 de l’Arduino) qui donc fera l’affaire. Mais c’est trop tôt pour en parler.

On a présenté une souris sans fil, mais c’est trop difficile pour commencer, cela sort du cadre de cet article.
Une manette simple et autonome pour LaBox

Plus simple, une manette en Processing :
http://forum.locoduino.org/index.ph...

Moins simple, mais efficace, le Contrôleur à télécommande infrarouge pour centrale DCC++ a été utilisé avec succès pour cette centrale basique.

Mais parmi les logiciels gratuits sur ordinateur JMRI semble être la référence :
(mais on peut aussi regarder CdmRail et RocRail)

JMRI et Ma première centrale DCC :

Vous pouvez installer JMRI si ce n’est déjà fait :

https://www.jmri.org/help/fr/html/a...

JMRI installé et une fois connecté à une centrale DCC++, on dispose de ses régulateurs permettant de piloter les locomotives équipées d’un décodeur DCC.
C’est l’article suivant JMRI pour Ma première centrale DCC.

Ultérieurement quand on connait JMRI, on utilise les fonctions qui sont affichées dans le menu DCC++ :

JMRI menu DCC++
JMRI menu DCC++

Lorsque JMRI est connecté à un réseau via DCC++, on a :

  • DCC++ Traffic Monitor : vous pouvez suivre les ordres DCC
  • Send DCC++ Command : tester manuellement
  • Track Current Meter : suivre la consommation de courant. si elle fluctue de manière importante, revoir l’encrassement des voies.
  • Configure Sensors and Turnouts : en vue de piloter votre réseau
  • Load DCC++ over TCP Server : toutes les possibilités avec Ethernet ...

Variante :

On peut utiliser un MEGA à la place du UNO, les ponts qu’il faut changer :
Supprimer le pont 10 - 12 et déplacer l’autre pont pour faire 2 - 13.
Il faut aussi sélectionner "Arduino Mega or Mega 2560" dans l’IDE. L’IDE gère les différences à la compilation.

Crédit :

COPYRIGHT (c) 2013-2016, DCC++ BASE STATION est un programme C++ écrit par Gregg E. Berman pour les Arduino Uno et Arduino Mega utilisant l’IDE Arduino, et ce, sous GNU General Public License. Ce programme respecte la norme DCC publiée par la NMRA et le DCC produit est donc compatible avec les matériels et logiciels qui s’appuient sur la même norme. Vous trouverez à titre documentaire une analyse de DCC++ dans la série d’articles Réalisation de centrales DCC avec le logiciel libre DCC++ (1) et de son évolution avec DCCpp dans Bibliothèque DCCpp.

Résumé pour les pressés :

  1. Je télécharge et j’installe l’IDE Arduino sur mon ordinateur.
  2. Je me procure le matériel et je vérifie mon Arduino avec blink.ino (j’ai choisi la carte et le port COM).
  3. J’enfiche la carte moteur sur l’Arduino UNO
  4. Je mets les ponts 5-13 et 10-12
  5. J’utilise DCCpp_Uno.zip ou je télécharge depuis le GitHub de DCC++ le fichier DCCpp_Uno compressé.
  6. Je le décompresse et l’installe (en entier) dans le répertoire C :\Users\moi\Documents\Arduino
  7. Je le lance (double-clic dessus) après avoir connecté l’Arduino en USB. Je clique sur « Téléverser »
  8. Je lis « Téléversement terminé »
  9. J’ouvre le Moniteur série à 115200 bauds et lis le texte de DCC++
  10. Je branche mon alimentation 12 V et tape <1>
  11. Si les quatre LED ne s’allument pas, je revérifie tout depuis le début.