Créer un site internet

Décodeur d'accessoires DCC D18

** Présentation :

 
Le décodeur D18 (D pour Décodeur et 18 pour 2018) est un décodeur d'accessoires DCC à réaliser soi-même avec une carte Arduino (UNO, Nano ou Mega).
Il permet de commander économiquement tout ce que vous voulez sur votre réseau. (Hormis les locomotives gérées par la centrale)
 
Il est par exemple possible de piloter :
- des aiguillages (à bobines, à moteurs ou à servos)
- des LEDs
- des Néopixels (LEDs multicolores chainables)
- des lampes (avec control de la luminosité grâce à la PWM)
- des moteurs (avec control de la vitesse grâce à la PWM)
 
S'ajoute de nombreuses possibilités comme le clignotement des LEDs avec phase réglable, le déplacement lent des servos, des effets lumineux ...
Il est compatible avec n'importe quelle centrale et vous pouvez régler tout ce que vous voulez.
 
Les carte Arduino UNO et Nano permettent de gérer de base 16 sorties simples (par exemple pour commander 8 aiguillages). La carte Mega quant à elle propose 66 sorties simples.
Ces sorties simples permettent aussi de commander des servos (12 max) et certaines permettent de faire de la PWM (6 ou 10 sur Mega) 
Il est possible d’étendre les capacités de l'Arduino rajoutant des modules MAX7219/21 de 64 LEDs chacun, des modules PCA9685 de 16 sorties(PWM/servos) chacun,
des modules TLC5947 de 24 LEDs pwm chacun, des LEDs chainables Néopixels. Cela enlève quelques sorties simples mais augmente drastiquement les capacités du décodeur.
 
En configuration maximale, avec 4 MAX, 6 PCA et 8 TLC5947 vous pouvez contrôler :
- 10 ou 60 sorties simples sur l'Arduino (qui peuvent aussi supporter 12 servos et 6/10 pwm)
- 96 sorties PWM ou servos sur les PCA
- 256 LEDs sur les MAX
- 192 LEDs pwm sur les TLC5947
- 60 Néopixels.
 
d18.png
 

Au niveau du prix de réalisation, ce décodeur est extrêmement compétitif. Vous pouvez commander par exemple les différents modules électroniques tout fait sur Amazon par exemple au prix de 5€ pour la carte Arduino (UNO ou Nano, 10€ pour la Mega), 4€ pour une carte MAX, 6€ pour une carte TLC5947, 8€ pour une carte PCA, 1€ pour un optocoupleur, quelques € si nécessaire d'amplifier des sorties pour les moteurs, lampes, aiguillages à bobines ou moteur). Dans le commerce un décodeur coute environ 50€ pour 8 sorties ou 4 aiguillage ou 4servos. A 6€ par sortie simple, la facture monte ainsi très vite surtout pour les LEDs ! Un D18 UNO à 16 sorties 500mA revient à 10€ et remplace 2 décodeurs de 2*50€=100€. Si on ajoute un PCA pour gérer 16 servos (remplace 4 décodeurs) et 1 MAX pour gérer 64LEDs (remplace 8 décodeurs) et utilisons 8 néopixels (remplace 4 décodeurs), cela nous coute 10+4+8=22€ à la place de 2+4+8+4=18 décodeurs * 50€ = 900€ ...

Le tableau suivant compare les prix du commerce et D18 (prix par sortie):

Prix du commerce  >>>> Prix avec D18 et division par rapport au commerce
1 sortie   =  6€  >>>> 0€60   %10   (sur UNO/Nano)
1 aig(bob) = 12€  >>>> 1€20   %10   (sur UNO/Nano)
1 aig(mot) = 12€  >>>> 1€20   %10   (sur UNO/Nano)
1 sortie   =  6€  >>>> 0€30   %20   (sur Mega)
1 aig(bob) = 12€  >>>> 0€60   %20   (sur Mega)
1 aig(mot) = 12€  >>>> 0€60   %20   (sur Mega)
1 servo    = 12€  >>>> 0€50   %25   (via PCA9685)
1 led      =  6€  >>>> 0€06   %100  (via MAX7219/21)
1 neo      = NON  >>>> 0€           (sur UNO/Nano/Mega)
1 pwm      = NON  >>>> 0€50         (via PCA9685)
1 led pwm  = NON  >>>> 0€25         (via TLC5947)
 
 
 
 
** News :
 
08 mars 2020:
    - ajout des aiguillages multiplexés
 
05 mars 2020:
    - ajout du support des TLC5947 (24 sorties pwm pour des leds et par TLC5947 8max=192leds)    [pour faire plaisir à Marco, non testé]
    - possibilité de changer les pattes de connexion des modules
    - remplacement des constantes d'activation des modules par le nombre de modules
 
03 mars 2020:
    - possibilité d'utiliser le moniteur série pour envoyer des commandes à l'arduino pour la mise au point
         (position des servos, modification des sorties, led, pwm, néopixels, envoie de paquets ...)
    - amélioration de la commande des servos sur PCA9685 pour enlever les saccades
    - ajout du "fading" sur les sorties pwm des PCA9685 (pas encore 100% fonctionnel) 
    - possibilité de connecter 12 servos max directement sur l'Arduino (sans passer par un PCA9685) (Merci à Thierry pour sa contribution)
    - possibilité d'utiliser 6 sorties PWM max directement sur l'Arduino (13 sur mega) (sans passer par un PCA9685)
    - indication des paquets dupliqués
    - possibilité d'utiliser l'eeprom pour sauver/restaurer des consignes
 
- 08 février 2018: Rajout de la rotation lente des servos.
- 08 février 2018: Changement de la résolution des tempos de 20ms a 125ms
- 18 janvier 2018: Création d'un fil sur le forum de LocoRevue pour D18: http://forum.e-train.fr/viewtopic.php?f=3&t=85743
- 17 janvier 2017: Mise en ligne
 

** Prochainement :
 
- Mise à jour de la doc ;-)
 
 
** Téléchargement :
 
- Documentation complète du décodeur D18: d18.pdfd18.pdf (3.14 Mo) (mise à jour 09 février 2018)

- Logiciel du décodeur D18 : d18_acc_decoder.inod18_acc_decoder.ino (76.28 Ko) (mise à jour du 08 avril 2020) (la doc n'est pas encore à jour pour les nouveautés  de cette version)

- Logiciel du décodeur D18 : d18_acc_decoder.inod18_acc_decoder.ino (41.99 Ko) (ancienne version du 09 février 2018)

Il est possible que l'extension .txt soit rajoutée au programme lors du téléchargement, dans ce cas renommez le fichier sans cette extension.
Vous devez placer le programme dans un répertoire du même nom pour que l'environnement Arduino arrive à l'ouvrir.
Ouvrez et configurer le programme avant de le téléverser dans l'Arduino.
Sans changer la configuration, le programme se comporte par défaut comme 2 décodeurs d'accessoires aux adresses 10 et 11 gérant 8 paires de sorties fixes.
 
Le fichier source est également sous github: https://github.com/ullysse/d18 (afin de vous permettre de proposer des modifications) (gitlab pas encore à jour avec la dernière version).
 
 
** Exemples de connexions :
 
Décodeur pour 8 aiguillages à bobines (500mA max) sur 16 sorties simples. Les aiguillages se commandent par 3 fils
8aigs 4
Relier la masse de l'alimentation des aiguillages sur une patte GND (masse) de l'Arduino.
Si l'alimentation 12V est suffisamment stable, il est possible de la relier sur Vin ou sur le jack et de se passer de l'alimentation 5V. (Le 5V étant fabriqué à partir de Vin)
Attention, si les aiguillages à bobines n'ont pas d'interrupteurs de fin de course, il faudra générer des impulsions afin de ne pas griller les bobines.
Ne pas brancher d'aiguillages consommant plus de 500mA avec des ULN2803. Les ULN2803 ne sont pas protégés des surintensités et de la surchauffe.
Il existe des circuits plus puissant comme les L298 qui supportent 2A et sont protégés.
note: mars 2020: pour l'optocoupleur merci d'utiliser une résistance de 2200ohms (plus bas cela chauffe) (merci à Marc pour avoir signalé le PB)
note: mars 2020: certains ont du mettre une pull up de 4700ohms sur DCC-IN (entre la patte 2 de l'Arduino et le +5V). (merci à Charles pour le workaround)
 
 
Décodeur pour 6 aiguillages à bobines ou moteurs à relais (10A max). Ou 14 aiguillages avec un second module de 8 relais. Les aiguillages se commandent par selement 2 fils.
Rel 2
 
 
Décodeur pour 11 aiguillages à bobines ou moteurs à relais (2A max). Ou 15  avec un quatrième L298.  Les aiguillages se commandent par seulement 2 fils.
Ex20 dec
Les modules L298 génère du +5V (500mA max). Afin de réduire les alimentation, j'utilise ce 5V pour alimenter l'arduino.
Lorsque vous utilisez l'USB, déconnecter ce fil pour ne pas mettre en // ce +5V avec le +5V USB.
 
 
Décodeur à 8 relais (10A) sur des sorties simples. Un second module de 8 relais peut être utilisé avec les sorties restantes. 
Rel 0
La carte fait que toutes les masses sont communes.
Pour commander les relais, il faut mettre les entrées à la masse.
 
 
Par soucis de clarté, la partie DCC avec l'opto coupleur n'est plus représentée (mais il faut bien entendu la mettre)
 
 
Servo et Led PWM sur des sorties simples
Directes
Toutes les sorties simples peuvent aussi supporter un servo (12 max).
Certaines sorties peuvent supporter la pwm (UNO: 3, 5, 6, 9, 10, 11 MEGA: 3 à 12, 44 à 46).
Ici la Led peut être controlée en sortie "out" (0/5V) ou en pwm (0-100% de 5V) afin de régler son intensité lumineuse.
 
 
Les montages suivants utilisent les bus de D18. Vous pouvez bien entendu mixer plusieurs de ces exemples (ex: MAX + PCA ...).
 
Modules MAX7219 pour les LEDs
Uno max3
Selon la consomation, il peut être nécessaire d'alimenter les modules en 5V par une alimentation distincte de celle de l'Arduino (dans ce cas, relier les masses)
Bien entendu, l'utilisation des matrices à leds n'a pas grand interêt en modelisme, on les enlèvera et on les remplacera par les leds  des signaux et animations (64max par module). 
 
 
Modules PCA9685 pour sorties PWM et Servos
Pca2 1
V+ est disponible sur les connecteurs rouges.
La masse est disponible sur les connecteurs noirs. Les masses de l'Arduino et de l'alim des servos sont communes par la carte.
Les sorties sur les connecteurs jaunes sont alimentées par VCC (5V Arduino) et non par V+.
Elles sont protégées par des résiatnces de 220ohms donc pas besoin de résistance en plus pour les Leds (sauf si vous trouvez qu'elles brillent trop).
 
 
Modules TLC5947
Tlc5947
Modules de 24 leds avec intensité réglable pour chaque led (pwm 0-100%). 8 modules max = 192 leds. Led0 -- Led191.
Pas besoin de résistance. Supporte uniquement les feux à anode commune. Possibilité de mettre les Leds en série si V+ > somme Vled. (Vled de 1.6 à 3.6V selon la couleur de la LED).
Si 5V et l'intensité nécessaire pas trop grande, il est possible de se passer de l'alimentation séparée et de connecter V+ à la patte 5V de l'Arduino.
 
 
Néopixels
Uno neo 1
Les néopixels sont des LEDs multicolores chainables.
On peut choisir pour chaque Led la composantes rouge (256 valeurs possibles), la verte(256 valeurs) et la bleue(256 valeurs). Soit 16 millions de couleurs.

Créer un site internet avec e-monsite - Signaler un contenu illicite sur ce site