LOCODUINO

Discussions Générales => Bus CAN => Discussion démarrée par: eric-3r le novembre 01, 2016, 10:10:35 pm

Titre: BUS CAN 3 rails
Posté par: eric-3r le novembre 01, 2016, 10:10:35 pm
Suite à l’intérêt suscité par quelques membres et en réponse à Dominique sur le post présentation,
J’ai ouvert un nouveau sujet sur le « BUS CAN 3 rails ».
J’utilise le BUS CAN sur le réseau 3R du club CFC Centre. (Nouveau réseau 3 rails)
C’est un BUS communication renommé  fiables, il est souvent utilisé dans automobile.
Pour une fois la marque « Marklin » utilise un système standardisé !!  Railuino s'en est inspiré il y a déjà  5 ans. (Fin 2011) 
J’ai fait une présentation pour le club CFC à la fin 2015, les documents sont disponible sur le site du CFC à la rubrique Technique.  http://cfc.hebfree.org/
Le BUS CAN 3 rail du club est organisé par :
- 2 ordinateurs : Arduino + CAN BUS. (Module CAN au-dessus d’un Arduino UNO)
- 1 Mobile Station 2 Marklin.
- 1 Boitier de raccordement Marklin 60113
Cordialement
Eric
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 02, 2016, 09:54:44 am
Excellente initiative !
Avant de réaliser ma première centrale DCC. J'avais acheté une MS2 avec son alim et son boîtier, pour environ 60€. Elle devait servir à programmer uniquement et à comparer par rapport à mes réalisations.

J'avais remarqué que le boîtier se commande en protocole CAN. J'avais regardé RailUino tout naturellement mais n'avait pas été plus loin.

C'est bien de mettre ce sujet sur le tapis, maintenant qu'il existe des cartes CAN comme celle de Locoduino et d'autres : nous allons regarder comment adapter le logiciel à ces cartes.
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 02, 2016, 06:16:45 pm
Je fais référence en particulier à cette petite carte à moins de 2€ :

http://www.ebay.fr/ulk/itm/311520457612  (http://www.ebay.fr/ulk/itm/311520457612)
Titre: Re : BUS CAN 3 rails
Posté par: eric-3r le novembre 02, 2016, 08:13:04 pm
Bonsoir Dominique,
Oui c'est pas cher pour une carte CAN. :)
Les cartes utilisées pour Railuino sont produites par "Watterott electronic" et "MC Hobby" elles coûtent un peu plus de 15€ en Kit composants de surfaces montés.  ;)
Elles se montent directement sur l'Arduino. C'est les même composants que celle de Locoduino.
J'ai une documentation de Marklin en Allemand  :-[ pour le protocole BUS CAN si ça peu aider.

Dans le but d'évoluer vers une supervision donc de contrôler les trains, les signaux et les aiguillages, j'ai fait des essais avec un module CAN-USB à 18€ en chine utilisé en automobile et Itrain en version démo mais ça n'a rien donné, il manque certainement les données de protocole.
Le module fonctionne en réception de données avec son programme propriétaire, :( c'est déjà ça !!

Il y a une carte "CC-Schnitte 2.1" BUS CAN USB qui fonctionne avec la MS2 et Itrain, de "Das CAN digital Bahn Projekt" elle est vendue +/- 140€, c'est un peu cher quand on voit les prix des autres modules  :-\ 
Cordialement
Eric
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 02, 2016, 08:40:09 pm
Bonsoir Eric,

Je ne vois pas vraiment ce qui interdirait d'utiliser une carte CAN à 1,60€ plutôt qu'une carte à 15€ quand le chip qui gère le bus CAN est un MCP2515 dans les 2 cas.

Le seul obstacle est le quartz à 8MHz au lieu de 16, mais je dois regarder la bibliothèque qui semble l'avoir prévu, mais cela reste à vérifier.

Bien-sur cela pourrait faire perdre un peu de business à 1 ou 2 revendeurs de kits mais chacun est libre d'utiliser de l'open source ou pas.

Quand aux questions de la supervision, de la rétrosignalisation, des commandes d'aiguilles, de la signalisation et des itinéraires, Locoduino est le meilleur endroit, pour moi, pour choisir sa propre solution entre celles de Denis, Pierre et Jean-Luc, pour le gestionnaire et généraliser le bus CAN pour toutes les interconnexions.

Il y a pas mal d'articles sur les architectures possibles et quelques articles à venir sur un usage plus intensif du CAN "maitrisé par soi-même".

Tout cela nous promet des échanges très instructifs.

Amicalement
Dominique
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 02, 2016, 10:22:17 pm
J'ai même retrouvé le lien vers la bibliothèque permettant d'utiliser le MCP2515 à 8MHz donc, sans modifier la carte CAN "la moins cher du marché"

http://forum.locoduino.org/index.php?topic=2.msg1155#msg1155 (http://forum.locoduino.org/index.php?topic=2.msg1155#msg1155)
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 02, 2016, 11:10:28 pm
Je viens de jeter un coup d'oeil dans les bibliothèques :

Il y a quand même un travail certain à faire pour utiliser cette bibliothèque à la place de celle de Railuino qui est très différente, plus ancienne  et bien moins documentée mais qui contient la plupart des commandes DCC nécessaires.

Inversement on devrait pouvoir essayer d'utiliser la bibliothèque de Railuino avec cette petite carte CAN en y reportant les constantes pour le 8MHz.

Une expérience intéressante en perpective !

Titre: Re : BUS CAN 3 rails
Posté par: eric-3r le novembre 03, 2016, 11:26:19 am
Bonjour, et merci pour les infos  :)
Je vais de ce pas commander quelques petites cartes, je voudrais multiplier le nombre de postes de commande au club CFC à très peu de frais. ;)
Pour chaque poste supplémentaire, il faut: 1 Carte BUS CAN, 1 Arduino , et un PC avec le PGM Desktop Station. (PC même ancien)
Le nombres de membres augmente en 3 rails et le réseau peut faire rouler à vue (pas encore de supervision) +/- 7 trains + 3 locos de manœuvres.
Si ça ne va pas du coté soft (8MHZ), comme j'ai vu sur le forum, on peu changer le quartz à 16MHZ.
Cordialement
Eric
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 03, 2016, 12:14:22 pm
Changer le quartz est possible : je l'ai fait et la carte fonctionne comme la carte Locoduino.

Ajouter la possibilité d'initialisation avec le quartz à 8 MHz est probablement possible en récupérant les lignes de code dans la bibliothèque de la carte Locoduino que j'ai indiquée ci-dessus et en les intégrant dans le logiciel RailUino qui est carrément différent.

À côté de cela, j'aimerai comprendre un peu mieux la connexion des 4 LMD18200 :
-la séparation des zones
-la synchronisation des signaux
-est-ce que le boîtier Marklin est toujours utile ? D'ailleurs que fait-il de plus qu'un LMD18200 ?

Je pense qu'il y a des briques de RailUino qui sont réutilisables dans les projets DCC.

Merci d'avance
Titre: Re : BUS CAN 3 rails
Posté par: eric-3r le novembre 03, 2016, 07:10:09 pm
Pour la séparation des zones ?
Le réseau 3R se compose 4 zone, : contour externe, contour interne, voies de triage et 1er étage. 
Tout les Boosters et le boitier sont séparé électriquement.
Juste les masses des rails sont connectées ensemble (Fil brun en 3 rails)   

La synchronisation des signaux ?
Les signaux sont synchronisé, entre l'entrée et la sortie des Booster.
Il y a 2 cas possible
La loco passe d'une zone connectée au boitier a un booster.   
La loco passe d'un booster à un autre.

Est-ce que le boîtier Marklin est toujours utile ? D'ailleurs que fait-il de plus qu'un LMD18200 ?
Dans le boitier Marklin, il y a une série de circuit pour décoder le signal du bus CAN, je n'ai pas le schéma. :-[
Au début la sortie du boitier était connectée aux rails mais 2,15A c'est trop peu.       
Les 4 boosters sont connecté en amplificateur de courant à la sortie du boitier.
Et le boitier est utile pour la reconnaissance MFX en mode By-pass.
J'espère avoir bien répondu a tes questions.
Titre: Re : BUS CAN 3 rails
Posté par: patrick le novembre 23, 2016, 07:38:25 pm
Bonjour,

Je m'intéresse particulièrement au CanBus pour l'utiliser intensivement dans mon projet d'automate. En parcourant ce premier fil de discussion (je viens de m'inscrire) je vois qu'il y a un questionnement au sujet de la fréquence du crystal. (8MHz vs 16MHz...) Quel est-il exactement?

Au plaisir,
Patrick
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 23, 2016, 07:44:04 pm
Bonjour Patrick,

Etes-vous bien dans le modélisme ferroviaire ?

Si vous lisez les différents sujets relatifs au CAN et les articles, vous verrez qu'il existe des cartes CAN à base de MCP2515 à 16 Mhz ou 8 Mhz.

Les 2 fonctionnent mais nous n'avons pas encore testé l'inter-fonctionnement entre une carte à 16MHz et une carte à 8MHz. L'avez-vous testé ?
Titre: Re : BUS CAN 3 rails
Posté par: patrick le novembre 23, 2016, 08:03:33 pm
Oui, je suis dans le modélisme ferroviaire ;-)

Et oui, j'ai déjà testé l'inter-communication entre plusieurs horloges, 8, 16 et 20MHz. Pour ma part, j'utilise du 20MHz dans mes montages.

Si je me souviens bien (mais je peux me tromper - je ne suis pas électronicien), j'ai fait le test entre 8Mhz et 20Mhz. La chose à faire est simplement d'ajuster les bitrates (débits) lors de l'initialisation des différentes cartes. Exemple:
- sur la carte 8MHz, initialiser le protocole avec la constante CAN_250KBPS
- sur la carte 20MHz, initialiser le protocole avec la constante CAN_100KBPS

En effet, cette fréquence est utilisée pour cadencer l'horloge de lecture des bits qui proviennent du flux/transciever (MCP2551). Il suffit normalement d'avoir la même valeur: ici, cela donne 8x250K = 20x100K.

En espérant que cela vous aidera.
Patrick

Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 23, 2016, 08:08:30 pm
Merci, très intéressant.

J'ai trouvé une bibliothèque qui supporte les 8 et 16 MHz, mais pas le 20MHz.

Votre astuce est très efficace. Cela mériterait que j'ajoute un paragraphe dans les articles sur le bus CAN.

Cordialement
Dominique
Titre: Re : BUS CAN 3 rails
Posté par: patrick le novembre 23, 2016, 08:32:19 pm
Les specs du 2515 autorisent 4, 8, 16 et 20MHz.

Ensuite, je suis très surpris de l'assertion: "bibliothèque qui supporte les 8 et 16 MHz". Normalement, la seule condition pour que tous les modules sur un même bus puissent communiquer est d'avoir le même bitrate/débit et non la même fréquence d'horloge... Je ne pense pas qu'une librairie puisse être écrite pour telle ou telle fréquence...

La seule chose que je peux imaginer, c'est que les bitrates soient calculés pour une fréquence donnée au moment de l'écriture de la librairie! Mais ensuite, il suffit d'ajuster les ratios entre chaque module comme dans mon exemple précédent... Dans mes tests, je ne me souviens pas avoir dû modifier quoi que ce soit dans la librairie que j'utilise pour la faire fonctionner à différentes fréquences.

Mais bon, c'est ma compréhension de la chose... ;-)
Au plaisir,
Patrick

Titre: Re : BUS CAN 3 rails
Posté par: patrick le novembre 23, 2016, 08:40:52 pm
Pour info, la spec dit: 5.1. All devices on the CAN bus must use the same bit rate. However, all devices are not required to have the same master oscillator clock frequency

Pour les non-anglophones: tous les modules sur le bus doivent utiliser le même débit. Il n'est pas requis que tous les modules aient la même fréquence d'horloge.
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le novembre 23, 2016, 11:19:25 pm
Je pense que je suis d'accord avec vous ! Mais je n'avais pas décortiqué de bibliothèque CAN jusqu'à présent.

Dans le fichier mcp_can_dfs.h
  2012 Copyright (c) Seeed Technology Inc.  All right reserved.
  Author:Loovee
  Contributor: Cory J. Fowler
  2014-1-16

il y a 2 définitions des paramètres pour les horloges à 16MHz et 8 MHz, exemple :
/*
 * clock
 */
#define MCP_16MHz   1
#define MCP_8MHz   2

/*
 *  speed 16M
 */
#define MCP_16MHz_1000kBPS_CFG1 (0x00)
#define MCP_16MHz_1000kBPS_CFG2 (0xD0)
#define MCP_16MHz_1000kBPS_CFG3 (0x82)

#define MCP_16MHz_500kBPS_CFG1 (0x00)
#define MCP_16MHz_500kBPS_CFG2 (0xF0)
#define MCP_16MHz_500kBPS_CFG3 (0x86)

/*
 *  speed 8M
 */
#define MCP_8MHz_1000kBPS_CFG1 (0x00)
#define MCP_8MHz_1000kBPS_CFG2 (0x80)
#define MCP_8MHz_1000kBPS_CFG3 (0x00)

#define MCP_8MHz_500kBPS_CFG1 (0x00)
#define MCP_8MHz_500kBPS_CFG2 (0x90)
#define MCP_8MHz_500kBPS_CFG3 (0x02)


Ces valeurs sont utilisées dans mcp_can.cpp, dans mcp2515_configRate(const INT8U canSpeed, const INT8U clock), exemple :

switch (clock)
   {
   case (MCP_16MHz) :
      switch (canSpeed)
      {
                 case (CAN_500KBPS) :
         cfg1 = MCP_16MHz_500kBPS_CFG1;
         cfg2 = MCP_16MHz_500kBPS_CFG2;
         cfg3 = MCP_16MHz_500kBPS_CFG3;
         break;

      case (CAN_1000KBPS) :
         cfg1 = MCP_16MHz_1000kBPS_CFG1;
         cfg2 = MCP_16MHz_1000kBPS_CFG2;
         cfg3 = MCP_16MHz_1000kBPS_CFG3;
         break;
                }
         case (MCP_8MHz) :
      switch (canSpeed)
      {
                 case (CAN_500KBPS) :
         cfg1 = MCP_8MHz_500kBPS_CFG1;
         cfg2 = MCP_8MHz_500kBPS_CFG2;
         cfg3 = MCP_8MHz_500kBPS_CFG3;
         break;

      case (CAN_1000KBPS) :
         cfg1 = MCP_8MHz_1000kBPS_CFG1;
         cfg2 = MCP_8MHz_1000kBPS_CFG2;
         cfg3 = MCP_8MHz_1000kBPS_CFG3;
         break;
                }
         }
mcp2515_setRegister(MCP_CNF1, cfg1);
mcp2515_setRegister(MCP_CNF2, cfg2);
mcp2515_setRegister(MCP_CNF3, cfg3);

Je pense que ça doit revenir au même, de choisir le couple horloge-vitesse quand il y a le choix de l'horloge, que d'adapter le choix de la vitesse comme vous l'avez expliqué quand la bibliothèque ne propose qu'une seule horloge. Par exemple, choisir CAN_1000KBPS pour avoir un bus à 500k avec une carte dont le quartz est à 8MHz.

Mais votre solution est bien plus simple car la plupart des bibliothèques CAN (dont celle préconisée sur Locoduino) sont écrites pour une horloge à 16MHz seulement.
Titre: Re : Re : BUS CAN 3 rails
Posté par: jacou le mars 10, 2017, 11:20:53 am
Je fais référence en particulier à cette petite carte à moins de 2€ :

http://www.ebay.fr/ulk/itm/311520457612  (http://www.ebay.fr/ulk/itm/311520457612)

Bonjour,

Je débarque, peut-être ai-je manqué un commentaire, mais cette carte "peuchère" me paraît fonctionner seulement en RX !
C'est d'ailleurs ce qui est mis dans le libellé du produit!
Sur les photos on observe également qu'il n'est possible que de connecter une seule paire de fils sur le bus CAN.

Jacques
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le mars 10, 2017, 11:37:41 am
Je fais référence en particulier à cette petite carte à moins de 2€ :

http://www.ebay.fr/ulk/itm/311520457612  (http://www.ebay.fr/ulk/itm/311520457612)

Bonjour,

Je débarque, peut-être ai-je manqué un commentaire, mais cette carte "peuchère" me paraît fonctionner seulement en RX !
C'est d'ailleurs ce qui est mis dans le libellé du produit!
Sur les photos on observe également qu'il n'est possible que de connecter une seule paire de fils sur le bus CAN.

Jacques

Bonjour Jacques,

Il ne faut pas prendre "à la lettre" les libellés des vendeurs sur eBay, qui sont souvent traduits par un robot.

Si vous regardez les articles sur le site Locoduino, vous verrez que cette carte fonctionne en émission ET réception !

Le bus CAN est bidirectionnel : une seule paire suffit (lisez les articles !!!)

Amicalement
Titre: Re : BUS CAN 3 rails
Posté par: DDEFF le mars 10, 2017, 12:54:58 pm
Tant qu'on est chez ce fournisseur, je voudrais savoir si :
http://www.ebay.fr/itm/HX1838-VS1838-NEC-Infrared-IR-Wireless-Remote-Control-Sensor-Module-For-arduino-/400529215865?tfrom=311520457612&tpos=top&ttype=price&talgo=undefined (http://www.ebay.fr/itm/HX1838-VS1838-NEC-Infrared-IR-Wireless-Remote-Control-Sensor-Module-For-arduino-/400529215865?tfrom=311520457612&tpos=top&ttype=price&talgo=undefined)
est utilisable pour l'article récent sur une télécommande IR.
Parce que, à 1.14 €, on peut "prendre le risque"... ;)

Denis
Titre: Re : BUS CAN 3 rails
Posté par: Dominique le mars 10, 2017, 01:39:41 pm
Tu devrais poser la question directement à l'auteur de l'article ou en bas de l'article.

Néanmoins je "prendrais le risque" pour 1,14€  :o

Titre: Re : BUS CAN 3 rails
Posté par: jacou le mars 10, 2017, 07:51:56 pm
Dominique,

Après relecture de beaucoup d'articles, je concède que vous avez mille fois raison.
Sans pour autant chercher d'excuses, je dois avouer que le schéma de principe de la carte m'a rendu confus car sur cette carte vous avez fait le choix d'utiliser deux RJ11 avec 2 paires pour chaque connexion.
Ces deux paires peuvent me sembler utiles afin d'éviter d'avoir des inductions parasites sur des distances importantes ( en effet chaque paire est torsadée à un intervalle différent, mais bon c'est pousser le bouchon un peu loin non !)
Mon petit réseau fait 2m sur 1m40. (ce n'est donc pas un Airbus !) Les longueurs de câbles seront donc faibles.
Il me semble que les cartes que je prévois de faire pourront être réalisées avec des borniers à vis.
Ces connecteurs seront moins encombrants que les RJ11 et aussi moins chers.
Pour ce qui me concerne donc tout est bien compris.

Pour ce qui concerne la carte Locoduino, je ne comprends pas ceci :
si vous utilisez 2 paires, d'accord mais !
je dirais que chaque paire devrait être connectée sur un fil à CANH et à l'autre à CANL.
Ce n'est pas le cas sur la carte Locoduino !

Pourquoi ?

Bàv
Jacques ( PapyJack)
Titre: Re : Re : BUS CAN 3 rails
Posté par: Dominique le mars 10, 2017, 08:23:40 pm
Pour ce qui concerne la carte Locoduino, je ne comprends pas ceci :
si vous utilisez 2 paires, d'accord mais !
je dirais que chaque paire devrait être connectée sur un fil à CANH et à l'autre à CANL.
Ce n'est pas le cas sur la carte Locoduino !

Pourquoi ?

Bàv
Jacques ( PapyJack)

Non c'est tout bête : les 2 prises RJ11 sont en parallèle pour permettre le chainage des cartes et relier les cartes 2 à 2 avec un cable droit.
Il faut mettre la résistance de 120 Ohm en bout de chaine (d'où le strap).

Je joins le schéma :
Titre: Re : BUS CAN 3 rails
Posté par: Jean-Luc le mars 10, 2017, 11:01:36 pm
Bonsoir

Le choix d'une RJ11 a été fait pour avoir une connectique facile à brancher et débrancher. Le choix de mettre le CANH sur les deux plots centraux et le CANL sur les deux plots latéraux permet d'utiliser indifféremment des câbles droits ou  croisés (croisement des deux fils centraux).

Concernant le prix des socles RJ11, ils sont à 50c chez TME : http://www.tme.eu/fr/details/rj11gk/connecteurs-rj/ninigi/
Titre: Re : BUS CAN 3 rails
Posté par: jacou le mars 10, 2017, 11:17:15 pm
Jean-Luc et Dominique

Pour ce qui concerne le câblage des RJ11, vos motivations me sont claires maintenant.
Cependant je pense que vous n'équiperez jamais un Airbus avec un tel câblage car les paires torsadées ne sont pas respectées.

Je n'ai pas d'autres commentaires puisque la finalité du projet est différente.

Merci de vos remarques et bonne soirée.
Jacques (PapyJack)