Auteur Sujet: Une station DCC complète, polyvalente et économique avec JMRI  (Lu 16747 fois)

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #15 le: avril 29, 2020, 05:27:20 pm »
Au moment où j'ai écrit l'article sur cette centrale DCC++, je n'avais sous la main que des MAX471 pour sécuriser la centrale en cas de sur intensités et principalement de courts-circuits.

Du coup plusieurs s'interrogeaient quant à l’utilité d’une centrale pouvant potentiellement fournir 10A (et même 15A dans mon cas) si l’on ne pouvait finalement en exploiter que 3.

J’ai testé les capteurs de courant ACHS-7122 de chez Pololu dont on a plusieurs fois parlé sur Locoduino et qui permettent de monter jusqu’à 20A (pour la mesure).

Les résultats sont probants et la mise en place facile.



Les broches GND et Vcc seront alimentées respectivement par un GND pris sur l’Arduino et le Vcc par du 5V lui aussi pris sur la carte. La sortie OUT de l’ACHS-7122 ira sur la broche A0 de l’Arduino.

Le fil (+) en provenance de l'alimentation sera relié à IP+ et IP- sera relié au (+) de la carte L9110S. Le fil (-) de l'alimentation ira donc lui directement de l'alimentation à la carte L9110S. Ne cherchez surtout pas à le relier à IP- par exemple.

Les fils peuvent être soudés à la carte :



mais je pense préférable un montage avec cosses:



La lecture de current dans le fichier CurrentMonitor.cpp de DCC++ retourne la valeur 512 quand il n’y a pas de charge de courant sur le réseau :

current = analogRead(pin) * CURRENT_SAMPLE_SMOOTHING + current * (1.0 - CURRENT_SAMPLE_SMOOTHING);

Cela est donc bien supérieur à la valeur par defaut dans le fichier CurrentMonitor.h qui est de 300

#define  CURRENT_SAMPLE_MAX         300

Je préconise de modifier cette valeur avec raison. C’est à dire de la placer à 600 (ce qui doit correspondre à environ 4,5A de consommation) et de faire fonctionner votre réseau comme vous le souhaitez. Si la sécurité s’active alors vous augmenterez progressivement cette valeur CURRENT_SAMPLE_MAX. Une fois que vous avez trouvé le point limite pour votre réseau et vos différentes locomotives, ne cherchez pas à augmenter cette valeur.

Jean-Luc donne ci-dessous la formule pour des calculs exacts de CURRENT_SAMPLE_MAX avec ce ACHS-7122 mais aussi la courbe qui permet assez facilement de determiner la valeur.

Ne cherchez pas à monter à CURRENT_SAMPLE_MAX au delà de 640 qui correspond déjà à 7A largement suffisant pour la plus part des réseaux.

Tout retour d’expérience sur ce fil sera apprécié surtout ceux qui pourraient permettre d’avoir une connaissance plus fine entre la valeur define  CURRENT_SAMPLE_MAX et l’intensité réelle.
« Modifié: avril 29, 2020, 07:47:40 pm par bobyAndCo »

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1619
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #16 le: avril 29, 2020, 07:13:37 pm »
Christophe,

Je ne comprends pas tes calculs

100mV/A pour 3A, ça donne 300mV soit une tension de 2800mV délivrée par l'ACHS-7122. La valeur retournée par analogRead est 2800 * 1023 / 5000 = 573.

La formule est (I * 100 + 2500) * 1023 / 5000.

Pour les visuels, ça donne ça

Si vous restez en dessous de 10A, Il vaut mieux prendre le 7121.


« Modifié: avril 29, 2020, 07:26:25 pm par Jean-Luc »
Cordialement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #17 le: avril 29, 2020, 07:30:19 pm »
B'hein c'était pas vraiment des calculs mais plutôt des déductions, mais force est de constater que ma courbe à moi ne montait pas autant que tes calculs.

Pour qu'il n'y ait aucune ambiguïté, j'ai réécrit mon post ci-dessus et je fait référence à tes calculs et à ta courbe.

Merci
« Modifié: avril 29, 2020, 07:50:06 pm par bobyAndCo »

msport

  • Hero Member
  • *****
  • Messages: 1453
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #18 le: avril 29, 2020, 10:56:42 pm »
Le fond du problème est que la famille ACS712 mesure (aussi) l'alternatif et donc les tensions négatives.
A vide, le signal est VCC / 2.

D'où l'impossibilité que j'ai rencontrée de lire le retour des décodeurs ... Quid de la  modification du soft ?
Cordialement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #19 le: avril 30, 2020, 10:59:32 am »
Tu as raison Michel, je n'ai vu qu'une partie du problème. Deux hypothèses à mon avis, soit effectivement modifier le soft, soit mettre un autre contrôleur de tension.

La seconde piste est sans doute à privilégier.

Quelqu'un a t'il de produits à préconiser dans une tranche 10 à 20A en courants positifs uniquement ?


Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1619
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #20 le: avril 30, 2020, 11:40:25 am »
Des amplis dédiés à la mesure du courant, il y en a des dizaines. Mais ils nécessitent la plupart du temps au moins une résistance externe et sont dans des boîtiers qui piquent un peu les yeux à souder (SOT23-5) mais ça se fait.

Par exemple : https://www.st.com/resource/en/datasheet/tsc101.pdf

Celui disponible chez TME est un A (gain de 20) : https://www.tme.eu/fr/details/tsc101ailt/amplificateurs-operationels-smd/stmicroelectronics/

Donc si on veut avoir 5V à la sortie du TSC101, il faut avoir 5/20 = 0,25V = 250mV aux bornes de Rsense.

Il faut calculer la résistance Rsense de manière à avoir 0,25V quand elle est traversée par 20A. U = RI, R = U/I = 0,25 / 20 = 0,0125 Ω = 12,5 mΩ. Elle doit dissiper 0,25 * 20 = 5W (ouch même si en pratique avec 10A utilisés on est à 1,25W, faudrait pas qu'elle fume en cas de surcharge)

Avec un TSC101B, le gain est de 50. Donc 0,1V aux bornes de Rsense, 5 mΩ et 2W (https://www.tme.eu/fr/details/lr2512-r005-1%25-2w/resistances-smd-2512/royal-ohm/lr122wf500nt4e/)

https://fr.farnell.com/stmicroelectronics/tsc101bilt/ic-amp-hiside-curr-sense-sot23/dp/1737212RL
« Modifié: avril 30, 2020, 11:44:31 am par Jean-Luc »
Cordialement

msport

  • Hero Member
  • *****
  • Messages: 1453
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #21 le: avril 30, 2020, 06:46:52 pm »
A partir du moment où on se lance dans le CMS et la création de petits modules remplaçant ceux à MAX471, on peut envisager d'ajouter à l'ACS712 un ampli op aussi en CMS et mettre le tout sur un pcb de 25 mm x 25 mm.
Le schéma joint devrait rétablir le 0V pour le 0A avec un gain donnant environ 1V/A (pour l'ACS712 5A). Le LM358 est une brave bête qui ne se transforme pas automatiquement en émetteur FM, mais après essais il lui faudra peut être un petit condensateur en prime.
L'avantage de l'ACS712 est qu'il est basé sur un détecteur à effet Hall, donc pas de résistance, il existe en 20A, mais ça fait un peu peur pour ses petites pattes en CMS.
L'avantage d'un tel module est qu'on amplifie les mV à la source, donc avec moins de parasites.
« Modifié: avril 30, 2020, 06:56:06 pm par msport »
Cordialement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #22 le: avril 30, 2020, 06:51:32 pm »
C'est cool ça ! Merci Michel

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #23 le: mai 05, 2020, 12:16:46 am »
Sur ma propre centrale, pour contourner le problème évoqué concernant la lecture et la programmation des CV’s avec le ACHS-7122 j’ai coupé sur la carte la piste qui alimente les MOSFET Q5, Q6, Q7 et Q8 (ceux qui sont côté alimentation GND car la piste est plus accessible) et j’ai soudé un câble qui est relié à l’alimentation au travers d’un MAX 471.



Je dispose ainsi de deux détecteurs de consommation de courant, le ACHS-7122 pour la voie principale qui est relié à l'entrée A0 de l'Arduino et programmé pour environ 6A et un MAX471 pour la voie de programmation. La sortie AT du MAX471 est reliée à A1 de l’Arduino.




Notez que comme j’ai inversé la voie de programmation et la voie principale par rapport à mon montage initial, les liaisons entre l’Arduino et la L9110 doivent être interverties en conséquence.

Le fichier DCCpp_Uno.h de DCC++ doit lui aussi distinguer l’entrée A0 pour la lecture de la consommation sur la voie principale et A1 pour la voie de programmation.

#define MOTOR_SHIELD_NAME "L9110S Dual Motor Driver"

#define SIGNAL_ENABLE_PIN_MAIN 3
#define SIGNAL_ENABLE_PIN_PROG 11

#define CURRENT_MONITOR_PIN_MAIN A0
#define CURRENT_MONITOR_PIN_PROG A1

#define DIRECTION_MOTOR_CHANNEL_PIN_A 12
#define DIRECTION_MOTOR_CHANNEL_PIN_B 13



Le fichier CurrentMonitor.h est modifié comme ceci :

#define  CURRENT_SAMPLE_SMOOTHING   0.01
#define  CURRENT_SAMPLE_MAX_MAIN    600
#define  CURRENT_SAMPLE_MAX_PROG    300

Et enfin la fonction CurrentMonitor::check() du fichier CurrentMonitor.cpp comme ceci :

void CurrentMonitor::check() {
  current = analogRead(pin) * CURRENT_SAMPLE_SMOOTHING + current * (1.0 - CURRENT_SAMPLE_SMOOTHING); // compute new exponentially-smoothed current

  if ((pin == CURRENT_MONITOR_PIN_MAIN && current > CURRENT_SAMPLE_MAX_MAIN)) {                   // current overload Main
    digitalWrite(SIGNAL_ENABLE_PIN_MAIN, LOW);                                                    // disable Main Motor Shield Channel
    INTERFACE.print(msg);                                                                         // print corresponding error message
  }
  else if (pin == CURRENT_MONITOR_PIN_PROG && current > CURRENT_SAMPLE_MAX_PROG) {                // current overload Prog
    digitalWrite(SIGNAL_ENABLE_PIN_PROG, LOW);                                                    // disable Prog Motor Shield Channel
    INTERFACE.print(msg);                                                                         // print corresponding error message
  }
} // CurrentMonitor::check



« Modifié: mai 08, 2020, 11:32:17 pm par bobyAndCo »

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 667
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #24 le: mai 05, 2020, 08:46:10 am »
Oui c'est une adaptation que j'ai faite depuis longtemps dans DCCpp...

msport

  • Hero Member
  • *****
  • Messages: 1453
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #25 le: mai 05, 2020, 10:58:58 am »
Pour revenir sur le module à base d'ACS712, le schéma proposé doit être revu suite à mise au point (délicate).
Son utilisation en protection de court-circuit ne pose pas de problème, par contre, je ne suis pas parvenu à lire les CV ... (il s'agit de mesurer 11mV sur 2500)
Apparemment, DCC++ devrait s'affranchir d'une "base" pour lire les 60 mA de la norme (merci Dominique), mais mes essais sont infructueux jusqu'ici.
Cordialement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #26 le: mars 27, 2021, 11:23:29 am »
Bonjour à tous,

Je constate avec grand plaisir que cette station DCC++ suscite un certain intérêt auprès de nombre de Locoduinistes. Mais apparaissent plus ou moins les problèmes cités à divers endroits du forum liés à la raréfaction (disparition) des MAX471 et pire, l'apparition de MAX471 contrefaits et donc dangereux.

Aujourd'hui, cette question est régulièrement d'actualité mais évoquée à différents endroits du forum. Il est de ce fait difficile d'avoir une compréhension globale et donc de trouver les bonnes solutions.

Cette questions mobilise pas mal d'énergies et va probablement sous peu trouver une réponse fiable. Mais ne faites pas n'importe quoi d'ici là.

En tout premier lieu, si vous n'avez que peu ou pas d'expérience, contentez-vous de la version de base présentée dans l'article, c'est à dire avec un seul MAX471. Si votre MAX471 est de bonne qualité, vous arriverez à piloter des trains et à programmer des CV's avec ni plus ni moins de réussite que dans d'autres configurations. Car ce problème de lecture de CVs sur certains décodeurs est connu depuis longtemps et là aussi plusieurs membres travaillent à apporter des solutions.

Si vous avez quelques locos qui refusent désespérément de se laisser programmer, prenez votre mal en patience, les solutions vont émerger petit à petit.

Si vous êtes plus aguerris, vous pouvez mettre en œuvre des solutions à deux détecteurs comme je le montre juste plus haut dans ce fil. Mais cela n'a d'intérêt que si vous dépassez les 3A (limite du MAX471). Ca veut déjà dire quelques locos sur le réseau à consommer en même temps du courant, probablement entre 6 et 10 locos au moins !


Personnellement j'ai exactement la config que je présente plus haut avec un ACHS-7122 et ça fonctionne parfaitement. Michel (MSPort) soulève à juste titre que c'est délicat d'obtenir une mesure précise mais ce n'est pas ce que je recherche sur la voie principale mais la détection de court jus où l'intensité va monter en flèche. C'est surtout cela qu'il faut détecter.


Avec des seuils de détection assez faibles, vous vous prémunissez de mauvaises surprises. Et encore une fois, ne faites que ce que vous savez faire et demandez conseil dans le cas contraire.


Je travaille aussi sur les capteurs ACS724 (30A) packagé par Pololu : https://www.pololu.com/product/4046   
dont les lectures devraient être plus faciles à exploiter mais ça vaut tout de même 9€ le bout ! Je travaille aussi sur un détecteur autonome à partir de ce composant avec un code ultra optimisé au travers de la manipulation directe des ports qui servent à la lecture analogique. Mais bon, pas indispensable d'aller jusque-là.

En attendant donc des solutions concrètes, suivez les discutions sur le forum et participez si vous pensez pouvoir faire avancer le Schmilblick.

Christophe

jp33

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #27 le: avril 05, 2021, 12:43:51 pm »
Bonjour à tous,
Je viens de réaliser une station DCC avec une carte Kuman UNO.
J'ai réalisé le cablage de la carte selon le schéma de l'article, cependant lorsque je connecte le +5V de la carte L9110S au 5V de la carte  Uno, les LED de cette dernière s'estompent au bout d'un moment, puis s'éteignent. Quel peut-être le problème?
Si quelqu'un peut m'apporter une solution, je l'en remercie d'avance.

Nota: les téléversements de "Blink" et de "DCCpp_uno" se sont réalisés sans message d'erreur.

Cordialement.jp33

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 553
  • HO avec DCC++
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #28 le: avril 05, 2021, 01:49:21 pm »
Quel équipement pour la mesure du courant ? MAX471 ?

En principe, quand les LEDs s'éteignent, c'est qu'un court jus est détecté mais c'est une coupure franche, pas en s'estompant.

Jeje_12_34

  • Jr. Member
  • **
  • Messages: 85
  • Double ovale N
    • Voir le profil
Re : Une station DCC complète, polyvalente et économique avec JMRI
« Réponse #29 le: avril 05, 2021, 08:03:13 pm »
Bonsoir JP33,

Avez vous résolu le problème que vous avez  signalé dans cette discussion ?

https://forum.locoduino.org/index.php?topic=1191.0

Merci par avance de votre retour .
Le néophyte de service !
Adhérent AFAN