Auteur Sujet: BreakoutBoard CAN  (Lu 32698 fois)

jac56

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #45 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.




Jacques

DDEFF

  • Hero Member
  • *****
  • Messages: 597
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #46 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)

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)

jac56

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #47 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.
« Modifié: décembre 10, 2015, 03:05:02 pm par jac56 »
Jacques

DDEFF

  • Hero Member
  • *****
  • Messages: 597
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #48 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

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.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1565
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #49 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
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2088
  • 100% Arduino et N
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #50 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.
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1565
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #51 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 :-)
Cordialement

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1565
    • Voir le profil
Re : Re : BreakoutBoard CAN
« Réponse #52 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 ?
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2088
  • 100% Arduino et N
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #53 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.
« Modifié: février 17, 2016, 11:32:36 am par Dominique »
Cordialement

bern69

  • Newbie
  • *
  • Messages: 33
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #54 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.

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2088
  • 100% Arduino et N
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #55 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
Cordialement

bern69

  • Newbie
  • *
  • Messages: 33
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #56 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

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2088
  • 100% Arduino et N
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #57 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

« Modifié: février 17, 2016, 11:28:11 am par Dominique »
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2088
  • 100% Arduino et N
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #58 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 !
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2088
  • 100% Arduino et N
    • Voir le profil
Re : BreakoutBoard CAN
« Réponse #59 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

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

Suspens...
Cordialement