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.
Documentation et utilisation protocole DCC et Motorola
Modérateurs : Philippe Cousyn, Tibrus, Patrice, Arnaud Guyon
-
- Draisine
- Messages : 69
- 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
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:
Ce qu'il reste à faire:
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:
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:
L'interface complète doit aussi être capable de:
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:
Pour le décodeur FPGA, je vais:
Là aussi, le résultat sera publié sous licence libre.
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
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
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
- É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
- 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
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
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
Là aussi, le résultat sera publié sous licence libre.