Commande automatique d'un réseau en DCC avec le module SPROG II.


Menu

1.Introduction

2. Pilotage manuel d'un train sur le réseau avec le PC

3.Description d'un booster pour SPROG II

4. Commande automatique par ordinateur d'une loco sans rétrosignalisation

5. Commande automatique du réseau par ordinateur en Visual Basic avec rétrosignalisation

6. Commande automatique du réseau par ordinateur avec le logiciel RRTC (RailRoad Train Control)

7. Commande du SPROG en WiFi

1.Introduction

Le module SPROG II dont le prix est de 75 Euros permet, associé au logiciel JMRI DecoderPro, de programmer n'importe quel décodeur DCC depuis n'importe quel ordinateur équipé d'un port USB. Il est vendu en France par
Boutique-Train.fr

Le module est alimenté en continu par une petite alimentation 10/15 V (prix 11 Euros chez Boutique-Train.fr )

Ce module peut aussi être utilisé comme centrale de commande d'un petit réseau. C'est cette application que je vais décrire. Il faut noter que le courant de sortie du module est limité à 1A environ ce qui est suffisant pour piloter une petite loco mais est insuffisant pour un réseau (surtout en Zéro).
Il faut alors utiliser le module SPROG 3 ou adjoindre un booster au SPROG II.
Il n'est pas très difficile de réaliser un booster soi-même. Vous trouverez un exemple de réalisation dans le paragraphe 3.

2. Pilotage manuel d'un train sur le réseau avec le PC et JMRI DecoderPro

Le SPROG II doit être configuré dans le mode "SPROG Command Station" comme indiqué dans le mode d'emploi. Voici la marche à suivre pour ouvrir un régulateur. Cliquer sur l'icone de Décodeur Pro. Vous obtenez la fenêtre suivante:


Fig 01
Cliquer sur Outils puis sur Régulateurs et nouveau régulateur.

La fenêtre suivante s'ouvre


Fig 02
Entrez l'adresse de la loco dans la zône de texte sous "Address Panel" puis cliquez sur Set.
Puis cliquez sur Power dans la barre de titres puis sur Power On. Le signal DCC est envoyé sur la voie et on peut piloter la loco en cliquant sur les différentes fonctions de la fenêtre suivante (Fig 3)


Fig 03


3. Booster pour SPROG II

Avec le SPROG II seul,le courant de sortie est limité à 1 ampère environ.
Pour disposer d'un courant supérieur, il faut placer un booster entre le SPROG II et le réseau. On peut en réaliser un soi-même mais on peut aussi utiliser un ampli audio.

3.1 Utilisation d'un ampli audio comme booster

On peut utiliser un ampli audio comme booster. Les essais ont été faits avec un vieil ampli SONY (ref TA-AX2) de puissance 2x30W.
La sortie du module SPROG II a été connectée sur l'entrée de l'ampli audio (après avoir atténué le signal de sortie du SPROG II) et ça marche très bien. L'ampli permet de sortir un courant de 4 Ampères sous une tension de 16 Volts et en plus, il est protégé contre les court-circuits.
La figure ci-dessous montre le petit circuit à insérer entre la sortie du SPROG II et l'entrée de l'ampli.

Le bouton de volume de l'ampli permet d'ajuster la tension du signal DCC.
Par sécurité, pour éviter d'envoyer par erreur une tension trop élevée sur les rails, il faut procéder comme suit:
- mettre le potentiomètre P à zéro
- mettre le bouton de volume de l'ampli à fond
- tourner le potentiomètre P jusqu'à obtenir la tension désirée en sortie de l'ampli

La photo ci-dessous montre la station de commande DCC avec le module SPROG II, l'atténuateur et l'ampli audio SONY utilisé comme booster DCC.




On peut trouver sans problème sur eBay ou dans les brocantes des vieux amplis qui peuvent convenir et on obtient alors un excellent booster à faible coût.

3.2 Réalisation personnelle d'un booster

On peut réaliser soi-même un booster qui délivre jusqu'à 6 Ampères pour moins de 50 Euros et l'on peut disposer alors d'une bonne station de commande pour environ 120 Euros (59 Euros pour le module SPROG II, 11 Euros pour l'alimentation du module et 50 Euros pour le booster).

Le montage réalisé est représenté sur la figure 4. Le SPROG II associé à une alimentation externe est plaçé entre le PC et le booster.


Fig 04


Le booster réalisé permet de délivrer un courant maximal de 6 Ampères environ.
Il est associé à une alimentation classique qui délivre des tensions de +21 et -21 Volts.
Le schéma de l'alimentation est donné sur la figure 5.


Fig 5


Elle est constituée par:
- un transformateur torique de 80VA qui délivre deux sorties de 15 V alternatif
- un fusible de protection 250V 0,5A à réarmement automatique
- deux redresseurs 250V 15A
- deux condensateurs de 6800µF

Le schéma du booster réalisé est donné sur la figure6.


Fig 6


Le signal DCC en sortie du SPROG II est appliqué via un condensateur de 1µF à un montage push-pull constitué des transistors BC 337, BC327,BD 243C et BD 244C. En l'absence de signal DCC à l'entrée, la tension de sortie est proche de zéro.
Le booster incorpore un dispositif de protection contre les court-circuits qui peuvent se produire sur le réseau (déraillement d'une loco par exemple). La protection est assurée par un limiteur de courant. Dans un premier temps, je n'ai utilisé qu'un fusible à réarmement automatique mais le temps de réaction était trop long et ne protégeait pas les transistors de puissance (j'en ai détruit plusieurs).
Le principe du limiteur de courant est le suivant. Les 4 diodes fixent la tension entre la base du transistor BC337 et la résistance Rc à une valeur de 2.8V environ (4 x 0.7V). La tension base-émetteur de chaque transistor BC337 et BD243C est d'environ 0.6V. Le courant maximal qui peut passer dans la résistance Rc est alors donné par la formule:
Imax(A) = 1.6/Rc(Ohms).
Avec Rc = 0.5 Ohms, on obtient Imax = 3.2A et avec Rc = 0.25 Ohm, on obtient Imax = 6,4A qui est la limite à ne pas dépasser pour le transistor BD243C.
Pour l'instant, un courant de 3A est suffisant pour mon réseau et j'utilise Rc=0,5 Ohm (obtenu par la mise en parallèle de 2 résistances de 1 Ohm 1 Watt).
Les transistors de puissance BD243C et BD 244C doivent être montés sur des radiateurs assez grands car ils dissipent beaucoup de puissance lorsque la sortie est en court circuit. Il est d'ailleurs prudent de conserver en série sur la sortie DCC un fusible à réarmement automatique qui va couper le signal en cas de court-circuit et protéger les transistors de puissance.

La photo suivante (Fig 7) montre le booster réalisé avant la mise en boîte.


Fig 7


La liste des composants que j'ai acheté chez GOTRONIC est donné dans le tableau ci-dessous (Fig 8).


Fig 8


4. Commande automatique par PC d'une loco sans rétrosignalisation

4.1 Généralités

Pour automatiser le pilotage d'une loco avec SPROG II, il faut écrire un script en langage Python. En pratique, il suffit de connaître quelques instructions simples pour pouvoir réaliser rapidement une commande automatisée d'une petite loco (par exemple faire un va et vient avec arrêt temporisé aux extrémités).
Cependant, on est très vite limité car le module SPROG II ne gère pas la rétrosignalisation.

4.2 Ecriture d'un script pour SPROG II

Le script peut s'écrire avec le bloc-note de Windows. Voici les principales commandes à écrire pour piloter une loco.

Déclarations à placer au début du programme:
import jarray
import jmri
class Test1(jmri.jmrit.automat.AbstractAutomaton) : def handle(self):

Adresse de la loco (ci-dessous, l'adresse est 11)
loco= 11
if loco<128 :
long=False
else :
long=True
self.throttle = self.getThrottle(loco, long)

temporisation entre deux commandes (en ms):
self.waitMsec(200)

sens de marche (True pour marche avant, False pour marche arrière):
self.throttle.setIsForward(True)

réglage de la vitesse (entre 0 et 100):
v= 10
vitesse=float(v)/100
self.throttle.setSpeedSetting(vitesse)

activation de la fonction Fn (n= 0 à 12):
self.throttle.setFn(True)

désactivation de la fonction Fn:
self.throttle.setFn(False)

cloture du programme:
return 1
Test1().start()

Lorsque le script est terminé, donnez lui un nom et enregistrer le sous la forme "nom.py" puis placer le fichier "nom.py" dans le dossier "jython" du programme "jmri" qui se trouve normalement dans le dossier "Program files" du disque C.

A titre d'exemple, vous pouvez télécharger le fichier test.py qui réalise les actions suivantes pour une loco d'adresse 3 (évidemment vous pouvez changer l'adresse):
- activation de la fonction F0
- attente de 5 s
- activation de la fonction F1
- attente de 5 s
- marche avant à la vitesse 10 pendant 10 s
- arrêt pendant 5 s
- marche arrière à la vitesse 10 pendant 10 s
- désactivation de la fonction F1
- attente de 5 s
- désactivation de la fonction F0
- attente de 5 s
Pour télécharger le fichier, cliquer
ici.
Après avoir dézippé le fichier, placez le dans le dossier "jython" du dossier "jmri".
Pour modifier le fichier, cliquez sur le fichier avec le clic droit de la souris et choisissez ouvrir avec le bloc notes de windows.

4.3 Exécution du script

Pour exécuter un script, lancez le logiciel DecoderPro. La fenêtre de la figure 9 apparaît.


Fig 9


Cliquez sur "outils" puis sur "contrôle alimentation". La fenêtre de la figure 10 apparaît.


Fig 10


Cliquez sur "Rétablir". Le signal DCC est alors envoyé au réseau.

Puis dans la barre de titre de la fenêtre de DecoderPro, cliquez sur "Panneaux" puis sur "Run script...".
La fenêtre de la figure 11 apparaît.
Dans la liste, cliquez sur le fichier "test.py" puis sur "ouvrir". Le script est lancé et le programme s'exécute.


Fig 11


Vous pouvez surveiller le déroulement du programme en cliquant sur "SPROG" puis sur "Slot monitor".

5. Commande automatique du réseau par ordinateur en Visual Basic avec rétrosignalisation

5.1 Généralités

La commande automatique par ordinateur d'un réseau nécessite de disposer d'un système de rétrosignalisation qui transmet à l'ordinateur les signaux des détecteurs de passage et des détecteurs d'occupation des cantons.
Pour gérer la rétrodignalisation, il faut ajouter une carte qui permet d'assurer cette fonction.
On trouve dans le commerce de nombreux modules qui se connectent au PC en USB et qui sont souvent programmables en Visual Basic ou en C++ mais jamais en PYTHON (à ma connaissance). D'où l'intérêt d'utiliser Visual Basic pour la programmation du système, y compris le SPROG 2.

Personnellement,j'utilise pour la rétrosignalisation une carte Velleman VM110 disponible chez GOTRONIC qui se connecte au PC en USB et dispose de 5 entrées numériques.

Le shéma du montage réalisé est donné sur la figure 12.


Fig 12


Il comprend les éléments suivants:
- le module SPROG II
- un booster comme celui décrit dans le paragraphe 3
- une carte USB Vellemann VM110 qui permet de commander les aiguilles et reçoit les signaux de rétrosignalisation transmis par les détecteurs de passage ou les détecteurs d'occupation de canton
- un logiciel de commande du réseau écrit en VisualBasic.

Le logiciel de commande du réseau reçoit les informations de rétrosignalisation et envoie les ordres de commande au SPROG 2
Pour créer un itinéraire, j'utilise des tableaux Excel dont chaque ligne correspond à une séquence à exécuter.
Le logiciel de commande du réseau écrit en Visual Basic lit les données du tableau Excel et génère automatiquement le script de commande du module SPROG II.

5.2 Commande du SPROG 2 en Visual Basic

Il est tout à fait possible de commander le SPROG 2 en Visual Basic.
Pour gérer le port série, la meilleure façon est d’utiliser le Microsoft Comm Control distribué avec n’importe quelle édition de Visual Basic. Il suffit simplement de le rajouter dans la liste des contrôles de la barre d’outils comme le montre la photo ci-dessous.


Fig 13


Une fois le contrôle rajouté, son icône apparaît dans la barre des contrôles. Il suffit d’en placer une instance sur la feuille pour pouvoir l’utiliser. Par défaut, ce contrôle s’appellera MSComm1, et on retiendra ce nom pour la suite de l’application :


Fig 14


Voici les commandes Visual Basic qui permettent de commander le SPROG 2.

Ouverture du port COM
MSComm1.CommPort = N (N étant le numéro du port)
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True

Fermeture du port COM
MSComm1.PortOpen = False

Envoi du signal DCC sur les rails
MSComm1.Output = "+" & vbCrLf

Coupure du signal DCC
MSComm1.Output = "-" & vbCrLf

Commande de l'adresse du décodeur, du sens de marche et de la vitesse

L'adresse étant un entier décimal entre 1 et 128, la commande s'écrit:
MSComm1.Output = "A" + Str(adresse) & vbCrLf

La vitesse est un entier décimal compris entre 0 et 100 (100 correspond à la vitesse maximale).

La commande de vitesse en marche avant s'écrit:
MSComm1.Output = ">" + Str(vitesse) & vbCrLf

La commande de vitesse en marche arrière s'écrit:
MSComm1.Output = "<" + Str(vitesse) & vbCrLf

Avec ces commandes, le SPROG génére les paquets de commande de vitesse.

Commande des fonctions F0 à F8

Pour commander les fonctions, il faut envoyer au SPROG les 3 octets d'adresse, de commande et de contrôle en hexadécimal.
L'instruction est la suivante:

MSComm1.Output = "O" + " " + adresseh + " " + commandeh + " " + controleh & vbCrLf

adresseh, commandeh et controleh sont les valeurs en hexadécimal des trois octets d'adresse, de commande et de contrôle.

De plus, il faut générer deux paquets de commande de fonctions:
- un paquet de commande des fonctions du groupe 1 (F0 à F4)
- un paquet de commande des fonctions du groupe 2 (F5 à F8)
Voici un petit programme de calcul des octets en hexadécimal à partir des valeurs des fonctions F0 à F8 (chaque fonction Fn peut prendre la valeur 0 ou 1).

On va adopter les notations suivantes pour les octets; A1 à A8 sont les bits de l'octet d'adresse (A8 est le bit de poids faible)
c1 à c8 sont les bits de l'octet de commande des fonctions du groupe 1 (c8 est le bit de poids faible)
d1 à d8 sont les bits de l'octet de commande des fonctions du groupe 2 (d8 est le bit de poids faible)
e1 à e8 sont les bits de l'octet de controle des fonctions du groupe 1 (e8 est le bit de poids faible)
ed1 à ed8 sont les bits de l'octet de commande des fonctions du groupe 2 (ed8 est le bit de poids faible)

Les bits de commande des fonctions sont définis comme suit:

c(1) = 1
c(2) = 0
c(3) = 0
c(4) = 1 si F0 = 1
c(5) = 1 si F4 = 1
c(6) = 1 si F3 = 1
c(7) = 1 si F2 = 1
c(8) = 1 si F1 = 1

d(1) = 1
d(2) = 0
d(3) = 1
d(4) = 1
d(5) = 1 si F8 = 1
d(6) = 1 si F7 = 1
d(7) = 1 si F6 = 1
d(8) = 1 si F5 = 1

A partir de l'adresse du décodeur en décimal, on calcule l'octet d'adresse (A1 à A8) en binaire (A8 est le bit de poids faible) avec le sous-programme suivant:

adress = adresse(m)
A(1) = Int(adress / 128)
If A(1) = 1 Then
adress = adress - 128
End If
A(2) = Int(adress / 64)
If A(2) = 1 Then
adress = adress - 64
End If
A(3) = Int(adress / 32)
If A(3) = 1 Then
adress = adress - 32
End If
A(4) = Int(adress / 16)
If A(4) = 1 Then
adress = adress - 16
End If
A(5) = Int(adress / 8)
If A(5) = 1 Then
adress = adress - 8
End If
A(6) = Int(adress / 4)
If A(6) = 1 Then
adress = adress - 4
End If
A(7) = Int(adress / 2)
If A(7) = 1 Then
adress = adress - 2
End If
A(8) = Int(adress)

L'octet de commande de fonctions du groupe 1 s'écrit en décimal:

commanded = c(8) + 2 * c(7) + 4 * c(6) + 8 * c(5) + 16 * c(4) + 32 * c(3) + 64 * c(2) + 128 * c(1)
Et en hexadécimal:
commandeh = Hex(commanded)

L'octet de controle des fonctions du groupe 1 se calcule à partir des expressions ci-dessous:
For i = 1 To 8
e(i) = A(i) Xor c(i)
Next i
controled = e(8) + 2 * e(7) + 4 * e(6) + 8 * e(5) + 16 * e(4) + 32 * e(3) + 64 * e(2) + 128 * e(1)
controleh = Hex(controled)

L'octet de commande de fonctions du groupe 2 s'écrit en décimal:
commanded = d(8) + 2 * d(7) + 4 * d(6) + 8 * d(5) + 16 * d(4) + 32 * d(3) + 64 * d(2) + 128 * d(1)
Et en hexadécimal:
commandeh = Hex(commanded)

L'octet de controle des fonctions du groupe 2 se calcule à partir des expressions ci-dessous:
For i = 1 To 8
ed(i) = A(i) Xor d(i)
Next i
controled = ed(8) + 2 * ed(7) + 4 * ed(6) + 8 * ed(5) + 16 * ed(4) + 32 * ed(3) + 64 * ed(2) + 128 * ed(1)
Et en hexadécimal:
controleh = Hex(controled)

Note: Cette rubrique a été rédigée en collaboration avec Nicolas Pincemin qui s'intéresse également au SPROG 2 (
voir son site).

5.3 Création d'un itinéraire

La figure ci-dessous montre les donneées d'un tableau Excel correspondant à un itinéraire.


Fig 15


Chaque colonne correspond à une action à exécuter:
colonne A: adresse loco
colonne B: sens de marche. ma=0 correspond à la marche avant et ma=1 correspond à la marche arrière
colonne C: vitesse entre 0 et 100
colonnes D à L: fonctions F0 à F8
colonne M: durée de la séquence entre 1 et 99 secondes. Les valeurs supérieures à 100 correspondent à l'attente du signal d'un détecteur de passage ou d'occupation de canton
colonne N: numéro de l'aiguillage à commander
colonne O: commande de l'aiguille (0 pour direct et 1 pour dévié)

Le logiciel de commande lit les données du tableau Excel et exécute les commandes correspondantes.

A titre d'exemple, la figure ci-dessous montre l'interface du logiciel de commande que j'ai créé pour piloter une partie du réseau du Cercle Atlantique du Zéro.


Fig 16


Si vous êtes intéressés par cette application, contactez moi. Je peux vous fournir le logiciel que j'ai développé et vous aider pour l'appliquer à votre réseau.

6. Commande automatique du réseau par ordinateur avec le logiciel RRTC (RailRoad Train Control)

6.1 Généralités

Le SPROG est maintenant reconnu par la dernière version du logiciel RRTC (RailRoad Train Control) .
Pour la rétrosignalisation, on peut utiliser le système HSI-88 directement compatible avec RRTC.
Vous pouvez aussi utiliser pour la rétrosignalisation une carte Velleman VM110 ou un module RAVAR IO32 avec des détecteurs d'occupation LENZ ou équivalent.
J'ai développé un logiciel d'interface (VB-RRTC) écrit en Visual Basic (VB6) qui permet de recevoir les les commandes des cartes compatibles avec Visual Basic (carte Vellemann VM110, module RAVAR IO24, modules utilisant l'interface parallèle) et les transmet à RRTC en utilisant les commandes HSI88.

6.2 Installation et paramétrage de ComOcom

Il faut d'abord installer le logiciel gratuit ComOcom qui permet de créer des paires de ports COM virtuels qui seront utilisés pour communiquer entre RRTC et VB-RRTC.
Pour télécharger ComOcom, cliquez
ici.

Il suffit d'exécuter le programme d'installation (setup.exe). Un assistant d'installation vous guide à travers les étapes nécessaires.
Vous devez ajouter une paire de ports COM supplémentaire avec le programme "Setup Command Prompt":
1. Lancer le programme "Setup Command Prompt".
2. Entrer la commande:
command> install - -

Puis changez les noms CNCA0 et CNCB0 par COM11 et COM12 et CNCA1 et CNB1 par COM13 et COM14
1. Lancer le programme "Setup Command Prompt".
2. Entrez les commandes:
command> change CNCA0 PortName=COM11
command> change CNCB0 PortName=COM12
command> change CNCA1 PortName=COM13
command> change CNCB1 PortName=COM14

Vous disposez maintenant de quatre ports COM virtuels qui vont être utilisés pour communiquer entre les programmes RRTC et VB-RRTC.

6.3 Installation et paramétrage de VB-RRTC

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

Le programme offre trois choix pour la rétrosignalisation (boutons d'option):
- option 1: simulation clavier Cette option permet de simuler les contacts de rétrosignalisation par les touches du clavier pendant la mise au point des programmes RRTC. On peut activer 12 détecteurs par les touches du clavier (la touche A active le détecteur 1, B le détecteur 2, etc...).
- option2: carte Velleman VM 110. Cette option gère la rétrosignalisation par une carte Velleman VM110 (adresse 0) qui se connecte au PC en USB et qui peut gérer 5 détecteurs d'occupation d'adresses 1 à 5.
- option3: Module RAVAR IO24. Cette option gère la rétrosignalisation par une carte RAVAR IO24 qui se connecte au PC en USB et qui peut gérer 24 détecteurs d'occupation d'adresses 1 à 24.Le programme VB-RRTC ne permet que d'en gérer 16.

6.4 Paramétrage de RRTC

Indiquez votre système digital: menu RRTC, option Configurer les systèmes numériques puis autres
Choisir le système "SPROG" et indiquer le port COM du SPROG
puis choisir le système "HSI-88" et affecter le port COM14
Pour RRTC, tout se passe comme s'il gérait une rétrosignalisation HSI-88.
Si vous utilisez une rétrosignalisation avec une carte d'interface HSI-88 USB, il faut choisir dans RRTC le système "HSI-88 USB".
Pour la rétrosignalisation, dans le paramétrage des détecteurs (block Editor), il faut choisir les options suivantes:
- Digital System: LDT HSI-88 left Bus
- Address: 1
- Input: 1 à 5 (Carte Velleman) ou 1 à 16 (carte IO24)

6.5 Utilisation des programmes RRTC et VB-RRTC

Lancez le programme VB-RRTC.exe qui tournera en tâche de fond. Choisissez le système de rétrosignalisation puis cliquez sur "départ". Puis lancer le logiciel RRTC .

6.6 Montage de test

Un petit montage a été réalisé afin de tester le système. Le signal DCC est généré par le SPROG II, la rétrosignalisation utilise le système LTD HSI-88 et le réseau est piloté par le logiciel RRTC.

Le réseau test comprend les éléments suivants:
- 5 cantons équipés de détecteurs d'occupation LENZ LB101
- un aiguillage commandé par un moteur Tortoise et par un module CDF
- un module SPROG II qui génère le signal DCC
- un module de rétrosignalisation LDT RM-88-N
- un module de rétrosignalisation LDT HSI-88-USB

La vidéo ci-dessous montre deux locos pilotées par ordinateur avec RRTC.



7. Commande du SPROG avec un smartphone ou une tablette en WiFi

Il est possible d'utiliser un smartphone ou une tablette pour commander le SPROG sans fil. Il suffit que le smartphone ou la tablette puisse se connecter à Internet en WiFi via le réseau local de la maison.
Pour celà, il faut installer un petit serveur web sur le PC qui commande le SPROG.. Le PC doit être relié en WiFi à la "box" du fournisseur d'accès (Livebox, Freebox, etc...).
J'ai trouvé sur Internet un petit serveur écrit en Visual Basic et je l'ai modifié pour inclure les commandes du SPROG.. Vous trouverez une description de ce logiciel en cliquant
ici.



Page suivante


Page précédente


Retour page d'accueil