Création d'un signal DCC sur l'interface parallèle d'un PC


1. Généralités

Il est possible de concevoir à partir d'un PC et pour un prix modique, un système permettant de générer un signal DCC et de piloter un réseau en gérant la rétrosignalisation.

Cette approche consiste à générer le signal DCC directement sur l'interface parallèle du PC. Cette solution est très économique et fonctionne bien. Malheureusement, l'interface parallèle a disparu des PC récents (en particulier les portables) et cette approche est donc obsolète. La meilleure solution consiste à utiliser un module ARDUINO connecté en USB au PC

Cependant, si vous possédez encore un vieux PC avec interface parallèle, celà vaut la peine d'essayer.

Le système réalisé est constitué d'un logiciel écrit en Visual Basic et d'une interface matérielle (booster) entre le connecteur parallèle du PC et les rails .On peut utiliser un ampli audio comme booster.

Pour la rétrosignalisation, on peut utiliser les entrées numériques disponibles sur l'interface parallèle du PC ou bien un module du commerce qui dispose d'entrées numériques et/ou analogiques et qui se connecte en USB au PC.

2. Création d'un signal DCC sur l'interface parallèle d'un PC avec Visual Basic

Le programme que j'ai écrit, appelé "TCM", permet de générer les paquets nécessaires à la commande simultanée de plusieurs décodeurs de locomotives et pour chaque loco effectue les opérations suivantes:
- réglage de la vitesse et du sens de marche des motrices
- mise en route et arrêt des accessoires de la loco (phares, fumigène, sons), fonctions F0 à F4

Le progamme TCM permet également de programmer l'adresse du décodeur. (habituellement, l'adresse programmée en usine pour un décodeur de locomotive est l'adresse 3).

Les premiers tests ont été réalisés avec 2 décodeurs: un décodeur LENZ "Digital Plus" ref LE 1025A et un décodeur ZIMO ref MX64

Puis une série de tests a été effectuée avec les décodeurs suivants:
- un décodeur DCX80 3A destiné aux grandes échelles (O ou G) de la société CT Elektronik
- un décodeur sonore GE70 DI qui permet de sonoriser une loco diesel (société CT Elektronik)
- plusieurs décodeurs sonores Loksound V3.5 de la société ESU
- plusieurs décodeurs sonores Loksound XL de la société ESU
- un décodeur Quantum destiné aux grandes échelles (O ou G) de la société QSI
- un décodeur sonore MX640 de la société ZIMO
- un décodeur non sonorisé LGB

Tous les décodeurs fonctionnent parfaitement à l'exception du décodeur MX640 de ZIMO qui présente un fonctionnement erratique non expliqué.

Il faut noter que le système marche d'autant mieux que le processeur du PC est rapide.

Le tableau ci-dessous donne les résultats obtenus avec trois PC de différentes générations.

Processeur

Système d'exploitation

Résultats

Intel Pentium 233 MHz
Windows 98
Fonctionnement correct, peu de paquets perdus
Intel Celeron 633 MHz
Windows 98
Fonctionnement correct, peu de paquets perdus
Intel Celeron 633 MHz
Windows 2000
Fonctionnement correct, peu de paquets perdus
AMD Athlon xp2500 (2 GHz)
Windows 2000, XP
Fonctionnement impeccable
Sempron 2800+ 1,6 GHz
Windows XP
Fonctionnement impeccable


L'un des grands avantages du DCC est la possibilté de sonoriser les locomotives et j'ai maintenant installé des décodeurs sonores dans la plupart de mes locomotives.

Les résultats obtenus sont très bons.

Les haut-parleurs plaçés sous le réseau sont utilisés en complément pour les annonces en gare et pour actionner le klaxon de la loco diesel lorsqu'elle passe devant un détecteur.

J'ai également réalisé un programme appelé CARTO-DCC (Commande Automatique de Trains par Ordinateur en DCC) qui permet d'automatiser la commande d'un réseau en DCC. Actuellement le programme permet de faire circuler ensemble quatre trains sur le réseau.

3. Choix du logiciel: Freebasic et Visual Basic.

Il n'est pas possible d'utiliser QBasic pour générer un signal DCC car le logiciel est trop lent et de plus QBasic ne marche qu'avec les anciennes versions de Windows (95 et 98).

Mais il existe maintenant un compilateur rapide pour QBasic appelé FreeBasic qui est gratuit, rapide et compatible avec toutes les versions anciennes de Windows (95, 98, 2000 et XP).
Le compilateur est vraiment très rapide. Il va plus vite que celui de Visual Basic et j'ai pu ainsi générer un signal DCC correct avec mon vieux PC à 233 MHz et Windows 98. En mode automatique où les itinéraires sont préprogrammés, celà marche très bien. Cependant, j'ai de grosses difficultés avec la commande par clavier: parfois les commandes ne sont pas prises en compte ou sont prises en compte avec retard. Je n'ai pas pu résoudre le problème. Par contre, la commande par la souris marche très bien.
Il est donc difficilement envisageable d'utiliser Freebasic pour faire un TCO.
Si vous voulez utiliser FreeBasic, je vous conseille une version avec éditeur qui permet d'éditer le programme dans une fenêtre Windows puis de le compiler avec FreeBasic.
Vous pouvez utiliser FBIde qui est gratuit et que vous pouvez télécharger en cliquant ici.

La meilleure solution est d'utiliser Visual Basic qui est très puissant, largement répandu et compatible avec toutes les versions de Windows (de Windows 98 à Windows 10).
La plupart de mes programmes sont écrits en Visual Basic version 6 (VB6) qui était payant à l'époque et n'est plus commercialisé. Mais on peut encore le télécharger en cliquant sur le lien ci-dessous:
https://vb.developpez.com/msdnvb6/

Depuis la version 2005 de Visual Studio, Microsoft propose les Express Editions, des versions limitées mais gratuites de leurs produits, destinées essentiellement aux étudiants. J'ai utilisé la version 2010 de la suite appelée Visual Basic Express Edition 2010 que vous pouvez télécharger en cliquant ici.
Vous trouverez un mode d'mploi de Visual Basic Express 2010 en cliquant ici.
Pour certains programmes, je fournis le code source en Visual Basic 2010 pour que vous puissiez les modifier et les adapter à vos besoins. Maintenant, la firme de Redmond propose la version 2017 de Visual Studio que vous pouvez télécharger en cliquant ici.

Il faut noter que la vieille version VB6 qui est compatible avec Windows 10 et simple à utiliser, suffit largement à nos applications ferroviaires.

4. Génération des bits à "1" et "0" par le PC



Dans un bit à "1", les deux alternances ont une durée de 58 us chacune. Ainsi, la durée d'un bit à "1" est de 116 us.

Dans un bit à "0", les deux alternances doivent avoir une durée supérieure à 100 us.

Les sous programmes écrits en Visual Basic pour générer les bit à "1" et "0" sont les suivants:

1 'emission d'un 1'
OUT 888, 2
FOR j = 1 TO p1
NEXT j
OUT 888, 3
FOR j = 1 TO p1
NEXT j
RETURN

0 'emission d'un zero'
OUT 888, 2
FOR j = 1 TO p2
NEXT j
OUT 888, 3
FOR j = 1 TO p2
NEXT j
RETURN

Les paramètres p1 et p2 qui permettent d'ajuster la durée du bit dépendent de la fréquence du processeur du PC utilisé. Le programme TCM permet de les ajuster automatiquement en fonction du PC utilisé.

Le principe utilisé est le suivant:

Le programme compte le nombre n de bits à "1" émis pendant une durée dt de quelques secondes. On obtient ainsi la fréquence f=n/dt (la durée du bit est l'inverse de la fréquence). La fréquence f doit être proche de 8600 Hz.

t = TIMER
n = 0
DO
GOSUB 1
n = n + 1
LOOP UNTIL INKEY$ = CHR$(27)
dt = TIMER - t
PRINT "durée="; dt; "secondes"
f = n / dt
PRINT "fréquence="; f; "Hz"
GOTO 10
1 'emission d'un 1'
OUT 888, 0
FOR j = 1 TO p1
NEXT j
OUT 888, 1
FOR j = 1 TO p1
NEXT j
RETURN
10 END

Le programme réalise des itérations successives jusqu'à ce que la fréquence obtenue soit voisine de 8600 Hz.

A titre d'exemple, voici la séquence 00100001 visualisée à l'oscilloscope (avec WinOscillo) en sortie du booster:



5. Réalisation d'un "booster"

L'interface entre le PC et les rails (booster) a pour fonction de convertir le signal 0-5V en sortie du PC en un signal d'amplitude +/- 12V à +/-20V conformément à la norme DCC. De plus le booster doit pouvoir délivrer un courant de plusieurs ampères. On peut en réaliser un soi-même mais on peut aussi utiliser un ampli audio.

5.1 Utilisation d'un ampli audio comme booster

Suite à une question d'un modéliste, Dominique DURRENBERGER, qui demandait s'il était possible d'utiliser un ampli audio comme booster, j'ai ressorti un vieil ampli SONY (ref TA-AX2) de puissance 2x30W et ça marche très bien. L'ampli permet de sortir un courant de plus de 4 Ampères sous une tension de 16 Volts et en plus, il est protégé contre les court-circuits.
Il faut insérer un atténuateur entre la sortie du signal sur le connecteur parallèle du PC et l'entrée de l'ampli audio.
La figure ci-dessous montre le petit circuit à insérer.


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 maximale désirée en sortie de l'ampli (par exemple 20V). La mesure de tension se fait avec un voltmètre réglé pour l'alternatif.

La photo ci-dessous montre la station de commande DCC avec le PC, 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.

5.2 Réalisation personnelle d'un booster

Le schéma de base d'un booster simplifié est le suivant:



Le signal 0-5V obtenu entre la sortie D0 et la masse du connecteur parallèle du PC est appliqué à l'entrée + d'un comparateur rapide LM 311.
L'entrée 3 est à la tension de 1,6 Volt obtenue par le pont diviseur 10K/1,5K.
Le signal +/- 12 volts obtenu en sortie du comparateur est appliqué à un montage push-pull constitué des transistors de puissance BD 243 et BD 244 qui doivent être montés sur des radiateurs.
Sur la sortie qui alimente les rails, on obtient ainsi des impulsions symétriques d'amplitude 24 Vcc.

Ce booster simplifié peut fournir un courant de 0,5 A environ en utilisant deux petites alimentations classiques du commerce de 0,8 A. C'est suffisant pour faire circuler une petite loco et pour faire la programmation des CV.

Le deuxième schéma représenté ci-dessous peut fournir un courant de 3 A et inclut des protections pour éviter de détériorer le booster et les décodeurs.

Un relais commandé par le transistor BC 337 se ferme lorsque D1 = 5V. Ceci permet de n'envoyer un signal sur les rails que lorsqu'un signal DCC est présent sur la sortie D0 ce qui évite la présence d'une tension continue sur les rails en absence de signal DCC.

De plus, un fusible automatique de 3A protège le booster contre les court-circuits sur les rails.



L'alimentation qui fournit les tensions +/- 17 Volts peut être réalisée à partir d'un transformateur qui doit délivrer une tension alternative de 12 Volts environ et un courant d'au moins 4 ampères, ce qui permet après redressement et filtrage d'obtenir des tensions continues de + 17 V et - 17 V.
Le schéma réalisé est donné ci-dessous.



J'utilise un transfo 220V-12V acheté 10 Euros chez Brico Dépôt dont les références sont données sur la photo ci-dessous.



6. Description des programmes TCM en Visual Basic

6.1 Programme TCM v1.1

Le programme TCM V1.1 permet de commander un seul décodeur (une seule loco). IL effectue les opérations suivantes:
- ajustement automatique de la fréquence des paquets DCC
- commande des différentes fonctions d'un décodeur de locomotive: marche avant/arrière, réglage de la vitesse (28 crans), allumage et extinction des fonctions F0 (allumage des feux avant en marche avant et des feux arrière en marche arrière), F1 et F2
- programmation de l'adresse du décodeur (entre 1 et 15)

L'interface graphique est présentée ci-dessous.



En mode exploitation, le clavier et la souris du PC sont utilisés pour envoyer les commandes au décodeur, ce qui permet d'ajuster la vitesse en marche avant et arrière et de commander la mise en marche et l'arrêt des fonctions F0, F1 et F2.

Les commandes disponibles sont les suivantes:

marche avant : touche A
marche arrière : touche R
accélération: click gauche de la souris
décélération: click droit de la souris
marche/arrêt fonction F0 : touche 0
marche/arrêt fonction F1 : touche F1
marche/arrêt fonction F2 : touche F2
quitter le programme: touche Echap

Remarque sur la compatibilité des décodeurs avec le programme.

La fréquence du signal généré par le PC n'est pas très stable. Celà est du à la nature même de Windows qui est multitâches et génère des interruptions lorsque plusieurs tâches sont traitées simultanément.
Il est donc préférable que les décodeurs soient assez tolérants aux erreurs de fréquence. Le décodeur ZIMO accepte une erreur de +/- 30 Hz par rapport à la fréquence nominale alors que les décodeurs LENZ et CT Elektronik acceptent une erreur de +/- 1000 Hz. Cependant, une fois la fréquence bien réglée, le décodeur ZIMO a toujours fonctionné corectement avec mon PC.

6.2 Programme TCM v1.2

Le programme TCM V1.2 permet de commander simultanément 4 locos sur le même circuit. IL effectue les opérations suivantes:
- ajustement automatique de la fréquence des paquets DCC
- commande des différentes fonctions de chaque décodeur de locomotive: marche avant/arrière, réglage de la vitesse, allumage et extinction des fonctions F0, F1 et F2
- programmation de l'adresse des décodeurs

L'interface graphique est présentée ci-dessous.



En mode exploitation, le clavier et la souris du PC sont utilisés pour envoyer les commandes aux décodeurs, ce qui permet d'ajuster la vitesse en marche avant et arrière et de commander la mise en marche et l'arrêt des fonctions F0, F1 et F2.

Les commandes disponibles sont les suivantes:

Loco 1: touche B
Loco 2: touche C
Loco 3: touche D
Loco 4: touche E
marche avant : touche A
marche arrière : touche R
accélération: click gauche de la souris
décélération: click droit de la souris
marche/arrêt fonction F0 : touche 0
marche/arrêt fonction F1 : touche F1
marche/arrêt fonction F2 : touche F2
quitter le programme: touche Echap

6.3. Programme TCM en mode service

Pour l'instant, le mode service permet seulement de programmer l'adresse des locos.

Pour programmer la nouvelle adresse d'une loco, il faut cliquer sur le bouton "Entrée en mode service. Programmation de l'adresse loco." Vous devez entrer l'adresse actuelle de la loco ainsi que la nouvelle adresse puis cliquer sur "Programmation".

Le programme TCM réalise les opérations suivantes:
- envoi de paquets "F1 on" avec l'ancienne adresse (la fonction F1 est activée)
- envoi de paquets "F1 off" avec l'ancienne adresse (la fonction F1 est désactivée)
- envoi de paquets vides
- envoi des paquets de service permettant de modifier l'adresse
- coupure brève du signal
- envoi de paquets "F1 on" avec la nouvelle adresse (la fonction F1 est activée ce qui permet de controler la prise en compte de la nouvelle adresse)
- envoi de paquets "F1 off" avec la nouvelle adresse (la fonction F1 est désactivée)
- coupure du signal et envoi du message "Programmation terminée"

6.4 Téléchargement du programme TCM v1.1

Vous pouvez télécharger ci-dessous le programme TCM v1.1.

Le logiciel étant écrit en vb6, vous devez posséder une série de DLL et autres TLB, OCX qui sont nécessaires au bon fonctionnement du programme TCM. En voici la liste :

MSVBVM60.DLL
OLEAUT32.DLL
OLEPRO32.DLL
ASYCFILT.DLL
STDOLE2.TLB
COMCAT.DLL
VB6FR.DLL
nslock15vb6.ocx
inpout32.dll
LevelM.ocx

Si vous ne possédez l'ensemble de ces fichiers sur votre PC, vous devez télécharger le dossier "VBDLL.exe" (1,36 Mo). Ce dossier zippé auto-extractible installera les logiciels ci-dessus dans le dossier Windows\system de votre PC.

Télécharger "VBDLL.exe"

Vous pouvez maintenant télécharger le dossier "tcm.zip" qui contient le programme TCMV1.1.exe ainsi qu'un mode d'emploi et des fichiers .txt qui sont nécessaires pour l'exécution du programme.

Télécharger "tcm.zip"

Après avoir dézippé tous les fichiers du dossier "tcm.zip" dans un même dossier appelé par exemple TCM, cliquez sur TCMexe pour lancer le programme. Je vous conseille cependant de lire le mode d'emploi avant de lancer le programme

Page suivante


Page précédente