Décodeur DCC pour servo-moteurs
Pour faire suite à ma description des moteurs d’aiguilles à base de servo-moteurs de radiocommande, je vous propose cette fois la réalisation des décodeurs DCC correspondants.
Chaque décodeur est destiné à commander 4 servo-moteurs de
façon totalement indépendante, et avec une très grande souplesse
d’adaptation à tous les types d’aiguilles actuellement connues. Avec un peu de
méthode, il est facile à réaliser.
La principale contrainte concernera la programmation du
micro-contrôleur (µP), un PIC12F629 par ailleurs très bon marché et très facile
à se procurer dans le commerce électronique, et de disposer d’un programmateur
de µP genre IC Prog à raccorder à un ordinateur type PC.
Cette phase ne doit pas être un obstacle mais peut
effectivement rebuter certains modélistes qui ne sont pas habitués à programmer
des µP.
A l’instar de tout composant programmable, le µP 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) n’est à
faire qu’une seule fois pour obtenir un décodeur capable de traiter les ordres
DCC en provenance de la centrale. Une fois que les instructions auront été
stockées dans la mémoire flash du µC, 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 très connu des modélistes et
dans la mesure où il est libre de droits. Il n’y aura donc aucun problème pour
l’utiliser autant de fois que nécessaire. Le programme complet est contenu dans
un fichier hexadécimal (me contacter).
S’agissant du PIC12F629, une précaution préalable mais
absolument indispensable consistera à lire la valeur des deux derniers octets
de la zone programme de son registre mémoire.
En effet, le PIC12F629 est doté en 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. Cette fréquence doit être très précise sinon le µP ne fonctionne pas du tout.
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 µP à l’autre. Le fabricant a donc introduit dans la
mémoire flash de chaque µP la valeur individuelle de la correction à apporter à
la fréquence de l’oscillateur interne.
Cette valeur doit donc d'abord être lue avec le programmateur, notée
et réintroduite à la même adresse dans le programme complet avant de lancer la
programmation.
J’insiste sur la nécessité absolue de lire préalablement la
valeur avant toute programmation, faute de quoi, cette valeur serait
irrémédiablement réinitialisée en phase d’écriture sans possibilité de la
retrouver ultérieurement avec pour conséquence que le µP refusera tout
simplement de fonctionner !
Notre décodeur fonctionnant en DCC, il comporte un certain
nombre de CV’s accessibles à l’utilisateur. La valeur « usine » de
ces CV’s correspond aux valeurs hexadécimales contenues dans la zone
« data » du programme.
Sans entrer trop dans les détails, on peut considérer que 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 servos, angle de débattement, etc.
Vous trouverez dans le tableau 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, l’alimentation électrique des
servo-moteurs 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 servo-moteurs viennent
chercher leur alimentation sur le courant DCC, chaque décodeur n’a pas une
consommation nulle et 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 ne relier les décodeurs au courant DCC que pour les transports des ordres (consommation quasi nulle) et de confier par conséquent à un générateur 5 volts séparé à destination des décodeurs, l'alimentation des servo-moteurs.
Cette solution plus rationnelle évitera de recourir à
un booster par ailleurs plus onéreux et un peu « luxueux » pour cet
usage. Je peux fournir les informations pour réaliser un décodeur avec 5 Volts extérieurs.
Le schéma électronique de chaque décodeur est le suivant :
Naturellement, on aura recours à un circuit imprimé dont le
tracé et la réalisation ne comportent aucune difficulté, même pour un débutant
en électronique, d’autant qu’une miniaturisation n’est pas nécessaire puisque
les décodeurs ne sont pas « embarqués » et prennent place sous le
réseau à proximité des moteurs d’aiguilles.
On voit tout de
suite les raccordements des entrées et des sorties :
-
la liaison (X1-X2) avec le courant DCC porteur des codes
numériques,
-
les sorties directes à destination des connecteurs des 4
servos moteurs (JP1 à 4).
à noter la présence d’une Led et sa résistance (cadre
pointillé), et d’un interrupteur.
La Led n’est pas indispensable, mais elle permet de contrôler
visuellement la présence de la tension de 5 Volts régulés et donc de s’assurer
que le DCC est bien appliqué aux bornes d’entrée du décodeur. L’implantation
éventuelle de la Led se fera entre la sortie 5 Volts du régulateur et la
résistance dont l’autre patte sera 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 alors que cette broche reçoit
en fonctionnement normal le + 5 Volts via une résistance de 22 kOhms. Cette
commutation n’est pas indispensable au bon fonctionnement du décodeur, mais
elle devient nécessaire si on souhaite effectuer une lecture du décodeur sur
une voie de programmation par exemple.
En effet, à la différence d’un décodeur de locomotive, la
sortie du décodeur n’étant pas suffisamment « chargée », la centrale
risque de ne pas « voir » le décodeur en phase de lecture. Par cet
artifice, la centrale sera donc « trompée » momentanément et
acceptera de valider le processus de lecture des différentes CV’s.
Liste des composants :
µC : PIC12F629 et son support DIL8,
régulateur : 7805,
diodes : 1N 4007 (x 4),
condensateur chimique : 100 µF/25 Volts axial,
condensateurs polyester : 100 nF (x 3),
résistances ¼ W : 22 kOhms (x2),
connecteurs mâles 2,54 mm (x4),
bornier 3P,
une led (en option) de couleur indifférente et une
résistance de 330 Ohms.
Vous trouverez ci-dessous le typon du circuit imprimé et l’implantation
des composants.
Pour terminer, que les modélistes qui hésitent à se lancer
dans la programmation me contactent sur le site de CFN.
(c) Texte, photos, conception : J.M. GILLES