LOCODUINO

Discussions Générales => Bus CAN => Discussion démarrée par: jlb le novembre 14, 2014, 09:08:10 am

Titre: BreakoutBoard CAN
Posté par: jlb le novembre 14, 2014, 09:08:10 am
Bonjour,

J'ai donc commencé à dessiner la BB CAN. Conformément aux contraintes ElectroDragon, la carte fait 5x5cm et j'en ferai fabriquer 10. Il s'agit d'une carte pour bricoler pas pour installer définitivement.

Je suis parti sur :


Une schématique suivra ce WE et dans la foulée une implantation.

J'attends vos remarques et idée pour que rien ne manque et que ça soit adapter à tous.
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le novembre 14, 2014, 11:47:36 am
Bonjour,

Peut-on commencer à commander des composants en utilisant tes recommandations ?

1 MPC 2515 : 1,45€ par 10 : http://www.tme.eu/fr/details/mcp2515-i_p/circuits-integres-interface-can/microchip-technology/#
1 MCP 2551 : 0,83€ par 10 : http://www.tme.eu/fr/details/mcp2551-i_p/circuits-integres-interface-can/microchip-technology/#
2 capas de découplage de 100nF : 6 centimes par 10
1 connecteur SPI + Alim de l'Arduino + interruption, : à voir que mettre mais quelques centimes disons 20
2 connecteurs RJ11 : 0,35€ par 5 (c'est cool le rj11, on trouve des câbles d'1m à 0,25€ pièce par deux : http://www.tme.eu/fr/details/tel-rj11-bk_01/cables-de-connexion-telephonique/bq-cable/#)
1 carte 5 x 5 chez ElectroDragon : 1,2€ l'unite par 10 ex port compris.
1 support 18 broches tulipé doré : 31c par 3
1 support 8 broché tulipé doré : 16c par 10
1 quartz à 16MHz : 0,38€ par 5
2 capa de 22pf : 0,006c l'unité par 100
strap plus 120Ω de terminaison : 4c

Amicalement
Dominique
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le novembre 14, 2014, 02:02:32 pm
Pas de précipitation  8)

TME livre en 24h mais il faut 5 jours de fab + 5 à 10 jours de transport pour les cartes ElectroDragon. J'ai déjà quelques 2515 et un paquet de 2551 pour valider le design. Une fois que c'est fait, je commande les cartes et ensuite on fait une commande groupée de composants ce qui permet de ne payer les frais de port de TME qu'une seule fois (d'ailleurs j'ai d'autres truc à prendre chez eux, ce qui diluera encore plus les frais de port pour vous) et de payer les composants moins cher. Je la reçois et la dispatche avec les cartes en Prêt-à-Poster Lettre Max S (http://tarifs-de-la-poste.blog-machine.info/902-tarif-courrier-suivi-pret-a-poster-lettre-max-s-2-cm-depaisseur-format-cd-jusqua-1-kg) (3,35€ suivi).

Si ça vous va  ;)

Amicalement
Titre: Re : BreakoutBoard CAN
Posté par: Guillaume le novembre 14, 2014, 09:43:23 pm
Pour la carte, cela permettra de faire un test.

Du coté de TME, j'aurais aussi des choses à prendre. Le mieux serait dans ce cas de faire une commande groupée avec les membres qui le veulent de Locoduino.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le novembre 14, 2014, 11:22:28 pm
Bonsoir,

Bon ça a été vite finalement. Il faut maintenant que je teste 2 - 3 trucs pour confirmer le design

https://www.dropbox.com/sh/zsxma6svsgd8mhr/AAAZbRHJCx1FGQrtfLGfIrj_a?dl=0
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le novembre 14, 2014, 11:52:28 pm
Concernant la connexion du 2551 à un Arduino Due, c'est à dire un Arduino qui fonctionne en 3,3V :

Le 2551 doit être alimenté en 5V

Sur la broche TXD (entrée), une tension entre 2V et 5V est comprise comme un 1 (donc 3,3V convient)

Sur la broche RXD, il faut intercaler un diviseur de tension avec des résistances de 18k/12k qui ramène le 5V à 3,3V. Je vais ajouter les emplacements de ces résistances ainsi qu'un strap pour les mettre dans le circuit ou non.
Titre: Re : Re : BreakoutBoard CAN
Posté par: Dominique le novembre 14, 2014, 11:56:13 pm
Je la reçois et la dispatche avec les cartes en Prêt-à-Poster Lettre Max S (http://tarifs-de-la-poste.blog-machine.info/902-tarif-courrier-suivi-pret-a-poster-lettre-max-s-2-cm-depaisseur-format-cd-jusqua-1-kg) (3,35€ suivi).

Si ça vous va  ;)

Amicalement

Oui, bien-sur ça va : c'est très sympa pour nous.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le novembre 15, 2014, 12:11:34 am
Design mis à jour avec le diviseur de tension sur RX(D)
Titre: Re : BreakoutBoard CAN
Posté par: Guillaume le novembre 15, 2014, 08:30:16 am
C'est du rapide et efficace.
Beau boulot
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le décembre 24, 2014, 04:09:11 pm
Si il y a un truc que j'ai appris en faisant et en ratant des cartes c'est qu'il ne faut jamais se précipiter a envoyer à la fabrication. Contrairement au soft où c'est facile de rectifier, quand c'est foiré c'est foiré.

En l'occurrence, je regardais à nouveau la carte et j'ai remarqué une erreur : j'avais mis le diviseur de tension sur TX au lieu de le mettre sur RX. C'est rectifié. Autre maladresse : les connexions était dans un ordre différent des connexions correspondantes sur l'Arduino. J'ai également rectifié.

Je vais tester avant d'envoyer j'aurai un peu de temps entre Noël et je jour de l'an.

Bon réveillon.   :P
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 02, 2015, 01:48:32 pm
Bonjour à tous,

Je m'apprête à envoyer la carte à la fabrication ce week-end. Combien vous en faudrait-il ? (au moins 2 par personne évidemment).

Amicalement
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 07, 2015, 09:57:48 am
La commande ElectroDragon est faite. Je vous tiens au courant de l'évolution des choses :)
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 08, 2015, 08:59:14 am
Bonjour,

ElectroDragon m'informe que les fichiers de production sont ok et que la fabrication a demarré.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 12, 2015, 06:39:45 pm
Bonsoir,

La commande a été expédiée de Chine hier. Stay tuned :)
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 16, 2015, 11:48:52 am
La commande est à Charles de Gaulle !  :o
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 17, 2015, 12:05:13 pm
Thierry, Dominique, comme on se voit jeudi 22, je vous remettrai le matériel en main propre.
Titre: Re : BreakoutBoard CAN
Posté par: Thierry le janvier 17, 2015, 05:52:51 pm
Impec.  :)
Titre: Re : BreakoutBoard CAN
Posté par: Guillaume le janvier 17, 2015, 10:12:12 pm
Bon repas
Titre: Re : BreakoutBoard CAN
Posté par: Hubert le janvier 17, 2015, 11:45:21 pm
on boira à ta santé Guillaume.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 18, 2015, 12:03:18 am
Merci Guillaume j'espère qu'on pourra se rencontrer une prochaine fois.  ???
Titre: Re : BreakoutBoard CAN
Posté par: Guillaume le janvier 18, 2015, 12:31:54 pm
J'espère bien aussi
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 19, 2015, 11:05:55 am
La commande est arrivée. Nous avons 11 pièces du module CAN.

Une petite photo :

(https://dl.dropboxusercontent.com/u/67740546/Photo-2015-01-19-10-54-03_0045.JPG)

(https://dl.dropboxusercontent.com/u/67740546/Photo-2015-01-19-10-54-11_0046.JPG)
Titre: Re : BreakoutBoard CAN
Posté par: Guillaume le janvier 19, 2015, 04:01:19 pm
Elles sont chouettes en tout cas c'est un pro qui a dessiné
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 19, 2015, 07:50:32 pm
Merci Guillaume,

J'ai monté un module et ça fonctionne impec.

(https://dl.dropboxusercontent.com/u/67740546/Photo-2015-01-19-18-26-12_0050.JPG)

J'ai fait une vidéo du montage :

https://youtu.be/lksB2tBBOE0
Titre: Re : BreakoutBoard CAN
Posté par: Thierry le janvier 19, 2015, 08:45:27 pm
Superbe, et en plus y a le tutorial de montage ! Yapluka !
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 21, 2015, 08:30:46 am
Bonjour,

Hier soir j'ai monté un second module et fait communiquer deux Arduino. Les essais précédents étaient entre ma carte Olimex et un Arduino Uno. J'ai fait une petite appli simple où le premier Arduino envoie un octet sur le CAN et où le deuxième le récupère et commande une PWM connectée sur une LED. La valeur varie continuement entre 0 et 255 et est envoyée toutes les 10 ms.

Tout marche bien.

La bibliothèque pour le 2515 est fonctionnellement correcte (à part le réglage de la vitesse du bus) mais je trouve son interface pas très agréable. Par exemple la broche permettant de sélectionner le circuit, SS, est en dur ce qui nécessite d'éditer le .h de la bibliothèque. Il n'y a pas d'objet pour représenter un message CAN, ce qui oblige à trimbaler dans le code l'identifiant, si la trame est standard ou étendue et sa taille. Ça serait plus sympa si on pouvait initialiser un objet message et ensuite l'utiliser en ne changeant que les données. Je vas arranger ça.

Je vais également faire un sketch de moniteur CAN, ce qui permettra de brancher un Arduino sur le bus et de l'espionner.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 23, 2015, 03:11:25 pm
Bonjour,

Voici la liste des composants : https://dl.dropboxusercontent.com/u/67740546/module-CAN.bom.html
Et le schéma : https://dl.dropboxusercontent.com/u/67740546/schematique_module_CAN.pdf

Les deux résistances de 4,7kΩ et la capa de 1nF manquent. Ces composants, avec la diode et le poussoir constituent la circuiterie de reset telle que décrite dans la datasheet du MCP2515. Ça fonctionne sans car la bibliothèque CAN du 2515 effectue une séquence de reset par soft.

Dans le sachet de composants, les deux capas crême marquées J163 (de mémoire) sont celles de 100nF. Les petites marrons en forme de lentille sont celle de 22pF.

Les branchements avec un Uno/Pro Mini/Nano

SPI

Module CAN <--> Arduino Uno/Pro Mini/Nano
SCK <--> 13 (SCK)
SO <--> 12 (MISO)
SI <--> 11 (MOSI)
CS <--> 10 (SS)
INT <--> 2 (INT0)

Alim

GND  <--> GND
VDD <--> 5V

Les straps

5V-RX : court-circuite le diviseur de tension sur RX. Mettre pour un Uno, ne pas mettre pour un Due
RX : connecte à sortie RX du 2515 au RX du 2551. Mettre pour un Uno, ne pas mettre pour un Due
TX : connecte à sortie TX du 2515 au TX du 2551. Mettre pour un Uno, ne pas mettre pour un Due
TERM : Termine l'extrémité du bus. Mettre sur les nœuds qui sont à chaque extrémité.

Le logiciel

La bibliothèque est ici :

https://github.com/Seeed-Studio/CAN_BUS_Shield

Bonne soudure !
Titre: Re : BreakoutBoard CAN
Posté par: Hubert le janvier 23, 2015, 05:16:50 pm
vidéo bien faite et complète, même avec des gros doigts, on peut y arriver. :D

je confirme ,investi dans un support pour maintenir les composants mais je trouve que tu te débrouilles très bien sans.
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le janvier 24, 2015, 12:56:09 pm
 Première carte montée !
(http://CanDB1.jpg)
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le janvier 24, 2015, 03:13:41 pm
et testée
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 24, 2015, 04:07:08 pm
Nickel !
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le janvier 24, 2015, 04:24:35 pm
et c'est mieux avec 2 cartes et 2 Megas
J'ai testé en passant les exemples qui fonctionnent donc nickel, comme les cartes, notamment la reception sous interruption.
Ca tourne depuis 1/2 heure
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le janvier 24, 2015, 04:29:17 pm
C'est vrai que ce n'est pas plus compliqué que l'I2C.
Je n'ai pas eu le temps d'étudier les principes. Si je comprend bien l'exemple fait un envoi avec l'id 0x00 et tous les récepteurs reçoivent la même chose.
Comment spécifier un récepteur spécifique ? La réponse doit être "avec les filtres" je suppose.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 24, 2015, 06:21:50 pm
Oui, c'est avec les filtres. Si aucun filtre n'est en place, tous les nœuds reçoivent tous les messages sauf ceux qu'ils émettent.

Comme je t'expliquais jeudi, le CAN fonctionne un peu comme un crieur public. Tous les nœuds sont potentiellement destinataires. Si des nœuds ne sont intéressés que par certains messages, ils doivent mettre en place des masques et des filtres

Il y a 2 masques et 6 filtres. Il faut tous les initialiser.

Exemple :

  CAN.init_Mask(0,0,0xFFFF);
  CAN.init_Mask(1,0,0xFFFF);
  CAN.init_Filt(0,0,1); // Filtre 0, trame standard, id = 1
  CAN.init_Filt(1,0,3); // Filtre 1, trame standard, id = 3
  CAN.init_Filt(2,0,0); // Filtre 2, trame standard, id = 0
  CAN.init_Filt(3,0,0); // Filtre 3, idem
  CAN.init_Filt(4,0,0); // Filtre 4, idem
  CAN.init_Filt(5,0,0); // Filtre 5, idem

Les masques font que tous les bits de l'identifiant sont significatifs
Les filtres font que seuls les identifiants 0, 1 et 3 sont acceptés
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 24, 2015, 06:33:26 pm
Plus la valeur de l'identifiant est faible et plus sa priorité est élevée.

Quand on construit un système avec du CAN, on définit une messagerie : l'ensemble des messages qui vont transiter et leur identifiant.

Par exemple, supposons que tu utilises le bus pour envoyer des ordres à des moteurs d'aiguillage et pour envoyer des ordres à des signaux. Tu vas définir un jeu d'identifiants pour les messages destinés aux cartes qui commandent les moteurs d'aiguille. On va rester en trame standard, donc les identifiants font 11 bits. Supposons qu'au maximum tu aies 16 cartes de moteurs d'aiguillage : 4 bits

Par exemple, on va choisir un identifiant qui sera 0000111xxxx, xxxx étant le numéro de carte. Ensuite les données du message vont spécifier la position de chaque moteur. Les cartes aiguillage vont donc définir un masque à 11111111111 (donc 0xFFFF) dans la bibliothèque et un filtre à 0000111xxxx, xxxx étant défini par la position d'un dip-switch sur la carte. Ensuite si tu branches une carte pour piloter le TCO et que tu veuilles recevoir tous les ordres à destination des moteurs d'aiguillage, elle spécifiera un masque à 11111110000 car xxxx n'a pas d'importante et un filtre à 00001110000, comme les 4 bits de poids faible du masque sont à 0, les 4 bits de poids faible du filtre sont ignorés dans la comparaison avec les identifiants des messages entrant. Donc le TCO recevra tous les messages à destination des cartes aiguillage.

Pour les signaux, supposons qu'on ait 32 cartes, on va choisir un identifiant moins prioritaire : 000010xxxxxx. Idem, masque à 11111111111, filtres à 000010xxxxx, xxxxx étant récupéré d'un dip-switch. Le TCO quand à lui aura un 2e masque à 111111 et un 2e filtre à 00001000000. Il récupérera tous les ordres pour les signaux.

Enfin, si les cartes de pilotage des aiguillages émettent les positions effectives récupérée via des contacts de fin de course, on attribue un autre identifiant, 0000001xxxx, plus prioritaire car la connaissance de la position des aiguillages est plus importante que ce qui s'affiche sur les feux ou les commandes des aiguillages. Les autres cartes aiguillage et les cartes feux ne verront pas ces messages car cet identifiant n'est pas accepté par leur filtre.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 31, 2015, 04:39:27 pm
Bonjour,

Je viens de faire un essai de performance sur le CAN.

Le bus est réglé a 125kbps, pas agressif donc mais, pour les accessoires, c'est largement suffisant.
Deux Arduino sont connectés : un Nano et un compatible Uno (le Visduino que je viens d'acheter).

Les deux Arduino sont chargés avec le même sketch. Le sketch fait la chose suivante :

Dans setup
- lecture d'une broche numérique pour avoir l'identifiant du message CAN. Sur l'un des Arduino, cette broche est raccordée a la masse et sur l'autre elle est raccordée à 5V. Les sketchs récupèrent dont respectivement un identifiant 0 et un identifiant 1.
- intialisation d'un buffet ne comprenant qu'un seul octet.
- après initialisation du CAN, envoi d'une trame avec l'octet en question.

Dans loop
- attente de réception de message, on utilise une interruption externe.
- quand le message est reçu, il est lu, on vérifie que ca longueur est bonne et que l'octet de données est bon puis il est renvoyé.

C'est donc une sorte de double ping pong avec deux messages qui tournent.

Le rythme d'arrivée des interruptions sur un des Arduino est de 1,64ms et stable. C'est équivalent à 205 bits. Sachant qu'au maximum une trame comportant un octet de données comprend 65 bits et que le contrôleur attend 11 bits pour s'assurer que le bus est libre, soit 76 bits. Donc 152 bits. Il y a du temps perdu dans le programme et sur la communication SPI également. Ça me semble donc cohérent.
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le août 23, 2015, 10:38:43 pm
Bonjour,

Concernant le DUE, il y a un fil très développé sur le forum Arduino qui est consacré à la réalisation d'une carte d'extension et d'une bibliothèque.

http://forum.arduino.cc/index.php?topic=131096.480 (http://forum.arduino.cc/index.php?topic=131096.480)

La bibliothèque existe (Due-CAN), mais pas l'extension apparemment constituée d'un seul chip.

On y voit aussi comment utiliser les 2 bus CAN disponibles sur le Due (la doc n'en présente qu'un seul).

Qu'en pensez-vous ?
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le août 23, 2015, 10:50:54 pm
La bibliothèque est là

https://github.com/collin80/due_can (https://github.com/collin80/due_can)

1600 messages CAN par seconde sur une Zoe de Renault parfaitement reçus par un Due : pas de souci à se faire pour nos trains  8)

Titre: Re : BreakoutBoard CAN
Posté par: DDEFF le août 29, 2015, 07:37:40 pm
De retour de Montpellier  8) 8) 8)  ...

Merci Dominique

Effectivement, fil très développé (34 pages !!). Dans l'un des liens, la façon "d'extraire" les 2 bus CAN de l'Arduino DUE (j'ai failli dire du DUE  ;D) et l'utilisation du SN65HVD234. Nous, ce seront des 2551 si j'ai bien tout compris.

Quand tu dis la doc n'en présente qu'un seul, c'est à nuancer : ça dépend quelle doc. Si tu prends celle-là, il y a bien tout.
http://www.robgray.com/temp/Due-pinout-A4.png (http://www.robgray.com/temp/Due-pinout-A4.png)

Pour le MEGA, j'aime bien celui-là :
http://www.arduteka.com/wp-content/uploads/2013/02/ArduinoMega.png (http://www.arduteka.com/wp-content/uploads/2013/02/ArduinoMega.png)

Ensuite, la bibliothèque due-can, d'après ce que je vois dans le due_can.h, on gère bien le CAN 0 et le CAN 1.
Par contre, c'est du costaud !
Il va falloir que je détaille les exemples donnés pour mieux comprendre.

Et, pour terminer, même si je suis convaincu que le bus CAN est très largement dimensionné pour nos trains, ton argument "1600 messages par seconde" ne tient pas. Si ce sont des messages d'1 bit, ça ne fait pas un gros débit ( ;D ;D)

Plus sérieusement, je pense que je vais être obligé de passer par les mots de 29 bits et pas 11 bits.
En effet, la limite à 30 nœuds maximum est, dans mon cas, un problème.
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le août 29, 2015, 08:33:26 pm
Bizarrement j'ai vu que Marklin utilise aussi des Id de 29 bits.

Franchement je n'en vois pas la justification. Mais, bon, ils font ce qu'ils veulent.

Méfies toi tout de même de la façon de faire le filtrage. Avec 2 masques et 6 filtres seulement, sur des Id de 29 bits, tu vas souffrir ! Tu as vu les questions sur le forum Arduino !

Attendons l'avis de l'expert : Jean-Luc
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le octobre 09, 2015, 09:43:33 am
Bonjour,

Pourquoi aurais-tu besoin de 29 bits d'identifiant de message (je rappelle que les 11 bits ou 29 bits sont les identifiants de message, pas les données du messages. Les données vont de 0 (message de signalisation d'événement donc sans données) à 8 octets.
Titre: Re : BreakoutBoard CAN
Posté par: jac56 le décembre 06, 2015, 12:41:43 am
Bonjour,

J'ai commencé à étudier le bus CAN au travers des articles de Locoduino et du forum (encore bravo); j'aurais quelques questions à poser à propos du schéma de câblage du breakout du CAN bus présenté un peu plus haut dans ce fil (cf. l' intervention de Jean-Luc du 23 janvier, dans [2]). Ces interrogations sont simplement formulées  pour m'éviter doutes et tâtonnements. Elles seront peut-être utiles à d'autres et permettront de nous assurer que notre compréhension est correcte. Malgré l'excellente clarté des explications, il peut se faire que je comprenne de travers.

En l'étudiant, il semblerait que le schéma puisse être beaucoup simplifié, en ne câblant pas ce qui n'est, en réalité, pas utilisé, et sans perdre la flexibilité pour le couplage, au choix, à des Arduino Uno ou à des Due.

Par exemple, tout ce qui concerne le Reset physique semble inutile puisqu'on se charge de le faire par logiciel avec une commande SPI, quand c'est nécessaire. Sur un montage définitif, le bouton-poussoir ne sera même pas accessible...
On peut donc omettre : bouton-poussoir, pont de résistances, diode. Et dans ces conditions, même la borne 6 (Reset) du bornier K3 est superflue. K3 peut donc se limiter à cinq contacts.

Par ailleurs, il y a toutes les pins de IC1 qui ne sont pas du tout utilisées dans la façon présentée d'utiliser les composants CAN (tous les TXiRTS ou RXiBF, pin 4 à 6 et 10-11 de IC1), ainsi que SOF (pin 3). Il s'ensuit que le bornier K5 tout entier peut-être omis. A moins que cela présente un intérêt pour tester le fonctionnement du montage à l'oscillo (certaines pins sont des signaux d'interruptions)? Sur un proto, peut-être cela présente-t-il un intérêt, mais est-ce utile sur un montage de 'série'?

L'examen de la bibliothèque CAN proposée pour le Uno ne montre même pas de possibilités d'utiliser les fonctionnalités de ces 'registres' TXiRTS ou RXiBF autrement que par logiciel au travers du bus SPI. Je n'ai pas encore vérifié dans le cas Due.
Est-ce une compréhension correcte du montage proposé? Et le breakout ainsi simplifié fonctionnera-t-il de façon satisfaisante?


Enfin, dans la même intervention de Jean-Luc, l'usage des straps est défini.
L'usage du premier cité (S2 entre GND et Rx) ne me paraît pas totalement clair.
Si c'est pour utilisation avec un Due, on utilise les pins 2 et 3 de K4 pour piloter directement le transceiver CAN MCP2551 (le 2515 ne sert pas du tout) avec les Tx, Rx qui existent spécifiquement sur le Due pour piloter un CAN.  Dans ce cas, il faut omettre le strap S2 de façon à atténuer la réception Rx en 5V sur le MCP2551 pour l'adapter au 3,3V du Due grâce à un pont diviseur ?
Si c'est pour utilisation avec un Uno (5V), cette atténuation n'est au contraire pas souhaitable, donc il  faut shunter le strap dans ce cas. De toutes façons, avec un Uno, on n'utilise pas ce canal direct pour piloter le MCP2551, puisqu'on passe par les pin Tx Rx du contrôleur MCP2515, lui-même relié au bus SPI du Uno. Les bornes 2 et 3 de K4 sont 'à vide' dans ce cas. Je me demande même si la résistance de tirage ainsi introduite entre Rx et GND (R4= 18kOhm ) est nécessaire avec le Uno; elle va jouer sur l'entrée Rx du 2551. Elle ne semble pas nuisible puisque les tests montrent un fonctionnement correct, mais est-elle utile? Dans ce cas ne pourrait-on mettre le strap en série avec R5? Et on ne shunterait le strap, ainsi disposé, que pour l'utilisation avec un Due?

Est-ce une évolution correcte?

D'avance merci et encore bravo pour cette initiation au CAN.


Titre: Re : BreakoutBoard CAN
Posté par: DDEFF le décembre 06, 2015, 10:30:11 am
Bonne analyse.
Le circuit a été conçu pour faire des tests et pouvoir utiliser toutes les broches, s'autoriser tous les essais.

Il est donc "surdimensionné". Mais le circuit imprimé prévoit tous les cas.

Ce qui ne nous impose pas de souder tout.

1°) Le reset n'est pas utile. Ou, du moins, je ne m'en suis jamais servi.
2°) K5 ne me sert à rien
3°) Avec un DUE, on ne met pas les straps S2, S3 et S4, ce qui fait que le MCP2515, le quartz et autres ne sert pas
4°) Avec les Arduino qui n'ont pas de CAN intégré (ATmega328), on met, au contraire, les 3 straps S2, S3 et S4.
Les broches 2 et 3 de K4 ne servent alors à rien. Par contre, je pense que R4 est nécessaire en pulldown.

Pour avoir utilisé dans le même montage des NANO et un DUE avec ces cartes, je confirme qu'elles fonctionnent parfaitement (voir photo jointe et article à venir)

Attention a un "détail" :
Pour le DUE, il faut utiliser la bibliothèque due_can_master
Pour les Atmega328, il faut utiliser la bibliothèque CAN_BUS_Shield-master
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le décembre 07, 2015, 02:21:18 pm
Merci à Denis qui a répondu complètement à cette excellente analyse de la carte conçue par Jean-Luc et dont nous avons pu fabriquer quelques exemplaires que nous utilisons avec bonheur !

Cette carte avait d'abord l'énorme avantage de coûter moins cher que les versions commerciales, ce qui est normal en DIY.

Pour le Due, on peut trouver en Chine quelques BoB (BreakoutBoard) ne comportant que le transmetteur donc pour quelques € seulement.

Si vous pensez pouvoir proposer un circuit simplifié pour les Mega, Uno et Nano, ce serait super. L'article 13 sur le site éditorial vous donnera les fournisseurs intéressants :
http://www.locoduino.org/spip.php?article13
Notamment Electrodragon et TME.

Cordialement
Dominique
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le décembre 07, 2015, 02:29:40 pm
Bonjour,

Effectivement certains élément peuvent ne pas servir. La carte a été conçue pour être universelle.

- K5 a été mis pour pourvoir brancher facilement un oscillo ou un analyseur logique. Notamment SOF qui permet de synchroniser avec le début de trame
- le bouton reset à été mis par sécurité
- le diviseur de tension sur RX permet de brancher un micro 3,3V
- si on a un DUE qui intègre un contrôleur CAN, il suffit d'utiliser le 2551 et on ne monte pas.

Dans mon esprit, cette carte n'est pas destinée à du déploiement mais à de la mise au point (du moins pour moi)

La résistance de tirage est utile pour ne pas que TX flotte et que le bus CAN reçoive des bits aléatoires tant que le 2515 n'est pas initialisé.

Par contre il faut monter la circuiterie de RESET pour assurer le démarrage du 2515. Si il plante, le reset via SPI n'aura aucun effet je pense.
Titre: Re : BreakoutBoard CAN
Posté par: jac56 le décembre 07, 2015, 11:34:31 pm
Bonsoir,

Merci pour ces réponses. On doit pouvoir simplifier, au moins en partie.
Pourtant, la réponse de Jean-Luc m'amène à demander des précisions et à proposer des réflexions complémentaires.

Reset:
Le circuit des composants D1, R2, R3, C5, BP ne pourra agir qu'en cas d'appui sur le bouton.
Dans un montage définitif aura-t-on accès au bouton ?
Par ailleurs, sans appui sur le bouton, à quoi peut servir de conserver la liaison K3, 6 - IC1, 17 ?
Il faudrait raccorder K3, 6 à une pin Arduino programmée spécifiquement pour faire le reset?
Dans ce cas, les composants anti-rebond deviennent aussi superflus, avec un changement d'état réalisé avec une pin pilotée par soft. Mais suite à quel évènement faudrait-il le déclencher? C'est une disposition plutôt inhabituelle.

J'ai connu d'autres circuits sur lesquels le reset logiciel (par écriture du mot ad'hoc dans un registre) fonctionnait effectivement; le hard reset devenait superflu. Le §9.0 de la datasheet confirme cette possibilité. Et c'est ce que semble faire la bibliothèque CAN (cas Uno); en effet, au démarrage (dans setup()), mcp2515_init() appelle bien la fonction  mcp2515_reset() qui procède par écriture d'un mot de reset. Il devrait donc rester possible de (re)faire un reset logiciel ultérieurement, en cas de besoin impératif (à condition de prévoir tout ce qu'il faut dans le logiciel applicatif Arduino; il n'y a sans doute pas seulement le MCP2515 à réinitialiser...).

Il semble donc qu'on devrait pouvoir supprimer sans perte grave toute la filerie de reset.



Résistance de tirage:
"Tx [de MCP2551] ne doit pas flotter tant que MCP2515 n'a pas fini de s' initialiser."
C'est une précaution qui paraît utile. En effet, j'ai constaté ce genre de phénomène sur les pins d'un Arduino Uno en initialisation. MCP2515, en tant que microcontrôleur, peut aussi se comporter ainsi.
Dans ce cas,  faudrait-il aussi ajouter une résistance tirant Tx vers GND sur cette liaison, qui n'en possède pas actuellement? Toutefois, les tests ne semblent pas avoir fait apparaître d'anomalies à ce niveau.
Il serait utile de tester le comportement lors d'un démarrage et branchement 'à chaud' sur un bus déjà lancé (2 autres transceivers actifs).

Si néanmoins on retenait d'ajouter une résistance de pull-down,  quelle valeur? Comme R4?
Dans le cas du Uno, c'est TXCAN du 2515  qui pilote le TxD du transceiver :
5V sur 5V, pas de problème, a priori. Sur Rx, la valeur actuelle de R4 semble convenir, d'après les tests.
Dans le cas du Due, 3V pour piloter 5V, il ne faut pas en 'faire  trop'.
Un test pourrait préciser la valeur. Il serait agréable que celle-ci convienne dans les deux cas, cela éviterait un strap supplémentaire.

Ceci dit, en consultant la datasheet du MCP2551 correspondante, certaines informations inciteraient à ne pas mettre de résistance de tirage vers la masse :
- le tableau sur la 'table de vérité' du circuit montre que si TxD est à 1 ou 'flottant',  le bus n'est pas piloté (ce sont les autres transceivers actifs qui éventuellement le pilotent); pour réellement 'émettre', il faut passer par TxD à 0; TxD flottant ou à 1 ne devrait donc pas engendrer un signal intempestif néfaste;
- un schéma de l'architecture interne suggère qu'il y a une résistance interne de tirage vers VDD sur l'entrée TxD;
- enfin MCP2515 et 2551 sont conçus pour fonctionner ensemble; sur leurs schémas, on observe des dispositifs hard internes de reset à la mise sous tension: on peut raisonnablement penser qu'ils ont été harmonisés à la conception pour se synchroniser convenablement.

Ceci ne pousserait-il pas à penser que ce soit plutôt un niveau bas de TxD qui soit susceptible de provoquer une anomalie? La solution actuelle semble déjà convenable, d'après les tests.

En espérant que cet apport sera utile aux choix définitifs; mais, n'ayant pas encore de montage à tester, je peux me tromper...

Cordialement.




Titre: Re : BreakoutBoard CAN
Posté par: DDEFF le décembre 10, 2015, 09:38:50 am
Bonjour Jacques,

J'ai, comme toi, décortiqué ce schéma.
Comme Jean-Luc l'a dit, ce montage sert aux essais et cette carte est universelle.
Toutes les situations ont été envisagées, ce qui est le but d'une telle carte.
But atteint : tout fonctionne parfaitement.

Quand je vais construire ma carte 4 aiguilles, je vais prendre des morceaux du schéma et élaguer certaines parties. Et, dans tous les cas, je vais la faire démontable.
Dans la vraie vie, il arrive toujours des cas "nouveaux"...
En particulier, je mettrais un reset uniquement si j'ai la place.

Concernant R4 et R5, les valeurs sont soigneusement calculées pour faire double usage :

1°) Assurer le pull-down de Rx

2°) Permettre, moyennant un simple strap, de fonctionner en 5V et 3,3V.

Il a existé, en 1998, un premier schéma paru dans Elektor qui concernait le bus I2C, mais le problème est général. Voir le lien :

COMMANDE 1998-07 I2C sous 3.3v BSN10 BSN20 BSS83 BSS88.pdf (file://PC-PARENTS/Users/PARENTS1/OneDrive/Public/COMMANDE%201998-07%20I2C%20sous%203.3v%20BSN10%20BSN20%20BSS83%20BSS88.pdf) (http://COMMANDE 1998-07 I2C sous 3.3v BSN10 BSN20 BSS83 BSS88.pdf (file://PC-PARENTS/Users/PARENTS1/OneDrive/Public/COMMANDE%201998-07%20I2C%20sous%203.3v%20BSN10%20BSN20%20BSS83%20BSS88.pdf))

Moyennant 2 FET et 4 résistances, on arrivait à avoir un seul bus et 2 tensions.
Ce schéma existe toujours et a été repris depuis.

Puis, on s'est rendu compte qu'il était luxueux et il a été simplifié.

On en arrive à la solution particulièrement économe indiquée ici.
Et qui fonctionne parfaitement (voir SGDD (3) pour mes essais sur un bus CAN fonctionnant avec un DUE et 2 NANO)
Titre: Re : BreakoutBoard CAN
Posté par: jac56 le décembre 10, 2015, 03:01:15 pm
Merci DDEFF

pour ta réponse documentée.
Le lien ne semble pas fonctionner; il m'intéresse pourtant, car j'ai peut-être eu des pb avec un bus I2C en tension mixte, comme c'est décrit.
Ce que j'indiquais avoir compris dans mon avant dernier message était donc applicable [reset et Rx].
Tu me confirmes que pour Tx (et non Rx), il n'y a rien à changer [liaison directe].
Tout est clair. Je vais faire un projet de plan de circuit imprimé simplifié d'ici quelques temps.
Titre: Re : BreakoutBoard CAN
Posté par: DDEFF le décembre 10, 2015, 05:46:41 pm
Moi, c'est Denis ...  ;D

ça doit aller mieux comme ça (je débute avec onedrive) :
https://onedrive.live.com/?id=1EA3CECE8F2E2523!103&cid=1EA3CECE8F2E2523 (https://onedrive.live.com/?id=1EA3CECE8F2E2523!103&cid=1EA3CECE8F2E2523)

Ceci dit, pour le circuit imprimé, le complet (en 10x10) vaut 2€ et compte 4 circuits qui reviennent donc à 0,50 € pièce. Et d'une qualité exceptionnelle.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 26, 2016, 08:28:40 am
Bonjour,

De l'eau a coulé sous les ponts et des breakout boards CAN comparables et à prix très intéressant ont fait leur apparition :

http://www.ebay.fr/itm/Arduino-MCP2515-CAN-Bus-Module-TJA1050-Receiver-SPI-Module-/311520457612?hash=item488810f38c
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le janvier 26, 2016, 09:36:34 am
Bonjour,

J'en ai commandé une pour voir : le quartz est à 8Mhz et d'emblée elle ne communique pas avec les cartes Locoduino.
J'ai changé le quartz pour un 16 MHz et maintenant elle marche impeccablement !

Donc totalement compatible avec la carte Locoduino que tu as faite.
Titre: Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 26, 2016, 10:22:05 am
Sans changer le quartz, il faut revoir la programmation des registres qui déterminent comment le 2515 échantillons les bits sur le bus. Ces paramètres se situent dans les lignes 269 à 340 de mcp_can_dfs.h

Il faudrait voir si quelqu'un ne s'en est pas déjà chargé dans le nombreux fork de cette bibliothèque :-)
Titre: Re : Re : BreakoutBoard CAN
Posté par: Jean-Luc le janvier 26, 2016, 11:34:10 am
J'en ai commandé une pour voir : le quartz est à 8Mhz et d'emblée elle ne communique pas avec les cartes Locoduino.
J'ai changé le quartz pour un 16 MHz et maintenant elle marche impeccablement !

Tu ferais un article dessus ?
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le janvier 26, 2016, 01:11:34 pm
Oui je peux en traitant les deux cas :

- bibliothèque modifiée (je l'ai trouvée : voir plus bas)
- changement du quartz (pas facile à dessouder !)

Du coup j'en ai commandé quelques unes de plus pour faire des essais.
Titre: Re : BreakoutBoard CAN
Posté par: bern69 le février 15, 2016, 04:42:31 pm
bonsoir jean luc,
je ne suis qu'un "pauvre modéliste de 70 berges" s'intéressant beaucoup à arduino et à la gestion d'un réseau N comme Denis nous en ouvre la perspective (SGDD). Mais je suis décidément un débutant ++++ en ce qui concerne l’électronique, et la plupart de vos post me passent largement au dessus de la tête, malgré mes efforts répétés... le mode  de réflexion globale m'est tout à fait accessible, mais je reste bloqué devant des détails. Et notament la différence entre les fichiers du module CAN sur dropbox et les photos et vidéos de ce même module  dans ce fil.( notament disparition de S3 et S4)J'envisage  de faire imprimer une 10aine de ces modules chez Electro-dragon, mais je suis incapable de modifier ces fichiers, Fritzing ou Eagle ou Kicad ne m'ayant pas encore révélé leurs secrets.
Je suis passionné, j'apprends tout ce que je peux, je me "goinfre" de tut ce que je peux lire,mais ça ne vient que lentement...
Merci de vos lumières.
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le février 16, 2016, 10:14:31 am
Bonjour Bern69,

Il n'est pas nécessaire de modifier les fichiers de fabrication téléchargés sur Dropbox. Par rapport à la vidéo, seuls 2 composants ont changé de place.

J'en ai monté 6 récemment en suivant les instructions de la vidéo et je peux vous dire que ça ne pose aucun problème. D'ailleurs, vous pouvez faire l'économie du bouton de reset qui ne sert jamais !

Bonne réalisation
Dominique
Titre: Re : BreakoutBoard CAN
Posté par: bern69 le février 16, 2016, 11:23:33 pm
merci dominique. je me lance;
A plus pour vous donner des nouvelles de mes réalisations.
Bernard69
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le février 17, 2016, 10:18:48 am
Avant de vous lancer, avez-vous essayé cette carte ?

http://www.ebay.fr/itm/Arduino-MCP2515-CAN-Bus-Module-TJA1050-Receiver-SPI-Module-/311520457612?hash=item488810f38c

Elle fonctionne bien à condition de changer le quartz pour un modèle de 16 MHz (je l'ai testée avec la bibliothèque de Seeedstudio) ou d'utiliser une autre bibliothèque que je viens de trouver ici :

https://github.com/Flori1989/MCP2515_lib

Mais je ne l'ai pas encore testée.

Précaution indispensable : enlever la bibliothèque de SeeedStudio, le 2 bibliothèques ne pouvant coexister !
Cette bibliothèque semble être une simple évolution de la bibliothèque de SeeedStudio avec l'ajout du support de l'horloge à 8MHz (c'est pour cela qu'il ne faut pas laisser les 2 bibliothèques dans le dossier des bibliothèques).


Dans le fichier mcp_can_dfs.h il y a la définition pour les 2 fréquences d'horloge :

/*
 * clock
 */
#define MCP_16MHz   1
#define MCP_8MHz   2

D'après mon observation de la bibliothèque, je pense que la fréquence de l'horloge est de 16MHz par défaut.

Pour changer cette fréquence il faut appeler l'instruction "CAN.begin()" avec un argument supplémentaire :

- A 16 MHz :
CAN0.begin(CAN_500KBPS);              // init can bus : baudrate = 500k , clock = 16 MHz par défaut

- A 8 MHz :
CAN0.begin(CAN_500KBPS, MCP_8MHz);    // init can bus : baudrate = 500k , clock = 8 MHz

ici, le nom de l'objet "CAN0" est tiré des exemples "send" et "receive". Dans votre code, vous pouvez l'appeler autrement...

A suivre : je testerai seulement dans 2 semaines ;(
Dominique

Titre: Re : BreakoutBoard CAN
Posté par: Dominique le avril 23, 2016, 09:59:39 am
Les 2 semaines sont largement écoulées et je n'ai toujours pas testé, distrait pas quantité d'autres tâches moins ferroviaires.

Chez lecteur, veuillez m'excuser !
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le novembre 02, 2016, 10:18:32 pm
... mais une nouvelle discussion remet le sujet sur le tapis :

http://forum.locoduino.org/index.php?topic=230.msg2091#msg2091 (http://forum.locoduino.org/index.php?topic=230.msg2091#msg2091)

Pour Railuino, je vais essayer de tester la bibliothèque permettant l'utilisation d'un MCP2515 à 8MHz.

Suspens...
Titre: Re : BreakoutBoard CAN
Posté par: railyRabbit le décembre 05, 2016, 10:41:41 pm
Hello,

De retour après très longtemps... et de nouvelles expériences électroniques :P

Je reviens depuis plusieurs jours sur ce topic, qui commence à m'intéresser sérieusement : j'ai à peine commencé à faire fonctionner mes détecteurs infrarouges (9 au total) que j'envisage leur v2, basée sur le protocole CAN, afin de simplifier le câblage et de n'utiliser qu'un seul bus pour différents types d'accessoires.

J'envisage de faire des cartes avec un ATmega328 monté seul, qui tournera donc à 8MHz sur son horloge interne.
La fréquence du quartz du MCP2515 doit être en rapport avec celle du processeur ?
Ou bien, comme j'ai l'impression de comprendre, l'oscillateur du 2515 ne sert que dans le traitement des signaux du bus CAN ?

merci ! ;)
Titre: Re : Re : BreakoutBoard CAN
Posté par: Dominique le décembre 05, 2016, 11:20:26 pm
J'envisage de faire des cartes avec un ATmega328 monté seul, qui tournera donc à 8MHz sur son horloge interne.
La fréquence du quartz du MCP2515 doit être en rapport avec celle du processeur ?
Ou bien, comme j'ai l'impression de comprendre, l'oscillateur du 2515 ne sert que dans le traitement des signaux du bus CAN ?

Bonjour,

J'ai l'impression aussi que c'est la 2ème hypothèse : l'oscillateur du 2515 ne sert que dans le traitement des signaux du bus CAN
L'interface entre l'Arduino et le 2515 utilise le bus SPI, c'est donc indépendant
Titre: Re : BreakoutBoard CAN
Posté par: patrick le décembre 06, 2016, 08:09:47 pm
Pour faire l'économie d'un crystal, il est possible de connecter le pin CLKO du 328 (port D8 sur le UNO par exemple) au pin OSC1 du MCP2515 (laisser OSC2 ouvert). Ainsi, l'horloge interne du Atmega pourra servir d'horloge externe au MCP2515. On trouve un petit peu d'information là-dessus sur le web... Il faut entre autre configurer un "fuse" du Atmega et vérifier que le bon prescaler est utilisé. Mais bon, mes connaissances s'arrêtent là!

Juste en passant...
Patrick
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le décembre 07, 2016, 09:51:27 am
Vous savez, cette petite carte CAN ne coûte que 1,68€, port compris et elle contient son quartz (à 8mhz) et tout le reste.

Personnellement je ne "bricolerai" pas une carte Arduino pour relier un 2515 qui risque de coûter plus cher et nécessite plus de fils de liaison et une modif des "fuse" que je ne sais pas faire avec l'IDE: il faut être expert.

Pour les débutants en tout cas, la carte toute faite est la solution la plus simple.
Titre: Re : BreakoutBoard CAN
Posté par: railyRabbit le décembre 07, 2016, 01:29:12 pm
Hello,

C'est intéressant, cette possibilité d'utiliser le µc comme horloge. Je vais creuser, au moins pour l'information (le coût du crystal n'est pas vraiment un sujet, ni l'encombrement...).

La carte CAN qu'on trouve en ligne est très certainement plus simple et rapide à mettre en œuvre.
Dans mon cas de figure, je voudrais :
- avoir un bus qui fasse transiter l'alim 5V et les lignes CAN (dans un RJ12, par ex)
- packager carte CAN + µc sur une surface contenue

C'est la seule raison à mes réflexions actuelles  ;)
(et puis ça fait bricoler)

D'ailleurs à propos de quartz, c'est possible de partager 1 quartz entre 2 µc ??
Titre: Re : Re : BreakoutBoard CAN
Posté par: patrick le décembre 07, 2016, 05:26:31 pm
Vous savez, cette petite carte CAN ne coûte que 1,68€, port compris et elle contient son quartz (à 8mhz) et tout le reste.

Personnellement je ne "bricolerai" pas une carte Arduino pour relier un 2515 qui risque de coûter plus cher et nécessite plus de fils de liaison et une modif des "fuse" que je ne sais pas faire avec l'IDE: il faut être expert.

Pour les débutants en tout cas, la carte toute faite est la solution la plus simple.

Non, bien sûr, je suis d'accord. Le but n'est pas de bricoler ce genre de board. Par contre, lorsqu'on designe un PCB il est intéressant de connaitre les possibilités qui s'offrent à nous. Et le partage d'une horloge n'est pas sans intérêt.

Aussi, cela s'éloigne du niveau "débutant"... Moi-même débutant avec une petite expertise, je ne m'amuserais pas à cela. Trop compliqué à débugguer...

D'ailleurs à propos de quartz, c'est possible de partager 1 quartz entre 2 µc ??

Normalement oui, mais il y a la question "qui contrôle l'horloge". Si je ne m'abuse, il faut exciter le crystal pour qu'il y ait résonnance. Donc avoir deux "masters" n'est peut-être pas trivial à gérer...
La solution la plus fréquente que j'ai vue jusqu'à aujourd'hui est de propager le signal de IC en IC, ou d'ajouter un buffer entre les deux ICs et le crystal si jamais ils n'offrent pas cette possibilité.

Encore une fois, ce n'est que l'avis d'un débutant.  ;)
Titre: Re : BreakoutBoard CAN
Posté par: railyRabbit le décembre 07, 2016, 06:30:26 pm
Merci Patrick, je chercherai également à compléter sur le web.

Pour le moment je regarde les configs pour paramétrer les fusibles et customiser le µc,
et je suis tombé sur ce lien (http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/).

Ça n'a pas l'air très sorcier (à la lecture, en tout cas).
A tester sur breadboard...
Titre: Re : BreakoutBoard CAN
Posté par: railyRabbit le décembre 11, 2016, 05:53:32 pm
Bon, je crois que j'ai réussi à paramétrer un 328p monté seul sur breadboard, avec les fusibles qui vont bien pour exporter l'horloge à 8MHz sur le pin PB0. Je n'ai plus qu'à attendre le 2515 que j'ai commandé pour les essais...  :P

[edit] Je me suis rendu compte que mon multimètre pouvait mesurer les fréquences... du coup j'ai regardé ce qui sortait sur le pin 14 (PB0) : 8,08 MHz  8) ça a marché !! [/edit]

Les liens :
- la description des principaux fusibles (http://www.martyncurrey.com/arduino-atmega-328p-fuse-settings/)
- un "calculateur" pour déterminer/vérifier la valeur des fusibles, avec la configuration que j'ai choisie (http://eleccelerator.com/fusecalc/fusecalc.php?chip=atmega328p&LOW=A2&HIGH=DE&EXTENDED=FD&LOCKBIT=2F)
- le bootloader Optiboot (https://github.com/Optiboot/optiboot) que j'ai utilisé, en modifiant les fusibles "low_fuses" et "high_fuses" et "extended_fuses" de la config 328p / 8MHz dans le fichier "board.txt"
- un tuto (https://voidyourwarranty.wordpress.com/2014/08/17/using-arduino-as-an-isp-to-program-a-standalone-atmega-328p-including-fuses/) pour les branchements pour flasher, il en existe plusieurs sur internet
Titre: Re : Re : BreakoutBoard CAN
Posté par: ramboman le décembre 22, 2016, 09:48:58 am
Vous savez, cette petite carte CAN ne coûte que 1,68€, port compris et elle contient son quartz (à 8mhz) et tout le reste.

Personnellement je ne "bricolerai" pas une carte Arduino pour relier un 2515 qui risque de coûter plus cher et nécessite plus de fils de liaison et une modif des "fuse" que je ne sais pas faire avec l'IDE: il faut être expert.

Pour les débutants en tout cas, la carte toute faite est la solution la plus simple.

Merci pour ce lien...
Le bus CAN est en effet le seul (à ma connaissance) qui permette aux Arduino de communiquer sans relation maître-esclave...
Mon projet utilise actuellement 6 cantons, avec chacun un arduino, qui échangent de l'information...
essentiellement : est-ce que le canton est libre...
Le pilote est monté sur planche-à-pain... pas de difficulté, mais un vrai spaguetti...
Du point de vue architecture il y a pour chaque canton :
=> un Leonardo
=> un shield contrôleur 10A (pour LGB)
=> un circuit de détection (5 secteurs)
=> un board relais pour la commutation des sources
Le réseau CAN restait le point faible...
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le décembre 22, 2016, 09:54:07 am
Bonjour,

J'espère que tout ce qui est publié sur Locoduino vous permettra d'installer le bus CAN sans difficulté.

J'espère aussi que cet espoir vous fera passer un bon Noël.

Amicalement
Dominique
Titre: Re : BreakoutBoard CAN
Posté par: Souris verte le mars 18, 2018, 12:20:34 pm
Bjr,
Un due et des modules 2515 et 2551 sont en route.J’ai déjà 2Uno.
Est-il possible d’avoir des fréquences différentes en émission et réception ?
Ou dois-je émettre à la même vitesse sur le média ?

Côté due: CAN0.begin(CAN_BPS_500K);
Côté Uno/nano/mega: CAN0.begin(CAN_500KBPS,MCP_8MHZ);

Globalement la vitesse du bus est limitée par les petites cartes asiatiques.
Prochaine étape de mon projet, rejoindre un club de modélisme..ça devrait me permettre de répondre à certaines questions  :)
Merci
Titre: Re : Re : BreakoutBoard CAN
Posté par: Dominique le mars 18, 2018, 02:28:50 pm
Un due et des modules 2515 et 2551 sont en route.J’ai déjà 2Uno.
Est-il possible d’avoir des fréquences différentes en émission et réception ?
Ou dois-je émettre à la même vitesse sur le média ?
Côté due: CAN0.begin(CAN_BPS_500K);
Côté Uno/nano/mega: CAN0.begin(CAN_500KBPS,MCP_8MHZ);

Bonjour,

Des vitesses différentes en émission et réception : NON

Mais un Due ( can intégré) d’un côté et une carte chinoise a 8 MHz de l’autre, ça devrait marcher si la Bibliothèque est bien foutue. Je n’ai pas essayé encore mais j’ai tout ce qu’il faut pour le faire. Essayons chacun de notre côté et partageons les résultats.

Dominique
Titre: Re : Re : Re : BreakoutBoard CAN
Posté par: msport le avril 04, 2018, 04:02:41 pm

Est-il possible d’avoir des fréquences différentes en émission et réception ?


Tiens, ça me rappelle le Minitel (1200/75). Nostalgie pour lui et sa jolie musique ... Il y a juste 40 ans.
Titre: Re : BreakoutBoard CAN
Posté par: Dominique le avril 04, 2018, 04:18:46 pm
Tiens, ça me rappelle le Minitel (1200/75). Nostalgie pour lui et sa jolie musique ... Il y a juste 40 ans.
... « En 2010, 2 millions de personnes utilisaient encore le Minitel (grâce à iMinitel), pour 200 000 euros de chiffre d'affaires. Le service a été fermé par France Télécom - Orange le 30 juin 2012. L'arrêt du Minitel est une conséquence de la décroissance des usages et de la fermeture du réseau Transpac support de l'offre Minitel .» ... mais les 20 dernières années, les GAFA sont venues voir de plus prés ce modèle économique qui les a bien inspirées pendant qu’on en avait honte et ne prévoyait plus grand chose en France  :-\

Rien n’est perdu, il y a Locoduino  ;D