Homemade Marklin - création d'un circuit intelligent

Prod'YJ
Messages : 16
Inscription : 07 oct. 2015 16:20
Prénom : Yann
Pays : Belgique
Région : Namur
Ville : Viroinval
Echelle : HO

Homemade Marklin - création d'un circuit intelligent

Messagepar Prod'YJ » 23 mai 2019 18:00

Bonjour à tous,

Comme je l'ai dit dans ma présentation, je suis de retour sur ce Forum pour du technico-technique. En effet, j'aimerai réussir à développer un système de contrôle Marklin plus avancé que ce que la marque fournit (et bien moins cher).

Je lance donc ce post pour permettre à ceux qui le souhaitent de pouvoir suivre mon avancement dans ce projet.

Commençons par préciser le but de ma démarche: à terme, je souhaite contrôler un circuit de trains complexe et complet à l'aide d'un Arduino (et de la librairie Railuino) de manière intelligente en connaissant la position de chaque locomotive sur le réseau à tout instant. Cela me permettrait de développer un système de détection de collision, de gérer des horaires précis et probablement un tas d'autres choses. Le but est que le tout fonctionne en harmonie avec le système Marklin Digital.

Dans un premier temps bien-sûr, je me limiterai à la gestion d'une seule locomotive sur un circuit simple. La faire avancer sera déjà une belle réussite. :P
Après, je pourrai tenter un début d'automatisme avec, par exemple, une gare à deux voie et deux trains qui pourront faire le tour du circuit (à voie unique) chacun à leur tour.
Ces deux premiers points seront déjà un belle avancée personnelle bien que cela n'apportera rien de nouveau à ce qui existe. Autant se contenter de peu et se réjouir des avancées supplémentaires :D


Avec cela en tête, j'ai pu commencer mes premières recherches. La première chose importante est que Marklin utilise un bus de communication CAN. On va passer les détails, mais en gros c'est un protocole de communication entre machines habituellement utilisé dans l'industriel.
Les données circulant sur ce bus sont ensuite traduites en l'un des protocoles de Marklin, ceux-ci lui sont propres (mfx, MM2). Quoi qu'il en soit, pas besoin de s'attarder à les comprendre, on va se contenter de causer au bus CAN et tout sera traduit par le système existant.
A titre d'exemple, voici les pinouts de la MS1 et de la MS2:
Image

La majeure différence entre les deux est que la MS1 s'occupe de créer le signal envoyé aux locos (c'est le "Gleissignal" - signal de voie) mais pas la MS2. Dans le cas de la MS2, le CAN est traduit par le boitier 60113. D'ailleurs, si on prend la peine de regarder ce que ce boitier et l'équivalent de la MS1 ont dans le ventre, on voit que le 60113 a plus d'électronique dans le ventre, justement pour traduire les signaux.
Image
Image

En fait, le 24088 se contente de redresser la tension du transfo et de faire passer le signal de rail depuis la ms1 jusqu'au rail. Il fait aussi la jonction entre les deux MS1 si besoin et surprise, ça se fait via le bus CAN :P
Pour ceux qui n'y connaîtraient absolument rien en électricité, redresser un courant veut dire transformer un courant alternatif en un courant continu. Cela m'amène à une petite info bonus: en réalité, Marklin travaille en 12v continu. En effet, si on prend le 18v alternatif des transfos et qu'on le divise par la racine carrée de 2 pour avoir la valeur en courant continu, on tombe bien sur du 12v, ce qui est très commun! (je vous passe la démo pour trouver racine de 2, soiyez rassurés ;) ) [Edit: cette information est une connerie, je vous invite à lire les réponses ci-dessous ;) ]

Pour revenir au choix du bus CAN, c'est là un choix très judicieux de la part de Marklin. En effet, comme son nom l'indique, nous avons affaire à un bus. Cela veut dire qu'il est très simple de connecter plusieurs appareils appareils ensembles avec un minimum de fils (dans ce cas-ci, il y a le CAN High, CAN Low et la masse, le gnd).
Image

Et en plus, on peut mettre autant d'appareils qu'on veut sans souci, le CAN est prévu pour ça.
Image

Eh bien, en gros voilà où j'en suis. J'ai commandé cet après-midi même un module Arduino permettant de gérer avec ce-dernier la communication CAN. Les premiers tests sont donc à venir, je vous tiendrai bien entendu au courant ici ;)
Si vous avez des suggestion, des propositions ou quoi que ce soit, je suis totalement ouvert! Le but de ma démarche est avant tout de partager, autant que ça aille dans les deux sens ;)

A très bientôt,

Yann

PS: voici quelques liens en vrac qui m'ont permis de vous raconter tout ce que j'ai écrit ci-dessus :)
http://www.skrauss.de/modellbahn/canbus_stecker.html
https://fr.wikipedia.org/wiki/Bus_de_données_CAN
https://photos.jtl3.com/Science/Electro ... Station-1/
http://html.alldatasheet.com/html-pdf/1 ... 2C250.html
https://www.marklin-users.net/forum/pos ... rogramming
Dernière édition par Prod'YJ le 25 mai 2019 14:06, édité 2 fois.
Avatar de l’utilisateur
Delias82
Messages : 2278
Inscription : 20 mars 2012 00:00
Prénom : Sylvain
Pays : Suisse
Région : Venoge
Echelle : HO 3rails M&K

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Delias82 » 23 mai 2019 23:45

Bonsoir Yann et bon retour sur 3rails!

Cool, je vais me sentir moins seul 8-)

J'ai déjà fais causer un ATTiny avec ma CS2, mais faute de temps, de circuit pour tester, de mot....tion enfin plein d'excuses pas valables :oops: je n'ai pas vraiment poursuivit. Sinon j'utilisais les MCP2515 + MCP2551 pour l'interface et je vais probablement remplacer le MCP2551 par l'ISO1050 pour avoir une séparation galvanique.

Petite précision: Sur les MS1 le signal de la voie est généré dans la MS maitre, pour la MS2 le signal est généré depuis la Gleisbox. D’où la grosse différence de composant entre les deux.

Quand à la tension en DC elle est de 20 à 22V et non 12V, on multiplie par racine de 2 lors du redressement et non l'inverse. Et on retire quelques chutes de tension. (Dans ce cas 1.4V pour le pont de diode puis 1 à 3V pour le pont en H générant le signal digital.) Actuellement on ne redresse même plus de l'AC on utilise des alimentations à découpage fournissant du 20 à 22V DC directement depuis le 230V (avec un transfo spécifique à la technique du découpage à l’intérieur pour conserver la séparation galvanique).

Le protocole CAN utilisé par le système Märklin est documenté en grande partie (les parties non documentée concerne principalement les mises à jour et les configurations des périphériques du bus), il est disponible directement sur le site de Märklin (dans la partie de la mise à jour de la CS2) en version 2.0, les versions plus récentes c'est malheureusement uniquement par l'accès web de la CS2. (pour la CS3 je ne sais pas). Ce protocole c'est surtout celui de la CS2, MS2, CS3. La MS1 et la CS1 étant d'une conception ESU il peut y avoir des différences . Dans ce cas, le plus simple c'est d'écouter le CAN pour y repérer les commandes avant de les programmer)

Encore un site en plus: Das CAN digital Bahn Projekt, à son démarrage il était plus explicite, maintenant c'est vraiment devenu du commercial.

Bonne suite

Sylvain
---------------------
Voies M et K, CS2, 60128, 6021 et 6070/71.
Mon ancien réseau ici.
Service de digitalisation.

Ce forum est un lieu d'échange. La réponse à une question peut intéresser d'autres personnes. Toute question technique par MP restera donc sans réponse...
Prod'YJ
Messages : 16
Inscription : 07 oct. 2015 16:20
Prénom : Yann
Pays : Belgique
Région : Namur
Ville : Viroinval
Echelle : HO

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Prod'YJ » 24 mai 2019 09:26

Salut Sylvain :)

Déjà, merci pour ton retour!
Point de vue composants, le petit module que je compte utiliser est justement basé sur un MCP2515. J'ai pris ça par pure flemme, j'ai vu que ça servait à ça et que certains l'utilisaient et que ça marchait donc bon...

Concernant le redressement du courant, je suis un peu étonné... Soit mon prof d'électromagnétisme m'apprend des conneries, soit je comprends rien à son cours et j'ai intérêt à me bouger pour son examen, soit tu fais erreur ^^' J'ai la démo sous les yeux, c'est bien une division par racine de 2 (ou une multiplication par sqrt(2)/2, ce qui revient au même)... Bref, je vais faire des mesures, c'est toujours plus parlant ^^

Concernant la docu de la part de Marklin, je suis étonné de ne pas être tombé dessus... Un grand merci pour le tuyau! :D

A bientôt,

Yann.
Remy
Messages : 132
Inscription : 12 oct. 2014 16:20
Prénom : Remy
Pays : France
Région : Bretagne
Ville : Phare ouest
Echelle : HO, CS2, MS2, voie C

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Remy » 25 mai 2019 10:33

Bonjour,

A titre d'information pour la mise en œuvre du bus Can, vous trouverez des informations qui peuvent vous intéresser sur sur le site suivant:
http://www.locoduino.org/spip.php?article130#forum3788

Pour la partie électronique du message, à partir d'un 18V alternatif, une fois redressé double alternance et bien filtré, on obtient une tension continue d'environ 25V . Si on tient compte de la chute de tension dans les diodes du pont de redressement (2 * 0.8V), cela donne environ 23.6V.

C'est bien Délias qui a raison :vieux:

Bonne journée
Rémy
Marklin HO voie C CS2
Prod'YJ
Messages : 16
Inscription : 07 oct. 2015 16:20
Prénom : Yann
Pays : Belgique
Région : Namur
Ville : Viroinval
Echelle : HO

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Prod'YJ » 25 mai 2019 14:03

Bonjour Rémy,

Merci pour le lien :)

Bon, je m'en vais bosser mon cours d'élec parce que j'ai dû rater un chapitre là :o :roll:

A bientôt,

Yann.
Avatar de l’utilisateur
Waldame
Messages : 385
Inscription : 11 nov. 2013 00:00
Prénom : André
Pays : Suisse
Région : Genève
Echelle : HO/G

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Waldame » 25 mai 2019 17:57

je confirme c'est bien Delias qui a raison,

à l'occase je mettrais un oscilloscope sur les voies la prochaine fois, bon faut juste que je trouve une disquette et de quoi ensuite récupérer les images sur la disquette.... c'est pour ça qu'au boulot on les avaient renouvelé.
Voie C et K, 2 MS2 et une CS2, réseaux type Gothardien a découvrir ici. + LGB dans le Jardin
:D :D
Avatar de l’utilisateur
jpaul
Messages : 2077
Inscription : 19 janv. 2012 00:00
Prénom : Jean-Paul
Pays : France
Région : BRETAGNE
Echelle : H0

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar jpaul » 25 mai 2019 18:56

Bonjour à tous,

Sylvain ne pouvais pas se tromper.
Pour éviter la sortie d'un oscilloscope, j'ai un simulateur LTSpice toujours prêt et je savais que le fichier du pont de diodes existait dans ma base. Avec 16 volts efficace en sinusoïdal, soit presque 23 volts en crête, voilà le résultat:

redressement double alternance.jpg


Valeur moyenne à 19 volts

Yann, une petite révision est effectivement nécessaire. ;)

En tout cas la démarche globale pour analyser l'existant et piloter nos petits trains avec Arduino est courageuse et sera pleine d'enseignement BRAVO.

Il va falloir créer une rubrique spécifique pour les mordus de l'électronique ;)

Amitiés du Morbihan
---------------------
Jean-Paul

Réseau piloté par MS2 : viewtopic.php?t=7799
Réseau piloté par TAMS & iTrain : viewtopic.php?t=9014
___
HO voie C / MS2 / TAMS Easy Control / Epoque 2 & 3
Prod'YJ
Messages : 16
Inscription : 07 oct. 2015 16:20
Prénom : Yann
Pays : Belgique
Région : Namur
Ville : Viroinval
Echelle : HO

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Prod'YJ » 25 mai 2019 19:31

Ca y est, j'ai compris ma bêtise :P Je chercherai encore plus la prochaine fois avant de dire des âneries :P
Prod'YJ
Messages : 16
Inscription : 07 oct. 2015 16:20
Prénom : Yann
Pays : Belgique
Région : Namur
Ville : Viroinval
Echelle : HO

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Prod'YJ » 27 mai 2019 16:56

Bonjour à tous :)

Rapide update de mes avancements ;)
J'ai reçu mon petit module pour générer du CAN avec un Arduino, j'ai donc tenté ma chance avec ce projet.
Sans grande surprise, ça marche pas, voici les raisons possibles selon moi:

- je n'ai que du vieux matos, donc pas de MS2 ni de 60113. J'essaye donc de passer par une MS1 en master pour qu'elle lise le CAN que je lui envoie et qu'elle traduise le tout pour le rail. Comme l'a dit Sylvain plus haut, il est possible qu'il y ait des différences entre le CAN de la MS1 et celui de la MS2. Je vais donc essayer de regarder les signaux envoyés pas Railuino et ceux de la MS1, pour voir s'il y a des différences (auquel cas je vais soit devoir m'essayer au bitbanging, soit investir dans un 60113).

- Je possède deux MS1. A l'époque, j'en avais ouverte une pour y bidouiller je sais plus trop quoi mais du haut de mes 13 ans, j'ai bien sûr dû faire une connerie. Depuis, cette MS affiche "NON MASTER" si elle n'est pas... En master. Je me demande si j'y aurais pas zigouillé les soudures du bus CAN... Bref, le souci aujourd'hui est que je suis incapable de reconnaître la bonne de la mauvaise MS, n'ayant plus le câble adaptateur permettant de connecter deux MS au 24088. Je vais donc devoir les ouvrir pour voir si mon hypothèse se confirme et si pas, au moins trouver la MS défaillante.

- Railuino n'est compatible qu'avec l'Arduino Uno et l'Arduino Leonardo. Pour le moment, je n'ai qu'une Mega sous la main, du coup j'ai dû modifier la librairie pour pourvoir l'utiliser. Il n'est pas impossible que j'aie glissé une erreur à force de retourner la datasheet dans tous les sens :? A vérifier aussi, donc.

Du coup voilà pour le moment, si à tout hasard vous aviez d'autres idées de souci potentiel, n'hésitez pas!

À bientôt,

Yann.
Prod'YJ
Messages : 16
Inscription : 07 oct. 2015 16:20
Prénom : Yann
Pays : Belgique
Région : Namur
Ville : Viroinval
Echelle : HO

Re: Homemade Marklin - création d'un circuit intelligent

Messagepar Prod'YJ » 28 mai 2019 22:50

Bonsoir à tous,

Ca y est, cette fois j'ai réellement besoin d'aide de la part des plus expérimentés.
J'ai commencé à tester les hypothèses posées dans mon post précédent. Ainsi, j'ai voulu écouter le signal CAN créé par la MS1.

Pour cela, j'ai fait un petit analyseur logique avec un Arduino Mega, étonnamment ça a l'air de marcher franchement pas mal... J'ai eu un peu de mal principalement parce que le signal CANH varie de 2.5 à 3.5V et le CANL de 1.5 à 2.5V, et l'arduino reconnait un niveau haut à partir de 3v et un niveau bas en dessous de 1.5v. Donc lorsqu'on a un bit récessif (à 2.5v sur le CANL et sur le CANH), l'arduino est pas bien sûr de sa lecture et retourne une valeur un peu au pif.
J'ai donc bricolé un truc avec des amplis opérationnels montés en comparateurs; l'entrée non inverseuse branchée à l'un des deux signaux et l'inverseuse sur un potentiomètre afin de pouvoir contrôler le niveau de comparaison. Voilà le résultat:
Capture.PNG


En canal 1 nous avons le signal CANH et en canal 2 le CANL
Il est bien clair que le résultat ne correspond pas à ce qu'on pourrait espérer, en effet les symétries ne sont pas systématiques... J'ai tenté d'échanger les entrée des signaux sur l'arduino, le CANH donne la même chose et le CANL aussi.

Ainsi j'en arrive à ma question: ce résultat viendrait-il de mon montage à base d'amplis ops, du fait qu'un arduino en analyseur logique c'est pas une bonne idée ou alors le signal pourrait-il effectivement être défaillant?

Au passage, j'ai identifié ma MS1 défaillante (qui l'est effectivement), les tests ont bien entendu été faits avec l'autre.

Merci d'avance,

Yann.

Sources pour ce post:
https://fr.wikipedia.org/wiki/Bus_de_données_CAN
https://www.arduino.cc/reference/en/lan ... constants/

Revenir vers « Technique »



Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité