mercredi 8 mai 2013

Signalisation: simulation et prototype


Aujourd'hui, j'ai pu mettre en oeuvre le prototype d'un des projets qui me tient à coeur depuis longtemps: la représentation d'un signal SNCF.

Dans le principe, ce n'est pas très compliqué... Par exemple, il suffit de connecter chaque LED à une dispositif électronique dont chaque sortie agira comme un interrupteur pour allumer ou éteindre un feu ou une combinaison de feux. Mais lorsqu'on observe la réalité, on remarque que chaque ampoule s'allume ou s'éteint avec une certaine latence ou persistence. Le but est donc de simuler au mieux ce fonctionnement.

Dans le commerce on trouve des décodeurs de fonctions statiques ou des cartes de signalisation. Cependant, ces cartes ne reproduisent pas de manière réaliste l'allumage et l'extension des feux. De plus, il est quasiment impossible de trouver des décodeurs adaptées à la signalisation SNCF (signaux à combinaisons complexes).

C'est là que l'Arduino entre en jeu. Il est possible de développer un petit programme permettant d'une part de supporter et de représenter la signalisation SNCF au complet et d'autre part de simuler le principe de persistence visuelle décrit précédemment. Je ne parlerai pas aujourd'hui du premier point (gestion de la signalisation avec le protocole LocoNet) car j'aurai l'occasion d'y revenir. Je vais simplement vous décrire les résultats obtenus concernant le second point.

L'idée est simple: plutôt que d'utiliser une sortie digitale "tout ou rien" (principe de l'interrupteur), je vais utiliser les sorties PWM (Pulse Width Modulation = modulation de la largeur de l'impulsion) de l'Arduino. Là non plus je ne rentrerai pas dans les détails du fonctionnement d'une sortie PWM. Retenez seulement que: faire varier la largeur de l'impulsion électrique agit sur une led ou une ampoule comme si l'intensité variait... C'est le même principe qui est utilisé dans les transformateurs à courant pulsé pour alimenter les trains sur nos réseaux (analogiques)...

Dans le micro-programme chargé dans l'Arduino, j'enregistre une courbe d'intensité qui représente l'allumage, l'extension et le clignotement des leds... Et voici ce que cela donne sur une petite vidéo.




Remarque: j'ai ajouté un bouton poussoir dans mon montage afin de simuler l'arrivée des évènements. Dans l'implantation finale, ces évènements seront les messages LocoNet qui seront réceptionnés et décodés...

Dans cet exemple, la suite (libre) des signaux est:
  • Carré
  • Ralentissement 60
  • Voie Libre
  • Sémaphore
  • Rappel Ralentissement 60 + Avertissement
  • Ralentissement 30
  • Voie Libre 160
  • Avertissement
  • Carré...
Toutes les combinaisons ne sont pas encore implantées, mais cela donne une bonne idée des possibilités et de la représentation assez réaliste des signaux. Si vous avez des questions ou si l'implantation d'un tel mécanisme sur Adruino vous intéresse, n'hésitez pas à communiquer avec moi...

Aucun commentaire:

Publier un commentaire