Auteur Sujet: Le bus CAN  (Lu 86422 fois)

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #30 le: septembre 11, 2017, 11:36:30 pm »
Bonsoir Jean-Luc,

Merci pour le lien Atom que j'ai installé et me permet d'ouvrir les fichiers .h
En ce qui concerne la bibliothéque MCP2515_lib-master c'est une mauvaise question car je n'en ai plus souvenir
à moins que ce ne soit ici au détour d'un des messages des forum.
J'ai installé la bibliothéque indiquée sur votre message et modifié la ligne 56 comme demandé
Je n'ai rien constaté sur la console hormis le sempiternel :
CAN BUS init echec
Init CAN BUS a nouveau
Enter setting mode fall
Le même fichier de mon ancienne bibliothéque MCP2515_lib-master indique à la ligne 39
#define DEBUG_MODE 0 que j'ai mis à 1. Même probléme, même sanction (message ci-dessus).
Je vous le joints en copie.
Au niveau du cablage je ne pense pas m'être trompé. Sur le Nano La pinoche 0 correspond à TX,
la 1 à RX et ainsi de suite.
Je remarque qu'au bout d'un certain temps la led TX du Nano cesse de clignoter.
La compilation ne pose pas de probléme ni le téléversement tant que COM1 n'est pas utilisé.
Demain je vais essayer de vérifier que la communication entre le Mega et UNO fonctionne
en reprenant vos articles.

Amitiés et bonne nuit

Gérard

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Le bus CAN
« Réponse #31 le: septembre 12, 2017, 05:47:57 pm »
La différence est le

Citer
Enter setting mode fall

Qui indique où ça échoue. Et ça échoue immédiatement lors de la mise en mode configuration du 2515 qui constitue la première tentative de lecture d'un registre du 2515 via le SPI.

Pour moi il y a un problème de câblage.
Cordialement

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #32 le: septembre 14, 2017, 12:14:11 pm »
Bonjour Jean-Luc,

J'ai re-vérifié plusieurs fois le cablage de l'ensemble . Je n'ai rien trouvé qui me paraisse erronné.

En me baladant sur divers forums j'ai retrouvé les mêmes indications de branchement entre le Nano
et la carte CAN.

Voici trois photos qui montre ce que j'ai fait. 2 pour le Nano et une carte can.
La carte Nano22 branchement alimentation et Nano 12 liaisons CAN

J'espére simplement quelles sont de qualités suffisantes et j'attends votre verdict sur le sujet.

Amitiés et merci pour le temps que vous me consacrez

Gérard

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #33 le: septembre 14, 2017, 12:15:13 pm »
et voici la 3éme
Question annexe : comment alimenter les 2 Arduinos sans générer de problème ?
Un est branché au port USB pour visualiser les messages reçus (moniteur).
Le second peut-il être alimenté par un autre port USB ou dois-je utiliser une alimentation extérieure ?
Configuration pour tester la bonne réception des messages du UNO vers le Mega.

Merci et bonne journée

Gérard
« Modifié: septembre 14, 2017, 12:27:35 pm par gerard31 »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Le bus CAN
« Réponse #34 le: septembre 14, 2017, 02:02:37 pm »
Pour alimenter un Arduino, un simple chargeur USB suffit, ou une alimentation 6 à 12V avec une sortie Jack pour les Uno ou le Mega :

voir l'article http://www.locoduino.org/spip.php?article16
Cordialement,
Dominique

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #35 le: septembre 14, 2017, 02:47:12 pm »
Bonjour Dominique,

Tout à fait d'accord avec vous ; c'est ce que je fais en "Arduino autonome".
Mon interrogation est surtout le fait que  les 2 Arduinos sont "reliés" entre eux
 au travers des interfaces Can ((liaison H et L) et que transite-t-il au travers des interfaces Can ?

Merci et amitiés

Gérard

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Le bus CAN
« Réponse #36 le: septembre 14, 2017, 03:50:41 pm »
Bonjour Gerard,

Les liaisons CanH et CanL sont "flottantes" et les signaux qui transitent sont considérés en "différentiel", sans référence au GND ou à l'alimentation des émetteurs et récepteurs.
Une émetteur peut être en 3,3V (un Due par exemple) et un récepteur en 5V (un Uno par exemple).
Il n'est pas besoin de relier les GND ensemble.

Chaque nœud est connecté au bus par l'intermédiaire d'une paire torsadée (blindée ou non).
Les deux extrémités du bus doivent être rebouclées par des résistances de 120 Ω (tolérance entre 108 Ω et 132 Ω).

Donc 2 fils et c'est tout.
voir :
http://www.locoduino.org/spip.php?article130
http://www.locoduino.org/spip.php?article148

... et les nombreux commentaires.

Bon courage
Dominique
Cordialement,
Dominique

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1715
    • Voir le profil
Re : Le bus CAN
« Réponse #37 le: septembre 14, 2017, 05:32:48 pm »
Bonjour Gérard,

Je vais contredire en partie Dominique.

Bien que le signal soit différentiel, la différence de tension entre les masses des nœuds connectés aux réseau CAN ne doit pas dépasser une certaine valeur. La norme ISO-11898 indique un différentiel compris entre -2V et +7V. Le MCP2551 de Microchip indique de -12V à +12V. En pratique, quand toutes les cartes sont branchées sur une ou plusieurs alimentations, le réseau EDF donne une référence commune à tout le monde.

Dans ta plateforme d'essais, un problème de communication pourrait survenir si un ensemble de nœuds CAN est alimenté via un bloc secteur, alors qu'un autre ensemble de nœuds est alimenté via l'USB d'un ordinateur portable fonctionnant sur batterie. Dans ce cas, il se pourrait que le différentiel de masses dépasse ce qui est toléré avec des erreurs de transmission à la clé.
« Modifié: septembre 14, 2017, 05:37:03 pm par Jean-Luc »
Cordialement

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #38 le: septembre 15, 2017, 10:19:15 pm »
Bonsoir Jean-Luc et Dominique,

Quelques progrés.
Il faut lire et relire les deux articles et surtout le second pour la mise en application.

Aujourd'hui test de fonctionnement du réseau CAN entre le Mega et le Uno.
Procédure simple envoi d'une valeur différente par chacun d'eux et  réception
par l'autre : c'est OK sans probléme hormis ceux traditionnels de la copie du programme. MERCI

La deuxième phase mise en application sur le reseau et j'ai déjà mon idée.
Avec le Uno je teste  le nombre de tour (decodeur IR Dominique) et transmet l'info au Mega
 qui gére la circulation. Lourd sans doute mais je me fait la main.

Ce matin j'ai changé l'IDE Arduino (version 1.6.13 à 1.8.4) et réessayer de téléverser sur mes Nanos
toujours impossible. Personne ne sétant manifesté je pense qu'il s'agit peut être d'un probléme ponctuel.

Je n'ai pas changé le quartz sur les cartes Can chinoises 2515 donc 8 mhz.

Pour Dominique bon courage pour l'intervention et bon prompt rétablissement.

Amitiés

Gérard


Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Le bus CAN
« Réponse #39 le: septembre 15, 2017, 11:08:41 pm »
Bonsoir Gérard,

Pour trouver ce qui se passe sur le Nano, le mieux serait de poster le schéma complet et le programme. En général on ne voit plus la petite erreur qui est sous ses yeux et un oeil extérieur la voit du premier coup.
Si ça marche sur le Uno et pas le Nano, ça reste étrange.

Amicalement
Dominique
Cordialement,
Dominique

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #40 le: septembre 15, 2017, 11:57:07 pm »
Bonsoir Dominique,

Je suppose le shéma des branchemens entre le Nano et la carte Can ?

Amitiés

Gérard

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Le bus CAN
« Réponse #41 le: septembre 16, 2017, 08:49:08 am »
Le schéma complet et le programme complet c'est mieux.
Cordialement,
Dominique

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : Le bus CAN
« Réponse #42 le: septembre 17, 2017, 12:49:10 pm »
Bonjour Dominique,

Voici de quoi satisfaire les deux demandes.
J'ai eu une surprise hier. J'ai laissé tourné mon Nano pendant plusieurs heures.
Au début la led Tx clignote en permanence ; à mon retour  le moniteur
affiche correctement le contenu de la valeur envoyée ????????
Ci-joint les deux fichiers shèma de cablage des cartes et programme utilisé
(il porte le nom...UNO mais est aussi adapté au Nano);

Amitiés,

Gérard

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1085
  • HO avec DCC++
    • Voir le profil
Re : Le bus CAN : Quartz 8 MHz et quartz 16 MHz
« Réponse #43 le: septembre 26, 2018, 03:51:05 pm »
Bonjour,

Je ne crois pas que cela est déjà été évoqué sur le forum, je vous pousse donc cette info. Si vous utilisez sur le même bus CAN des cartes à 8 et des cartes à 16 MHz, il faudra régler les vitesses en conséquence dans votre programme. La vitesse du 8 MHz devra être le double de celle du 16 MHz.

Respectivement par exemple : CAN.begin(CAN_1000KBPS) et CAN.begin(CAN_500KBPS)

Bien amicalement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Re : Le bus CAN
« Réponse #44 le: septembre 26, 2018, 04:19:33 pm »
Bonjour Dominique,

Voici de quoi satisfaire les deux demandes.
J'ai eu une surprise hier. J'ai laissé tourné mon Nano pendant plusieurs heures.
Au début la led Tx clignote en permanence ; à mon retour  le moniteur
affiche correctement le contenu de la valeur envoyée ????????
Ci-joint les deux fichiers shèma de cablage des cartes et programme utilisé
(il porte le nom...UNO mais est aussi adapté au Nano);

Amitiés,

Gérard

Quelques remarques sur .ino

- ne pas mettre de GOTO !
- ne pas mettre de delay() mais faire des tests sur la valeur de millis()
- CAN_recup() : ne garder que la première partie, le traitement d'un seul message par loop dans la memoire circulaire doit être dans la loop.
- Serial.println(Rbuf[8]) n'affiche que le 8ème octet et ça ce sert à rien car il est affiché avant correctement
- dumpcan est une variable locale dans CAN_recup et non initialisée. Il faut la mettre en globale.
- ...

Donc à revoir...
Cordialement,
Dominique