Decodeur DCC pour commande de servomoteur

Pour faire suite à la description des moteurs d'aiguilles à base de servomoteurs de radiocommande, je vous propose la réalisation de décodeurs DCC correspondants.
Deux versions sont proposées, à choisir (V1 et V2) selon les indications ci-dessous.

Facile à réaliser, chaque décodeur est destiné à commander 4 servo-moteurs de façon totalement indépendante, avec une très grande souplesse d'adaptation à tous les types d'aiguilles actuellement connues.

Le microcontrôleur (µC), un PIC12F629 est bon marché et facile à se procurer dans le commerce électronique. La principale contrainte concerne sa programmation qui nécessite de disposer d'un programmateur de µC genre IC Prog à raccorder à un ordinateur type PC. Le Cercle Ferroviaire de Nancy peut offrir ce service de programmation à nos amis modélistes qui en sont dépourvus.

A l'instar de tout composant programmable, le µC ne sait rien faire tant que des instructions ne lui ont pas été données. Ces instructions contenues dans un programme informatique dédié devront être transférées dans sa mémoire flash.
Cette opération appelée programmation (ou écriture) est à faire une seule fois pour obtenir un décodeur capable de traiter les ordres DCC en provenance de la centrale. Une fois les instructions stockées dans la mémoire flash, elles y resteront pour des très nombreuses années et ne s'effaceront pas, même si l'alimentation est coupée.

Le programme proprement dit est connu des modélistes dans la mesure où il est libre de droits. Aucun problème pour l'utiliser autant de fois que nécessaire. Le programme complet est contenu dans le fichier "dcc4servos_v2a.HEX".

S'agissant du PIC12F629, une précaution préalable mais absolument indispensable consiste à lire la valeur des deux derniers octets de la zone programme de son registre mémoire.
En effet, le PIC12F629 est doté au cours de sa fabrication d'un oscillateur interne destiné à cadencer son fonctionnement, et contrairement à d'autres types de micro contrôleurs, il n'a pas besoin de quartz extérieur pour piloter son horloge interne à la fréquence prévue.
En contre-partie, selon la fabrication, la fréquence de cet oscillateur peut varier légèrement et nécessite donc une petite correction dont la valeur varie d'un µC à l'autre. Le fabricant a donc introduit dans la mémoire flash de chaque µC la valeur individuelle de la correction à apporter à la fréquence de l'oscillateur interne.
Cette valeur doit impérativement être lue avec un programmateur, notée et réintroduite à la même adresse dans le programme complet avant de lancer la programmation.
Il est absolument nécessaire de lire préalablement la valeur avant toute programmation, faute de quoi, cette valeur sera irrémédiablement réinitialisée en phase d'écriture sans possibilité de la retrouver ultérieurement avec pour conséquence le refus du µC de fonctionner !

Le décodeur fonctionnant en DCC, il comporte un certain nombre de CV's accessibles à l'utilisateur, selon le même principe que les décodeurs de locomotives. La valeur "usine" de ces CV's correspond aux valeurs hexadécimales contenues dans la zone "data" du programme.

Le programme principal comporte des interruptions qui l'obligent à aller prendre en compte de données (les CV's) contenues dans son registre utilisateur, lequel registre contient des valeurs par défaut (modifiables), telles que l'adresse de base du décodeur, la vitesse des servomoteurs, angle de débattement, etc.

Ci-dessous la liste des CV's accessibles à l'utilisateur.

CV désignation valeur
1 adresse basse 1 à 99
2 validation 255
3 angle rotation servo 1 1 à 105
4 angle rotation servo 2 1 à 105
5 angle rotation servo 3 1 à 105
6 angle rotation servo 4 1 à 105
7 révision (lecture seule) 10
8 fabricant (lecture seule) 13
9 adresse haute 0 à 7
29 configuration 128
33 espacement (x 256µs) 128
34 position mémorisée 0 à 1
35 vitesse servo 1 1 à 255
36 vitesse servo 2 1 à 255
37 vitesse servo 3 1 à 255
38 vitesse servo 4 1 à 255


Dans sa version de base (V1), l'alimentation électrique des servomoteurs est prélevée après régulation, sur le courant DCC, ce qui ne pose pas problème si le nombre de décodeurs est peu important.

En revanche, dans la mesure où les servomoteurs viennent chercher leur alimentation sur le courant DCC, chaque décodeur consomme de l'énergie. Quand leur nombre atteint une dizaine (soit 40 aiguilles), il est possible que la consommation de l'ensemble vienne prélever une puissance non négligeable sur le courant DCC issu de la centrale, surtout si celle-ci dispose d'un courant de sortie modeste.
Dans ce cas, il est préférable de relier les décodeurs au courant DCC uniquement pour le transport des ordres (consommation quasi nulle) et de confier à un générateur 5 volts séparé à destination des décodeurs, l'alimentation des servomoteurs.
Cette solution (V2) plus rationnelle évite de recourir à un booster onéreux et "luxueux" pour cet usage.

Version 1 :
Le schéma électronique de chaque décodeur est globalement identique pour les 2 versions, mis à part la gestion du 5 Volts et le traitement du signal DCC. Il comporte, en plus du µC, quelques composants.

Le tracé et la réalisation du circuit imprimé ne comportent aucune difficulté, d'autant qu'une miniaturisation est inutile puisque les décodeurs ne sont pas "embarqués" et prennent place sous le réseau à proximité des moteurs d'aiguilles.

schema du decodeur pour servomoteur

Les raccordements des entrées et des sorties :
- la liaison avec le courant DCC porteur des codes numériques,
- les sorties directes à destination des connecteurs des 4 servomoteurs (1 à 4).
A noter la présence d'une LED et sa résistance (cadre pointillé), et d'un interrupteur.

La LED permet de contrôler visuellement la présence de la tension de 5 Volts régulés et de s'assurer que le signal DCC est bien appliqué aux bornes d'entrée du décodeur. L'implantation de la LED se fait entre la sortie 5 Volts du régulateur et la résistance dont l'autre patte est reliée à la masse.

Le rôle de l'interrupteur (ou cavalier amovible) est de permettre de relier la broche 4 du PIC à la masse. Cette commutation n'est pas indispensable au bon fonctionnement du décodeur, mais elle devient nécessaire pour effectuer une lecture du décodeur sur une voie de programmation.

En effet, à la différence d'un décodeur de locomotive, la sortie du décodeur étant insuffisamment "chargée", la centrale risque de ne pas détecter le décodeur en phase de lecture. Par cet artifice, la centrale est donc "trompée" momentanément et accepte de valider le processus de lecture des différentes CV's.
A noter que parfois, certains équipements ne permettent pas de lire les valeurs des CV's. La solution consiste à brancher en parallèle provisoirement sur l'entrée DCC du décodeur une résistance de 150 Ohms durant la phase de lecture.

Liste des composants :
Qt composant remarque
1 micro-Controleur PIC12F629 et son support DIL8
1 Régulateur 7805
4 Diodes 1N 4007
1 Condensateur chimique 100 µF/25 Volts axial
3 Condensateurs polyester 100 nF
2 Résistances ¼ W 22 kOhms
4 Connecteurs mâles 2,54 mm bornier 2P
1 LED (en option) de couleur indifférente
1 Résistance de 330 Ohms

La version 2 sera décrite prochainement. D'ores et déjà, vous trouverez ci-dessous le typon du circuit imprimé et l'implantation des composants de la version 1 ainsi qu'une copie d'écran du paramétrage du programmateur IC Prog.

schema du decodeur pour servomoteur schema du decodeur pour servomoteur

Copie ecran du fichier de parametrage du µC


©CFN - texte et schémas Jean-Marie GILLES


Valid XHTML 1.0 Strict CSS Valide ! [Valid RSS]    Copyright 2007-2017 © CFN - 44 rue des jardiniers - 54000 NANCY.