Salut Dominique,
Dans la série "Denis barré", je me pose quelques questions :
1°) Tu as trouvé une idée géniale pour lire le CV1 (et d'autres pour les adresses longues). OK. Bravo !
Par ailleurs, ne serait-ce que pour la détection d'occupation, le réseau est découpé en cantons.
Cantons sur lequel un train seul fonctionne (sauf cas particuliers). C'est même un peu le but : un seul train par canton.
J'en déduis qu'à chaque fois qu'un train s'arrête (en gare, par exemple), tu peux faire ta mesure sur ce canton là, qui ne contient qu'une seule loco.
Et, donc, savoir quel train est sur ce canton.
La mesure que tu fais sur un seul train pour ta navette (quasi isolée du réseau) peut donc être étendue à d'autres cantons et plusieurs fois, pour re-caler le gestionnaire de réseau qui, normalement, sait quel train est sur quel canton.
2°) Si je lis bien ton post du 31/08 :
Pour ce faire, j’ai ajouté un enregistrement des valeurs de mesure de courant dans toutes les phases de ReadCV_Main (PacketRegister.cpp) et un affichage à la fin de la fonction. Comme cela, ça ne perturbe pas trop les timings.
Je rappelle que la fonction ReadCV envoie 8 fois une commande de lecture pour lire les 8 bits du CV, puis une 9ème commande pour obtenir un bit de vérification.
Aussitôt après chaque commande, le sketch se met en lecture du courant dans une boucle de 500 lectures (ACK_SAMPLE_COUNT qui doit correspondre grosso modo à au moins 6 millisecondes, je n'ai pas mesuré), au cours de laquelle il recherche une valeur qui dépasse le seuil égal au courant de base + 30 (ACK_SAMPLE_THRESHOLD). Si ce seuil est dépassé c’est un bit 1 sinon 0.
Evidemment, il faut UNE SEULE LOCO sur la voie principale et il ne faut pas que la loco roule pour faire cette mesure, moteur arrêté, car c'est en activant le moteur 9 fois pendant 6 ms que le décodeur va "passer son message".
Ces valeurs sont déduites de la norme NMRA http://www.nmra.org/sites/default/files/s-9.2.3_2012_07.pdf
Où il est écrit : Basic acknowledgment is defined by the Digital Decoder providing an increased load (positive-delta) on the programming track of at least 60 mA for 6 ms +/-1 ms. It is permissible to provide this increased load by applying power to the motor or other similar device controlled by the Digital Decoder.
La valeur du seuil (30 dans le soft) peut ou non correspondre à ces 60mA de delta consommation, c’est un truc à étalonner si ça ne marche pas du premier coup. De plus il est évident que c'est différent en N et en HO !?!
Ton système est basé sur une mesure relative d'une tension en environnement fortement bruité.
Et donc fonctionne d'autant mieux que la tension est faible (et donc au mieux à l'arrêt).
Mais comme tu as une alimentation unique pour le réseau, on peut se permettre de la compliquer un peu.
J'ai des souvenirs (théoriques, malheureusement) "d'extraction d'un signal noyé dans du bruit". Cela doit être possible de nettoyer ton signal et améliorer la précision de la mesure, via l'électronique ?
3°) Encore plus fou : on coupe le courant d'une loco en coupant l'alimentation de ce canton.
On mesure (54 ms) et on remet le courant
Amicalement