Auteur Sujet: Retrosignalisation avec Arduino  (Lu 23128 fois)

pierrepv

  • Jr. Member
  • **
  • Messages: 50
    • Voir le profil
Retrosignalisation avec Arduino
« le: septembre 27, 2018, 07:45:32 pm »
Bonsoir,

J’ai réalisé la retosignalisation S88 telle que décrite dans le projet Locoduino.

J’ai ainsi 40 cantons retrosignalés qui fonctionnent.

Mon problème est celui des innombrables détection fantômes.
Des qu’une locomotive roule, de nombreux cantons clignotent sur RRTC.

J’utilise un câble RJ45 entre l’Intellibox et l’Arduino Mega2560 grâce à un adaptateur.
J’ai réduit au maximum les fils qui achemine le 5v vers les cartes de détection
et je les ai torsadés.
J’ai ajouté un condensateur de 1microF entre l’entrée Arduino et la masse.

Rien n’y fait

Auriez vous une idée car en l’etat ce n’est pas utilisable.

Cordialement
R�seau en N - 70m de voie - R�trosignalisation sur Arduino Mega2560 - RRTC Siver sous Windows10

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #1 le: septembre 27, 2018, 10:26:53 pm »
Bonsoir,
je ne sais pas ce que vous avez utilisé comme programme S88 (un lien vers la page Locoduino serait utile)
mais j'ai le même problème avec le programme de Rudy Boer que j'ai en partie résolu avec un debounce logiciel sur les entrées (cf pg joint)
Cordialement

pierrepv

  • Jr. Member
  • **
  • Messages: 50
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #2 le: septembre 28, 2018, 09:45:10 am »
Bonjour,

Merci de cette réponse.

Je connais le site de Rudy Boher, je crois d’ailleurs que Lociduino s’en est inspiré .
Le lien du projet Locoduino que j’ai utilisé est le suivant :

http://forum.locoduino.org/index.php?topic=612.0

J’ai utilisé le programme pour le Mega2560

L’idee d’intervenir par programme sur les entrées me paraît excellente

Je vais regarder ton programme dès que ma connexion Internet sera revenue.
Je suis en panne chez Free, et je n’ai plus que mon téléphone pour communiquer

Cordialement
R�seau en N - 70m de voie - R�trosignalisation sur Arduino Mega2560 - RRTC Siver sous Windows10

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : Retrosignalisation avec Arduino
« Réponse #3 le: septembre 28, 2018, 10:07:45 am »
Je suis en panne chez Free ...

Bienvenue au club !

PS : le lien est celui de ce fil  :)
« Modifié: septembre 28, 2018, 10:09:33 am par msport »
Cordialement

pierrepv

  • Jr. Member
  • **
  • Messages: 50
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #4 le: octobre 10, 2018, 06:44:19 pm »
   Bonjour MSPORT,

J'ai chargé le programme que tu as joint dans ra réponse et je l'ai adapté à mon programme qui tourne sur un Arduino Méga2560.

Le programme de Locoduino est le même que celui de Rudy Boher.

Je n'ai pas une amélioration flagrante, mais je pense que celà vient peut-être de mon adaptation qui n'est pas parfaite.
Pourrais-tu m'expliquer la philosophie de la partie "debounce", que j'ai un peu de mal à comprendre.

Je vois qu'il y a une mise en tableau des entrées, mais je ne comprends pas ce qui empêche le "rebond" sur les entrées.

C'est toujours pareil, quand on a pas développé soi-même un programme, c'est un peu compliqué d'en comprendre la philosophie.

Peux-tu me dire également quel pourcentage d'amélioration je peux espérer.

Merci d'avance pour ton travail.

    Cordialement
R�seau en N - 70m de voie - R�trosignalisation sur Arduino Mega2560 - RRTC Siver sous Windows10

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #5 le: octobre 11, 2018, 06:26:19 pm »
Bonjour,

Le principe est le suivant :
avec en entrée pinState[ i] , en sortie pinStateDeb[ i]

on fixe un délai pendant lequel on considère qu'il peut y avoir des rebonds : debounceDelay (50 ms)
Tant que l'état du pin n'a pas changé on met à jour lastDebounceTime avec millis()
On compare via read - pinState[ i] - avec l'état conservé - pinStateDeb[ i]
Quand il change on attend la fin de debounceDelay (50 ms) pour modifier le pinStateDeb[ i] qui sera utilisé pour envoyer les bits au S88.
et on met à jour lastDebounceTime avec millis()

En résumé si au bout de debounceDelay on a à nouveau l'état du début, il ne se passe rien. Autrement dit, si il y a un parasite de moins de 50 ms, il n'est pas vu.
Par contre, si il y a des parasites qui durent plus de 50 ms, ils peuvent être interprétés comme un changement d'état. On peut augmenter les 50 ms.

Mon problème qui est un mélange des entrées reçues au S88 (des entrées sont prises pour d'autres) me semble maintenant plutôt un problème de timing à la lecture (avec un BaseStation modifié pour le S88) que de parasites. Avec le debounce, je suis passé du n'importe quoi à une permutation des entrées reproductive mais inexploitable quand même. Quand j'aurais du temps je vais me lancer dans les montages de Paco pour décoder le S88.

Cordialement
« Modifié: octobre 11, 2018, 10:53:59 pm par msport »
Cordialement

pierrepv

  • Jr. Member
  • **
  • Messages: 50
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #6 le: octobre 14, 2018, 01:09:54 pm »
   Bonjour,

Ca y est j'ai trouvé comment adapter ton programme au mien, et ton explication m'a permis de bien comprendre son fonctionnement.

Ton programme est très efficace, et j'ai de bien meilleurs résultats, même si certains parasites subsistent encore.

Je pense que ta solution est vraiment la meilleure:
- on laisse les parasites circuler sur les fils.
- et on les piège à l'arrivée.

Pour aller plus loin, j'ai également envie de tester à l'occasion le projet LOCODUINO:  " Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation"

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

Le bus CAN a l'air très performant.

Je finalise l'adaptation de ton programme à mes 40 cantons et je te tiens au courant.

    Cordialement

R�seau en N - 70m de voie - R�trosignalisation sur Arduino Mega2560 - RRTC Siver sous Windows10

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #7 le: octobre 14, 2018, 02:57:13 pm »
Très heureux que cela puisse servir.
Ne souhaitant pas investir dans une ECOS ou similaire, je regarde(rai) aussi les solutions DIY comme JRMI pour exploiter le S88. Une première tentative avec CDM-Rail bute sur cette capture du S88.
C'est clair que le CAN est de loin plus robuste que l'I2C.
Cordialement

pierrepv

  • Jr. Member
  • **
  • Messages: 50
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #8 le: octobre 28, 2018, 01:55:49 pm »
   Bonjour,

Ca y est j'ai adapté ta modification "antiparasites" à mon programme et je peut maintenant gérer 64 cantons avec un Arduino Méga 2560.

J'ai fait un test comparatif avant "sans antiparasites" et après "avec antiparasites".

Dans la version "sans antiparasites", le logiciel RRTC m'envoyait 137 messages d'erreur pour 2 tours de circuits d'une locomotive. Ces erreurs perturbaient le logiciel à tel point qu'il ne savait plus sur quel canton se trouvait la locomotive.

Dans la version "avec antiparasites", le logiciel RRTC ne m'envoie plus que 9 messages d'erreur. Ces messages ne sont d'ailleurs pas perturbant.

Il est donc clair que ta modification est décisive dans ce programme de rétrosignalisation.
J'ai passé le "debounce delay" de 50ms à 700ms.

Je joins le programme modifié pour ceux que ça intéresserait, et te remercie encore.

   Cordialement
R�seau en N - 70m de voie - R�trosignalisation sur Arduino Mega2560 - RRTC Siver sous Windows10

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #9 le: octobre 28, 2018, 02:53:24 pm »
Merci du retour d'expérimentation.
Effectivement, je n'ai pas été jusqu'au bout en ne testant pas l'augmentation du délai ... Et de passer à un Mega.
De quoi faire pour les longues soirées d'hiver ...
Cordialement

pierrepv

  • Jr. Member
  • **
  • Messages: 50
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #10 le: août 23, 2019, 06:15:55 pm »
   Bonjour,

Pour mon information personnelle, j'ai testé la rétro-signalisation en protocole Loconet, toujours avec Arduino, mais selon les schémas du site ArCoMoRa.

La différence avec le S88 est flagrante, je n'ai plus aucune détection fantômes, même avec une voie sale et donc de nombreux parasites.

Je suis relié sur une Intellibox1 elle-même connectée avec RRTC. Mes cantons sur RRTC ne clignotent plus, le fonctionnement est vraiment parfait.

Cordialement
R�seau en N - 70m de voie - R�trosignalisation sur Arduino Mega2560 - RRTC Siver sous Windows10

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Retrosignalisation avec Arduino
« Réponse #11 le: août 30, 2019, 03:25:37 pm »
Bonjour,
merci pour le retour
cela ne nous dit pas quel était le problème du s88, mais nous renseigne sur la qualité des modules ArCoMoRa