Auteur Sujet: Problème de retour d'info des decodeurs  (Lu 1642 fois)

Fabien73

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Problème de retour d'info des decodeurs
« le: août 05, 2019, 04:39:56 pm »
Hellou out le monde
Je rencontre un problème de retour des infos de décodeur de différente marque sous JMRI.
Je voudrais donc savoir comment les infos des décodeurs sont renvoyé à la base station. Faut il impérativement un module de controle de courant comme un MAX471 ou le retour se fait autrement.
Pour info je suis encore en mode test de la basestation DCCpp.
Cordialement
Fabien

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 500
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #1 le: août 05, 2019, 06:03:16 pm »
Le retour d'info peut prendre plusieurs formes. Avec les shields prévus par la version originale, c'est eux qui retournent l'info. Avec un LMD18200 par exemple, une broche existe dessus pour retourner la consommation, mais elle n'a pas été jugée fiable. Donc dans tous les cas sans shield, on recommande un circuit comme le max471 qui fait très bien ce boulot. A noter qu'avec deux voies, une principale et une programmation, il faut deux circuits.
La problématique de la reconnaissance telle qu'elle est codée dans DCC++, c'est que la valeur utilisée comme seuil pour identifier une consommation est fixée arbitrairement à 300 alors qu'elle devrait sans doute varier en fonction de facteurs comme la consommation effective du décodeur et du moteur de la loco, la puissance de l'alimentation... C'est pourquoi dans la fonction begin des CurrentMonitor dans la bibliothèque DCCpp, j'ai ajouté un argument optionnel pour cette valeur. Si elle n'est pas précisée, on reste à 300, sinon on peut fixer ce que l'on veut.
Par contre, je n'arrive pas à m'expliquer comment font les centrales du commerce pour que leur reconnaissance marche dans beaucoup plus de cas que sur DCC++...

Fabien73

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #2 le: août 05, 2019, 06:50:28 pm »
Je te remercie pour ta réponse très claire->Cool
Après sur les centrales du commerce, il y a peut être deux lectures de la conso de courant. Une pour la protection des court-circuit et une autre qui gère juste le conso moteur pour le retour info décodeur mais avec une valeur de lecture plus basse.
Fabien

bobyAndCo

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 362
  • HO avec DCC++
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #3 le: août 05, 2019, 10:25:43 pm »
Si la lecture du décodeur renvoi un échec, on peut imaginer une itération qui fasse varier la variable du seuil progressivement jusqu'à une une lecture sans échec ou qui sort de l'itération après un nombre arbitraire de tentatives infructueuses.

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 500
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #4 le: août 06, 2019, 11:46:12 am »
Après une petite plongée dans le code de la lecture/écriture des CVs, il se trouve que ce n'est pas la valeur de 300 qui est utilisée pour la discussion avec les décodeurs, mais un define ACK_SAMPLE_THRESHOLD qui représente une valeur pondérée du delta entre un état de base de la broche analogique, et un état avec une consommation observée.
Cette valeur est par défaut fixée à 30, et il faudrait peut être la diminuer pour certains couples décodeur/moteur qui sont moins gourmands. Je vais étudier la possibilité de la fixer par programme sans toucher au fichier PacketRegister.h qui la définit aujourd'hui.

Fabien73

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #5 le: août 06, 2019, 01:57:08 pm »
En tout cas merci les chefs
ça fait plaisir de voir des personnes qui répondent à un newbi comme moi.
Fabien

bobyAndCo

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 362
  • HO avec DCC++
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #6 le: août 06, 2019, 09:43:55 pm »
Merci Thierry,

C'est une piste que je vais tester dès que possible, mais malheureusement pas sans doute avant une quinzaine de jours.

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 500
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #7 le: août 07, 2019, 06:16:26 pm »
Pour améliorer les choses, je viens de pousser une version 1.3.7 sur le LocoHub avec une fonction pour pouvoir fixer cette valeur initialement à 30, plus quelques amélios pour gagner de la mémoire programme...

Au passage, il est devenu possible de faire quelque chose comme ça dans le setup d'un ino :
  int locoId = -1;

  byte ackValue = DCCpp::ackThreshold;  // nouvelle valeur de la 1.3.7, à 30 au départ.
  while(locoId == -1)
  {
    locoId = DCCpp::identifyLocoIdMain();

    if (locoId == -1)
    {
      ackValue--;
      DCCpp::ackThreshold = ackValue;
      Serial.print("ackValue reduced to ");
      Serial.println(ackValue);
    }
  }

Ce code va chercher à identifier la loco présente sur le réseau, et si il n'y arrive pas, il va réduire la valeur de ack et refaire un essai.
A noter qu'en debug j'ai ajouté des affichages pendant la lecture pour mieux comprendre ce qui se passe. Il faut aussi comprendre qu'un décodeur qui envoie un 'ack', c'est une machine qui a un soubresaut. Et sur ma petite Bachmann quasi neuve en N, chaque vibration fait perdre le contact électrique à la loco... Il faut appuyer dessus avec un doigt pour que ça remarche... Bref, c'est moyennement facile de faire quelque chose de fiable à 100%...
« Modifié: août 07, 2019, 06:21:10 pm par Thierry »

bobyAndCo

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 362
  • HO avec DCC++
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #8 le: août 07, 2019, 06:33:20 pm »
Bonjour Thierry,

Je n'ai finalement pas pu attendre et j'ai dès ce matin cherché à vérifier si le changement de la valeur de ACK_SAMPLE_THRESHOLD solutionnait le problème.

J'ai fait le test sur un autorail (X3800 Mistral) en HO donc pas de problème de prise de courant sur les rails.

Je n'avais pas beaucoup de temps alors je n'ai pas pu faire une véritable itération comme tu l'as fait. J'ai simplement modifié la valeur de ACK_SAMPLE_THRESHOLD et chargé le sketch à chaque fois puis fait le test.

Je n'ai testé que les valeurs suivantes : 15, 10, 1 et 45. Mais je n'ai rien obtenu de résultat positif. Ma configuration était fonctionnelle puisque j'ai aussi testé avec succès sur un décodeur Marklin.

Je vais continuer peut être demain en testant toutes les valeurs de 30 à 1 !

Un peu déçu donc pour le moment mais toutes les combinaisons n'ont pas été testées donc il reste de l'espoir.

Bien amicalement.

Christophe

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1710
  • 100% Arduino et N
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #9 le: août 08, 2019, 12:29:47 pm »
Bonjour les gars,

J’ai aussi des décodeurs récalcitrants (CT Electronic je crois) est j’ai testé pas mal de seuils de mesure, avec DCC++, avant DCCpp, mais sans succès. Cette question est récurrente sur le forum DCC++ et il semble qu’il n’y ait aucune avancée sur ce sujet.
Pourtant d’autres centrales y parviennent parfois mais j’en doute un peu car beaucoup de modélistes semblent programmer des décodeurs sans relecture des CVs, simplement en testant si ça marché.

Amicalement
Dominique

bobyAndCo

  • Global Moderator
  • Sr. Member
  • *****
  • Messages: 362
  • HO avec DCC++
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #10 le: août 08, 2019, 12:47:39 pm »
Bonjour Dominique,

Entre les enduits dans la cuisine et la peinture des chambres, j'ai pris encore un peu de temps pour tester les seuils. De 1 à 16 avec un pas de 1 mais aucun résultat ! J'ai même testé 0 qui bien sûr donne quelque chose mais totalement faux.

Je crois que la piste est dans le hard et comme je l'avais déjà indiqué, j'ai vu que l'on pouvait placer une resistance. Mais laquelle ? Quelques Ω, quelques dizaines, quelques centaines ?

msport

  • Hero Member
  • *****
  • Messages: 658
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #11 le: août 08, 2019, 11:31:47 pm »
J'ai lu 120 ohms en parallèle sur la voie mais je n'ai eu que des retours négatifs.

A tenter : à mettre en parallèle directement avec le moteur ...
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1710
  • 100% Arduino et N
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #12 le: août 09, 2019, 09:06:16 am »
Le plus simple ne serait-il pas de mettre une résistance sur la sortie moteur du décodeur. Des essais à faire qui nécessitent de démonter le decodeur ?

Fabien73

  • Newbie
  • *
  • Messages: 27
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #13 le: août 09, 2019, 12:44:10 pm »
J'ai vu sur une notice qu'on pouvait mettre une résistance de 45ohm en serie
Fabien

msport

  • Hero Member
  • *****
  • Messages: 658
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Problème de retour d'info des decodeurs
« Réponse #14 le: août 09, 2019, 01:05:36 pm »
Avec quel objectif ?
Je veux dire : pourquoi la notice propose de mettre une résistance en série ?
La valeur de 45 ohms est curieuse.
Même sur du N, ça consomme quasiment toute la tension disponible.
L'idée serait peut-être de la mettre à la place du moteur ?
« Modifié: août 09, 2019, 01:09:53 pm par msport »
Cordialement