Aller au contenu principal

Découverte du bus CAN

Présentation

Ce projet vise à découvrir par la pratique le fonctionnement du bus CAN. Sur cette page sont regroupés les liens vers les différentes expérimentations conduites par les membres du LAB.

Découverte du bus CAN

Matériel

Matériel nécessaire :

Logiciel

Logiciels utilisés :

Principe

Ces informations sont principalement issues de la page Wikipédia "Bus CAN".

Le bus CAN (Controller Area Network) est un bus système série très répandu dans beaucoup d'industries, notamment l'automobile. Développé à l'origine par Bosch dans les années 1980, il est aujourd'hui le standard de communication dans les véhicules modernes, où il relie les dizaines de calculateurs embarqués (moteur, ABS, airbags, tableau de bord, etc.).

Il met en application une approche connue sous le nom de multiplexage, qui consiste à raccorder à un même câble (un bus) un grand nombre de calculateurs qui communiqueront à tour de rôle. Cette technique élimine le besoin de câbler des lignes dédiées pour chaque information à faire transiter (connexion point-à-point).

Caractéristiques principales :

  • Bus différentiel : le signal est transmis sur deux fils (CAN_H et CAN_L). La différence de tension entre les deux détermine l'état logique, ce qui rend le bus très résistant aux perturbations électromagnétiques.
  • Multi-maître : n'importe quel nœud peut émettre à tout moment. En cas de collision, un mécanisme d'arbitrage bit à bit assure que le message de plus haute priorité (identifiant le plus bas) est transmis sans perte.
  • Trames : chaque message contient un identifiant (11 ou 29 bits), un champ de données (0 à 8 octets) et un CRC de contrôle d'erreur.
  • Terminaison : le bus doit être terminé par une résistance de 120 Ω à chaque extrémité pour éviter les réflexions de signal.

Expérimentations

1. Émission/Réception simple

Le cas le plus basique : un Arduino envoie une trame CAN contenant quelques octets, l'autre Arduino la reçoit et l'affiche sur le moniteur série. Cela permet de vérifier le câblage, la configuration des shields et le bon fonctionnement de la bibliothèque CAN-BUS Shield.

2. Émission de données RTC / Réception et affichage

L'Arduino émetteur lit l'heure depuis un module RTC (Real Time Clock) et l'envoie sous forme de trame CAN. L'Arduino récepteur décode la trame et affiche l'heure. Cela introduit la notion d'encodage de données structurées dans les 8 octets d'une trame CAN.

3. Émission RTC / Réception multi-shields avec adressage

Extension de l'expérimentation précédente avec plusieurs nœuds récepteurs sur le même bus. Chaque récepteur filtre les trames par identifiant CAN pour ne traiter que celles qui lui sont destinées. Cela illustre le fonctionnement multi-nœuds du bus et le mécanisme de filtrage par identifiant.

Bibliographie