Décodeur DCC Magnorail

Conception d’un décodeur pour Magnorail avec un Arduino et un lecteur MP3

Le système Magnorail utilise un moteur caché qui entraîne une chaîne équipée d’aimants sous la surface du décor. Ces aimants font avancer des véhicules ou cyclistes miniatures placés au-dessus, sans moteur visible, créant une illusion de mouvement réaliste.

L’entrainement est réalisé à l’aide d’un moteur en courant continu. Le projet est de piloter ce moteur en DCC à l’aide d’un décodeur basé sur un Arduino. Il est prévu d’ajouter un lecteur MP3 pour créer une animateur sonore.

Découvrir le principe Magnorail

On trouve sur YouTube de nombreuses mises en scènes très réalistes avec le principe Magnorail.

Décodeur DCC avec un Arduino

Le projet est de permettre de piloter le moteur en courant continu en digital (DCC) avec un décodeur. La contrainte est que l’on pourra commander le moteur que dans un seul sens de circulation. Il est prévu un mode pour permettre la circulation en sens inverse lors des test par exemple. Le choix a été fait de concevoir ce décodeur avec une carte Arduino et de mettre en œuvre un lecteur MP3 pour ajouter des animations sonores.

La commande peut être réalisée :

  • en DCC : commande du moteur et des sons (bruitages) ;
  • avec des boutons poussoirs pour la commande du moteur.

Les démarrages et les arrêts sont progressifs grâce au pilotage d’une carte de développement basé sur le circuit intégré L298N : cette permet le pilotage de 2 moteurs à courant continu ou d’un moteur pas-à-pas.

Les entrées sont optionnelles mais pouvant être utiles pour les tests ou réglages :

  • bouton poussoir pour l’arrêt du moteur
  • bouton poussoir pour l‘augmentation de la vitesse
  • bouton poussoir pour la diminution de la vitesse
  • bouton poussoir pour le changement de direction si le mode inversion de sens de marche est débloqué
  • bouton à levier ou switch pour déverrouiller le sens de circulation imposé

Les sorties sont :

  • 3 sorties pour piloter le circuit L298N : 1 sortie pour le PWM pour gérer la vitesse de rotation et 2 sorties pour le sens de rotation du moteur
  • 1 LED en option indiquer le sens horaire de rotation du moteur
  • 1 LED en option indiquer le sens anti-horaire de rotation du moteur
  • 1 LED en option indiquer le mode bloquage inversion du sens de rotation (direction)
  • 2 sorties pour le commande du lecteur MP3, le DFPlayer Mini MP3
  • 2 sorties optionnelles pour commander au choix un afficheur TM1637 à 4 digits de 7 segments ou un écran LCD 16×2 via le port I2C. L’afficheur permet de visualiser la vitesse de consigne. L’écran LCD pemet d’afficher en plus le sens de rotation, les fonctions F0 à F16 gérée par le DCC. L’usage de l’affiche peut être utilise pour des réglages mais n’est pas utile lors de l’utilisation normale.

Les bibliothèques utilisées sont :

  • EEPROM pour la gestion des paramètres enregistrés dans la mémoire de la carte Arduino
  • AP_DCC_library pour la gestion du signal DCC reçu
  • Bounce2 pour la gestion des rebonds des boutons poussoirs
  • SoftwareSerial et DFRobotDFPlayerMini pour la gestion du lecteur MP3
  • Wire et LiquidCrystal_I2C pour la gestion de l’écran LCD.

Commande et paramétrage

La commande et le paramétrage de la configuration du décodeur peut se faire via le Moniteur Série de la carte Arduino ou depuis la souris d’une centrale DCC.

ParamètresMoniteur Série
xx valeur numérique
Centrale DCC
CV | Valeur par défaut | Plage
Adresse décodeur$DxxCV 1  => 3    [1-127]
Temps du pas entre chaque pas de vitesseCV 2  => 100  [1-255]
Pas accélération$FCV 3  => 8    [1-32]
Pas décélération$fCV 4  => 8    [1-32]
Vitesse par defaut (F0)$ExxCV 5  => 89   [1-100]
Fréquence mini du moteur$pxxCV 6  => 40   [1-255]
Fréquence maxi du moteur$PxxCV 7  => 255  [1-255]
Niveau du volume sonore$MxxCV 8  => 20   [1-30]
Egaliseur lecteur sonore (effet sonore)CV 9  => 0    [0-6]
Configuration générale du décodeurCV 29 => 6    [1-63]
Arrêt du moteur : vitesse = 0$SUtilisation du rotateur de la souris
Vitesse par défaut$AF0
Augmente la vitesse$VUtilisation du rotateur de la souris
Diminue la vitesse$vUtilisation du rotateur de la souris
Inversion du sens de marche si mode débloqué$IUtilisation du rotateur de la souris
Jouer un son$JxxF4 à F16
Afficher l’aide en ligne$H
Afficher la configuration$C
Reset du décodeur$R99

Simulateur en ligne avec Wokwi

Fichiers source