Homemade Marklin - création d'un circuit intelligent

J’ai pu tester cette passerelle MS2《=》Rocrail via protocole CAN, ça marche impeccablement.

Christophe m’a fourni les composants de la carte universelle que j’ai monté moi-même, sans difficultés, juste en se basant sur les photos postées plus haut. Il faut savoir souder, bien sûr, et se familiariser un minimum avec l’Arduino IDE - le software pour charger le programme sur la carte - mais rien d’insurmontable pour ceux qui sont à l’aise avec l’informatique en général. Je connaissais que dalle en Arduino il y a une semaine, j’ai désormais envi d’explorer davantage cette plateforme DIY.

Christophe peut également vous fournir la carte universelle toute faite, si le soudage vous effraye.

D’autres solutions sont dans les cartons pour la rétro, c’est donc un petit écosystème DYI qui va progresser.

Voilà, quand le contrat est rempli avec brio, il faut le dire aussi :laughing:

1 « J'aime »

Bonjour Christophe,

Je lis attentivement ton développement depuis un certain temps. Et je suis très intéressé par le tout et plus particulièrement par la retro-signalisation (ayant déjà investi dans le reste).

Pour me moment j’utilise la MS2, la cc Schnitte et le module Zeus pour la retro avec des S88 AC pour mes rail C. Et jusque-là tout va bien. Par contre, quand je branche des S88 DC pour mes rails M, les problèmes commences (trains fantômes, …).

Donc, je me demandais, en combinaison avec de qui fonctionne bien dans mon installation, si je pourrais utiliser ton système de retro pour la retro sur me rails M. Sachant que aujourd’hui, la rétro sur les rails M est basée sur le même principe que la rétro sur le 2 rails (le ballast relié au retour/brun et le rail central vers la boite de détection, elle-même relié au courant/rouge).

Les détections fantômes ne durent que qques millisecondes et je me demandais si je ne pouvais pas ajouter par programmation un temps minimum de détection avant de le considérer comme une détection valable. Ce qui éliminerait (sans doute) mon problème.

Merci de ton retour.

Olivier

Bonjour Olivier,

Tout d’abord ce qui va sans doute te rassurer, oui il est possible de créer un autre dispositif de rétro en parallèle de ce qui fonctionne bien et de préserver ainsi ton investissement. Cela en particulier si tu utilises Rocrail qui, parmi ses nombreuses qualités, est capable de se connecter à plusieurs contrôleurs en même temps, appelés centrales dans la version française mais controller dans la version anglaise ce qui traduit plus exactement la fonction.

Dans un système de rétro signalisation, il faut distinguer plusieurs choses : Le lien physique, le principe de circulation des impulsions électrique sur ce lien physique et la partie logicielle (comment est traitée en soft l’organisation des échanges la récupération des informations).

Je ne vais pas me répéter sans cesse mais pour moi, surtout en DIY, pas de salut en dehors du bus CAN pour la rétro sur un réseau de modélisme ferroviaire.

Si tu veux quelques arguments, tu peux te référer à un nouveau fil que je viens de créer sur Locoduino qui pour l’instant n’intéresse pas grand monde : Le CAN sur nos réseaux : Pourquoi et comment ?

Donc oui, tu peux créer un autre bus de réro en CAN à côté de ce qui existe et programmer Rocrail pour qu’il en assure la lecture.

Pour les détections fantômes, non seulement tu peux mais tu dois les gérer en soft. Dans ce domaine comme dans beaucoup d’autres en électronique, la coupure franche, nette et précise n’existe pas.

Au niveau logiciel, on réalise TOUJOURS ce que l’on appelle un « debounce ». https://docs.arduino.cc/built-in-examples/digital/Debounce/

Celui-ci peut être réalisé de manière électronique avec un composant appelé « trigger de Schmitt » : Bascule de Schmitt — Wikipédia

Ensuite, il faut s’intéresser à la qualité des systèmes de détections. Pour ma part, j’aime beaucoup la détection par consommation de courant à base de coil (bobine) qui mesure le courant par effet Hall, ne perturbe en rien le courant initial qui va aux rails, assure une totale isolation du courant primaire et du courant secondaire évitant tout risque de griller quelque chose en cas de court-circuit. Très économique, un coil vaut 50 à 80 centimes d’€ sur Ali, 3 diodes zener et un peu de bricoles.

Tu trouveras ici un exemple mais qui est beaucoup plus complet puisqu’il assure également la coupure de l’alimentation des rails en cas de court-circuit : Détection de présence et de courts-circuits en DCC et en MFX. LOCODUINO - Détection de présence et de courts-circuits en DCC et en MFX.
Je ne vais pas détailler ici toutes les autres techniques, mais j’utilise aussi l’infra rouge à 38Kz. Après avoir testé nombre de composants, j’ai fini par trouver des composants « tout faits » à 1€ environ qui fonctionnent merveilleusement bien.

J’ai aussi utilisé longtemps des capteurs à effet Hall (discrets et économiques) qui fonctionnent très bien également mais nécessite un aimant sous la loco. Pas toujours facile. Dans tous les cas, éviter les ILS, fragiles et peu performants.

Voilà quelques premières réponses.

Bien cordialement

Christophe

Bonjour à tous,

Je viens de recevoir les PCB pour la petite carte décodeur de rétro-signalisation avec Rocrail.

On distingue les 16 entrées similaires à ce que l’on peut trouver sur un s88. Mais contrairement au s88, le bus est en CAN (plus rapide et plus fiable).

Les liaisons de modules à modules est réalisée avec du câble blindé Ethernet RJ45 et le nombre de modules peut aller jusqu’à une centaine environ !

Sur cette seconde photo, on voit ce décodeur relié à une passerelle CAN → TCP pour être utilisable dans Rocrail. Cette passerelle joue le même rôle qu’un L88

Quand je vais avoir un peu de temps, je vais réaliser un autre décodeur qui communiquera cette fois directement avec Rocrail en WiFi. Plus simple et plus économique, cette solution ne doit cependant être envisagée que pour des petits ou moyens réseaux avec 16 à 32 entrées de capteurs au maximum.

Je précise qu’ici, nous n’avons pas d’isolation galvanique. J’envisage également pour cela de réaliser des petits modules séparés pour ne disposer que ce qui est strictement nécessaire.

PS : le cout de revient de la carte décodeur doit être de 12 à 15€ environ.

Christophe

2 « J'aime »

Salut Christophe,

Peut-on relier ta nouvelle carte “S88” directement au CAN de la Gleisbox (à la place de la 2ème MS2) ?

Olivier

Oui, cela est possible mais je n’utilise pas le même protocole de messagerie, pour la simple et bonne raison qu’il n’existe pas chez Marklin de CAN pour la rétrosignalisation.

Pour utiliser avec Rocrail, j’ai donc calqué le format des messages CAN de ma rétro signalisation au format du s88 pour qu’il soit reconnu par Rocrail.

Pour faire simple, il vaut mieux utiliser une passerelle dédiée CAN ↔ TCP (Rocrail) et créer un contrôleur spécifique dans Rocrail (protocole s88).

Ou alors, il faut attendre, comme je l’ai mis sur un post récement, que j’ai développé le code pour que le Rasberry PI Pico communique directement en WFi avec Rocrail. Mais ne concerne que les petits réseaux à moins de 16 - 32 capteurs.

De plus, tu as CC-Schnitte je crois en port USB ??? Va pas aimer je pense car elle doit être programmée pour des messages à 13 octets alors que pour la rétro j’utilise des messages de type s88 comme je te disais qui eux n’ont que 16 bits (2 octets) !

Bonjour Christophe,

Merci pour la réponse.

Pour être certain ne pas commettre de bétise : est-ce que ta carte fonctionnera également en 2 rails (càd comme remplacement d’un S88DC avec avantage du CAN), ou seulement en 3 rail en remplacement d’un S88AC.

Sachant que je fais passer le courant (rouge) par le S88DC.

Merci

Olivier

Oui, 2 rails ou 3 rails n’a aucune importance ici car ils ne sont pas conçu pour être en contact avec le courant de voie, le décodeur se contente de vérifier si un circuit “de masse” est bouclé ou non. C’est juste comme un interrupteur ouvert ou fermé.

Si le circuit est ouvert, l’entrée sur le micro contrôleur est maintenu à l’état HIGH par une résistance PULL_UP. Si l’interrupteur est fermé, une masse (commune avec celle du décodeur) est envoyée sur l’entrée du µC et met l’état à LOW qui indique une occupation.

Les capteurs peuvent être très variés, rail contact, capteur à IR, capteur à effet Hall, ILS ou encore par consommation de courant (assez top selon moi)… Tout ceci est indépendant du AC ou du DC.

Au besoin, s’il s’agit d’un rail contact qui serait susceptible de recevoir du courant de voie (court circuit) on utilisera plutôt un capteur par conso de courant LOCODUINO - Détection de présence et de courts-circuits en DCC et en MFX. ou alors on réalisera un petit module d’isolation galvanique.

Merci Christophe,

OK, donc dans mon cas, cela ne marchera pas car je suis en Rail M sur cette partie du circuit et donc, pas en circuit de masse mais en courant de voie.

Par contre sur locoduino, ca fait l’affaire mais i lfaut une carte par zone de détection.

Pas envie de faire une carte 8 ou 16 zones et sans le court-circuit (pas nécessaire avec la Gleisbox) ? :slight_smile: :slight_smile:

Encore merci pour tes lumières.

Olivier

Bonjour,

Je sollicite les conseils des modélistes plus compétents que moi en électronique (ce n’est pas difficile !) pour avoir leur avis.

Le décodeur à base de Raspberry Pi Pico ci-dessus permet de capturer l’état de capteurs sur le réseau et est capable de transmettre ces informations à une centrale ou un logiciel comme Rocrail ou iTrain.

Ce montage fonctionne bien pour des capteurs comme des Infra Rouge, des capteurs à effet Hall etc… mais il ne dispose pas d’isolation galvanique dans le cas où l’on souhaite par exemple faire remonter l’état d’un rail contact potentiellement sujet à un court-circuit.

Dès lors, j’ai imaginé ce petit montage dans lequel, en cas d’essieu(x) sur le rail contact, le courant est redressé dans un pont de diodes Schottky (1N5819) puis envoyé dans un optocoupleur (VO618). A l’instar d’un décodeur s88, si le VO618 est actif (passant), c’est une masse qui est présente sur la borne 3, sinon rien.

De l’autre côté du montage, nous avons soit un ESP32 soit un Raspberry Pi Pico dont la résistance pull-up de la broche est activée (3,3V). La présence est détectée quand la broche est à l’état LOW.

Merci par avance pour vos conseils.

Christophe

PS : Je précise que j’ai testé ce montage et qu’il fonctionne mais il y a peut-être des erreurs fatales !

1 « J'aime »

Hello

Pour une détection d’un rail de contact sur la voie C, j’ai fait bcp plus simple et comme préconisé, sur ma platine “Obourg” Rétro v3

Cf Détection de présence d'un train pour la fermeture d'un passage à niveau - #2 par Delias

Cf Platine v1 : Une débutante dans le décor - Ep10 - Indication de voie occupée - #16 par Julaye

Cf Platine v2 : L'héritière d'Obourg - #2530 par Julaye

Cf Platine v3 : (v2 avec meilleure implémentation) Sandbox / Platine "Obourg" Rétro v3 by Julie on AISLER

Du coup je suis intéressée à modifier cette carte platine pour qu’elle soit connectée en CAN vers RocRail. J’ai prévu d’intégrer la partie freinage + 4 contacts + bus CAN + logique pour en faire une carte “autonome” (avec gestion des feux).

Bonsoir Julie,

Merci d’avoir répondu à mon message. Oui, je connaissais ces montages et j’avais lu avec intérêt ton fil.

Mais deux choses m’interrogent principalement. Je ne vois pas bien que l’Arduino soit protégé dans le cas d’un court-circuit. L’optocoupleur me semblait une bonne réponse pour cela.

En second, je ne vois pas comment le courant est redressé. Or le MFX étant un courant à alternance de phase, la broche d’entrée d’un Arduino va passer en permanence d’un état haut à un état bas. Avec une led, ce n’est pas perceptible, compte tenu de la fréquence d’alternance mais sans diode inversée, elle est aussi soumise à une tension inverse qui va finir par lu être fatale. Me tromperais-je ?

Dans le montage que je présente, il y a à peine pour 1€ de composants. C’est peut-être un peu « ceinture et bretelles », mais bon !

C’est aussi pour cela que j’ai sollicité l’avis des « experts » du forum.

Bien à toi

Christophe

Le point important est de mettre la masse de l’Arduino sur le O de la voie.

Ce que l’on ne voit pas non plus de prime abord, c’est la protection supplémentaire en entrée que j’ai rajouté avec des diodes. Cf le schéma, diode D1 par exemple.

Ce montage fonctionne parfaitement bien et résiste aux petits court circuits. Je l’utilise avec succès depuis un moment notamment sur la dernière version de paparazzi. Ce montage est intégré à ma platine v3 et j’ai juste ajouté un anti rebond logiciel pour filtrer un peu notamment le signal numérique.

Bonjour Julie,

Il est sans doute vrai que je conserve des réflexes de 2 rails. Je me suis également habitué à considérer les Arduino, ESP32, Raspberry et autres µC comme des petites bêtes très sensibles. En générale 20mA et 5 ou 3,3 volts par broche ce n’est pas beaucoup.

En 3R, avec le principe de la masse commune, cette question n’est pas (ou peu) problématique.

Ce que je pourrais entendre pour mon montage, c’est qu’il est trop sécurisé ! Mais bon. Comme je l’ai déjà souligné, le prix des composants n’entre que très peu en ligne de compte (< 1€). Éventuellement l’encombrement ?

Pour revenir à ton montage, tu précisais que tu avais placé des diodes pour limiter l’impact des alternances de phase, ce qui est bien sûr une bonne chose. Mais ne devrais-tu pas également placer une capa de « lissage » (100µF…) ? Tu précises que tu fais un lissage « logiciel », mais là, je suis dans mon domaine et je sais combien il est préférable de confier cela au maximum au hard.

J’avais moi-même oublié cette capa dans mon schéma mais elle est bien présente sur mon montage.

L’impression que j’ai à ce stade c’est que nos deux montages, loin de s’opposer, sont deux approches du même problème. Mais je ne suis pas encore convaincu que ton Arduino soit « suffisamment » protégé.

Bien à toi

Christophe

1 « J'aime »

Voici le schéma modifié et complété. J’y ai ajouté un condensateur de 200µF / 35V pour lisser le signal et une capa de 100nF pour le filtrage entre les deux entrées du VO618.

La résistance sur le circuit primaire est de 1,5 KΩ compte tenu de la présence de la LED qui nous informe sur l’activation ou non du circuit

Toujours intéressé par vos remarques ou suggestions.

Quant au programme de test sur l’ESP32, il est ultra simple.

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("Initialisation");
  pinMode(14, INPUT_PULLUP); 
}

void loop() {
  Serial.println(!digitalRead(14));
}

Christophe

Bonjour à tous,

Je vous propose un nouveau montage pour piloter cette fois les moteurs d’aiguilles Marklin 74492 (xxx91, xxx90) toujours à partir d’un microcontrôleur (Arduino, ESP32, Raspberry Pi Pico…)

J’utilise de petits Mosfets assez économiques, les RFD3055LE (logic level) pour ouvrir ou fermer le circuit en fonction des commandes reçues du microcontrôleur sur les broches 1 ou 2 (en bas du schéma).

J’ai ajouté 2 condensateurs de 1000µF en 25 volts qui jouent comme des décharges capacitives mais qui jouent aussi comme une sécurité. Dans le cas où la commande du microcontrôleur reste active, les condensateurs ne peuvent pas se recharger et n’envoient dans les bobines qu’une faible énergie, très insuffisante pour les détériorer, la charge des condensateurs étant régulée par une résistance de 1KΩ.

Je précise que j’ai testé ce montage et il fonctionne comme ce qui est attendu.

Ce montage étant probablement perfectible, je sollicite donc une nouvelle fois les avis et critiques constructives.

Christophe

COMMANDE DE MOTEURS 74492

Retour sur le petit module de ralentissement et de freinage.

J’ai reçu les PCB et réalisé le montage des composants. Dans cette version, deux LEDs informent sur l’état du module.

Je rappelle que le module peut fonctionner avec les seules commandes de signaux lumineux : La centrale met le feu au rouge, le train s’arrête, le feu passe au vert, le train redémarre.

La carte s’alimente en 16-18 volts AC ou DC selon votre centrale.

J’ai 10 PCB (minimum de commande). J’en garde 2 et je donne les 8 autres (nus bien sûr) à ceux qui en feront la demande.

ATTENTION : Le relais sur la photo référence HFD/003-S-L2 n’est pas le bon, je n’ai pas encore reçu les 12 volts référence HFD/012-S-L2.

Christophe