Auteur Sujet: DccToolkit / SystemToolkit  (Lu 38066 fois)

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #15 le: mars 28, 2021, 04:26:17 pm »
Quand il affiche OK, la valeur lue est la bonne ?
Tu peux faire un test avec des roues nettoyées pour voir si ça change significativement le résultat ?
Sébastien.
La perfection est un chemin, non un but...

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #16 le: mars 28, 2021, 04:54:44 pm »
Je viens de faire un test avec la loco remontée : jusqu'à maintenant j'utilisait une liaison filaire directe au décodeur pour éviter les incertitudes liées au contact roues / rail pour la mise au point.

Les roues étant relativement encrassées et sur un vieux rail jouef décapé, j'obtiens ça :
CV 1 = 0 : Failed to read !
CV 2 = 0 : OK
CV 3 = 20 : OK
CV 4 = 20 : OK
CV 5 = 0 : OK
CV 6 = 144 : OK
CV 7 = 0 : Failed to read !
CV 8 = 134 : OK
CV 9 = 0 : OK
CV 10 = 88 : OK
CV 11 = 0 : OK
CV 12 = 0 : OK
CV 13 = 0 : Failed to read !
CV 14 = 255 : OK
CV 15 = 0 : OK
CV 16 = 1 : OK
CV 17 = 205 : OK
CV 18 = 5 : OK
CV 19 = 0 : OK
CV 20 = 0 : OK
CV 21 = 0 : OK
CV 22 = 0 : OK
CV 23 = 0 : OK
CV 24 = 0 : Failed to read !
CV 25 = 0 : Failed to read !

Je nettoie les roues et je refais un test...
Sébastien.
La perfection est un chemin, non un but...

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #17 le: mars 28, 2021, 05:15:01 pm »
Apres nettoyage des roues tout est OK :

CV 1 = 3 : OK
CV 2 = 0 : OK
CV 3 = 20 : OK
CV 4 = 20 : OK
CV 5 = 0 : OK
CV 6 = 144 : OK
CV 7 = 4 : OK
CV 8 = 134 : OK
CV 9 = 0 : OK
CV 10 = 88 : OK
CV 11 = 0 : OK
CV 12 = 0 : OK
CV 13 = 255 : OK
CV 14 = 255 : OK
CV 15 = 0 : OK
CV 16 = 1 : OK
CV 17 = 205 : OK
CV 18 = 5 : OK
CV 19 = 0 : OK
CV 20 = 0 : OK
Sébastien.
La perfection est un chemin, non un but...

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #18 le: avril 06, 2021, 07:05:42 pm »
Pour info, j'ai mis au point une nouvelle version (pas encore mise en ligne) qui permet de prendre en charge A LA FOIS l'USB et la connexion IP sur une seule et même configuration (là ou les libs usuelles imposent de choisir l'un ou l'autre).

J'ai encore quelques bricoles à finaliser et je pourrais vous proposer un topo complet pour une Base Station totalement opérationnelle s'appuyant sur ces libs.

A suivre.
Sébastien.
La perfection est un chemin, non un but...

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #19 le: avril 07, 2021, 03:35:13 pm »
Encore quelques nouvelles :

J'ai désormais à ma disposition plusieurs décodeurs avec lesquels j'ai fait des tests, tous concluants :
  • ESU LokPilot 4
  • ZIMO MX630
  • En plus du LaisDCC que j'avais déjà

A chaque fois : fonctionnement normal, lecture et programmation des CV sans problème.
J'ai également pu tester ces décodeurs sur une platine de test ZIMO (celle qui comporte un moteur et une série de leds + un HP) et les résultats sont identiques.

Autre test : utilisation d'un clone chinois à base de LGT8. Mes premiers tests avaient montré que la partie lecture de CV ne marchait pas, bien que la génération de signal DCC soit bonne. Ces tests avaient été réalisés avec le CPU tournant au fond, soit 32Mhz, puisque c'est un des points fort de ce composant.

Il s'avère que c'est aussi cette vitesse qui pose problème : à 16 ou 8 Mhz, tout le code fonctionne et s'adapte à la fréquence d'horloge.

En revanche, à 32 Mhz, la lecture des entrées analogiques retourne des valeurs incohérentes et la détection d'ACK ne fonctionne plus.

D'autres personnes ont aussi des problèmes avec cette partie du composant à cette vitesse, j'ai trouvé quelques sujets sur le NET, sans solution à ce jour.

Quand on y regarde de près, la spécification indique qu'on dispose de sampler à haute vitesse capables de tourner avec une horloge allant entre 300 Khz et 3Mhz. Cette horloge "ADC" est dérivée de l'horloge du CPU par un diviseur.
A 8 Mhz, l'horloge est divisée par 64 pour obtenir 125 Khz
A 16 Mhz, l'horloge est divisée par 128 et donne à nouveau 125 Khz
A 32 Mhz par contre, le diviseur ne peut pas augmenter car 128 est son maximum. Du coup l'horloge des convertisseurs analogiques passe de 125 à 250 Khz, et là plus moyen d'avoir une lecture fiable.

On est pourtant loin des 3Mhz indiqué dans la spec, et meme en deça des 300 Khz donnés comme minimum. Il semblerait que la conception du composant chinois ne suive pas la théorie de la datasheet...et je n'ai trouvé nulle-part d'explication et/ou de solution.

Donc sur ce type de composant, il faut garder le 16 Mhz pour que ça tourne correctement, ce qui fait perdre une partie des avantages par rapport à un Arduino normal. Reste d'autres points forts comme la flash de 48 Ko dont une partie tiens lieu d'EEPROM de taille paramétrable, ce qui permet de repousser à la fois le probleme de taille de l'EEPROM et de nombre limité d'écriture de celle-ci.
Sébastien.
La perfection est un chemin, non un but...

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3037
  • 100% Arduino et N
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #20 le: avril 07, 2021, 06:58:22 pm »
Belle étude et tour de la question interessant.

Le fait que la bibliothèque soit en deux morceaux m'a posé des problèmes de compilation vu que j'ai plus de 100-120 bibliothèques installées : je vais refaire la manip et sortir l'erreur
Cordialement,
Dominique

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #21 le: avril 07, 2021, 07:30:17 pm »
Oui avec l'IDE c'est pénible.
Un autre avantage d'utiliser par exemple un truc comme Sloeber : les bibliothèques sont gérées projet par projet et chaque projet est étanche, ce qui fait qu'on a pas de soucis de collision. ;)
Sébastien.
La perfection est un chemin, non un but...

kortex77

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #22 le: mai 04, 2021, 06:20:11 pm »
Bonjour,
je suis en train de tester vos librairies. Je dispose d'un arduino méga, d'une carte L9110s et d'un ACS712.

Qu'entendez-vous exactement par
Citer
5 / Si votre Arduino n'est pas alimenté en 5V il faut adapter aussi sur cette ligne le second paramètre (5000) qui donne la tension d'alimentation VCC en millivolts.

L'arduino est alimenté par le port usb de l'ordinateur, je dois donc laisser 5000. Et si je connect une alimentation de 9 volts à l'arduino, je dois mettre 9000, c'est bien cela ?

En utilisant  driver.setAckThresholdCurrent(40), j'obtiens une lecture de tous les CV. Avec 60 j'ai des échecs.
Par contre j'obtiens des chiffres différents lors de la lecture des CV. Par exemple CV1 une fois à 45, puis à 82, puis à 223, etc.

Auriez-vous une idée ?

Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #23 le: mai 04, 2021, 06:36:12 pm »
L'ACS 712 fourni un lecture du courant centrée sur VCC / 2 (c'est un capteur à effet hall)

De ce fait, effectivement en USB il est alimenté en 5V et il faut l'indiquer lorsqu'on le paramètre avec la valeur en millivolts, soit 5000.

Si vous passez ensuite sur une alimentation du capteur sur 9V, vous devrez effectivement changer la valeur à 9000.

Si cette valeur est mauvaise, la lecture de courant est erronée dans tous les cas.

Le seuil de détection permet ensuite d'ajuster le niveau de courant à mesurer. Pour considérer qu'on est en présence d'un ACK valide sur la ligne. Normalement ce seuil doit etre à 60 si l'on suit la norme. Mais cela dépend aussi de la charge connectée (loco sur la voie de programmation). Idéalement, plus le seuil est haut, mieux c'est....mais il faut pour cela obtenir des valeurs cohérentes en tout point.

Le probleme qui persiste est que la technique de lecture d'un CV est non déterministe : elle suppose que la station de programmation reconnaisse correctement le pic ACK, sans quoi la réponse lue est perturbée.

Pour lire un CV, on doit lire chaque bit 1 par 1 et détecter à chaque fois la présence ou l'absence du ACK....donc on a un signal "moyennement fiable" dans un cas, et pas de signal du tout dans l'autre.

Si la lecture d'ACK est mauvaise, on aura une mauvaise perception des 8 bits qui forment la valeur du CV....et à la fin, quand on fera une vérification de la valeur déduite complète, on fera la meme erreur de lecture de l'ACK et on pourra considérer comme VALIDE une valeur lue qui ne l'est pas.

Donc la seule bonne information provient de votre propre connaissance du décodeur (doc constructeur).
Si avec un jeu de réglages vous obtenez à chaque fois les memes valeurs, et que celles-ci sont bonnes, disons pour les 30 premiers CV, alors vous pouvez considérer que ça marche.

Dans ces 30 CVs vous devez retrouver des valeurs "pivots" dans les CV 1, 7 et 8, 29, etc... : adresse primaire, ID du fabricant du décodeur et version du décodeur...

Quelle version du 712 utilisez-vous ? 5, 10, 20 A ? La valeur lue n'est pas la meme pour tous les modeles....
Sébastien.
La perfection est un chemin, non un but...

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3037
  • 100% Arduino et N
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #24 le: mai 04, 2021, 07:10:45 pm »
Il serait surement interesant d'essayer les circuits à base de INA169 dont on peut régler la gamme de mesure et le gain par le jeu des résistances à placer soi-même sur ce breakout.
Voir http://forum.locoduino.org/index.php?topic=943.msg9794#msg9794
Chez Sparfun : https://learn.sparkfun.com/tutorials/ina169-breakout-board-hookup-guide/all
Chez Adafruit : https://www.adafruit.com/product/1164

On commence à en trouver à des prix interessants sur eBay:
https://www.ebay.fr/itm/401309797879
https://www.ebay.fr/itm/174381947027
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : DccToolkit / SystemToolkit
« Réponse #25 le: mai 04, 2021, 07:37:57 pm »
On commence à en trouver à des prix intéressants sur eBay:
https://www.ebay.fr/itm/174381947027

Si on en croit ce qu'on devine sur les photos (10K et R100), le module GT-169 pourrait bien avoir le rapport 1V/A qui est le standard de DCC++ et donc être utilisé tel quel dans la station DCC complète, polyvalente et économique avec JMRI.

https://www.locoduino.org/spip.php?article253

Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #26 le: mai 05, 2021, 10:47:33 am »
Je viens de mettre en ligne une nouvelle version de la lib SystemToolkit (premier message de ce fil) qui comporte les modifications suivantes :

  • Intégration des fréquences d'horloge 8Mhz, 20 Mhz et 32 Mhz dans certains traitements timers
  • Modification de l'ACS712CurrentSensor pour prendre en charge le modèle 5A ou autres déclinaisons

La classes ACS712CurrentSensor appliquait jusque là une échelle de 100 mV / A sur la lecture de courant, ce qui correspond aux modèles 10 et 20A. Le modèle 5A ayant une résolution différente (185 mV / A il me semble), il est désormais possible de préciser la résolution dans le 3ème paramètre du constructeur.

Par défaut, le constructeur valorise VCC = 5000 mV et résolution = 100 mV, ce qui correspond aux cas les plus courant pour un ACS 10 ou 20 A. Ainsi l'instanciation sous les formes suivante produit un objet identique :

new ACS712CurrentSensor(analogPinNumber);
new ACS712CurrentSensor(analogPinNumber, 5000);
new ACS712CurrentSensor(analogPinNumber,5000,100);

Si l'on utilise un ACS712 de 5A, il faudra préciser les 3 paramètres. Exemple pour une alimentation VCC = 5 Volts du composant :

new ACS712CurrentSensor(analogPinNumber,5000,185);
Sébastien.
La perfection est un chemin, non un but...

kortex77

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Re : DccToolkit / SystemToolkit
« Réponse #27 le: mai 05, 2021, 12:11:49 pm »
Merci pour votre réponse détaillée.

Mon ACS712 est un 5A. Je vais donc tester la dernière mise à jour  :)

L'ACS 712 fourni un lecture du courant centrée sur VCC / 2 (c'est un capteur à effet hall)

De ce fait, effectivement en USB il est alimenté en 5V et il faut l'indiquer lorsqu'on le paramètre avec la valeur en millivolts, soit 5000.

Si vous passez ensuite sur une alimentation du capteur sur 9V, vous devrez effectivement changer la valeur à 9000.

Si cette valeur est mauvaise, la lecture de courant est erronée dans tous les cas.

Le seuil de détection permet ensuite d'ajuster le niveau de courant à mesurer. Pour considérer qu'on est en présence d'un ACK valide sur la ligne. Normalement ce seuil doit etre à 60 si l'on suit la norme. Mais cela dépend aussi de la charge connectée (loco sur la voie de programmation). Idéalement, plus le seuil est haut, mieux c'est....mais il faut pour cela obtenir des valeurs cohérentes en tout point.

Le probleme qui persiste est que la technique de lecture d'un CV est non déterministe : elle suppose que la station de programmation reconnaisse correctement le pic ACK, sans quoi la réponse lue est perturbée.

Pour lire un CV, on doit lire chaque bit 1 par 1 et détecter à chaque fois la présence ou l'absence du ACK....donc on a un signal "moyennement fiable" dans un cas, et pas de signal du tout dans l'autre.

Si la lecture d'ACK est mauvaise, on aura une mauvaise perception des 8 bits qui forment la valeur du CV....et à la fin, quand on fera une vérification de la valeur déduite complète, on fera la meme erreur de lecture de l'ACK et on pourra considérer comme VALIDE une valeur lue qui ne l'est pas.

Donc la seule bonne information provient de votre propre connaissance du décodeur (doc constructeur).
Si avec un jeu de réglages vous obtenez à chaque fois les memes valeurs, et que celles-ci sont bonnes, disons pour les 30 premiers CV, alors vous pouvez considérer que ça marche.

Dans ces 30 CVs vous devez retrouver des valeurs "pivots" dans les CV 1, 7 et 8, 29, etc... : adresse primaire, ID du fabricant du décodeur et version du décodeur...

Quelle version du 712 utilisez-vous ? 5, 10, 20 A ? La valeur lue n'est pas la meme pour tous les modeles....

kortex77

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #28 le: mai 07, 2021, 11:38:17 pm »
Les essais ne sont pas concluants. J'obtiens toujours des valeurs différentes lors des lectures. J'ai essayé de déplacer l'ACS712 en le mettant entre la carte L9110S et la motrice (avant il était entre l'alimentation et la L9110s). Cela ne change rien.
Les câbles sont branchés directement a la motrice (ne passe pas par les roues). Il s'agit d'une JOUEF 67001 moteur 5 pôles avec des aimants neufs.
J'ai fait des tests avec un contrôleur LAISDcc 860021 (acheté sur ebay) ainsi que Lokpilot v5 DCC.
Petite précision : lors du test avec le LAISDcc le moteur se met en route alors qu'il ne tourne pas avec le lokpilot. D’ailleurs est-ce normal ?
Ces contrôleurs n'ont jamais été reprogrammés.

Une idée ?

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : DccToolkit / SystemToolkit
« Réponse #29 le: mai 08, 2021, 10:00:25 am »
Dans tous les cas si le montage est correcte et cohérent avec la configuration du code, vous devez voir bouger la loco (le moteur doit s'activer) pour générer les ACK.

Si ce n'est pas le cas c'est que le problème est avant : d'une façon ou d'une autre le décodeur ne reçoit pas les commandes.

Ici j'ai testé avec succès des décodeurs LAISDcc, LokPilot ESU et Zimo, avec une alimentation de 12v soit via une carte L9110 soit via la carte "all in one" proposée sur Locoduino, et avec des ACS712 de 5, 10 et 20 A, et autres Max / LM de mesure...mais bon : ce code n'a pas encore non plus un vécu énorme...

Lorsque vous envoyez une commande soit de fonction, soit de pilotage moteur, le décodeur réagit ?
Sébastien.
La perfection est un chemin, non un but...