Table des matières:

Un tutoriel simple pour CANBUS : 8 étapes
Un tutoriel simple pour CANBUS : 8 étapes

Vidéo: Un tutoriel simple pour CANBUS : 8 étapes

Vidéo: Un tutoriel simple pour CANBUS : 8 étapes
Vidéo: Remove the canbus information wire 2024, Novembre
Anonim
Un tutoriel simple pour CANBUS
Un tutoriel simple pour CANBUS

J'étudie le CAN depuis trois semaines, et maintenant j'ai complété quelques applications pour valider mes résultats d'apprentissage. Dans ce tutoriel, vous apprendrez à utiliser Arduino pour mettre en œuvre la communication CANBUS. Si vous avez des suggestions, n'hésitez pas à laisser un message.

Fournitures:

Matériel:

  • Maduino Zéro CANBUS
  • Module de température et d'humidité DHT11
  • 1.3" I2C OLED 128x64- Bleu
  • Câble DB9 vers DB9 (femelle vers femelle)
  • Ligne Dupont

Logiciel:

IDE Arduino

Étape 1: Qu'est-ce que CANBUS

Qu'est-ce que CANBUS
Qu'est-ce que CANBUS
Qu'est-ce que CANBUS
Qu'est-ce que CANBUS

À propos du CAN

CAN (Controller Area Network) est un réseau de communication série qui peut réaliser un contrôle distribué en temps réel. Il est développé pour l'industrie automobile afin de remplacer le faisceau de câblage complexe par un bus à deux fils.

Le protocole CAN définit la couche de liaison de données et une partie de la couche physique dans le modèle OSI.

Le protocole CAN est normalisé ISO avec ISO11898 et ISO11519. ISO11898 est la norme de communication CAN haute vitesse avec une vitesse de communication de 125 kbps-1 Mbps. ISO11519 est la norme de communication CAN basse vitesse avec une vitesse de communication inférieure à 125 kbps.

Ici, nous nous concentrons sur le CAN à grande vitesse.

ISO-11898 décrit comment les informations sont transmises entre les appareils d'un réseau et se conforme au modèle d'interconnexion des systèmes ouverts (OSI) qui est défini en termes de couches. La communication réelle entre les appareils connectés par le support physique est définie par la couche physique du modèle

  • Chaque unité CAN connectée au bus peut être appelée un nœud. Toutes les unités CAN sont connectées à un bus terminé à chaque extrémité par des résistances de 120 Ω pour former un réseau. Le bus se compose de lignes CAN_H et CAN_L. Le contrôleur CAN détermine le niveau du bus en fonction de la différence de niveau de puissance sur les deux fils. Les niveaux de bus sont divisés en niveaux dominants et récessifs, qui doivent être l'un d'entre eux. L'expéditeur envoie le message au destinataire en effectuant une modification au niveau du bus. Lorsque la ligne logique "et" est exécutée sur le bus, le niveau dominant est "0" et le niveau récessif est "1".
  • A l'état dominant, la tension de CAN_H est d'environ 3,5V et la tension de CAN_L est d'environ 1,5V. A l'état récessif, la tension des deux lignes est d'environ 2,5V.
  • Le signal est différentiel, c'est pourquoi CAN tire sa robuste immunité au bruit et sa tolérance aux pannes. Le signal différentiel équilibré réduit le couplage de bruit et permet des taux de signalisation élevés sur un câble à paire torsadée. Le courant dans chaque ligne de signal est égal mais dans la direction opposée et il en résulte un effet d'annulation de champ qui est la clé de faibles émissions de bruit. L'utilisation de récepteurs différentiels équilibrés et de câbles à paires torsadées améliore la réjection en mode commun et l'immunité élevée au bruit d'un bus CAN.

Émetteur-récepteur CAN

L'émetteur-récepteur CAN est responsable de la conversion entre le niveau logique et le signal physique. Convertir un signal logique en un niveau différentiel ou un signal physique en un niveau logique.

Contrôleur CAN

Le contrôleur CAN est le composant central de CAN, qui réalise toutes les fonctions de la couche de liaison de données dans le protocole CAN et peut résoudre automatiquement le protocole CAN.

MCU

Le MCU est responsable du contrôle du circuit fonctionnel et du contrôleur CAN. Par exemple, les paramètres du contrôleur CAN sont initialisés au démarrage du nœud, la trame CAN est lue et envoyée via le contrôleur CAN, etc.

Étape 2: À propos des communications CAN

Lorsque le bus est inactif, tous les nœuds peuvent commencer à envoyer des messages (contrôle multi-maître). Le nœud qui accède en premier au bus obtient le droit d'émettre (mode CSMA/CA). Lorsque plusieurs nœuds commencent à envoyer en même temps, le nœud qui envoie le message ID de haute priorité obtient le droit d'envoyer.

Dans le protocole CAN, tous les messages sont envoyés dans un format fixe. Lorsque le bus est inactif, toutes les unités connectées au bus peuvent commencer à envoyer de nouveaux messages. Lorsque plus de deux cellules commencent à envoyer des messages en même temps, la priorité est déterminée en fonction de l'identifiant. L'ID ne représente pas l'adresse de destination de l'envoi, mais plutôt la priorité du message accédant au bus. Lorsque plus de deux cellules commencent à envoyer des messages en même temps, chaque bit de l'ID sans intérêt est arbitré un par un. L'unité qui remporte l'arbitrage peut continuer à envoyer des messages, et l'unité qui perd l'arbitrage arrête immédiatement d'envoyer et reçoit le travail.

Le bus CAN est un bus de type diffusion. Cela signifie que tous les nœuds peuvent « entendre » toutes les transmissions. tous les nœuds capteront invariablement tout le trafic. Le matériel CAN fournit un filtrage local afin que chaque nœud ne puisse réagir qu'aux messages intéressants.

Étape 3: cadres

Cadres
Cadres

Les appareils CAN envoient des données sur le réseau CAN dans des paquets appelés trames. CAN a quatre types de trames:

  • Trame de données: une trame contenant des données de nœud pour la transmission
  • Trame distante: une trame demandant la transmission d'un identifiant spécifique
  • Trame d'erreur: une trame transmise par tout nœud détectant une erreur
  • Overload frame: une trame pour injecter un délai entre les données ou la trame distante

Trame de données

Il existe deux types de trames de données, standard et étendues.

La signification des champs de bits de la figure est:

  • SOF: le bit de début de trame (SOF) unique dominant marque le début du message et est utilisé pour synchroniser les nœuds sur un bus après avoir été inactifs.
  • Identifiant - L'identifiant CAN standard à 11 bits établit la priorité du message. Plus la valeur binaire est faible, plus sa priorité est élevée.
  • RTR–Le bit unique de demande de transmission à distance (RTR)
  • IDE - Un bit d'extension d'identifiant unique dominant (IDE) signifie qu'un identifiant CAN standard sans extension est transmis.
  • R0–Bit réservé (pour une utilisation possible par un futur amendement standard).
  • DLC–Le code de longueur de données (DLC) à 4 bits contient le nombre d'octets de données en cours de transmission.
  • Données: jusqu'à 64 bits de données d'application peuvent être transmis.
  • CRC–Le contrôle de redondance cyclique (CRC) 16 bits (15 bits plus délimiteur) contient la somme de contrôle (nombre de bits transmis) des données d'application précédentes pour la détection d'erreurs.
  • ACK–ACK est 2 bits, l'un est le bit d'accusé de réception et le second est un délimiteur.
  • EOF - Ce champ de 7 bits de fin de trame (EOF) marque la fin d'une trame CAN (message) et désactive le bourrage de bits, indiquant une erreur de bourrage lorsqu'il est dominant. Lorsque 5 bits du même niveau logique apparaissent successivement pendant le fonctionnement normal, un bit du niveau logique opposé est inséré dans les données.
  • IFS–Cet espace intertrame (IFS) de 7 bits contient le temps requis par le contrôleur pour déplacer une trame correctement reçue vers sa position appropriée dans une zone de tampon de message.

Arbitrage

Dans l'état de repos du bus, l'unité qui commence à envoyer le message obtient d'abord le droit d'envoi. Lorsque plusieurs unités commencent à envoyer en même temps, chaque unité émettrice commence au premier bit du segment d'arbitrage. L'unité avec le plus grand nombre de niveaux dominants de sortie continue peut continuer à envoyer.

Étape 4: Vitesse et distance

Vitesse et distance
Vitesse et distance

Le bus CAN est un bus qui connecte plusieurs unités en même temps. Il n'y a théoriquement aucune limite au nombre total d'unités pouvant être connectées. En pratique, cependant, le nombre d'unités pouvant être connectées est limité par la temporisation sur le bus et la charge électrique. Réduisez la vitesse de communication, augmentez le nombre d'unités pouvant être connectées et augmentez la vitesse de communication, le nombre d'unités pouvant être connectées diminue.

La distance de communication est inversement proportionnelle à la vitesse de communication, et plus la distance de communication est grande, plus la vitesse de communication est faible. La distance la plus longue peut être de 1 km ou plus, mais la vitesse est inférieure à 40 km/s.

Étape 5: Matériel

Matériel
Matériel

Le module Maduino Zero CAN-BUS est un outil développé par Makerfabs pour la communication CANbus, il est basé sur Arduino, avec le contrôleur CAN et l'émetteur-récepteur CAN, pour créer un port CAN-bus prêt à l'emploi.

  • Le MCP2515 est un contrôleur CAN autonome qui implémente la spécification CAN. Il est capable de transmettre et de recevoir des données standard et étendues et des trames distantes.
  • Le MAX3051 s'interface entre le contrôleur de protocole CAN et les fils physiques des lignes de bus dans un réseau de zone de contrôleur (CAN). Le MAX3051 fournit une capacité de transmission différentielle au bus et une capacité de réception différentielle au contrôleur CAN.

Étape 6: Connexion

Lien
Lien

Connectez le module DHT11 au module Maduino Zero CAN-BUS avec des fils à utiliser comme instrument pour prendre en charge la communication CAN. De même, connectez l'écran au module pour recevoir les données et les afficher.

La connexion entre Maduino Zero CANBUS et DHT11:

Maduino Zéro CANBUS -- DHT11

3v3 ------ VCC GND ------ GND D10 ------ DONNÉES

La connexion entre Maduino Zero CANBUS et OLED:

Maduino Zéro CANBUS -- OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Utilisez un câble DB9 pour connecter les deux modules Maduino Zero CANBUS.

Étape 7: Coder

Le MAX3051 complète la conversion des niveaux différentiels en signaux logiques. Le MCP2515 complète la fonction CAN telle que l'encodage et le décodage des données. Le MCU n'a besoin que d'initialiser le contrôleur et d'envoyer et de recevoir des données.

  • Github:
  • Après avoir installé Arduino, il n'y a pas de package pour prendre en charge la carte (Arduino zéro) qui doit être installé.
  • Sélectionnez Tools -> Board -> Board Manager, recherchez "Arduino zero" et installez "Arduino SAMD Boards".
  • Sélectionnez Outils -> Carte -> Arduino Zero (Port USB natif), sélectionnez Outils -> Port -> com…
  • Après avoir obtenu le programme de GitHub, vous devez vous assurer que tous les fichiers se trouvent dans le répertoire du projet, qui contient les fichiers de bibliothèque prenant en charge CANBUS.
  • Installez la bibliothèque de capteurs DHT d'Adafruit, qui est utilisée pour piloter le DHT11 pour obtenir la température et l'humidité.
  • Utilisez différentes adresses pour envoyer la température et l'humidité séparément dans le code Test_DHT11.ino.

CAN.sendMsgBuf(0x10, 0, stmp1.length(), stmp_send1);

retard (500); CAN.sendMsgBuf(0x11, 0, stmp2.length(), stmp_send2); retard (500);

« 0x10 » signifie l'ID du message, « 0 » est la trame standard moyenne, « stmp1.length() » signifie la longueur du message, « stmp_send1 » est les données envoyées.

  • Dans le code Test_OLED.ino, tous les messages sur le CANBUS sont reçus par requête et les informations requises sont affichées sur l'OLED.
  • Téléchargez le programme Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino sur le module connecté au capteur, et téléchargez le programme Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino sur un autre module connecté à l'OLED.

Étape 8: Afficher

Spectacle
Spectacle
Spectacle
Spectacle

Allumez les deux modules, la température et l'humidité seront affichées sur l'écran.

Conseillé: