LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: jacques68 le août 16, 2017, 03:59:50 pm

Titre: Rétrosignalisation/Bus Can
Posté par: jacques68 le août 16, 2017, 03:59:50 pm
Bonjour à tous!!

     Merci de déplacer mon sujet s'il ne se trouve pas dans la bonne section. :(

J'ai entrepris ce jour de tester la rétrosignalisation avec le Bus Can présenté ici: http://www.locoduino.org/spip.php?article180 (http://www.locoduino.org/spip.php?article180)

Malheureusement je ne suis pas allé encore très loin car lors de la compilation pour réaliser le Gateway j'ai un message d'erreur que voici:
Citer
Arduino : 1.6.11 (Windows 10), Carte : "Arduino/Genuino Uno"

sketch\CAN_S88_Gateway.cpp: In function 'void Setup(unsigned char)':

CAN_S88_Gateway.cpp:88: error: no matching function for call to 'MCP_CAN::begin(const int&)'

         if (CAN_OK == can.begin(baudrate)){break;}

                                         ^

sketch\CAN_S88_Gateway.cpp:88:41: note: candidate is:

In file included from sketch\CAN_S88_Gateway.cpp:9:0:

C:\Users\jack\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.h:108:11: note: byte MCP_CAN::begin(byte, byte, byte)

     INT8U begin(INT8U idmodeset, INT8U speedset, INT8U clockset);       // Initilize controller prameters

           ^

C:\Users\jack\Documents\Arduino\libraries\MCP_CAN_lib-master/mcp_can.h:108:11: note:   candidate expects 3 arguments, 1 provided

sketch\CAN_S88_Gateway.cpp: In function 'void Loop()':

CAN_S88_Gateway.cpp:105: error: 'class MCP_CAN' has no member named 'readMsgBufID'

                 can.readMsgBufID(&Id,&Len,Buf);

                     ^

exit status 1
no matching function for call to 'MCP_CAN::begin(const int&)'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Une idée??? >:( >:(
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 17, 2017, 11:37:50 am
Ce n'est probablement pas la bonne bibliothèque mcp_can qui est chargée dans l'IDE.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Thierry le août 17, 2017, 12:03:26 pm
Et le répertoire de la librairie MCP_CAN_lib-master devrait s'appeler juste mcp_can en minuscules.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 17, 2017, 02:03:55 pm
Bonjour
Merci pour vos réponses.
Pour la mauvaise librairie je vais regarder de ce coté voir si j'en trouve une autre.
J'ai pourtant prise celle indiqué dans le tuto.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 17, 2017, 09:15:30 pm
Je ne vois pas d'autres librairies... :-[
La seule trouvée est celle du tuto: https://github.com/coryjfowler/MCP_CAN_lib (https://github.com/coryjfowler/MCP_CAN_lib)
J'ai tenté une réinstallation mais idem je retombe sur le meme message
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 17, 2017, 10:44:32 pm
En cherchant un peu sur Locoduino :

http://www.locoduino.org/spip.php?article148 (http://www.locoduino.org/spip.php?article148)

Mais, apparemment elle a changé.
Elle est aussi adaptée au 2515 à 8 MHz.

En regardant le .h il doit être facile de trouver la bonne syntaxe. Il n'y a pas toujours de mode d'emploi détaillé. Mais on fait comme ça aussi.

Je vais modifier l'article en conséquence dés mon retour à la fin du mois.
Merci d'avoir soulevé la question  ;)

Je peux poster ma version de référence pour l'article. Mais il faudra attendre un peu.
Dominique
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 18, 2017, 07:43:36 pm
Ok merci Dominique
Le lien que tu m'as fournit a fonctionné, j'ai pu compiler et plus de messages d'erreurs.
Je vais pouvoir avancer un peu plus. Par contre je viens de voir que mon quartz du 2515 est à 8 Mhz et je vois que dans le sujet du lien que tu as mi, il est à 16Mhz.
  Cela fonctionnera quand meme ou vaut mieux changer le quarz? J'ai dans mon stock des quartz 16Mhz :-*
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 18, 2017, 07:50:55 pm
Le fonctionnement à 8 MHz est indiqué sur le lien vers Seeedstudio. Ça doit être une evolution naturelle de la bibliothèque puisqu'on trouve des cartes CAN à 8 MHz maintenant.

Mais si toutes les cartes qui causent ensemble sont du même type, cela n'a pas d'importance !
À 8 Mhz les échanges risquent seulement d'être 2 fois moins rapide qu'à 16 MHz.

Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 20, 2017, 08:39:29 pm
Aujourd'hui j'ai passé une journée de tests..... :-\
Pour l'instant pas concluant car aucun retour de rétro-signalisation.
Niveau cablage tout à l'air correct j'ai tout revérifié plusieurs fois.
J'ai testé juste avec 2 cartes Nano une utilisée comme Gateway et l'autre comme Detector. J'ai donc aussi 2 cartes Can. Sur les 2 cartes j'ai relié les 2 straps (j'ai testé aussi sans les reliés).
  Sur la carte Détector j'ai branché 6 fils un pour chaque canton de détection. Le 1er est branché sur la pin Rx du nano, le 2è sur la pin marqué 2 sur la carte le 3 sur 3 etc...
 Bilan:....pas de detection... >:(
J'ai passé la journée à chercher le pourquoi du comment en vain...
A première vue je dirai que cela vient du Gateway. En effet si je regarde ma carte Nano, une seule led est allumé. Sur la carte Detector les 2 leds sont bien allumées.
  Maintenant je peux me tromper, mais dans tous les montages que j'ai effectué, entre autre dans le domaine de la domotique ou j'utilise beaucoup de cartes Nano, les 2 leds sont allumées.
   Pour enlever le doute du Nano defectueux, j'ai téléversé le sketch dans un nouveau, mais aucune amélioration... :o
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 21, 2017, 08:32:14 am
D'après ce que je comprends, l'Arduino détecteur reçoit la rétro et la transmet sur le CAN. Ce sont 2 processus distincts à tester séparément.

Côté gateway c'est la même chose.

En décomposant ce qui fonctionne et ce qui ne fonctionne pas, je pense que tu vas trouver où se situe l'anomalie. Pour cela il faut écrire des programmes de test simples.

Bon courage.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 21, 2017, 08:48:06 pm
 :) :)
A force de chercher on trouve...... 8)
  J'ai repris le programme en essayant de bien comprendre ce qui doit ce passer.  Pour moi comme tu le disais le Gateway ne fonctionnait pas correctement. En désespoir de cause j'ai chargé le programme dans un autre Arduino nano et du coup cela a fonctionner!!!
  Donc le soucis provenait de l'Arduino lui meme ou du programme mal chargé dans cet Arduino (je le testerai plus tard).

   Cela dit mon soucis n'est pas terminé un autre est apparu..... :'(
J'ai actuellement un circuit oval de test donc j'ai tout naturellement branché la détection via le bus can sur ce circuit. Je tourne avec une centrale z21 et le logiciel cdmrail.
   Quand le train passe dans une zone de détection je vois bien la detection sur l'ecran ......mais avec environ 4s de retard, le train est déjà sorti de sa zone quand la détection apparait à l'ecran.....Cela à vitesse réduite du train. Si le train tourne à pleine vitesse la pas de détection  du tout....

  Comme j'utilise un Can 8Mhz cela peut il provenir de celui-ci? Un 16 Mhz serait plus rapide. A moins que dans le programme l'on puisse augmenter la vitesse...
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 21, 2017, 11:00:34 pm
Citer
  Comme j'utilise un Can 8Mhz cela peut il provenir de celui-ci? Un 16 Mhz serait plus rapide. A moins que dans le programme l'on puisse augmenter la vitesse...

À quelle vitesse est programmé le bus CAN ?
1Mb/s ? 500Kb/s ?

Je pense aussi qu'il faut bien relire mon article cite précédemment : il y a quelques précautions à respecter pour ne pas perdre des messages.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Jean-Luc le août 22, 2017, 08:49:17 am
Même à 125kbits/s, il faut moins d'une milliseconde pour transmettre un message. Ce n'est donc pas La vitesse du bus et encore moins du quartz qui explique ce délai de 4s
Titre: Re : Re : Rétrosignalisation/Bus Can
Posté par: Jean-Luc le août 22, 2017, 09:02:19 am
Quand le train passe dans une zone de détection je vois bien la detection sur l'ecran ......mais avec environ 4s de retard, le train est déjà sorti de sa zone quand la détection apparait à l'ecran.....Cela à vitesse réduite du train. Si le train tourne à pleine vitesse la pas de détection  du tout....

Je reviens sur cette dernière phrase : si le délai de 4s était dû à un délai de transmission de l'information dans le réseau ou la succession de réseaux, il n'y aurait pas d'absence de détection si La loco va vite.

Quel est le schéma du détecteur ?
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 22, 2017, 08:48:11 pm
J'ai refait des tests vite fait ce jour (pas eu le temps d'aproffondir) mais sans plus de résultats......
Pour le detecteur de courant c'est le meme que j'utilise avec la rétrosignalisation par Arduino. Fonctionnement impec. De plus mon détecteur est équipé d'une led et dès qu'un train pénètre dans un canton la led s'allume de suite et je vois simultanément à l'ecran la détection.
  Le shéma se trouve ici en milieu de page, avec un opto H11AA1: http://www.ho-ptit-train.be/Html/cablage_03.html (http://www.ho-ptit-train.be/Html/cablage_03.html)
Je ne pense pas que le détecteur puisse etre responsable....
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 22, 2017, 10:46:01 pm
Effectivement, le détecteur doit être hors de cause.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 23, 2017, 09:24:53 am
 ;D J'ai trouvé!!!

     Pour mon test j'utilise un Gateway avec un module Can et un Detector avec un module Can et j'ai branché 3 zones de détections. Comme dit dans mon précédent message la détection sur l'écran pc n'était effective qu'après le passage du train et à vitesse réduite.
    Maintenant cela fonctionne dès l'entrée dans la zone et à pleine vitesse aussi!! :-* :-* :-*
  Ce que j'ai modifié? Dans le tuto il est précisé qu'il faut mettre une résistance de 120 Ohms sur la première et la dernière carte Can. N'en n'ayant que 2 j'ai logiquement fermé le strap sur les 2 cartes.  Aujourd'hui pour test j'ai ouvert les 2 straps et tout fonctionne correctement. Si je referme le strap le soucis apparait à nouveau.
   Pour valider le tout je vais cabler aujourd'hui toutes mes zones de rétro sur le bus Can.
A+ et merci de votre aide 8)
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Jean-Luc le août 23, 2017, 09:26:36 am
Quelles cartes CAN utilises-tu ?
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 23, 2017, 10:53:50 am
Sur les cartes à 8mhz pas chères (1,5€, c'est dingue !) mentionnées dans l'article :
http://www.ebay.fr/ulk/itm/311520457612

Si c'est celle-la,  le strap court-circuite les sorties et la résistance de 120 ohms est intégrée. Il faut regarder le circuit imprimé à la loupe.
C'est un strap idiot !
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Jean-Luc le août 23, 2017, 11:05:06 am
Je strap est sur J1, je n'ai pas l'impression que ça court-circuite les sorties.

Ne me dites pas que vous mettez le strap sur J2  :)

(http://i.ebayimg.com/images/g/u6UAAOSwepJXUc3I/s-l1600.jpg)
Titre: Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 23, 2017, 11:41:39 am
C'est bien ces cartes que j'ai, et j'ai bien ponté sur j1 et pas j2 ;D
Là je viens de brancher mes 12 cantons et lancé un mode run. Résultat tout fonctionne impec!!! Toutes les detections sont bien faites avec 2 trains qui tournent.
J'ai eu une petite frayeur car en mettant en route j'ai eu 4 detections permanante et san sque j'en trouve la raison. J'ai coupé mon serveur revérifié mes cablages. Tout ok. J'ai redémarrer mon serveur et à partir de là tout à fonctionné.
    C'est vrai que c'est branché sur une plaque d'essai un peu brouillon donc un simple faux contact quelque part  a pu suffire à me fiche le bazzar..... :o
Mais tout est rentré dans l'ordre et fonctionnement parfait.

     Avec mes Arduino j'ai donc pu faire toute la rétrosignalisation à base du Bus Can que je vais opter pour mon réseau définitif, ainsi que le pilotage des aiguillages et cet optocoupleur 6N137 qui ma causé bien du mal...... 8).
     Un grand merci à vous tous qui partagé votre passion et vos connaissances!!!
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 23, 2017, 01:57:43 pm
J1 mets en service la résistance de 120 ohms et J3 court-circuite le bornier J2. Je n'ai pas compris l'intérêt de J3 sauf pour y brancher un connecteur femelle au lieu d'utiliser le bornier.

C'est une source d'erreur que notre ami Jacques68 à du faire  ???
Mais l'article de JPClaude est très clair sur la mise en place correcte du strap.


Ça prouve la bonne résistance aux court-circuits du transmetteur !!
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Jean-Luc le août 23, 2017, 02:15:17 pm
Oui pardon, J3, pas J2 qui est le bornier.

J3 c'est pour brancher des fils ou utiliser un connecteur au lieu du bornier.

Oui, d'une part les transceiver CAN sont conçus pour supporter les courts circuits, de la datasheet du TJA1050

Citer
A current-limiting circuit protects the transmitter output stage from damage caused by accidental short-circuit to either positive or negative supply voltage, although power dissipation increases during this fault condition.


D'autre part, le contrôleur va rapidement se mettre en bus-off et cesser d'émettre en cas de court jus permanent.
Titre: Re : Rétrosignalisation/Bus Can
Posté par: Dominique le août 23, 2017, 02:21:43 pm
Quand on y a goûté, on ne peut se passer du CAN  ;D
Titre: Re : Re : Rétrosignalisation/Bus Can
Posté par: jacques68 le août 24, 2017, 10:15:37 am
J1 mets en service la résistance de 120 ohms et J3 court-circuite le bornier J2. Je n'ai pas compris l'intérêt de J3 sauf pour y brancher un connecteur femelle au lieu d'utiliser le bornier.

C'est une source d'erreur que notre ami Jacques68 à du faire  ???
Mais l'article de JPClaude est très clair sur la mise en place correcte du strap.


Ça prouve la bonne résistance aux court-circuits du transmetteur !!

Non non je ne me suis pas trompé, j'avais bien fermé le strap sur J1 et je confirme bien que mon reseau test tourne avec 2 cartes Can et le strap est ouvert sur les 2 cartes ;D