Auteur Sujet: DCC++ EX  (Lu 11766 fois)

nopxor

  • Full Member
  • ***
  • Messages: 159
    • Voir le profil
DCC++ EX
« le: août 16, 2020, 02:55:44 pm »
Bonjour,
Utilisez-vous DCC++ EX ?
Qu'en pensez-vous ?

https://dcc-ex.com/

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1935
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ EX
« Réponse #1 le: août 16, 2020, 06:15:13 pm »
Bonjour,

toujours intéressant de voir une communauté qui relève le flambeau derrière Gregg Berman.

les intentions semblent louables au vu du site et les échanges sont nombreux sur TrainBoard. Mais sur le site, il est signalé que DCC++ EX est en phase de réécriture du code et celui-ci n'est pas stabilisé. Et l'optimisation atteinte par Gregg Berman ne permet pas beaucoup de fantaisies sur des plateformes comme le UNO. D'où une prise en compte de l'ESP8266 mais c'est une plateforme instable qu'il vaut mieux oublier au profit de l'ESP32 (n’est-ce pas ?) Et ce dernier ne semble pas encore au programme.

La question de la lecture des CV est un sujet majeur sur TrainBoard pour DCC++ EX, mais LA solution aurait-elle été trouvée de ce coté de l'atlantique ?

Donc à suivre, à mon avis un peu tôt pour y investir du temps. D'autres avis sur les sujets abordés ? Ils semblent vouloir proposer des pcb. (?)



Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2653
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #2 le: février 19, 2022, 09:56:49 pm »
Je viens d’installer DCC-EX (release 4 : https://dcc-ex.com/download/commandstation.html) avec succès dans le UNO+Carte Va et vient avec Oled et encodeur.
ça marche mais il occupe 90% de la mémoire (l’Oled bouffe plus) et il faut faire un fichier config.h adapté.
J’ai hate de recevoir mes circuits pour tester sur MEGA car il y aura un strap pour choisir UNO pu MEGA.

Comme il n’y a qu’une seule voie dans cette carte, j’ai testé alternativement la voie MAIN ou la voie PROG (il suffit de permuter 2 lignes dans config.h).

Évidemment les boutons ne sont pas (encore) interfacés donc il faut commander via le port USB (le terminal de lIde).

Résultats:

Fonctionnement nickel sur Main.

Très bonne surprise sur la voie Prog:
CommandStation-EX arrive à lire l’adresse de mon ABJ Renault que je n’avais jamais pu lire jusqu’à présent  ;D
Sur la voie PROG:en mode debug on voit ce qui se passe:
<D ACK ON><R>

réponse :
Ack diag on
<* ACK baseline=10/29mA Threshold=30/89mA Duration between 4000us and 8500us *>
<* VB cv=19 value=0 *>
<* ACK after 63mS max=42/125mA pulse=5576uS samples=196 gaps=1 *>
<* V0 cv=29 bit=5 *>
<* ACK after 56mS max=39/116mA pulse=5744uS samples=91 gaps=0 *>
<* V0 cv=1 bit=6 *>
<* ACK after 54mS max=39/116mA pulse=5332uS samples=94 gaps=0 *>
<* V0 cv=1 bit=5 *>
<* ACK after 54mS max=41/122mA pulse=5516uS samples=94 gaps=1 *>
<* V0 cv=1 bit=4 *>
<* NO-ACK after 148mS max=14/41mA pulse=0uS samples=148 gaps=0 *>
<* V0 cv=1 bit=3 *>
<* ACK after 55mS max=39/116mA pulse=4872uS samples=91 gaps=0 *>
<* V0 cv=1 bit=2 *>
<* NO-ACK after 150mS max=14/41mA pulse=0uS samples=148 gaps=0 *>
<* V0 cv=1 bit=1 *>
<* ACK after 55mS max=41/122mA pulse=5452uS samples=109 gaps=0 *>
<* V0 cv=1 bit=0 *>
<* ACK after 65mS max=41/122mA pulse=5624uS samples=238 gaps=0 *>
<* VB cv=1 value=20 *>
<* ACK after 37mS max=42/125mA pulse=5568uS samples=170 gaps=0 *>
<* Callback(20) *>
<r 20>

C’est bien l’adresse 20 !!

On voit qu’il teste le CV19
Puis le 29 bit 5
Puis le 1 (adresse courte)
il trouve la fenêtre du ACK tout seul = c’est ce que je préconisait : bravo !
Cordialement,
Dominique

dmskd

  • Newbie
  • *
  • Messages: 36
  • Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #3 le: février 19, 2022, 11:02:26 pm »
Bonsoir,

Le fait de remplacer DCCpp par DCC-EX sur ma centrale à base de Nano a résolu mes problèmes de lecture de CV sur mes décodeurs.
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1935
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ EX
« Réponse #4 le: février 20, 2022, 10:16:34 am »
Bonjour,
effectivement les décodeurs Doehler & Haass (D&H) font partie des récalcitrants avec DCC++ que DCC-EX a les moyens de faire parler.
Sauf erreur, ce sont ceux qui équipent Fleischmann, donc pas si exotiques que cela. (CV 8 = 97)
Mais comme dit Dominique, DCC-EX avec oled consomme 90% de la mémoire sur les 328P (UNO, Nano, Mini, ...), ce qui laisse moins de place à la créativité.
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2653
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #5 le: février 20, 2022, 10:46:06 am »
90% c'est sur une première prise de contact.

Il y a surement des optimisations posibles, d'autant q'il faudra ajouter la gestion des boutons et donc des commandes par l'application, en plus du protocole sériel DCC++.

J'ai noté d'ailleurs l'impossibilité de piloter une loco sur la voie Prog, avec le registre 0 (<t 0 3 25 1>).
Par contre la commande <R> fait tout le travail de la lecture d'adresse.

Par aileurs, EX-Rail est une belle opportunité de réaliser des petits (ou grands) automatismes en liaison avec des capteurs, mais nécessite de passer sur MEGA ou Teensy : mon va et vient avec DCCpp sur 328P a encore de l'avenir !

Egalement l'intégration des commandes via le bus CAN est, pour moi, une nécessité, sans tomber dans la complexité de LCC pour le moment.
« Modifié: février 20, 2022, 10:50:34 am par Dominique »
Cordialement,
Dominique

dmskd

  • Newbie
  • *
  • Messages: 36
  • Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #6 le: février 20, 2022, 10:54:28 am »
Citer
Mais comme dit Dominique, DCC-EX avec oled consomme 90% de la mémoire sur les 328P (UNO, Nano, Mini, ...), ce qui laisse moins de place à la créativité.

Dans mon cas, dès le départ j'avais décidé de consacrer le Nano à la gestion du signal DCC pour éviter toute perturbation.
Le Nano ne fait donc que recevoir des commandes et générer le signal DCC correspondant. Tout autre traitement se fait sur un autre élément Arduino.
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2653
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #7 le: février 20, 2022, 11:00:57 am »
OK dmsk,

C'est aussi le cas dans mon architecture :
- une centrale dédiée pour programmer
- une centrale dédiée pour piloter, cette dernière étant entièrement commandée par le pius Can en plus des potentiomètres de vitesse, boutons et leds de direction, et panneau de configuration. Là le MEGA s'est avéré nécessaire.

https://forum.locoduino.org/index.php?topic=290.msg4005#msg4005
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2653
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #8 le: février 20, 2022, 02:07:08 pm »
Pour le moment je teste dans la plus petite centrale possible, avec Oled 128*64, un encodeur et 3 boutons pour la configuration et les fonctions de contrôleur, une seule voie de 3A sur L6203, à brancher sur UNO ou MEGA. L'interface série-USB reste active avec une connexion sans fil possible par module radio, donc par des contrôleurs externes.



Design du circuit by msport.
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2653
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ EX
« Réponse #9 le: février 22, 2022, 01:59:14 pm »
Autre test sur un UNO : la qualité des timings des signaux DCC n'est pas nickel !

En utilisant le sniifer DCCInspector-EX sur ESP32, je trouve des écarts par rapport à la norme NMRA qui sont équivalents à ceux de LaBox sur ESP32.
Environ 20% de bits hors norme.
Cela n'empêche pas le fonctionnement des locos puisque les commandes sont répétées.

« Modifié: février 22, 2022, 02:02:03 pm par Dominique »
Cordialement,
Dominique

Remi

  • Newbie
  • *
  • Messages: 26
  • HO en 3 rails (Marklin)
    • Voir le profil
Re : DCC++ EX
« Réponse #10 le: mars 01, 2022, 05:28:44 pm »
Bonjour à tous,
juste pour information, je reprends ici le sujet commencé sur un autre fil https://forum.locoduino.org/index.php?topic=843.msg14751#msg14751, car cela concerne directement DCC_EX  (Comparaison de lecture des CV entre DCCpp_uno et DCC_Ex).

Après avoir modifié le fichier de configuration de DCC_Ex (définition des pins entrée/sorties) pour devenir compatible avec le hardware de la carte Pololu comme dans les articles de locoduino https://www.locoduino.org/spip.php?article187, je peux maintenant poursuivre les essais de lecture des CV avec les 2 logiciels.

Le banc de test est composé d'un PC avec JMRI, une carte Mega avec le shield Pololu, une loco de test avec décodeur Marklin MLD/3, une seconde loco de test avec décodeur ESU V4, une lecture du courant d'alimentation de la carte Pololu, et une lecture de tension sur la broche M1FB et M2FB (Image du courant sur la voie principale et la voie de programmation).

Le principe du test est simple. Je charge DCCpp_Uno sur l'arduino et j'essaye de lire /détecter la nouvelle Loco avec JMRI. Ensuite, je charge DCC_EX et je recommence la lecture des CV.

Test 1 (DCCpp_Uno) : 
Décodeur Marklin : Pas de lecture du décodeur,  pas d'acquittement en retour (Stopping due to error, pas de confirmation loco (308) ).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Test 2  (DCC_Ex) :
Décodeur Marklin : Pas de lecture du décodeur,  pas d'acquittement en retour (Stopping due to error, pas de confirmation loco (308) ).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Dans la documentation DCC_Ex, la carte Polulu n'est pas recommandée pour la lecture des CV. La sensibilité de lecture du courant est donnée pour environ 500mV/A sur les broches M1FB et M2FB. Je décide de modifier la voie de programmation (M2FB) sur la carte Pololu en augmentant la résistance en sortie du miroir de courant. Je remplace la 220Ω par une 470Ω, soit à peu prés le double.
Je vérifie que cela fonctionne en traçant la courbe V (M2FB) en fonction du courant de l'alimentation. le résultat est:

I (ma) alimentation      18   160   250   683   780   915   1115
M1FB (mv) R = 220 Ω   0,1   1,36   21,9   262   314   390   502
M2FB (mv) R = 470Ω    0,1   2,74   39,3   537   651   810   1032

J'ai bien sur M2FB une tension en sortie du miroir de courant de l'ordre de 1V/A, soit une sensibilité double par rapport à la sortie M1FB qui n'est pas modifiée.  je reprends les tests comme précédemment.

Test 3 (DCCpp_Uno) : 
Décodeur Marklin : Pas de lecture du décodeur,  pas d'acquittement en retour (Stopping due to error, pas de confirmation loco (308) ).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Test 4  (DCC_Ex) :
Décodeur Marklin : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI   :).
Décodeur Esu-V4 : Le décodeur est reconnu et les valeurs de CV s'affichent dans JMRI.

Apparemment, pour la même configuration matérielle, il y a bien une différence de comportement entre DCCpp_Uno et DCC_Ex pour le même montage et avec les mêmes conditions de mesure.

Vue mes connaissances en informatique, je ne sais pas expliquer pourquoi, mais maintenant je peux lire les CV  (carte Pololu et DCC_EX) sur mes décodeurs Marklin qui bien que du matériel récent, etait non lisible avec DCCpp_Uno .

J'ai quand même réalisé une mesure relative pour essayer de comprendre la différence entre les 2 décodeurs même si le principe de mesure n'est pas très "déontologique". j'ai mesuré en mode Min/Max le pic de courant observé lors de la lecture des CV. Celui-ci est de 124ma pour le décodeur Esu et seulement de 68ma pour le décodeur Marklin. C'est peut être un début d'explication  :D.

Ce commentaire est simplement un constat, il sera peut être utile pour certains des lecteurs propriétaires d'une carte Pololu.

Banc de test :
« Modifié: mars 01, 2022, 05:41:48 pm par Remi »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 619
  • HO avec DCC++
    • Voir le profil
Re : DCC++ EX
« Réponse #11 le: mars 01, 2022, 10:09:49 pm »
Je suis impressionné par la rigueur du test et très heureux d’avoir (enfin) un résultat positif. Je suis d’autant plus heureux que je viens d’acheter d’occasion une loco TRIX pour laquelle je n’arrive pas à lire les CVs alors que je n’avais jamais eu de problèmes jusque là avec les décodeurs TRIX (Marklin).

Par ailleurs, j’ai une configuration toute prête avec la carte Pololu et aussi une autre avec un LMD18200, il me sera assez facile de tester et d’essayer de corroborer ces résultats.

Par contre je ne comprends pas bien comment faire pour cela :


Je décide de modifier la voie de programmation (M2FB) sur la carte Pololu en augmentant la résistance en sortie du miroir de courant. Je remplace la 220Ω par une 470Ω, soit à peu prés le double.
Je vérifie que cela fonctionne en traçant la courbe V (M2FB) en fonction du courant de l'alimentation. le résultat est:

I (ma) alimentation      18   160   250   683   780   915   1115
M1FB (mv) R = 220 Ω   0,1   1,36   21,9   262   314   390   502
M2FB (mv) R = 470Ω    0,1   2,74   39,3   537   651   810   1032



Christian M

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : DCC++ EX
« Réponse #12 le: mars 01, 2022, 11:45:01 pm »
Bonsoir,

je viens de tester sur une mega avec un moteur shield arduino basique -JMRI et sur "COM", sans modifications particulières par rapport à ce qu'il y déjà écrit sur le site, il est vrai que la lecture de CV et le fonctionnement est vraiment excellent sauf....... pour les décodeurs Laisdcc (kungfu) avec power pack, ou heureusement que j'avais des butoirs sinon je satellisais mes locos, bon ce sont de vieilles locos analogiques digitalisées à moindre frais, je suis tout de même arrivé à dompter ces décodeurs, ça devrait le faire...

est ce que quelqu'un a pu tester avec un moteur L9110S?? et si oui quelle config pour les Pins?

merci



Remi

  • Newbie
  • *
  • Messages: 26
  • HO en 3 rails (Marklin)
    • Voir le profil
Re : DCC++ EX
« Réponse #13 le: mars 02, 2022, 10:25:21 am »
Bonjour Christophe,

La mesure est effectué en 2 temps.
Une série de mesure sur la voie principale afin de relever la tension sur M1FB
Une série de mesure sur la voie de programmation afin de relever la tension sur M2FB
le montage de mesure est le suivant:
un ampèremètre placé en série dans l'alimentation de la carte Pololu me donne le courant consommé.
Un millivoltmètre pour la mesure de la tension d'abord sur M1FB, puis sur M2FB.
Un résistance de charge placé en sortie sur voie principale, puis sur voie programmation. Cette résistance de charge est composée de plusieurs résistances de puissance mise en série (ce que j'avais dans mes tiroirs), et  je me connecte à tous les points intermédiaires afin d'avoir plusieurs valeurs de charge.

L’alimention délivre en sortie une tension de l'ordre de 18V. le tableau précédent est complété par les différentes valeurs de R-charge.

Résistance Charge Ω    ∞    75      50      25     21,5  18,3  15
I (ma) alimentation      18    160    250    683   780   915   1115
M1FB (mv) R = 220 Ω   0,1   1,36   21,9   262   314   390   502
M2FB (mv) R = 470Ω    0,1   2,74   39,3   537   651   810   1032

Le premier point de ce relevé donne la consommation de la carte au repos, sans charge.

En souhaitant que cette explication aide à la compréhension de la méthode, n'hésite pas s'il y a d'autres questions.
A+  Rémi






msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1935
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : DCC++ EX
« Réponse #14 le: mars 02, 2022, 10:59:42 am »
Bonjour,

il est normal que tous les stay-alive et autres power packs rendent la lecture des CV difficile, en effet les petits pics de courant qu'il faut lire sont absorbés (fournis). par les condensateurs ou les super caps. Il suffit (!) de débrancher ce dispositif le temps de la lecture.

Pour la carte moteur à L9110S, si DCC-EX a respecté DCC++ et comme il a prévu dans config.h
#define MOTOR_SHIELD_TYPE STANDARD_MOTOR_SHIELD par défaut
le câblage de l'article
https://www.locoduino.org/spip.php?article253 ,
repris de celui de l'article :
https://www.locoduino.org/spip.php?article187 
devrait convenir pour UNO ou MEGA.
Cordialement