Auteur Sujet: BUS CAN 3 rails  (Lu 3995 fois)

patrick

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #15 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.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1095
  • 100% Arduino et N
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #16 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.
« Modifié: novembre 24, 2016, 09:21:43 am par Dominique »

jacou

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : Re : BUS CAN 3 rails
« Réponse #17 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

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

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1095
  • 100% Arduino et N
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #18 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

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
« Modifié: mars 10, 2017, 11:47:47 am par Dominique »

DDEFF

  • Sr. Member
  • ****
  • Messages: 424
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #19 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
est utilisable pour l'article récent sur une télécommande IR.
Parce que, à 1.14 €, on peut "prendre le risque"... ;)

Denis

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1095
  • 100% Arduino et N
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #20 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


jacou

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #21 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)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1095
  • 100% Arduino et N
    • Voir le profil
Re : Re : BUS CAN 3 rails
« Réponse #22 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 :

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1091
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #23 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/

jacou

  • Newbie
  • *
  • Messages: 3
    • Voir le profil
Re : BUS CAN 3 rails
« Réponse #24 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)