LOCODUINO

Un décodeur d’accessoire DCC versatile basé sur Arduino

. Par : Nicolas Zin

Quand j’ai commencé à construire mon réseau à l’échelle N, j’ai regardé pour piloter des lumières (des SMD 0402, ou des led standards), mais soit j’avais des difficultés à les programmer simplement (CV & co), soit je suis tombé sur des décodeurs à fabriquer soi-même que je n’ai pas réussi à faire fonctionner. Du coup j’ai décidé de (…)

Retourner à l'article

Vous répondez à :

Bonjour Gilles,

je t’ai envoye un email a cette fin.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

29 Messages

  • Joli projet !
    Mais le lien vers la lib semble mauvais (404)...

    Michel

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 5 octobre 2015 13:41, par Nicolas Zin

    Effectivement, la librairie a changé d’adresse apparemment.
    J’ai écrit au webmestre pour savoir ou était passé la librairie :-(

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 5 octobre 2015 15:55, par Pierre GRAFTIEAUX

    Bonjour Nicolas,
    Bien que je sois en trois rails et donc protocole Motorola, ma centrale station Märklin est multi protocole.
    Donc je peux insérer des décodeurs DCC dans mon réseau.
    J’ai simplement une question pratique :
    Sauf erreur de ma part l’arduino que tu utilise comporte 14 E/S numérique et 8 E/S analogique (utilisable en numérique).
    Ton circuit permet de "commander" 4 sorties (3 leds et 1 relais).
    Et pour gérer le tout tu utilises 2 entrées et 1 sortie.
    Est-ce concevable de faire plus et ainsi utiliser la plupart des E/S de l’arduino ?
    Merci.
    Pierre

    Répondre

  • Yeap,

    2 choses :

    • il y a deja des IO supplementaires utilisables sur mon circuit (A6,A7,D6,D7), donc si tu as besoin de faire juste "un peu plus" tu peux taper dessus.
    • mais si ton but est d’utiliser le maximum de portes, tu vois qu’effectivement sur le schema logique (https://raw.githubusercontent.com/n...), il y a pas mal de pates qui ne sont pas utilisees (des IO analogiques et numeriques). Donc oui tu peux "etendre" ou modifier mon projet pour l’adapter a tes besoins. Apres tout, le plus dur (l’etage d’alimentation, et l’etage de decodage) est deja fait. Peut etre revoir l’etage d’alimentation si tu alimentes d’autres elements (mettre une capa plus importante).

    Nicolas

    Répondre

  • Bonjour Nicolas ,
    je serai intéressé par deux circuits imprimés , je ferai les montage moi même , où peut-on les trouver ?

    merci d’avance pour la réponse

    Gilles

    Répondre

  • Bonjour Gilles,

    je t’ai envoye un email a cette fin.

    Répondre

  • Bonjour, je serais intéressé par 5 circuits imprimés également
    Avez-vous la possibilité de les fournir
    Merci encore pour ce projet très intéressant

    Répondre

  • Bravo pour cette réalisation.
    Pouvez vous indiquer le coût global ?

    Répondre

  • Bonjour Dan57FRN,

    je n’ai malheureusement plus d’echantillon (pour le moment), mais de toute facon pour 5, tu as tout interet a les commander toi-meme.
    Je passe par iteadstudio : http://www.itead.cc/open-pcb/pcb-pr...
    C’est vraiment pas cher : 15$ (+shipping) pour 10 PCB.
    Si tu as des questions sur comment les commander (ou le zip a envoyer) ecris moi : nicolas.zin@gmail.com

    Répondre

  • Bonjour Jean,

    pour le cout global, sans le cout du PCB, j’en ai eu pour 31$ de composants (par decodeur evidemment) (+cout de shipping). Je peux t’envoyer le detail si tu veux.
    Pour les PCB comme indiqué plus haut, il y en a pour 15$ en ce moment (+shipping) pour 10 PCB.

    Bref, si tu trouves dans le commerce un décodeur qui fait exactement ce que tu veux, ma solution n’est pas compétitive, mais ce n’est pas le but.

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 13 octobre 2015 00:02, par Samuel anzalone

    Bonjour

    Bravo pour cette superbe réalisation.
    Je voudrai vous en acheter deux.
    Merci de m’indiquer la procédure à suivre.

    Bien cordialement

    Sam

    Répondre

  • Bonjour Sam,

    je n’en ai plus en ce moment malheureusement.
    Est ce que tu souhaites plutot commander les pcb directement chez Iteadstudio. Je peux t’aider pour ca si tu veux.

    Ecris moi directement : nicolas.zin@gmail.com

    Nicolas

    Répondre

  • Bonsoir,
    A la date d’aujourd’hui, où puis je trouver la bibliothèque comprenant DCC_Decoder.h ?

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 2 novembre 2016 23:17, par Dominique

    Facile :

    C’est écrit dans l’article de Nicolas, mais un petit rappel ne nuit pas !

    Voir en ligne : https://github.com/MynaBay/DCC_Decoder

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 17 décembre 2017 11:10, par hallucine

    Bonjour,
    Le lien vers les 2 fichiers arduinoDcc1.2.sch et arduinoDcc1.2.brd renvoient une erreur 404. Serait-il possible d’avoir les fichiers ? Merci

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 17 décembre 2017 13:32, par Nicolas Zin

    Bonjour,

    effectivement j’ai mis a jour, et je suis a la version 1.3
    Va sur la page https://github.com/nzin/arduinodcc/ directement. tu verras les bon liens

    Répondre

  • Bonjour Nicolas,
    j’ai réalisé ce décodeur et les diodes fonctionnent comme vous l’avez décrit selon 3 modes différents.
    Q1 : Je voudrai savoir si il est possible de commander chaque diode de façon individuelle (on / off) et si cela est inclus dans le programme ?
    Q2 : Pour la commande du relais, suffit il de donner l’adresse par la centrale pour provoquer le changement d’état de celui-ci ?
    Je débute sur arduino et je n’ai sans doute pas tout compris !
    Merci de votre compréhension.

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 24 avril 2018 00:15, par Nicolas Zin

    Bonjour Remi !

    Q1 : Je voudrai savoir si il est possible de commander chaque diode de façon individuelle (on / off) et si cela est inclus dans le programme ?

    Ce n’est PAS inclu dans le programme. Mais si tu sais programmer en C, ce n’est pas tres compliqué : une facon de faire par exemple serait de ne pas toucher a la partie "apprentissage de mon adresse" (ligne 128 a 132), mais par contre, faire en sorte que si on recoit une instruction pour "myaddress" on allume/eteint LIGHT0, si on recoit pour "myaddress+1", on allume/eteint LIGHT1,... (ligne 134 a 139 + avoir une variable "switchStatus" par led/relai)
    Bref faut changer la logique, mais ce n’est pas tres compliqué (normalement)

    Q2 : Pour la commande du relais, suffit il de donner l’adresse par la centrale pour provoquer le changement d’état de celui-ci ?
    Oui. Une fois que l’arduino a une adresse, une commande lui ordonne d’activer/eteindre les leds ET le relai (sur la meme adresse).
    Tu devrais entendre unc petit "clac" quand tu active/desactive le relai.

    Tiens moi au courant de ces avancées :-)

    Répondre

  • Bonjour Nicolas,
    Pour visualiser l’état du relais, j’ai remplacé celui-ci par une Led. Celle ci reste allumée en permanence même si je modifie l’adresse !!!
    Je pense que j’ai un problème d’inclusion des bibliothèques.

    Q1 : Doit on ou non inclure les bibliothèques DCC car lors du chargement du programme, il y a déjà les onglets correspondants ?

    Q2 : Si l’on charge les bibliothèques, le lien situé 4 messages au dessus est il le bon ? J’ai essayer et cela me donne plein d’erreur de compilation. ci dessous un exemple du début des erreurs !
    *******
    libraries\DCC_Decoder\DCC_Decoder.cpp.o (symbol from plugin) : In function DCC_Decoder::State_Reset()': (.text+0x0): multiple definition ofDCC_Decoder::State_Reset()’
    sketch\DCC_Decoder.cpp.o (symbol from plugin) :(.text+0x0) : first defined here
    libraries\DCC_Decoder\DCC_Decoder.cpp.o (symbol from plugin) : In function DCC_Decoder::State_Reset()': (.text+0x0): multiple definition ofDCC_Decoder::func_DecodingEngineCompletion’
    sketch\DCC_Decoder.cpp.o (symbol from plugin) :(.text+0x0) : first defined here
    ***********

    Je suis un peu perdu avec ce comportement.
    D’avance, merci pour la réponse
    Cordialement
    Rémi

    Répondre

  • Evolution sévère de la carte ! 25 décembre 2018 22:58, par Cedric

    Bonjour,
    Je trouve votre réalisation vraiment bien, un grand bravo.
    Cela me donne plein d’idées et autant côté soft je me débrouille que côté design PCB, je rame beaucoup.
    J’aimerai modifier la carte pour l’alimenter directement en 12V, puis piloter 4 servo (j’ai besoin des connecteurs 4x3pins 0/5V/pulse), détecter 2 cantons, et communiquer en CAN. Rien que ça.

    Comme je construit un nouveau réseau, j’aurai souhaité faire tirer par un pro (genre jlcjcb, le prix est modique) une dizaine de PCB comme celle-ci afin d’en mettre une par module.

    Personne n’aurait déjà fait un tel travail ? Il n’y aurai pas une âme charitable qui maitrise à fond Eagle pour me faire cette carte magique en 10 min ?

    Merci d’avance et encore bravo à Nicolas pour cette réalisation.

    Répondre

  • Salut,

    Le premier point c’est de voir avec un Arduino Nano, s’il y a assez de place pour ce que tu veux faire.
    Si tu regardes un schéma (https://www.likecircuit.com/wp-cont...), il y a 19 I/O.
    J’en utilise

    • 1 pour lire le signal DCC
    • 1 pour le bouton (bon c’est pas obligatoire)

    tu souhaites en utiliser :

    Les 0 et 5 V, tu dois pouvoir les mutualiser, mais comme tu veux commander des servo, le 5 V ne doit pas venir de l’Arduino, mais du bloc d’alimentation au dessus (car l’Arduino ne peut sortir qu’une faible intensité : 40 mA par IO, et max 200 mA de mémoire)

    Bref, faudrait :

    • pour le CAN, tu veux passer par un module externe qui utilise le SPI ?
    • pour la détection de canton tu comptais faire ca comment ? (la detection par passage de courant, c’est pas génial : ca "bouffe" 0.7V, peut etre que tu veux regarder par "induction" ?)
    • pour piloter tes servos, tu sais comment tu veux faire ca ? du PWM par un IO analogique ???

    a+

    Répondre

    • Salut,

      Merci pour ta réponse et pour tes questions pertinentes.
      Voici ce que j’avais en tête :
      Pour le CAN, il faut en effet 5 pin. Je pensais utiliser la carte suivante donc j’imaginais aligner les connecteurs sur le PCB a réaliser afin d’embrocher la carte telle quelle (façon carte d’extension que l’on met ou pas).

      Pour le nombre d’IO, c’est en effet un problème et je pensais étendre l’UNO avec un MCP23017 ce qui permet d’ajouter 16 I/O. Le composant communique en I2C, il faut donc prévoir son alimentation électrique par le +5V/GND ainsi que la liaison I2C.

      Pour la détection de canton, je vois régulièrement des montages à base d’optocoupleur 6N137 ou 4N35 (je ne connais pas trop la différence). L’idéal serait de trouver un composant avec 2 ou 4 opto ou alors multiplier ces composants par 2 ou 4 tant qu’on y est. Ces détections pourraient typiquement aller sur l’extension MCP23017. Il faudra prévoir une borne entrée/sortie par détection de canton (x4). Par induction, je ne vois pas à quoi tu penses ? Genre ILS ? Je ne suis pas fan si c’est le cas. La détection de courant bien qu’elle fasse perdre un peu de tension me semble suffisamment répandu pour être fiable. Connais-tu une meilleure solution ?

      Pour les servos, il y a en effet la problématique d’alimentation. Je prévois d’amener sur la carte du 12VDC mais du coup il faudrait faire un 5V en local avec un convertisseur DC/DC ou alors un 7805. Mes moteurs d’aiguillage seront des servos SG90. Ils se commandent donc avec une entrée PWM et cela nous limitera aux pins PWM de l’UNO (3/5/6/9/10/11 sachant que comme il y aura du SPI et de l’I2C, cela restreint aux pins 3/5/6/9).

      J’aime beaucoup dans le circuit présenté le côté polyvalence mais là c’est vrai que j’aimerai beaucoup l’étendre pour répondre à toutes les problématiques que l’on rencontre sur un module. Par exemple la sortie relais est excellente et il faut la maintenir. Pour les 3 LED c’est top aussi mais si on ajoute le MCP23017, on peut aller piloter beaucoup plus de LED afin de piloter les feux de signalisation par exemple. Il serait bien alors de prévoir une résistance pour chaque sortie restante (que l’on adaptera selon la LED) et un bornier comme cela est déjà fait pour les 3 existantes. On pourrait aussi prévoir des entrées sur borne genre 1 ou 2. Cela permettrait d’acquérir un peu n’importe quoi comme un fin de course.

      La contrainte aussi serait d’avoir un PCB inférieur à 10cmx10cm. C’est pour une histoire de prix, JLCPCB applique des prix modiques pour les PCB inférieurs à cette taille mais les prix s’enflamment au delà. J’ai déjà essayé de fabriquer 10 PCB chez eux, le résultat est vraiment top !

      Cela représente donc pas mal de boulot à faire sous Eagle car il faut distribuer les polarités, placer les composants, le routage, etc. et si on ne maitrise pas le truc, cela semble très chaud.

      Si tu pouvais m’aider cela serait vraiment top :).

      Répondre

      • Un décodeur d’accessoire DCC versatile basé sur Arduino 31 décembre 2018 09:12, par Jean-Luc

        Bonjour,

        Je vais tordre le cou directement à une légende qui a l’air de traîner ici ou là : il n’est pas nécessaire de brancher un servo sur une sortie PWM de l’Arduino. Les PWM engendrées par la bibliothèque Servo sont faites logiciellement et sont applicables sur n’importe quelle sortie numérique.

        Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 29 décembre 2018 14:21, par Nicolas Zin

    Salut,

    peut etre pour etre plus rapide, tu pourrais m’ecrire sur mon email gmail (et surtout chatter par hangout ?), mais peut etre que d’autres sont intéressés pour suivre le fil.
    On peut essayer de faire un premier schema avec Eagle pour y voir plus clair (pour les I/O)

    Premiere chose : ma carte comprend un étage d’alimentation, qui prend de l’alternatif (ou du continu), idéalement du 16V (dans le détail, ca doit etre du min 13V, max 36V avec le composant que j’utilise), tu peux reprendre le schema pour du 12VDC (et limite le simplifier) : ca te permet d’avoir du 12VDC d’une part, et j’utilise un convertisseur DC-DC pour alimenter en 9VDC l’arduino nano (il faut l’alimenter minimum en 7V). Bref tout est là je crois. (au début j’utilisais un 7805, mais ca chauffait trop, je te conseille d’éviter le 7805, si ton budget te le permet. J’utilise des alim a decoupage (cf mouser 490-V7809-1000 par exemple)

    Pour la détection de Canton, j’ai un ami qui fait ca par induction (avec une bobine), lis donc http://jurasecondairen.blogspot.com.... Ca a le GROS avantage, de ne pas provoquer de perte de voltage (comme avec l’optocoupleur). Perso, j’ai eu des problèmes de fuites de courant avec les optocoupleurs : j’avais mis certains rails derrière des détecteurs de courant, et d’autres non. Quand la locomotive passait, et qu’elle chevauchait 2 zones, elle était alimentée d’un coté par du 12V, et de l’autre du 11.3V, ca provoquait des trucs bizarres, et certaines composants électroniques n’ont pas aimé. Bref, je ne suis pas fan.

    Pour le CAN, ca doit pouvoir se faire, faudrait tester sur une plaque à bidouille ;-) :

    Pour les servos, je pense que tu maitrises mieux que moi

    et pour le reste (les LEDs), arrivé là : oui peut etre un multiplexeur, ou bien un autre décodeur d’accessoire ? (j’en ai fait un juste pour 8 LEDs, sans relai : https://github.com/nzin/arduinodcclight)

    a+

    Nicolas

    Répondre

  • Un décodeur d’accessoire DCC versatile basé sur Arduino 29 décembre 2018 18:16, par Dominique

    Bonjour à tous,

    Ce que nous avons fait pour Orleans peut-il vous intéresser, bien que cela ne corresponde pas à votre cahier des charges (les commandes d’aiguilles et signaux passent par le bus Can et non le DCC) ?

    nous allons prochainement le décrire.
    Salutations à Nicolas.
    Bonnes fêtes.

    Répondre

    • Merci Dominique pour ce lien vers votre belle réalisation.
      C’est un beau travail qui ressemble en effet à mon cahier des charges mais en plus petit. Cela imposerait de bien multiplier les modules et donc les coûts ainsi que les pannes.
      J’ai pas mal de question du coup :

      Comment avez-vous fait les détecteurs de canton ?
      Comment alimentez-vous les servis ? Je ne vois pas d’alim 5V en dehors de celle fournie par le Uno.
      Comment sont-faites les barrières ? Il me semble que ce n’est pas à base de servo quand je vois le nombre de pin. A moins que la zone "connecteur barrière" ne correspondent qu’aux détecteurs de présence.

      Merci Dominique et Nicolas

      Répondre

      • Un décodeur d’accessoire DCC versatile basé sur Arduino 29 décembre 2018 22:18, par Dominique

        Bonsoir Cédric,

        • Comment avez-vous fait les détecteurs de canton ?
          Ce sont des détecteurs de consommation classiques. Mais on explorera les bobines prochainement. Cela ne pose pas de problème en fait car tous les cantons sont alimentés à travers un pont de diode d’un détecteur donc c’est équilibré.
        • Comment alimentez-vous les servos ? Je ne vois pas d’alim 5V en dehors de celle fournie par le Uno.
          Dans cette version V1 il n’y a qu’un seul servo et le 9V alimentant la carte est régulé à 5V et alimente tout. Dans le futur on mettra plus de courant en cas de servos multiples
        • Comment sont-faites les barrières ? Il me semble que ce n’est pas à base de servo quand je vois le nombre de pin. A moins que la zone "connecteur barrière" ne correspondent qu’aux détecteurs de présence.
          Les 2 connecteurs barrière sont faits pour des détecteurs ponctuels (zones d’arrêt devant signaux) actifs bas comme des barrières IR ou des capteurs a effet Hall (ce qu’on a mis à Orléans). Le détecteur de présence est inclu dans la carte.
          Il y a pas mal de possibilités de mixage des fonctions seulement limitées par les ports du Nano.

        On devrait continuer cette discussion sur le Forum, ici

        Répondre

  • Bonjour, nous sommes en 2022 et depuis vos bibliothèques on disparues, je suis totalement novice en arduino mais très intéressé par ce sujet, il faudrait remettre a jour vos projets qui sont vraiment intéressant et facile a réaliser , le point noir pour moi c’est les bibliothèques.
    bien a vous
    Richard

    Répondre

  • Bonjour Richard,

    euh, comment ca, mes bibliothèques ont disparu ?
    Vous n’arrivez pas à accéder à https://github.com/nzin/arduinodcc?

    Qu’est ce qui a disparu ?

    Répondre

Rubrique Projets

Les derniers articles

Les articles les plus lus