Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Arduino
  3. Les variables de configuration
Extrait - Arduino Faites-le jouer au train (2e édition)
Extraits du livre
Arduino Faites-le jouer au train (2e édition)
7 avis
Revenir à la page d'achat du livre

Les variables de configuration

Principe de fonctionnement

1. La configuration

Pourquoi configurer les locomotives ? Déjà parce que le nouveau décodeur que l’on installe est réglé par défaut sur l’adresse 3 et qu’il faut bien choisir des adresses différentes si l’on veut faire tourner plusieurs locomotives en même temps sur le réseau. Ensuite, parce qu’il faut aussi régler une vitesse maximum proche de la réalité. Enfin, parce qu’il est possible de paramétrer plein d’accessoires et de disposer de nombreuses autres possibilités très ludiques.

Les variables de configuration (ou CV, pour Configuration Variables) permettent donc de paramétrer à volonté le fonctionnement d’une locomotive. Cela commence par le choix du numéro d’identification, nécessaire préliminaire avant toute mise en voie d’une machine nouvellement équipée.

Avant d’aller plus loin, il convient de préciser qu’il existe deux modes de programmation des CV : la programmation en voie et la programmation en mode service.

La programmation en voie, que l’on appelle aussi le mode POM (Program On the Main : programmation sur le réseau principal), permet de programmer les variables de configuration pendant le déplacement du train. Cette méthode est plus pratique pour régler des paramètres dynamiques, tels que les vitesses maximum, minimum et moyenne, car on peut juger immédiatement de leur effet. Par contre, quelques variables de configuration ne sont pas modifiables pendant le déplacement du train, en particulier toutes celles qui permettent de sélectionner l’adresse du décodeur.

Le mode service permet d’accéder à toutes les variables de configuration, y compris celles qui permettent de changer l’adresse du décodeur. C’est d’ailleurs la seule méthode possible pour la changer. En contrepartie, ce mode de programmation impose quelques contraintes : la locomotive doit être à l’arrêt et isolée des autres locomotives.

En définitive, chaque méthode a ses avantages et ses inconvénients.

Programmation en voie

  • Avantages

  • Elle permet de programmer les trains pendant leur déplacement.

  • La locomotive...

Les variables de configuration

1. Les principales CV

Certains décodeurs savent probablement gérer les 1 024 adresses permises par la norme, mais il n’y a qu’une douzaine de CV qui sont réellement essentielles pour débuter. Celles-ci étant normalisées, on les retrouve sur à peu près tous les décodeurs.

1 Adresse courte

Il s’agit de la première CV à programmer lors de la configuration d’une nouvelle locomotive. Sa valeur par défaut est égale à 3. On peut parfaitement commander une locomotive avec cette adresse, mais ce n’est pas recommandé. L’adresse 0 est quant à elle inutilisable, car elle est utilisée comme adresse de diffusion généralisée.

2 Vitesse minimum de démarrage

Il s’agit de la tension appliquée au moteur lorsque l’on se place sur le premier cran de traction. Si la locomotive ne bouge pas sur les premiers crans, c’est que le moteur n’est pas assez alimenté, il faut alors augmenter cette valeur.

3 Temporisation d’accélération

Elle permet de simuler l’inertie d’un convoi ferroviaire. Plus la valeur est élevée et plus le train prendra du temps pour atteindre la vitesse demandée. Le taux d’accélération se calcule à l’aide de la formule suivante :

CV3 x 0,896 / nombre de crans

Il s’agit du temps, en secondes, pour passer d’un cran au suivant. Quel que soit le nombre de crans sélectionnés, le temps pour passer de l’arrêt à la vitesse maximum est toujours égal à :

CV3 x 0,896

La valeur maximale est égale à 255, ce qui correspond à 228 secondes.

Régler cette CV à 0 permet de supprimer l’inertie. Il est également possible de la désactiver temporairement par le biais d’une fonction (généralement F4).

4 Temporisation de freinage

Son fonctionnement est identique à celui de la CV3, si ce n’est qu’il s’agit du ralentissement du convoi. Elle est généralement réglée à une valeur inférieure à celle de la temporisation précédente : le convoi freine donc plus vite qu’il n’accélère, ce qui est conforme...

Un programmeur dédié

1. Le formatage des paquets

Un programmeur de CV est une version simplifiée d’une centrale DCC spécialement dédiée à cette tâche. Il permet de lister le contenu des CV mémorisées pour les modifier plus facilement. Il peut afficher en clair la fonction de chaque CV. On peut même, sur certains modèles, faire une copie de sécurité de la configuration d’une locomotive. Par contre, le programmeur ne dispose pas de commandes pour piloter les trains. Celui présenté dans les lignes qui suivent n’est pas aussi sophistiqué. Il ne permet pas la lecture de la configuration existante, et donc il n’y a pas de sauvegarde de celle-ci en mémoire. En outre, il ne fonctionne qu’en mode service.

Ici, il n’y a pas de nouveau circuit électronique à assembler. C’est la petite centrale qui va bénéficier de ces fonctionnalités supplémentaires.

Une bonne partie du code écrit précédemment va être repris pour créer le programmeur. Le formatage des paquets DCC, leur stockage et la routine sous interruption d’envoi des paquets ont déjà été écrits. Le plus difficile étant déjà fait, il est facile de regrouper ensemble pilotage et programmation au sein d’un même programme. On va donc commencer par définir trois nouveaux types de paquets.

#define DCC_PACKET_TYPE_CV 4 
#define DCC_PACKET_TYPE_CV_BIT 5 
#define DCC_PACKET_TYPE_RESET 6 

L’essentiel du travail consiste à modifier la fonction dccPacketFormat, qui a déjà été écrite. Le premier changement réside dans l’ajout d’un paramètre supplémentaire, data2, utilisé pour coder la valeur de la CV, tandis que data1 sert pour coder son numéro.

void dccPacketFormat(byte type, word addr, word data1,word data2) 
{ 
  byte packetData[DCC_PACKET_SIZE]; 
  byte checksum=0; 
  byte packetSize=1; 
  char* packetPtr=packetData; 

Le code qui formate l’adresse, courte ou longue, du décodeur n’est pas utilisé dans le cas d’un programmeur en mode service. On peut donc directement passer à la structure switch/case...

La programmation en voie

1. Le principe

La programmation en mode service impose de laisser la locomotive à l’arrêt, ce qui n’est pas idéal lorsqu’il s’agit de régler la vitesse maximum, l’accélération, le freinage, ou la courbe de vitesse. Dans ce cas, on préférera se tourner vers le mode POM (Program On the Main : programmation sur la voie principale). Dans ce mode de programmation d’autres locomotives peuvent être présentes sur le réseau puisque l’adresse de la locomotive à programmer est explicitement indiquée dans la commande.

Les commandes POM peuvent prendre quatre aspects différents selon que l’adressage et la commande sont codés sur un octet (format court) ou deux octets (format long). C’est le quatrième bit de l’octet de commande qui permet de différentier les deux formats de commande : il est à 1 pour le format court, et à 0 pour le format long.

Adressage court et commande courte :

0AAAAAAA - 0 - 1111CCCC - 0 - DDDDDDDD

Adressage long et commande courte :

11AAAAAA - 0 - AAAAAAA - 0 - 1111CCCC - 0 - DDDDDDDD

Adressage court et commande longue :

0AAAAAAA - 0 - 1110CCVV - 0 - VVVVVVVV - 0 - DDDDDDDD

Adressage long et commande longue :

11AAAAAA - 0 - AAAAAAA - 0 - 1110CCVV - 0 - VVVVVVVV - 0 - DDDDDDDD

Les bits sont répartis de la façon suivante :

  • A : adresse du décodeur

  • C : commande

  • V : numéro de la CV

  • D : données destinées à la CV

2. Les commandes

Sur les 16 combinaisons possibles, il n’y a que deux commandes courtes qui sont réellement utiles :

  • 0010 : accélération (CV23)

  • 0011 : décélération (CV24)

Ces commandes sont utilisées sur les centrales DCC les plus sophistiquées pour modifier dynamiquement les caractéristiques de traction et de freinage de la locomotive en fonction du convoi qui y est attelé, voire même en fonction du profil de voie où...