Documentation et utilisation protocole DCC et Motorola

Toutes vos questions, commentaires sur les nouveautés, utilisation de produits electroniques numériques...

Modérateurs : Philippe Cousyn, Tibrus, Patrice, Arnaud Guyon

Répondre
Re420
Draisine
Draisine
Messages : 63
Enregistré le : 05 juin 2021 21:11
Région(s) pratiquée(s) : suisse
Echelle(s) pratiquée(s) : N

Documentation et utilisation protocole DCC et Motorola

Message par Re420 »

Bonjour tout le monde,

Pour l'école, je dois créer un décodeur numérique afin de contrôler un aiguillage.
Je dois implémenter moi-même toute la gestion du protocole ainsi que celle de l'aiguillage.
En utilisant un Circuit logique programmable.

Pour le protocole, je dois choisir entre le protocole Motorola (Marklin) et DCC.
Mais j'ai des difficultés à trouver des informations sur le protocole Motorola et j'ai besoin de vérifier les informations que j'ai sur le DCC.

Le protocole DCC est bel et bien librement utilisable ? Il n'y a pas de licence à payer ou d'autorisation à demander pour créer un décodeur ?
La norme européenne pour le DCC sont bien définit par les NEM 670, 671 et 672 ? C'est la seul documentation nécessaire pour comprendre et implémenter un décodeur, ou est-ce que je dois lire autre chose en plus ?

Pour le protocole Motorola, j'ai trouvé peut d'information. Quand je cherche quelque chose sur le web, mes résultats sont surtout des produits à acheter.

Le protocole Motorola est-il librement utilisable ? Pas de licence à payer au d'autorisation à demander ? Où puis-je trouver la documentation du protocole pour pouvoir en faire une implémentation ?


Merci beaucoup pour votre aide.
12035
Coucou
Coucou
Messages : 2
Enregistré le : 09 sept. 2019 16:43

Re: Documentation et utilisation protocole DCC et Motorola

Message par 12035 »

Bonjour,
As-tu été voir ici
https://forum.locoduino.org/
Re420
Draisine
Draisine
Messages : 63
Enregistré le : 05 juin 2021 21:11
Région(s) pratiquée(s) : suisse
Echelle(s) pratiquée(s) : N

Re: Documentation et utilisation protocole DCC et Motorola

Message par Re420 »

Petite mise à jour, sur le status de mes 2 projets d'école.


Décodeur DCC avec microcontrôleur

Pour rappelle, je devais concevoir un décodeur DCC en utilisant un
microcontrôleur. J'avais le choix pour le format, et j'ai pris Next18.

Je n'ai pas eu le temps de le terminer complètement, mais j'ai bien avancé.

Ce que j'ai pu faire:
  • Choisir chaque composants et trouver un fournisseur
  • Concevoir le schéma électronique
  • Concevoir le PCB
  • Fabriquer un premier exemplaire du décodeur
  • Tester le fonctionnement, la programmation et le débogage du microcontrôleur, avec succès
  • Tester l'alimentation quand le circuit est connecté au bus DCC, avec succès
  • Tester l'étage électronique qui détecte la polarité du signal DCC, avec un résultat mitigé
  • Tester la connexion électrique entre chaque composant, sauf sur les transistors car leurs pattes sont en dessous du composant

Ce qu'il reste à faire:
  • Tester le pilotage du moteur, au travers de H-bridge, en générant un signal PWM depuis le microcontrôleur
  • Souder le connecteur pour le format Next18 (l'école ne l'avait pas achetée, j'ai du souder des fils à la place)
  • Écrire le logiciel qui doit tourner sur le microcontrôleur
  • Vérifier la dissipation de la chaleur
  • Tester le taux de décodage de paquet DCC
Pour l'étage électronique qui détecte la polarité DCC: J'ai un signal en sortie qui à la forme qu'il devrait, mais il ne fait que quelques millivolts d'amplitude.
Soit l'étage à un problème, soit mes mesures sont mauvaises.
Mais en même temps, vu la taille du circuit, c'est pas étonnant.
Faire des mesurer nécessite l'utilisation d'un microscope car certaines pistes font 0.150 mm de large et certains composant 0.2 mm de large.

Pour la dissipation de la chaleur: J'ai pas très bien choisis mes composants concernant la température qu'ils dégagent.
Donc si on tire trop de courant sur les sorties à drain ouvert du décodeur, ou si le microcontrôleur consomme trop, ça pourrait causer des problèmes de surchauffe.
Sans parler du H-bridge qui pilote le moteur.
Je suis vraiment un idiot d'avoir pensé à tout le reste, mais d'avoir mal vérifié cette partie.

Pour la taille: Le circuit que j'ai conçu est très très petit.
Certains des composants sont tellement petits que qu'ils ne font pas plus de 0.2 mm de large.
Pour monter ce circuit, il faut un bon microscope, une machine adaptée pour placer des composants aussi petit ou des mains qui ne tremblent absolument pas.
Et un four à souder.
Difficile de fabrique ce décodeur avec du matériel qu'on peut trouver pour la maison ou un club. Mais pas impossible.

Je vais voir avec l'école ce que j'ai le droit de publier.
Mais malheureusement, on nous a imposé le logiciel Altium.
Donc tout le projet est dans le format


Décodeur DCC sur FPGA

Pour mon second projet, je devais réalisé un décodeur d'accessoire avec un FPGA.

Ce FPGA est programmé pour avoir:
  • Un microprocesseur MicroBlaze
  • Des interfaces GPIO, pour contrôler des accessoires
  • Un timer, pour générer un signal PWM ou de simples impulsions pour contrôler des accessoires des moteurs d'aiguillage
  • Un interface DCC
J'ai du concevoir, en VHDL, l'interface DCC.
Elle reçoit, en entrée, la polarité du signal DCC sous la forme d'un signal numérique.
Et elle doit exposer, au processeur, les octets de chaque paquet DCC décodé.

Là aussi, je n'ai pas eu le temps de tout faire.

Ce que j'ai pu faire:
  • Écrire un interface DCC basique en VHDL
  • Valider son fonctionnement en simulation
  • Réaliser l’architecture globale du FPGA, avec son microprocesseur, ses GPIO et son timer
Ce qu'il reste à faire:
  • Écrire le logiciel pour le processeur
  • Valider le fonctionnement de l'interface DCC avec un vrai signal DCC
  • Écrire une interface DCC complète en VHDL
  • Tester le taux de décodage de paquet DCC
L'interface basique est capable de:
  • Décoder les bits présent sur le signal DCC
  • Décoder les paquets DCC, mais uniquement pour des paquets court, de 3 octets seulement
  • Lever une interruption quand un paquet est reçu
  • Activer/désactiver l'interruption, via un registre
  • Quittancer l'interruption, via un registre
  • Exposer les octets décodés au processeur, via un registre

L'interface complète doit aussi être capable de:
  • Décoder des paquets jusqu'à la longueur maximale du DCC (32 octets)
  • Vérifier la présence d'erreurs dans le paquet DCC
  • Vérifier plusieurs adresses de décodeur, en plus de celle de broadcast et de reset
  • Paramétrer les conditions de l’interruption
Pour ce projet, je vais aussi voire avec l'école ce que j'ai le droit de publier.
On nous au imposé l'utilisation du logiciel Vivado et de la carte Nexys Video de Digilent.
Mais le code VHDL de l'interface DCC est assez générique pour être ré-utilisé sur d'autres projet



La suite

Après avoir fini mes études, je compte reprendre le développement de mes 2 décodeurs.

Pour le décodeur utilisant un microcontrôleur, je vais:
  • Refaire le projet avec KiCad
  • Choisir des composants plus adaptés à la chaleur qu'ils pourraient dégager
  • Tester chaque étages séparément et valider leur fonctionnement avec de faire le circuit final
  • Développer une carte électronique de teste et de programmation du décodeur
  • Faire plusieurs variantes: Next18, Next18S (avec le son), NEM651
  • Développer une bibliothèque, écrite en C, ré-utilisable, pour le décodage du DCC
Le tout sera publié sous licence libre, que ce soit le matériel comme le logiciel.


Pour le décodeur FPGA, je vais:
  • Trouver une plateforme FPGA programmable entièrement avec du logiciel libre
  • Finir le décodeur DCC en VHDL
Cette fois, cette interface prendra la forme d'un circuit externe qu'on connecte à un microcontrôleur avec une interface I2C, ou SPI.

Là aussi, le résultat sera publié sous licence libre.
Répondre