LOCODUINO

Parlons Arduino => Débuter => Discussion démarrée par: tierra calientes le mai 13, 2017, 03:51:41 pm

Titre: Rétrosignalisation
Posté par: tierra calientes le mai 13, 2017, 03:51:41 pm
Bonjour, je suis nouveau dans votre forum et j'aimerais me lancer dans la construction de la rétrosignalisation avec Locoduino.
J'ai regardé chez Conrad Belgique et je trouve des ponts redresseurs, des optocoupleurs mais je vois plusieurs sortes de "arduino méga" avec des prix du simple au double.
Mon but est de rétrosignaler 40 cantons est-il préférable de choisir : 3 Arduino uno/nano ou un Arduino méga ? Si c'est un méga lequel choisir ? J'ai une centrale Twin centre de Fleischmann.
Bonne journée.
Titre: Re : Rétrosignalisation
Posté par: PhB22 le mai 13, 2017, 07:00:10 pm
Bonjour Serge,
Pour ma part j'utilise des MEGA 2560 pour le nombre de broches.

Pour ma gare cachée un MEGA teste et commande l'automatisme pour 10 voies de garage : aiguillages + rétro signalisation de présence + commande marche/arrêt + commande d'arret du canton amont + teste si canton aval libre. Et il ne me reste pas beaucoup de broches libres  ;)

Le prix? dans les 12 euros et port gratuit (sur "Ah Ma Zone!"). Bien sûr il y a le délais (+- 3 semaines). Jamais eu de problème. https://www.amazon.fr/SODIAL-ATmega2560-Microcontroleur-Arduino-Module/dp/B00OPO44UE/ref=sr_1_4?ie=UTF8&qid=1494694432&sr=8-4&keywords=arduino+mega

Pour 40 cantons j'irais vers deux ou trois MEGA.

De toute manière un MEGA peut envoyer un signal de commande (+5v ou 0v, c'est suivant ton choix) à un autre du moment que toutes les masses d'alimentation (moins) sont reliées.
J'ai un UNO qui commande des animations et qui commande également un NANO qui pilote une carte de lecture mp3. Choix imposé car je n'avais pas assez de broches de sortie sur le UNO. Ce chainage peut se faire entre tous les formats d'Arduino.
Ca permet d'ailleurs de lancer un autre programme indépendant.

Les broches "analogiques" peuvent également être utilisées en "numérique". Ca en fait 16 de plus si je ne me trompe pas sur un MEGA.
Titre: Re : Rétrosignalisation
Posté par: Thierry le mai 13, 2017, 08:34:14 pm
Bonjour.

Joli projet. Je voulais juste ajouter la possibilité d'utiliser des multiplicateurs de ports comme le circuit 74HC595 qui fournit huit sorties pour trois fils, et peut être chaîné plusieurs fois avec toujours les mêmes trois fils pour l'ensemble... Je n'ai pas trouvé de limite physique au nombre de puces que l'on peut chaîner, mais je suppose qu'au bout d'une certaine quantité, parvenir a faire transiter l'information jusqu'au bout de la chaîne va finir par prendre trop de temps... Dans le même ordre d'idée, le TLC5940 permet lui de multiplier (dans une moindre mesure) le nombre de sorties PWM, avec une précision bien plus importante que le PWM des Arduino.
Titre: Re : Rétrosignalisation
Posté par: Pierre59 le mai 14, 2017, 11:23:30 am
Bonjour

Pour multiplier les ports, en sortie, j'utilise des 74HC(T)259 qui fournissent un registre de 8 bits adressables, il faut certes plus de fils pour les commander (6 fils pour un), mais on peut les mettre en parallèle, un fil de plus pour en commander deux, deux fils de plus en commander trois ...

On peut aussi utiliser un démultiplexeur (de 3 vers 8, ou 4 vers 16) pour multiplier les ports sans trop multipler les fils, par exemple avec un démultiplexeur de 3 vers 8 on peut avoir 64 ports (8x8) avec huit fils (si je ne trompe pas).

On peut aussi cascader les démultiplexeurs, par exemple avec deux niveau de démultiplexeurs on peut aller jusqu'à 512 (8x8x8) ports.

Comme les 74HC(T)259 ne sont pas chaînés le temps d'accès reste à peu près constant et beaucoup plus rapide qu'avec des 74HC595, on peut aussi plus facilement les éloigner les uns des autres si besoin, montage en étoile au lieu d'un montage en bus pour les 74HC595.

Cerise sur le gâteau, il existe des versions avec sorties amplifiées , TPIC6B259, pouvant sortir jusqu'à 150 mA par port. je pense que ces versions existent aussi pour les 74HC595.

Pierre
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 14, 2017, 11:18:10 pm
Dans mon cas j'ai opté pour les 74HC595 : j'en ai 10 et il y a seulement 4 fils de commande.
Pour une meilleure rapidité j'ai découpé cela en 2 bancs de 5 circuits (maxi 40 sorties chacun).
Les performances sont très honnêtes : c'est instantané  :)
J'ai évidemment mis des Leds faible consommation.

(http://www.locoduino.org/IMG/jpg/reseau_2db.021p.jpg)

Sur cette image, on voit que j'ai testé la carte 74HC595 avec un simple Nano !

Cela fait un beau tableau :

(http://www.locoduino.org/IMG/jpg/montco-petit.jpg)
Titre: Re : Rétrosignalisation
Posté par: DDEFF le mai 15, 2017, 10:43:31 am
Bonjour,

Je vais amener une note dissonante dans ce concert de louanges à la centralisation.

Avec 40 cantons, le réseau doit être de belle taille.
Si on est logique, on va aussi avoir de nombreux trains, source de parasites "ultime" qui vont prendre un malin plaisir à se propager dans tous ces fils qui parcourent le dessous du réseau.
Tout le monde a, sur son réseau, une zone qu'on connait bien et qui ne fonctionne pas toujours comme on voudrait.
Êtes vous sûrs que ça ne vient pas des parasites ??

Je suis résolument anti-MEGA, justement parce qu'il a plein d'entrées !
Quant aux multiplicateurs, je préfère ne pas évoquer le sujet.

Je sais bien que les fabricants de DCC souhaitent vous vendre le maximum de leurs décodeurs et que c'est (aussi) une raison pour utiliser un bus au lieu de fils qui se baladent sous le réseau. Mais il y a, quand même, au départ, une volonté de limiter les parasites.

Je suis persuadé que la bonne solution est le bus CAN, avec de petits modules répartis sous le réseau, avec des fils courts entre le module et l'appareil à connecter.

Je note aussi que LCC (norme d'avenir) utilise aussi le bus CAN, avec un câble Ethernet entre des modules.
Titre: Re : Rétrosignalisation
Posté par: tierra calientes le mai 15, 2017, 04:33:44 pm
Bonjour, la solution "Bus Can" me paraît intéressante mais comment le système reconnaît-il qu'une locos est dans tel ou tel canton ? Faut-il un système de détection pont de diodes et opto-coupleur qui communiquent avec les autres composants MCP 2515 et 2551 ?
Titre: Re : Rétrosignalisation
Posté par: Pierre59 le mai 15, 2017, 06:24:32 pm
Bonjour

J'utilise le schéma ci-dessous pour les détections de présence dans les zones par consommation de courant.

On retrouve les 4 diodes classiques qui créent une petite différence de potentiel qui sert à "allumer " l'une ou l'autre des deux diodes "tête bêche" de l'optocoupleur, à travers un résistance de limitation de 22 ohms.

Le transistor de sortie de l'optocoupleur est connecté au 5 volts par une résistance R, sur laquelle on connecte directement une entrée de l'Arduino.

La sensibilité dépend de R et de l'optocoupleur, plus la résistance est grande plus grande est la sensibilité. On arrive à des sensibilités de 1mA (courant traversant les diodes d'entrée).

Le choix d'un optocoupleur avec diodes tête bêche, permet d'utiliser ce schéma aussi bien en analogique (dans les deux sens du train) qu'en numérique. L'optocoupleur TLP620 est un peu obsolète, il existe pas mal de remplaçants possibles.

Le signal que reçoit l'Arduino n'est pas très propre surtout en numérique, ce qui nécessite de faire un "filtrage" numérique sur l'état de l'entrée, une temporisation (à la libération de la zone) peut être faite aussi par l'Arduino (quelques secondes) elle améliore bien le fonctionnement et pallie les mauvaises prises de courant des locos.

Ce schéma peut être utilisé avec des essieux graphités en réglant bien la sensibilité. On pourrait ajouter des condensateurs de filtrage, mais le "filtrage" numérique proposé ci-dessus est tout aussi efficace.

Pierre
Titre: Re : Rétrosignalisation
Posté par: tierra calientes le mai 15, 2017, 06:40:15 pm
Bon je crois que je vais me lancer. J'ai regardé sur le net pour un kit de démarrage mais il y en a tellement que je ne sais lequel choisir.
Il en existe sans manuel initiation mais alors où trouver le "comment on fait" ?
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 16, 2017, 01:16:21 pm
Bravo si vous vous lancez  :D

Mais de quel kit de démarrage et quel manuel s'agit-il ?
Un kit de train ou un kit Arduino ?

Si c'est un kit Arduino, tout est sur www.locoduino.org (http://www.locoduino.org)

Amicalement
Dominique
Titre: Re : Rétrosignalisation
Posté par: CATPLUS le mai 19, 2017, 12:34:30 pm
Bonjour à tous

Perso j'utilise le montage suivant (à diodes) depuis des lustres

http://teamtrack.soforums.com/t688-DETECTEUR-PAR-CELLULE.htm?start=15

Pour plus de faciliter je te conseille d'aller voir le post de mon ami Fabrice

http://www.modelrailway-online.com/dcc-detection-par-diode/

Il l'a modifié. De plus tu trouveras le CI et un programme pour Arduino

Cordialement
Marcel

Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 20, 2017, 10:24:06 am
Bonjour,

C'est exactement le même circuit que j'utilise:

(http://forum.locoduino.org/index.php?action=dlattach;topic=329.0;attach=870;image)

J'ai réalisé un CI qui en contient 2 sur une surface de 5x5 cm.
Je peux transmettre les fichiers Gerber pour permettre une production chez ElectroDragon ou en céder quelques uns qui me restent
J'ai mis des borniers à vis pour faciliter le cablage "sous le circuit".

Les optocoupleurs sont doubles car j'ai voulu pouvoir exploiter les détections à la fois par un TCO dédié et aussi par un gestionnaire donc potentiellement par 2 organes différents.

Ce détecteur ne marche qu'en DCC. Pierre59 a fait une détecteur qui marche aussi en analogique.


Cordialement
Dominique
Titre: Re : Rétrosignalisation
Posté par: DDEFF le mai 20, 2017, 01:44:33 pm
Plus qu'à mettre un bus CAN... ;)
Un Arduino mini pour 4 zones (pas plus, pour avoir des fils courts) et hop ! :P

Denis
Titre: Re : Rétrosignalisation
Posté par: tierra calientes le mai 20, 2017, 02:33:54 pm
Bonjour, merci à Catplus et Dominique mais comme j'ai 40 CIs à faire et qu'il me reste un petit stock de plaques cuivrées simple face, je me demande si le schéma présenté par Pierre n'est pas suffisant pour travailler avec Arduino. Ou alors le schéma plus simple a peut être des inconvénients ?
Bonne journée.
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 20, 2017, 04:03:55 pm
Le schéma de Pierre est certainement suffisant, mais il faut probablement y adjoindre un filtrage logiciel comme indiqué dans sa réponse.

Bon courage
Titre: Re : Rétrosignalisation
Posté par: DDEFF le mai 20, 2017, 07:23:29 pm
L'idée principale de Pierre59 est qu'il y a deux diodes tête-bêche dans l'optocoupleur.

Ce qui fait que ce système marche dans tous les cas.

Par contre, si on a un optocoupleur avec une seule diode interne, ça ne peut plus marcher qu'avec du courant alternatif (dont le DCC) et mal : il ne marche que la moitié du temps !
Disons que ça n'arrange rien avec les mauvais contacts.

Je propose :
http://www.tme.eu/fr/details/h11aa4x/optocoupleurs-sortie-analogique/isocom/ (http://www.tme.eu/fr/details/h11aa4x/optocoupleurs-sortie-analogique/isocom/)
En en achetant 65, tu n'est plus qu'à 0,24 € pièce.
Note aussi l'adresse du site : TME (énorme choix, prix très bas et fourniture en 2 ou 3 jours maxi)

Le TLP620 existe toujours, même chez TME, mais un peu plus cher.

Solution la moins chère :
http://www.tme.eu/fr/details/ltv844/optocoupleurs-sortie-analogique/liteon/ltv-844/ (http://www.tme.eu/fr/details/ltv844/optocoupleurs-sortie-analogique/liteon/ltv-844/)
Il y a 4 optocoupleurs dans le même boîtier.
Il suffit de faire un circuit imprimé pour 4 zones.

5,20 € d'optocoupleurs pour les 40 zones...  ;D

Tant que tu y est, achète aussi les diodes et les résistances
Et les connecteurs pour tes fils.
Tu as les traditionnels "dominos pour CI"
http://www.tme.eu/fr/details/282834-2/borniers-de-serrage-pcb/te-connectivity/ (http://www.tme.eu/fr/details/282834-2/borniers-de-serrage-pcb/te-connectivity/)

Mais tu as aussi un truc génial parce que facilement démontable :
http://www.tme.eu/fr/details/tbg-5.0-pw-2p/borniers-de-serrage-deconnectables/xinya/xy2500v-b50-2p/ (http://www.tme.eu/fr/details/tbg-5.0-pw-2p/borniers-de-serrage-deconnectables/xinya/xy2500v-b50-2p/)
et
http://www.tme.eu/fr/details/tbw-5.0-k-2p/borniers-de-serrage-deconnectables/xinya/xy2500f-a50-2p/ (http://www.tme.eu/fr/details/tbw-5.0-k-2p/borniers-de-serrage-deconnectables/xinya/xy2500f-a50-2p/)
Bien sûr, c'est un peu plus cher.
Mais quand tu as grillé quelque chose sous le réseau, c'est très facile à démonter. ;D
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 20, 2017, 11:25:47 pm
Denis à raison :
Citer
Par contre, si on a un optocoupleur avec une seule diode interne, ça ne peut plus marcher qu'avec du courant alternatif (dont le DCC) et mal : il ne marche que la moitié du temps !
Disons que ça n'arrange rien avec les mauvais contacts.

Mais pour les mauvais contacts, le condensateur chargé dans le circuit d'entrée à transistor de l'opto-coupleur ajoute une constante de temps qui va les supprimer complètement. Il compense aussi le fait qu'une seule alternance est utile.

Je pense que les 2 types de capteurs se valent, et la comparaison est difficile car il faudrait tester les deux.
Titre: Re : Rétrosignalisation
Posté par: DDEFF le mai 21, 2017, 10:04:08 am
Si on va jusqu'au bout, on peut certainement se passer de condensateur et rattraper le coup par programme.

Souvent, ces circuits ont été inventés avant les Arduinos, à l'époque où on ne jurait que par l'électronique.
Il fallait donc nettoyer électroniquement le signal.
C'est sûrement une bonne idée quand on a un signal complexe à gérer. Un peu de nettoyage ne nuit pas.
Mais pour une détection de présence, on n'a pas plus simple : ON/OFF.

De plus, quitte à acheter des optocoupleurs, autant en acheter des à diodes tête-bêche. ;)
Je pense que le système minimaliste de Pierre59 suffit.

Denis
Titre: Re : Rétrosignalisation
Posté par: Pierre59 le mai 21, 2017, 01:40:08 pm
Bonjour

Voir ci-dessous l'image d'un exemple de réalisation avec le schéma proposé (8 exemplaires), de droite à gauche on trouve :
- un bornier à vis 9 poles (un commun + 8 entrées)
- huit ponts redresseurs (plus pratique que 8 fois 4 diodes)
- huit résistances de limitation
- deux optocoupleurs quadruples (TLP620) sur support
- une barrette SIL avec les 8 résistances "R" (enfichée)
- un multiplexeur (74HC151)
- des condensateurs de filtrage du 5V et du signal de sortie du multiplexeur (éventuel)
- un bornier à vis (alimentation 5V)
- un connecteur RJ9 pour la connection avec l'Arduino (un fil de donnée et trois fils d'adresse)

Le tout monté sur une plaque à bandes. Cela permet d'équiper huit zones en détection de courant. On peut facilement multiplier ces montages pour multiplier les zones, par exemple avec huit montages on obtient 64 zones qui utilisent 8+3=11 pins d'un Arduino.

Pierre
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 21, 2017, 04:24:16 pm
Merci Pierre,

Nous voilà avec une contribution bien illustrée sur les capteurs de présence par consommation.

Un futur article est prévu sur ce sujet, mais sur l'ensemble des capteurs et leurs applications au modélisme ferroviaire.

Merci à Denis d'avoir secoué le cocotier et à Catplus et Tierra Calientes d'avoir posé et alimenté le sujet.

J'espère que ce n'est pas fini  ;D
Amicalement
Dominique
Titre: Re : Rétrosignalisation
Posté par: DDEFF le mai 21, 2017, 08:32:29 pm
J'irais donc plus loin. ;D
Le problème étant que je veux à tout prix raccourcir les fils, je propose l'idée d'un module qui ferait détection + signaux.

Pour une zone, on constate que le meilleur système, le plus sûr, est celui de la SNCF : la détection par consommation de courant**.
C'est ce dont on vient de parler.
Là, toute autre solution ponctuelle est moins bonne (ILS, photomachin ou photobidule, effet Hall, RFID, ...).
On a toutes les peines du monde à gérer le cas des wagons perdus et d'autres problèmes. Il y a toujours un cas qui foire.
Donc, détection par consommation de courant.

Par contre, on aimerait bien avoir aussi une détection que je qualifierai de "détection de proximité de signal", souvent appelée "zone d'arrêt".

Première idée :
Couper les rails et mettre deux détecteurs de plus, un pour chaque sens si la zone est banalisée.
Problème : ça n'est pas facile à faire, surtout en N (mon cas) et moins on soude de fils sur les rails mieux on se porte : on risque de faire fondre les rails et c'est moche.
Et ce serait une zone de détection courte, donc d'autant plus sujette aux mauvais contacts.

Deuxième idée :
On remarque que cette détection n'a d'intérêt que dans un sens : vers le signal !  ;)
Et là, le défaut majeur des détections ponctuelles disparait.
Au contraire :
Pas de rail à couper, assez facile à planquer (surtout effet Hall).
D'où mon appellation de "détection de proximité du signal" et pas "détection de zone d'arrêt".

Donc, 3 détections par zone : une détection de consommation de courant et deux par effet Hall.
Et 3 entrées de l'Arduino.

Occupons nous maintenant des signaux.

Pourquoi mélanger ?
A cause des fils courts : tout est à peu près au même endroit.

A minima, 6 entrées d'Arduino : 3 feux à chaque extrémité.
Parenthèse : avec du Charliplexing, on diminuerait le nombre de fils. Voir à ce sujet :
http://lestrainsdutertre.redheberg.com/TouteVapeur/Les_trains_du_Tertre/Entrees/2011/1/7_Les_cibles_des_signaux.html (http://lestrainsdutertre.redheberg.com/TouteVapeur/Les_trains_du_Tertre/Entrees/2011/1/7_Les_cibles_des_signaux.html)
Je trouve ça génial.
Mais un seul et unique défaut : vu le câblage spécifique, vous devez construire vos feux vous même.
Ce qui peut d'ailleurs ne pas être un défaut, vu le prix des signaux.  ;)

Sauf réseau vraiment particulier, vous arriverez à ce qu'on ait pas besoin de plus de 12 fils pour les deux signaux d'une zone banalisée.
Moyennant quoi, un seul Arduino suffit pour une zone.

Un Pro Mini vaut 1,81 €
http://www.ebay.fr/itm/1Pcs-Pro-Mini-Atmega328-3-3V-8M-Replace-Atmega128-Arduino-Compatible-Nano-New-Z-/252408518534?hash=item3ac4b85786:g:l2IAAOSw4GVYHcVd (http://www.ebay.fr/itm/1Pcs-Pro-Mini-Atmega328-3-3V-8M-Replace-Atmega128-Arduino-Compatible-Nano-New-Z-/252408518534?hash=item3ac4b85786:g:l2IAAOSw4GVYHcVd)
Un nano vaut 2.45 €
http://www.ebay.fr/itm/Nano-V3-0-ATmega328-16M-5V-Micro-controller-CH340G-board-For-Arduino-no-solder-/351213381226?hash=item51c5f2e66a:g:f3UAAOSwPcJVR3rF (http://www.ebay.fr/itm/Nano-V3-0-ATmega328-16M-5V-Micro-controller-CH340G-board-For-Arduino-no-solder-/351213381226?hash=item51c5f2e66a:g:f3UAAOSwPcJVR3rF)

Au passage, j'ai aussi trouvé ça :
http://www.ebay.fr/itm/CH340G-USB-a-UART-TTL-Serial-Adaptateur-Cable-Module-Pour-Arduino-Pro-Mini-BA-/302035588668?hash=item4652b9563c:g:LnYAAOSwHoFXp9mO (http://www.ebay.fr/itm/CH340G-USB-a-UART-TTL-Serial-Adaptateur-Cable-Module-Pour-Arduino-Pro-Mini-BA-/302035588668?hash=item4652b9563c:g:LnYAAOSwHoFXp9mO)

Donc, ce module va commander tout ce qui se passe sur une zone.

Reste à le faire communiquer.
Bus CAN à 2.18 € :
http://www.ebay.fr/itm/MCP2515-CAN-Bus-Module-Board-TJA1050-receiver-SPI-For-51-MCU-ARM-controller-FQ-/162331344973?hash=item25cbb3c04d:g:AMMAAOSw65FXqH2G (http://www.ebay.fr/itm/MCP2515-CAN-Bus-Module-Board-TJA1050-receiver-SPI-For-51-MCU-ARM-controller-FQ-/162331344973?hash=item25cbb3c04d:g:AMMAAOSw65FXqH2G)

Personnellement, je suis convaincu de l'usage de câble Ethernet inter-modules et prises RJ.
D'ailleurs, c'est la norme LCC (pour l'instant). :-*

Denis
** Pour être précis, pour la SNCF, c'est plutôt par non-consommation de courant. Cela revient au même, sauf que la non-consommation est plus sûre.
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 22, 2017, 05:08:12 pm
Ah l'obsession des fils courts !

Citer
Le problème étant que je veux à tout prix raccourcir les fils

Loin de moi l'idée de polémiquer car c'est mieux de toute façon d'avoir les fils les plus courts car ils ramassent moins de parasites  >:(

Cependant il y a un paradoxe : plus ton réseau sera grand et plus il y aura des longs fils, c'est imparable !

La question devient alors "comment connecter les entités éloignées ?"

Tu mentionnes le réseau CAN qui est effectivement fait pour ça. En plus c'est du multi-point qui permet de répartir les entités concernées à plusieurs endroits, donc d'éviter la centralisation.
Le bon exemple, à mon avis, est ce que Jean-Pierre a décrit dans son article "Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation" http://www.locoduino.org/spip.php?article180 (http://www.locoduino.org/spip.php?article180)
On y voit des détecteurs de consommation associés chacun à une interface CAN et des concentrateurs (gateways) qui récupèrent les signaux sur le bus CAN (je fais abstraction du protocole S88).

Est-ce mieux que de tirer des fils entre un Arduino en charge de la rétrosignalisation et tous les capteurs de consommation ?
Car la surcharge logicielle n'est pas mince, avec la mise au point. Et pourquoi pas une réseau CAN spécifique rien que pour la rétrosignalisation.

Je ne suis pas contre, mais...

Il y a une autre technique qui se prête assez bien à une gestion centralisée (en étoile) qui est basée sur la faible impédances des liaisons : la sortie d'un optocoupleur est un transitor collecteur ouvert qui peut débiter au moins 10mA. On peut donc le relier au +5V via une résistance de 470 Ω voire 1KΩ. On a donc juste 2 fils (torsadés de préférence) qui relient la sortie du détecteur de consommation à l'Arduino (entre la résistance reliée au 5V et une patte de l'Arduino).

C'est ce que j'ai fait sur mon réseau : un Mega collecte toutes les sorties des capteurs de consommation. Ca peut courir sous le réseau jusqu'à 3 à 4 mètres. Je n'ai jamais constaté de perturbations.

Pourquoi un Méga plutôt que plein de petits Mini ou Nano ?

Parce que c'est plus simple à programmer, qu'il a 80 ports, 256K de Flash et 8K de Ram, de quoi faire de bons programmes sans risque de mémoire insuffisante. Oui il est 2 à 4 fois plus cher qu'un Nano ou Mini, mais il en remplace bien plus que ça.

Mais chacun fait comme il veut ou peut  :D

Je vois sur ce forum et d'autres un certain intérêt pour une gestion "par canton" (un Arduino par canton, voir par exemple http://forum.locoduino.org/index.php?topic=36.0 (http://forum.locoduino.org/index.php?topic=36.0) et http://forum.locoduino.org/index.php?topic=291.0 (http://forum.locoduino.org/index.php?topic=291.0)).

Dans ces deux cas c'est justifié car la gestion de chaque canton ne se résume pas à la détection de consommation.

Dans mon cas, j'ai choisi une gestion par fonctions (traction, rétrosignalisation +TCO, commandes d'aiguilles, commandes des signaux, gestion du décor, le tout sus le contrôle d'un gestionnaire). Le bus CAN chez moi relie ces grandes fonctions.

Mais l'un n'empêche pas l'autre ...
Les choix sont multiples et Locoduino est là pour éclairer le lecteur sur les différentes possibilités.

Titre: Re : Rétrosignalisation
Posté par: tierra calientes le mai 23, 2017, 08:45:02 am
Bonjour, les propositions de DDEFF et Dominique ont retenu mon attention.
DDEFF propose le bus Can qui fait appel à plus de programmation mais pour quelqu'un qui n'en a jamais fait ou à peine il y a très très longtemps sur Commodore 64, c'est peut être un peu compliqué mais avec un peu d'aide peut être que.... . J'ai pourtant lu et relu " Une passerelle entre le bus S88 et le bus Can pour la rétrosignalisation "
En utilisant la proposition de Dominique la détection est un peu plus sophistiquée mais cela ne me dérange pas. En ce qui concerne la programmation
qui pour lui est plus simple, comment y accéder et l'adapter à mon circuit ?
J'ai commandé et attend un kit Arduino Mega 2560 et j'ai trouvé sur le net "Arduino pour bien commencer en électronique et en programmation fetch.php "
J'en suis au début et je rame déjà un peu. Quand le kit sera arrivé j'espère que la pratique m'aidera un peu.
Bonne journée.
Titre: Re : Rétrosignalisation
Posté par: Dominique le mai 23, 2017, 09:14:42 am
Bonjour,

Du désir à la solution, il y a toujours quelques étapes intermédiaires que vous devez envisager :

- vous familiariser avec l'Arduino et son IDE : lisez, relisez et testez plusieurs exemples tout faits du plus simple au plus sophistiqué, jusqu'à ce que la syntaxe du C, la compilation, le televersement et les tests le soient toujours avec succès.

- décrire en détail votre projet, les entrées, les sorties, les fonctions, en n'oubliant rien, sur du papier, avec un crayon.

- programmer petit à petit en testant fonction par fonction. Réalisez quelques outils de test au passage.

Vous verrez que cela se passe bien.

Bon courage

Titre: Re : Rétrosignalisation
Posté par: DDEFF le mai 23, 2017, 09:25:41 am
Bonjour tierra calientes,

Je trouve ta réaction très saine : faire au fur et à mesure.
C'est la meilleure méthode.

Le principal défaut de ma solution est qu'elle n'est actuellement que dans ma tête.
Elle suppose en particulier un gestionnaire de réseau complet basé sur le bus CAN, gestionnaire dont je connais les grandes lignes, mais qui n'existe pas encore.
Et nous travaillons en ce moment avec Pierre59 à peaufiner un TCO novateur et simple (... d'emploi !) qui sera lié à ce gestionnaire.
J'ai donc, en ce moment, peu de temps pour terminer d'autres choses.
Mais comme j'en aurai besoin pour mon propre réseau, j'irais jusqu'au bout.

En attendant, le détecteur de Pierre59 a fait ses preuves et celui de Dominique aussi.
Il y a énormément de personnes qui travaillent avec un MEGA, qui en sont tout à fait satisfaites et c'est un bon moyen de débuter.
Tu trouveras de nombreux articles pour t'aider sur le site de Locoduino.

N’hésite pas à revenir vers nous si tu as un problème.
Titre: Re : Rétrosignalisation
Posté par: Pierre59 le mai 28, 2017, 05:48:52 pm
Bonjour

Voici un programme simple de "filtre numérique" pour le schéma proposé précédemment, le programme est prévu pour une seule zone (mais peut être facilement étendu). L'idée de base est la suivante :

- lors d'une détection d'occupation celle ci est transmise immédiatement à celui qui la traite
- lors d'une détection de libération une temporisation de quelques secondes (1, 2 ou 3 s) est mise en oeuvre avant de la transmettre à celui qui la traite

Quelques complications sont nécessaires pour palier la mauvaise qualité du signal sortant de l'optocoupleur, ainsi que les mauvaises prises de courant des engins moteurs (ou remorqués)

Voici le programme pour un Arduino:

const byte pin=1; // choix de la pin d'entree
const int retard=3000; // retard a la liberation (milis-secondes)
unsigned long temps; // pour la temporisation

void setup() {
  pinMode(pin,INPUT); // mise en entree
  temps=0; // initialisation
}

void loop() { byte x;
  x=digitalRead(pin); // lecture de la pin
  if (x==0) { // occupation de la zone ?
    if (temps==0) Serial.println("occupation de la zone");
    temps=millis(); // re-armement de la temporisation
  }
  else { // liberation de la zone ?
    if (temps!=0 && millis()-temps>retard) { // pas libre et temporisation echue ?
      Serial.println("liberation de la zone");
      temps=0; // re-initialisation
    }
    // else rien (la liberation est toujours temporisee)
  }
}

On a besoin de deux constantes et d'une variable :
- le numéro de la pin utilisée
- le retard à la libération
- un temps qui sert à mettre en oeuvre le retard à la libération (temporisation)

Le setup() règle la pin en entrée et initialise le temps.

Le loop() teste indéfiniment l'état de la pin :

- on lit la pin, si c'est zéro c'est une occupation (le transistor de l'optocoupleur fait une inversion)
   - si le temps est à zéro c'est un début d'occupation, on transmet l'information à celui qui la traite
   - dans tous les cas on mémorise dans temps le temps courant (pour la temporisation de libération)
- sinon (pin à un) c'est une libération
   - on regarde si on est au bout de la temporisation (pour palier la mauvaise qualité du signal sortant de l'optocoupleur, ou les aléas de prise de courant), si oui la libération est transmise à celui qui la traite et on remet le temps à zéro

Celui qui traite les occupations/libérations de zones ne reçoit une information que lors d'une vraie occupation ou d'une vraie libération de zone, ceci grâce au "filtre numérique" mis en oeuvre.

On peut facilement prendre en compte plusieurs zones (plusieurs dizaines, voire centaines) en adaptant le programme et en utilisant plusieurs pins de l'Arduino, on peut aussi utliliser des mutiplexeurs, des registres à décalage, … pour utiliser moins de pins de l'Arduino. Il faut faire néanmoins attention à l'encombrement mémoire, chaque zone a besoin d'une variable "temps" qui fait quatre octets, par exemple pour 64 zones cela fait 256 octets (1/8 de la RAM d'un Uno !).

Avec plusieurs zones le loop() teste une zone après l'autre indéfiniment, il faut que ce temps de traitement soit suffisamment bref, une prise en compte rapide des occupations est par exemple nécessaire pour une poursuite en canton en analogique (voir l'article http://www.locoduino.org/spip.php?article184 (http://www.locoduino.org/spip.php?article184)).

L'horloge de l'Arduino, donc le résultat de millis() repasse par zéro tous les 50 jours environ, lors de ce retour à zéro le filtrage numérique peut avoir un comportement erratique (on pourrait améliorer le filtrage pour palier ce problème).

Quand on démarre un Arduino (mise sous tension ou reset) l'horloge repart à zéro, et il faut un délai de 1 ms pour que le filtrage fonctionne bien (la valeur zéro est utilisée comme cas particulier pour économiser la mémoire).

On pourrait mettre en oeuvre un filtrage plus contraignant, par exemple en exigeant un signal d'occupation pour plusieurs passages successifs dans le loop() (avec un compteur) avant de transmettre une vraie occupation.

Pierre



Titre: Re : Rétrosignalisation
Posté par: CATPLUS le mai 29, 2017, 01:00:56 pm
Bonjour Pierre
Je viens d'installer le programme cité ci-dessus. La seule réponse du PC à l'affichage (à une vitesse folle) "libération de la zone"
STP Peux-tu donner un peu plus d'explication.

Cordialement
Marcel
Titre: Re : Rétrosignalisation
Posté par: Pierre59 le mai 29, 2017, 02:28:51 pm
Bonjour

J'ai corrigé deux erreurs :

- un == à la place d'un = dans l'occupation
- un test supplémentaire dans la libération (pour vérifier que la zone n'est pas déjà libre)

J'ai fait quelques essais, cela a l'air de mieux marcher (je n'avais pas testé !)

Pierre
Titre: Re : Rétrosignalisation
Posté par: CATPLUS le mai 29, 2017, 07:08:25 pm
Les nouveaux tests ont l'air concluants
A suivre.  :)
Titre: Re : Rétrosignalisation
Posté par: tierra calientes le juin 04, 2017, 04:29:38 pm
Bonjour, comme il faut avancer, je vais partir sur "Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation".
J'ai reçu mon matériel (mega 2560 et quelques accessoires).
J'ai choisi "fetch.php pour bien commencer avec Arduino" pour les notions de bases et on y va.
J'espère y arriver en y allant calmement.
Merci pour l'aide. ;)
Titre: Re : Rétrosignalisation
Posté par: lucdelch le août 27, 2019, 09:45:10 am
bonjour,
je viens de redémarrer mon vieux train hornby en le digitalisant et en profitant du début de ma retraite
je profite "lâchement" de toutes les informations de ce site et de votre large compétence qui comble mon inexpérience dans l'électronique et le digital en général
j'ai construit une deuxième centrale en partant de l'article 253 qui fonctionne parfaitement ( un grand merci à son Auteur)
j'attaque maintenant la rétrosignalisation en suivant le contenu de l'article "communication entre JMRI et Arduino" (merci Dominique !)
j'ai un problème de "rebond" avec une détection peu fiable, et donc un pb de détecteur de courant
j'utilise aujourd'hui le schéma de détecteur proposé sur le site de Free-Dcc à base d'optocoupleur CNY74 qui fonctionnait très bien avec cette centrale.
je n'ai pas pu ou su récupérer le schéma de montage proposé par Pierre ( est ce possible de me le renvoyer)
je pense aussi remplacer mes CNY74 par des détecteur à double diodes ( TLP620 ou H11AA4x ou autre ?)
    un composant recommandé ?
et dans un deuxième temps, optimiser le code en intégrant le filtre numérique proposé dans cette article sous réserve que mon idée soit bonne!
merci pour vos retours et vos conseils
quant à la qualité du site et de votre communauté,  bravo! et j'espère ètre capable un jour d'y collaborer
luc
Titre: Re : Re : Rétrosignalisation
Posté par: Pierre59 le août 29, 2019, 05:17:45 pm
je n'ai pas pu ou su récupérer le schéma de montage proposé par Pierre ( est ce possible de me le renvoyer)

Bonjour

Voila

Pierre
Titre: Re : Re : Rétrosignalisation
Posté par: trimarco232 le septembre 05, 2019, 10:54:53 am
Le choix d'un optocoupleur avec diodes tête bêche, permet d'utiliser ce schéma aussi bien en analogique (dans les deux sens du train) qu'en numérique (...)
pas aussi bien, en analogique le courant est coupé à l'arrêt, ce détecteur ne fonctionne pas
de + la chute de tension de 1,4v peut s'avérer gênante
... pour dire que si quelqu'un a une solution pour palier, je suis (on est) preneur
Titre: Re : Rétrosignalisation
Posté par: jeanmi67 le septembre 05, 2019, 11:07:45 am
Bonjour,

Pour l'analogique, vous avez plusieurs solutions possibles sur cette page :
http://amfn.nice.free.fr/det2.htm (http://amfn.nice.free.fr/det2.htm)

Jean-Michel  :)
Titre: Re : Rétrosignalisation
Posté par: trimarco232 le septembre 05, 2019, 05:43:48 pm
merci Jean-Michel,
en fait ce que je recherche c'est une solution élégante qui fonctionne aussi bien en analogique qu'en digital
(le fantasme c'est d'avoir un suivi des trains qui permet de mélanger les 2 modes. Pour chaque canton -ou circuit de voie - il y aurait un booster qui commute d'un mode sur l'autre si besoin, en assurant la détection et la rétrosignalisation)
Titre: Re : Rétrosignalisation
Posté par: msport le septembre 05, 2019, 06:12:46 pm
J'ai le sentiment qu'il vaudrait mieux réserver le mixed grill à la plancha ?
Titre: Re : Re : Rétrosignalisation
Posté par: Dominique le septembre 06, 2019, 02:56:18 pm
(le fantasme c'est d'avoir un suivi des trains qui permet de mélanger les 2 modes. Pour chaque canton -ou circuit de voie - il y aurait un booster qui commute d'un mode sur l'autre si besoin, en assurant la détection et la rétrosignalisation)
Le fantasme est autorisé sur son réseau personnel, si ça permet de se faire plaisir, mais les problèmes qui pourraient en résulter ne seront pas toujours à partager.
Titre: Re : Re : Rétrosignalisation
Posté par: trimarco232 le septembre 08, 2019, 05:20:13 pm
J'ai le sentiment qu'il vaudrait mieux réserver le mixed grill à la plancha ?
c'est une vielle idée, genre avoir un engin ancien en N, qu'il nest pas possible d'équiper même avec le + petit décodeur, mais qu'on souhaite quand-même faire circuler, avec les autres trains, sur son réseau numérique ...
on peut en effet discuter de sa pertinence, en ce sens qu'il semblerait que cette possibilité n'ait jamais manqué à personne depuis l'avènement du numérique

pour un réseau que je souhaite pouvoir commuter en analogique / numérique, j'ai bien entendu la possibilité de le faire par commutateur sec ou relais, mais je veux une solution entièrement électronique. La base sera donc là pour réaliser cette exploitation mixte simultanée
quand on fait ses propres pcb, il faut essayer de penser à tout, y compris à ce qu'on ne voit pas venir sur le moment, dans le but de ne pas avoir à refaire ultérieurement
et tant qu'à s'em... à faire soi même, autant tenter d'y apporter une + value
j'essaye donc de collecter le + d'éléments possibles avant de me lancer

ou bien je me suis trompé de rubrique ?
Titre: Re : Rétrosignalisation
Posté par: Dominique le septembre 08, 2019, 05:41:50 pm
Pourquoi pas une voie tantôt en PWM, tantôt en DCC avec la même centrale Arduino et le même booster. J’ai le même cas chez moi. C’est décrit dans la bibliothèque DCDCCNanoControler de Thierry dont je m’inspire pour mon développement en ce moment (à décrire plus tard). Mais pour passer de PWM à DCC et vice versa il faut reseter l’arduino pour changer les timers. C’est difficile de passer de l’un à l’autre simplement. Et il ne faut pas se tromper, la loco n’aimerait pas >:(

Évidemment la retrosignalisation peut être commune aux 2 modes.
Titre: Re : Rétrosignalisation
Posté par: trimarco232 le septembre 08, 2019, 10:12:10 pm
merci Dominique, je vais regarder la bibliothèque
pourquoi pas, c'est parce que les 2 modes cohabiteraient en même temps sur le même réseau, les cantons commuteraient de mode selon la nature du train qui les parcourent
bien sûr, il ne faut pas se tromper, un manque de fiabilité du suivi des trains constituerait le risque qui fait capoter le projet
passer d'un mode à l'autre ne doit pas me poser de problème vu les modules que je compte utiliser (blue pill). Le bus de rétrosignalisation devra aussi comporter une ligne de synchro dcc et une ligne de synchro du pwm

du pain sur la planche donc, et il ne faudra pas être pressé pour voir le résultat, tout reste à faire :
- hard
- soft analogique
- soft digital
- soft mixte
et seuls les deux 1ers sont à l'ordre du jour

Titre: Re : Rétrosignalisation
Posté par: Thierry le septembre 09, 2019, 09:40:33 am
Bonjour. Attention DCC++ et ses déclinaisons Locoduino (DCCpp, DcDccNanoController...) ne gèrent pas les STM32 dites 'Blue-Pill' aujourd'hui. Seuls les Nano et Mega sont gérés d'entrée. Une version ESP32 existe, mais je n'ai pas réussi à la compiler...
Titre: Re : Re : Re : Rétrosignalisation
Posté par: msport le septembre 09, 2019, 11:02:17 am
J'ai le sentiment qu'il vaudrait mieux réserver le mixed grill à la plancha ?

pour un réseau que je souhaite pouvoir commuter en analogique / numérique, j'ai bien entendu la possibilité de le faire par ...

Mon message était trop sibyllin :
comme l'indique Dominique, un montage DC/DCC a été publié par Thierry et il fonctionne parfaitement, je l'ai réalisé sans difficulté :
http://forum.locoduino.org/index.php?topic=752.msg8459#msg8459
Il signale/rappelle à la mise sous tension et demande de confirmer le type d'alimentation envoyé sur les rails.

Je voulais simplement attirer l'attention sur le fait qu'oublier (ou ne pas identifier comme telle) une locomotive analogique sur un réseau DCC a toutes les chances de la frire. Et sur un réseau d'une certaine taille, impossible de tout surveiller.

Sans compter la nécessité d'une zone neutre autour de chaque canton mixte.

Maintenant, bien sur tout le monde a le droit de rêver et chacun a son niveau du gout du risque.
Titre: Re : Re : Re : Rétrosignalisation
Posté par: Pierre59 le septembre 09, 2019, 04:05:07 pm
Le choix d'un optocoupleur avec diodes tête bêche, permet d'utiliser ce schéma aussi bien en analogique (dans les deux sens du train) qu'en numérique (...)
pas aussi bien, en analogique le courant est coupé à l'arrêt, ce détecteur ne fonctionne pas
de + la chute de tension de 1,4v peut s'avérer gênante
... pour dire que si quelqu'un a une solution pour palier, je suis (on est) preneur

Bonjour

En analogique, pour détecter les engins moteurs à l'arrêt et les véhicules avec essieux graphités ainsi que ceux  avec éclairage ou feux de fin de convoi, on utilise en général une source de courant annexe de quelques dizaines de volts  (24 à 48 volts) reliée à chaque zone par une résistance assez grande. Cette résistance doit être suffisamment grande pour que le courant passant par une machine à l'arrêt ne fasse pas tourner le moteur mais déclenche la rétrosignalisation, pas trop grande quand même pour qu'un essieu graphité déclenche aussi la rétrosignalisation, en pratique il faut qu'il passe quelques miliampères. Le site de Nice précédemment cité décrit bien cela.

Dans ce cas le détecteur avec optocoupleur tête bêche fonctionne indifféremment en analogique et en numérique.

Pour la chute de tension on ne peut pas faire grand chose à par augmenter la tension des sources analogiques et numérique.

On ne peut pas faire de détection s'il n'y à pas de courant ou de tension.

Pierre
Titre: Re : Re : Re : Rétrosignalisation
Posté par: Pierre59 le septembre 09, 2019, 04:20:50 pm
(le fantasme c'est d'avoir un suivi des trains qui permet de mélanger les 2 modes. Pour chaque canton -ou circuit de voie - il y aurait un booster qui commute d'un mode sur l'autre si besoin, en assurant la détection et la rétrosignalisation)
Le fantasme est autorisé sur son réseau personnel, si ça permet de se faire plaisir, mais les problèmes qui pourraient en résulter ne seront pas toujours à partager.

Ce fantasme je l'ai eu aussi quand j'ai construit mon réseau, et j'ai réalisé toute l'électronique en conséquence. Mais au vu des aléas occasionnels dans la circulation des trains, je n'ai encore jamais osé des circulations mixtes. Je tourne donc soit en analogique soit en numérique.

Par contre je ne vois pas la nécessité de zones neutres dont parle msport et je n'en ai pas, un bon gestionnaire de réseau doit faire ce qu'il faut pour éviter les problèmes aux changement de zones.

Pierre
Titre: Re : Rétrosignalisation
Posté par: msport le septembre 10, 2019, 10:08:02 am
zones neutres : Je voulais attirer l'attention sur le passage d'une zone en courant continu à une zone DCC :
si au passage un wagon envoie une tension continue sur un pont en H, soit tout s'arrête par détection de C/C, soit le pont est grillé.
Titre: Re : Rétrosignalisation
Posté par: trimarco232 le septembre 11, 2019, 10:33:13 pm
merci d'intervenir spontanément

je suis un peu hs, donc je créerai un topic dédié quand j'aurai quelques éléments

à Pierre59, ton système est-il décrit quelque part ?