Bonjour les amis,
En attendant de pouvoir publier les sources (ça arrive), j'ouvre ici un sujet pour vous présenter quelques aspects du décodeur DCC que nous avons mis en vente dans la boutique cette semaine.
Je vous présente tout d'abord un tour d'horizon des outils qui peuvent servir à travailler le sujet, en mode mise au point. En fait tout existe déjà dans le forum, notamment via les cartes que LaurentR a déjà publié depuis longtemps...mais justement faisons le tour de la question avec quelques photos de mon "propre labo"...
Tout d'abord il nous faut de quoi constituer l'électronique de façon modulaire, pour pouvoir remplacer un module par un autre en cas de "mauvais circuit"....et pour pouvoir facilement tester différents CPU par exemple. Sur cette image vous voyez les modules utilisés. Ils proviennent tous de la carte "Au labo" de Laurent, à part le Nano bien entendu, ainsi que la carte comportant toutes les leds en haut...
Pour tester tout ça, j'utilise différentes centrales commerciales. Ici une DR5000 associée à la classique Multimaus de Roco...
Les cartes ne sont pas branchées entre-elles pour éviter l'effet spaghetti, question de clarté des photos.
Le premier module utile est le "DCC TO OPTO IN", autrement-dit l'intégration du signal DCC vers le CPU en passant via un opto-coupleur pour isoler galvaniquement la chose.
Sur ce module, les deux bornes oranges reçoivent le DCC en provenance de la DR5000. Les bornes noires sont connectées au +5 et GND de l'arduino, ainsi qu'à une entrée digitale qui va recevoir le signal DCC. Dans nos décodeurs, nous avons normalisé l'entrée signal DCC sur la broche Arduino D0.
Une alternative à ce circuit est le "IN WITHOUT OPTO" de la carte labo. Ce montage n'est utilisable que dans certaines circonstances, en l’occurrence sur certains ATMEGA.
Il s'appuie sur la manière dont est construit l'électronique des ATMEGA 328P ou d'autres, pour récupérer le signal SANS passer par un opto-coupleur. On perd l'isolation galvanique, mais le problème c'est que l'opto-coupleur est un composant très encombrant....et sur les décodeurs DCC la place est très très limitée !
Ce montage permet aussi la connexion au pont en H (voir après) pour y lire la FCEM et la fournir au CPU, pour faire la régulation de vitesse du moteur en conséquence...
Justement le moteur....il nous faut notre "shield" moteur, notre pont en H ! Le voici, toujours extrait de la carte "Au labo", avec toutes les connexions nécessaires bien présentes...
Normalement on a pas besoin d'autre circuit, mais quand on veut tester sans un moteur / pont en H, on a parfois besoin de "simuler" un ACK sur la voie de programmation, par exemple pour nos rampes lumineuses. Là encore, la carte labo possède un circuit adapté :
Enfin la dernière carte est un outil de travail bien pratique et "fun"...une carte remplie de leds cablées comme il faut pour tout un tas de configurations de feux de signation, en anode commune. Je l'utilise pour mes tests de lumière (pwm...., feux avant / arrière....enfin dès que j'ai besoin d'un signal lumineux quoi !)
Quelques mots maintenant sur le CPU utilisé....
Les prototypes que Laurent avait fait il y a quelques mois, que vous pouvez retrouver dans le post correspondant, utilisaient un 328P....donc un Arduino nano / uno dans les faits, tout comme le projet Nagoden en fait.
Par la suite, à la fois pour augmenter la puissance disponible, mais aussi au regard des problèmes de pénuries de composants, nous avons modifié notre choix et adopté un CPU très proche, mais un tantinet plus complet. Tout en nous assurant qu'il soit facilement accessible à ceux qui voudraient "jouer" avec l'OpenSource avec nous.
C'est donc un ATMEGA 4808, le cousin du 4809 du Nano Every, qui a été retenu.
Par rapport à un 328P, on y trouve :
- 6 K de RAM au lieu de 2 K
- Un oscillateur interne capable de tourner de façon fiable à 20 Mhz sans quartz
- Des ressources type "timer" un peu plus riches que sur un 328
Pour le reste, ça s'utilise quasiment pareil et le projet MegaCoreX, qui permet d'intégrer le support de ce processeur dans l'IDE Arduino est très bien suivi.
Du coup, sur les photos vous voyez un Nano Every qui me sert pour les développements : plus facile que de jouer du fer à souder pour faire une carte de test.
On met au point le logiciel dans ce type de conditions, puis on valide ensuite sur les circuits définitifs.
La programmation du Nano Every se fait directement en USB, comme n'importe quel Arduino...et on a le port console pour aider dans le travail.
Pour programmer les composants finaux, il faut disposer d'un programmateur gérant l'UPDI....tel que l'ATMEL ICE. On peut se faire ce type de programmateur avec un Nano classique, une capa, une résistance et quelques soudures.
A noter qu'avec l'ICE / l'updi on peut aussi débugger mais.....mais les environnements de développement communautaires actuels (tel que Platform IO) ne supportent pas le debug direct via UPDI pour le moment. Le problème n'est donc pas matériel mais logiciel. Actuellement pour débugger un ATMEGA (AVR), PlatformIO utilise un stub AVR logiciel et le port console. De ce fait, sous platformio on peut faire du debug sur le NanoEvery....mais pas sur un montage final sans port USB. Espérons que ça changera rapidement !
Voilà les premières infos que je pouvais vous donner sur ce décodeur. Une version 21MTC et une autre PLUX 22 sont dans la boutique. On y trouve, sous une forme hyper condensée, le contenu des montages que je viens de vous présenter : entrée DCC, lecture FCEM, pont en H (1.5 ampères), 8 sorties auxiliaires amplifiées par mosfet pour les éclairages des locos...ainsi qu'un connecteur à trois broches véhiculant le signal UPDI (+5 / GND / PROG) qu'on peut utiliser pour injecter un firmware dans le décodeur avec avrdude et un programmateur supporté par ce dernier.
Plus d'infos à venir, au fur et à mesure de mes dispos sur le sujet