Commande d'un réseau en DCC avec un module ARDUINO

Description d'une petite centrale DCC pour train de jardin


Menu

1 Les contraintes à prendre en compte

2 Radiocommande

3 Schéma de la centrale

4 Unité centrale

5 Récepteur de radiocommande

6 Emetteur DCC radio

7 Module de controle DCC

8 Carte de commande des aiguillages

9 Module de sonorisation du réseau

10 Description du mode manuel avec commande d'une loco par radio

11 Création des itinéraires par le PC

Je vais décrire ci-après la centrale que j'ai réalisée pour piloter mon train de jardin.

1 Les contraintes à prendre en compte

La nouvelle centrale pour le train de jardin doit satisfaire les exigences suivantes:
- commande des locos par radio avec une seule radiocommande de portée supérieure à 50 mètres
- commande automatique du réseau sans ordinateur.
- faible consommation électrique car le courant est fourni par une batterie alimentée par un panneau solaire

La centrale DCC réalisée à base d'ARDUINOS répond aux exigences ci-dessus et offre 2 modes de fonctionnement:
- mode manuel sans ordinateur avec commande d'une loco par radio. La contrainte est d'avoir une portée supérieure à 50 mètrs, ce qui exclut le Bluetooth. Mon choix s'est porté sur une radiocommande à 900 MHz AirWire T5000 spécialement dédiée à la commande de trains de jardins en DCC
- mode automatique sans ordinateur. Dans ce mode de fonctionnement, les détecteurs de passage sont connectés à l'ARDUINO qui permet de gérer jusqu'à 4 locos en automatique


Actuellement, j'ai testé ces 2 modes de fonctionnement et tout semble marcher.
L'ARDUINO est vraiment intéressant, vu son prix

2 Radiocommande

La contrainte est d'avoir une portée supérieure à 50 mètres, ce qui exclut le Bluetooth. Mon choix s'est d'abord porté sur une radiocommande de voiture à 41 MHz que je possédais déjà. Ce système marche bien mais est très limité en fonctionnalités (vitesse, sens de marche, 2 fonctions).

Finalement, mon choix s'est porté sur le système
AirWire T5000 de la société américaine CVP qui est constitué par une manette sans fil à 900 MHz et par un récepteur (The Convertr)qui reçoit les commandes de la manette et génère directement le signal DCC.

Vous pouvez voir ci-dessous une photo de la manette AirWire T5000.



Cette manette qui dispose d'un écran de controle permet de piloter par radio une locomotive en DCC avec toutes les commandes nécessaires:
- choix de l'adresse
- choix du sens de marche
- réglage de la vitesse par un gros bouton
- commande des fonctions F0 à F8
- commande des accessoires

Voici la photo du récepteur "CONVTR":


Ce récepteur est prévu pour être installé dans une locomotive équipée d'un décodeur DCC.
Dans mon application, le récepteur "Convtr" alimente un décodeur DCC réalisé avec un module ARDUINO UNO qui a pour fonction principale de transmettre à la centrale DCC et au PC lorsqu'il est connecté, les commandes de la loco (adresse, sens de marche, vitesse, fonctions).

3 Schéma de la centrale

La centrale DCC est constituée des éléments suivants:
- une unité centrale à base d'un ARDUINO MEGA
- un récepteur de radiocommande
- un controleur DCC
- un émetteur DCC radio qui transmet le signal DCC par radio à 433 MHz vers les locos. (le DCC radio est décrit
ici.
- un module de sonorisation du réseau

Le schéma de la centrale est donné sur la figure ci-dessous.



Et voici une photo des modules installés dans un coffre étanche près du train de jardin.



4 Unité centrale

L'unité centrale est constituée des composants suivants:
- un module ARDUINO MEGA 2560
- un lecteur de carte SD
- une carte SD qui stocke les itinéraires à exécuter

J'ai choisi un ARDUINO MEGA 2560 qui dispose d'une mémoire Flash de 256K et qui offre 54 entrées/sorties numériques et 16 entrées analogiques, ce qui est suffisant pour un réseau de taille moyenne.
L'ARDUINO MEGA réalise les fonctions suivantes:
- génération du signal DCC
- gestion de la rétrosignalisation
- commande des aiguillages
- commande d'un servomoteur
- lecture et écriture des itinéraires stockés sur la carte SD
- réception des commandes du récepteur de radiocommande
- envoi des ordres au module de sonorisation

Le signal DCC est délivré sur la sortie 13.

Le module lecteur de cartes SD qui coute 3 Euros chez
tiptopboards.com. est connecté au bus SPI de l'ARDUINO MEGA comme suit:
- MOSI - pin 51
- MISO - pin 50
- CLK - pin 52
- CS - pin 53
Il faut aussi connecter la masse et les alimentations +3,3V et 5V.
Ce module permet d'enregistrer les trajets dans des fichiers texte stockés sur une carte mémoire SD de 2 Go
L'ARDUINO MEGA exécute ensuite les trajets . On peut ainsi se passer totalement d'un ordinateur.

L'ARDUINO MEGA communique avec l'ARDUINO UNO du récepteur de radiocommande par une liaison série RS232: L'entrée RX1 du MEGA est relié à la sortie TX de l'UNO

Un module rotacteur DFRobot SEN0156 à 12 positions permet de choisir le mode de fonctionnement. La sortie analogique, proportionnelle à la position choisie, est.connectée à l'entrée analogique A0 de l'ARDUINO MEGA. Les modes de fonctionnement sont les suivants:
- mode 1: commande manuelle par la radiocommande et enregistrement d'un trajet
- mode 2:STOP
- mode 3: exécution automatique du trajet enregistré ( mode de test)
- modes 4 à 12: exécution automatique des itinéraires stockés sur la carte SD

Un bouton poussoir connecté à l'entrée 22 permet de démarrer et d'arrêter un enregistrement ( en mode 1) et de lancer l'exécution d'un itinéraire (modes 3 à 9)

Une diode LED est connectée à la sortie 7. Elle sert à indiquer qu'un fichier est en cours de transfert ou en cours d'enregistrement.

Les détecteurs de passage sont reliés aux entrées A1 à A15

Les aiguillages sont commandés par les sorties 23 à 35.

Le signal de commande du servomoteur est délivré sur la sortie 11.

Les fichiers stockés sur la carte SD sont des fichiers texte (A.txt, B.txt, etc...) constitués de plusieurs lignes de commande qui seront exécutées séquentiellement.
Une ligne de commande est constituée par les paramètres suivants:
- l'adresse de la loco
- le sens de marche
- la vitesse
- la durée de la ligne de commande entre 1 et 89 secondes.
- les fonctions à exécuter (F0 à F8)

La ligne de commande sera exécutée pendant la durée indiquée puis le programme exécutera la ligne de commande suivante jusqu'à la fin du fichier.
La ligne de commande peut aussi se terminer par la réception d'un signal venant d'un détecteur de passage. Lorsque le signal est reçu, le programme passe à la ligne de commande suivante.
Par exemple, la détection de passage à l'entrée en gare provoque l'arrêt du train (vitesse 0).
Les durées de valeur supérieures à 90 sont utilisées pour la rétrosignalisation suivant la règle suivante: durée = 90 + N° du détecteur de passage (ou du canton).
Par exemple, une ligne de commande de durée 92 signifie que la ligne de commande sera exécutée jusqu'à ce que la loco passe devant le détecteur N°2. Lorsque le détecteur 2 est activé, le programme exécute la ligne de commande suivante.

L'affectation des ports est la suivante:


Voici une photo de l'ARDUINO MEGA dans l'unité centrale.
Vous pouvez voir ci-dessous une photo des composants de l'unité centrale avec l'ARDUINO MEGA et le lecteur de carte SD.



Le programme de l'ARDUINO MEGA utilise la bibliothèque SD qu'il faut déclarer au début du programme.
Vous pouvez télécharger le programme en cliquant ici.

5 Récepteur de radiocommande

Le récepteur "Convrt" qui délivre un signal DCC est connecté à un module ARDUINO UNO qui décode le signal et transmet les commandes de la loco (adresse, sens de marche, vitesse, fonctions F0 à F8) au module ARDUINO MEGA qui génère le signal DCC. La liaison entre les deux ARDUINO utilise l'interface série (broche TX sur l'UNO et RX1 sur le MEGA.
Le schéma du récepteur est donné sur la figure ci-dessous.



La photo ci-dessous montre les composants installés dans un boîtier: le récepteur "Convrtr" à 900 MHz et l'ARDUINO UNO La photo ci-dessous montre le boitier récepteur



Vous pouvez télécharger le programme pour l'ARDUINO UNO en cliquant
ici.

6 Emetteur DCC radio

La sortie DCC du module ARDUINO MEGA est reliée à l'entrée d'un module AUREL TX-FM qui transmet le signal DCC par radio à 433 MHz vers les trains.
Vous touverez une description du système incluant le schéme de l'émetteur en cliquant
ici.

7 Module de controle DCC

Ce module permet d'afficher les caractéristiques des locos en fonctionnement sur le réseau (adresse, sens de marche, vitesse et fonctions). Il est constitué par un ARDUINO UNO qui décode le signal DCC et qui transmet les informations à un afficheur LCD.

Le signal DCC délivré sur la sortie 13 de l'ARDUINO MEGA est appliqué à l'entrée 2 de l'ARDUINO UNO.

L'afficheur est un module SainSmart à LED rétroéclairé de 4 lignes de 20 caractères acheté
ici.
Il est connecté sur les broches SDA (A4) et SCL (A5) de l'ARDUINO UNO.
Vous pouvez télécharger la librairie pour ce module en cliquant ici.

Voici une photo de l'afficheur installé sur la face avant du boitier de controle.


Les instructions à placer en début du programme ARDUINO sont les suivantes:
#include
//Addr: 0x3F, 20 chars & 4 lines
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

Dans void setup(), placer les instructions:
lcd.begin(20,4);
lcd.backlight(); // allume l'éclairage

Les instructions pour écrire sur l'écran sont:
lcd.setCursor(9, 0); // place le curseur au caractère 9 de la ligne 0
lcd.print("manuel"); // écrit sur l'écran "manuel" à partir du caractère 10

Vous pouvez télécharger le programme en cliquant ici.

8 Carte de commande des aiguillages

Le circuit représenté ci-après permet de commander une aiguille LGB par décharge capacitive. Le moteur d'aiguille de LGB est commandé par une inversion de polarité et une impulsion de courte durée, ce moteur n'utilisant qu'une seule bobine.



Le circuit réalisé utilise un relais 2RT qui permet d'inverser la tension appliquée au moteur d'aiguille ainsi que 2 condensateurs chimiques de 4700 µF et deux résistances de 1KOhms. Lorsque la sortie numérique de l'ARDUINO est en position haute ("HIGH") , le transistor BC 337 conduit et alimente la bobine du relais 2RT. Les contacts sont en position travail et le condensateur C1 se décharge dans la bobine du moteur d'aiguille. Pendant ce temps, le condensateur C2 se charge à travers la résistance R2.
Lorsque la sortie numérique de l'ARDUINO est en position basse ("LOW") , le transistor BC 337 est bloqué. La bobine du relais 2RT n'est pas alimentée (les contacts sont en position repos) et le condensateur C1 se charge à travers la résistance R1.

Les valeurs utilisées sont les suivantes:
R1,R2: 1 KOhms 1/4W
R3: 10KOhms 1/4W
C1,C2: 4700 µF 40V

9 Module de sonorisation du réseau

Ce module permet de sonoriser le réseau en générant des annonces en gare (départ et arrivée des trains), la sonnerie du passage à niveau, la sonorisation de la scierie, etc...
Il y a plusieurs haut-parleurs connectés au module et celui-ci permet de choisir le haut-parleur qui reçoit le son.
Actuellement, il n'y a que deux haut-parleurs sur le réseau: un dans la gare et un autre dans la maison de garde barrière près du passage à niveau.

Le module offre deux modes de fonctionnement:
- un mode manuel avec sélection de 10 sons possibles par un rotacteur
- un mode automatique dans lequel la commande de l'émission des sons est transmise par une liaison série depuis l'ARDUINO MEGA de l'unité centrale. (Dans ce mode, la batterie interne Li-On n'est pas utilisée, la tension est fournie par la batterie 12V du réseau).
Chaque position du rotacteur correspond à un son sélectionné par le nom du fichier sur la carte SD et à un haut-parleur sélectionné par la sortie 5 de l'ARDUINO.

Le module est constitué des composants suivants:
- un ARDUINO UNO
- un lecteur de carte SD
- une carte SD de 2 Go
- un amplificateur audio
- un module rotacteur DFRobot SEN0156 à 12 positions
- un bouton poussoir
- un relais pour choisir le haut-parleur qui reçoit le son
- une batterie Li-On de 7,5 Volts

Le schéma est donné sur la figure ci-dessous:



Le lecteur de carte SD qui coute 3 Euros chez
tiptopboards.com. est connecté au bus SPI de l'ARDUINO UNO comme suit:
- MOSI - pin 11
- MISO - pin 12
- CLK - pin 13
- CS - pin 10
Il faut aussi connecter la masse et les alimentations +3,3V et 5V.

Les fichiers audio sont stockés sur la carte SD. Chaque fichier audio doit être au format wav avec les caractéristiques suivantes:
- fréquence d'échantillonnage 16 KHz
- codage sur 8 bits
- mono

Le module rotacteur DFRobot SEN0156 à 12 positions permet de choisir le fichier audio à diffuser. La sortie analogique, proportionnelle à la position choisie, est.connectée à l'entrée analogique A0 de l'ARDUINO UNO
Le bouton poussoir connecté à l'entrée 2 de l'ARDUINO UNO permet de lancer la lecture du fichier audio

L'ARDUINO UNO communique avec l'ARDUINO MEGA par une liaison série RS232:
La sortie TX2 du MEGA est relié à l'entrée RX de l'UNO
Un ampli audio de 3,5 W de marque KENO est utilisé pour amplifier le son produit par l'ARDUINO sur la sortie 9.
La sortie de l'ampli audio est connectée à un relais qui permet de choisir le haut-parleur.
La bobine du relais alimenté sous 12 volts est connecté à un transistor BC337 dont la base est reliée à la sortie 5 de l'ARDUINO avec une résistance de 1K en série.

Chaque haut-parleur a une impédance de 8 Ohms et une puissance de 1 Watt.

Vous pouvez voir ci-dessous une photo du module de sonorisation avec les deux haut-parleurs.



Et voici une vue des composants dans le module.



Pour générer un son avec un ARDUINO, il faut utiliser une librairie dédiée ( TMRpcm WAV library.) que l'on peut télécharger à cette adresse: https://github.com/TMRh20/TMRpcm en complément de la librairie SD qui gère le lecteur de carte SD.

Vous pouvez télécharger le logiciel pour l'ARDUINO ainsi que des exemples de sons à insérer sur la carte SD en cliquant ici.

10 Description du mode manuel avec commande d'une loco par radio

Ce mode permet de piloter une loco d'adresse comprise entre 3 et 99 en manuel avec la radiocommande AirWire T5000 à 900 MHz.
Les fonctions associées à la locomotive sont les fonctions F0 à F4 avec l'allocation suivante:
- touche F0: allumage des phares
- touche F1: mise en route de la sonorisation
- touche F2: activation du klaxon ou du sifflet
- touche F3: mise en route du fumigène
- touche F4: dételeur automatique

L'adresse 1 est réservée à la commande des accessoires par les fonctions F5 à F8 avec l'allocation suivante:
- touche F5: commande de l'aiguille N°1
- touche F6: commande de l'aiguille N°2
- touche F7: commande de l'aiguille N°3
- touche F5: commande du servo qui actionne les barrières du PN
Les autres aigilles seront commandées par des décodeurs d'accessoires.

L'adresse 2 est réservée à la commande de la sonorisation du réseau avec l'allocation suivante:
- touche F5: commande de l'annonce du départ d'un train
- touche F6: commande de l'annonce du passage d'un train
- touche F7: commande de la sonnerie du PN
- touche F8: sonorisation de la scierie (non implémenté actuellement)

Ce mode permet aussi d'enregistrer le trajet sur la carte SD pour être exécuté ensuite en mode automatique.

11. Création des itinéraires par le PC

L'ordinateur est nécessaire pour lire les trajets enregistrés sur la carte SD et pour créer les itinéraires qui seront transférés sur la carte SD.
Un itinéraire peut être constitué par un ou deux trajets qui sont stockés sur le PC dans des feuilles d'un classeur Excel intitulé enregistrement_v2.xls
Sur la carte SD, les trajets sont stockés dans des fichiers texte intitulés A.txt, B.txt, C.txt, etc...
Une macro écrite en VBA permet de lire et écrire ces fichiers texte et de les transférer dans les feuilles Excel.

Vous pouvez télécharger le dossier intitulé "ETA_DCC_SD_V1" en cliquant
ici.

Ce dossier contient:
- le composant NETCOM
- les fichiers .txt à tranférer sur la carte SD
- le classeur Excel intitulé "Enregistrement.xls"
- un mode d'emploi

Page suivante


Page précédente


Retour page d'accueil