Décodeur pour 5 servomoteurs et un feu tricolore.



Poursuivant mes déclinaisons de décodeurs, j'ai mis au point ce décodeur pouvant commander 5 servomoteurs. Ayant encore 3 ports disponibles, j'ai ajouté un feu tricolore dont les états peuvent être programmés.

1/ Branchement :

Les connections se font conformément aux indications ci-dessous. La polarité des fils DCC n’a aucune importance. En revanche, ATTENTION à la polarité pour la tension de 5volts. Les servomoteurs devront avoir une alimentation 5v sur le fil central (en rouge ci-dessus). L’inversion des fils jaune et noir n’est pas grave, il faudra seulement inverser si le servomoteur ne fonctionne pas comme attendu.



Remarquez que j'ai aussi construit une version avec 8 servomoteurs sans feu (à droite)..

2/ Adresse du décodeur.

Le décodeur pour servomoteurs est livré avec une adresse de base égale à 3. Il occupe deux adresses de décodeurs (ce qui correspond à 8 accessoires commandés). Il faut bien comprendre la différence entre l’adresse d’un décodeur et le numéro d’accessoire :


Il est important de connaître l’adresse de base du décodeur (cercle rouge ci-dessus) car toute programmation ultérieure se fera à l’aide l’adresse courante. Il est conseillé de la noter sur le décodeur lui-même ou sur un document tenu à jour.

3/ Utilisation :

La manipulation d’un servomoteur se fait en appuyant sur le bouton ON/OFF correspondant (Intellibox) ou en choisissant l'affichage souhaité (ECOS). 

Pour le décodeur comportant un feu, les trois derniers boutons (Intellibox) servent à contrôler les couleurs du feu. Pour l'ECOS, choisir un accessoire à trois états. Les 6 états sont programmables.

L’action sur un bouton ON ou OFF provoque le basculement du servomoteur vers la position correspondante.

Le décodeur est livré d’origine avec des réglages permettant un débattement de 180°. Toutes les butées basses sont donc réglées à 0° et les butées hautes à 180 °.

Chaque servomoteur peut être réglé indépendamment avec des butées hautes et basses différentes 

La valeur à programmer n’est pas exactement l’angle mais plutôt une valeur proportionnelle à l’angle voulu. Pour connaître la valeur exacte à envoyer, se conformer au tableau ci-dessous :

4/ Programmation :

Ce décodeur possède un bouton de programmation pour l’adresse de base du décodeur. Un appui place le décodeur en mode « programmation ». Il suffit d’envoyer un ordre à l’aide de la centrale pour valider la programmation de l’adresse.

Toutes les autres données se programment exclusivement par les variables de configuration (CV) envoyées par la centrale. Il faut impérativement connaître l’adresse de base du décodeur pour pouvoir lui envoyer les CV voulues.

La programmation se fait « sur la voie principale ». Evidemment, pour ne pas interférer avec une locomotive, la plage de CV n’est pas la même : Les locomotives ont une plage de CV qui va de 1 à 512 tandis que les décodeurs d’accessoires ont des numéros de CV qui commencent à partir de 513.

Ainsi les CV sont organisées conformément au tableau suivant :
Exemple d'adresse de base du décodeur:CV514 * 256 + CV513 = 0 * 256 + 3 = 3Octet de poids faibleOctet de poids fort (0ou1)
CV513par défaut = 3CV514par défaut =0

Vutée BasseButée hauteVitesse
N° ServoN° de CVValeur miniN° de CVValeur MaxiN° de CVValeur
1CV515 (3)0CV523120CV5311
2CV5160CV524120CV5322
3CV5170CV525120CV5334
4CV5180CV526120CV5348
5CV5190CV527120CV53510
6CV5200CV528120CV53613
7CV5210CV529120CV53716
8CV5220CV530120CV53820

Exemple de programmation avec l'Intellibox :

- se placer en mode PROG (touche « Mode »). Valider en pressant la touche « menu »
- Avec la flèche vers le bas, sélectionner le sous-menu de programmation DCC puis presser la flèche vers la droite pour valider.
- Avec la flèche vers le bas sélectionner le sous-menu de programmation sur voie principale. Valider avec la flèche vers la droite.
- Donner le numéro du décodeur auquel vous souhaitez vous adresser. Ici on a entré « 3 ». Puis valider avec la flèche vers la droite.
-Entrer le numéro de CV puis la valeur à placer dans cette CV. Pour cet exemple, on a entré la CV 513 (qui règle le numéro de décodeur) et la valeur « 6 » afin que notre décodeur réponde à l’adresse 6 (accessoires 21 à 28)
- Appuyer sur la touche « Enter ». La centrale envoie la nouvelle CV et affiche ensuite « Ok ! » pour valider le bon déroulement.

Attention, ce « Ok » signifie seulement que l’ordre a été envoyé. Il ne signifie pas du tout que le décodeur l’a bien exécuté. Pour cela, il y a une Led sur la platine du décodeur qui doit clignoter en fonction de la CV modifiée :

- Modification de l’adresse (octet de poids faible) è un seul clignotement

- Modification de l’adresse (octet de poids fort) è deux clignotements

- Modification d’une butée (haute ou basse) è trois clignotements

            - Modification de la vitesse d’un servomoteur è quatre clignotements



5/ Programmation des états du feu tricolore :

Les états du feu tricolore sont aussi programmables. Il y a 6 états possibles commandés à l’aide des boutons ci-dessous (Intellibox / lorsque le keyboard est correctement réglé).

Chaque bouton provoque l’affichage d’un état.

Le décodeur est livré avevc les états suivants :
Vert fixeJaune fixeRouge fixe
Vert clignotantJaune clignotantRouge Clignotant
Le feu pouvant clignoter, celui-ci bascule en permanence d’un état « allumé » à un état « éteint ». Lorsque l’état « allumé » est identique à l’état « éteint » la couleur apparaît donc fixe. Toute différence entre les deux états provoquera un clignotement. Il faut donc, pour chaque état, indiquer quelles sont les LEDs qui doivent être allumées ou éteintes.

Pour correspondre avec les états indiqués ci-dessus, le décodeur est livré avec les valeurs suivantes (ce qui correspond aux états indiqués ci-dessus) :


Etat "Allumé"Etat "éteint"Résultat
N° CVValeur dans la CVN° CVValeur dans la CV
1° bouton rouge560100 00000 = 128561100 00000 = 128Vert fixe
1° bouton vert562100 00000 = 128563000 00000 = 0Vert clignotant
1° bouton rouge564010 00000 = 64565010 00000 = 64Jaune fixe
1° bouton vert566010 00000 = 64567000 00000 = 0Jaune clignotant
1° bouton rouge568001 00000 = 32569001 00000 = 32Rouge fixe
1° bouton vert570001 00000 = 32571000 00000 = 0Rouge clignotant
Il faut remarquer dans ce tableau que les trois premiers chiffres binaires (en couleurs) correspondent aux LED de la couleur correspondante. Cela donne un code binaire qu’il faut convertir en décimal. Il suffit d’additionner le chiffre correspondant à la LED que l’on souhaite voir allumée :
Etat souhaitéLEDsValeur BinaireCalcul valeur décimale
Trois feux éteints


000 00000   0    +    0   +   0   =    0 
Feu rouge seul


001 00000   0    +    0   +  32  =   32 
Feu jaune seul


010 00000   0    +   64  +   0   =   64 
Feu vert seul


100 00000128   +    0   +   0   =  128
Feux rouge et jaune allumés


011 00000   0    +   64  +  32  =   96
Feux vert et jaune allumés


110 00000128   +   64  +   0   =  192
Feux vert et rouge allumés


101 00000128   +    0   +  32  =  160
Tous feux allumés


111 00000128   +   64  +  32  =  224

Remarques  :
    - Il est nécessaire de couper l’alimentation du décodeur pour prendre an compte la modification.

    - Les « 00000 » en noir dans le tableau doivent absolument rester à zéro sinon cela affecterait le bon fonctionnement des servomoteurs.


J'invite ceux qui souhaiteraient avoir le code source du microcontrôleur à me contacter.
stephane.ravazut@ac-orlezans-tozurs.fr
  (Attention : dans cette adresse j'ai volontairement introduit des erreurs pour tromper les serveurs automatiques. Vous enlèverez donc les lettres "z" )


 Haut de page