Table des matières:
- Étape 1: Qu'est-ce que CANBUS
- Étape 2: À propos des communications CAN
- Étape 3: cadres
- Étape 4: Vitesse et distance
- Étape 5: Matériel
- Étape 6: Connexion
- Étape 7: Coder
- Étape 8: Afficher
Vidéo: Un tutoriel simple pour CANBUS : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
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
À 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
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
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
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
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
Allumez les deux modules, la température et l'humidité seront affichées sur l'écran.
Conseillé:
Tutoriel : Comment faire un capteur de température simple en utilisant DS18B20 et Arduino UNO : 3 étapes
Tutoriel : Comment faire un capteur de température simple en utilisant DS18B20 et Arduino UNO : Description : Ce tutoriel vous montrera quelques étapes simples sur la façon de rendre le capteur de température fonctionnel. Cela ne prend que quelques minutes pour le concrétiser sur votre projet. Bonne chance ! Le thermomètre numérique DS18B20 fournit une température Celsius de 9 à 12 bits
Tutoriel simple Arduino sur la résistance à détection de force (FSR) : 8 étapes
Tutoriel simple Arduino sur la résistance à détection de force (FSR) : dans ce tutoriel, nous allons apprendre à détecter la force appliquée à la résistance à détection de force (FSR) et à l'afficher sur l'écran OLED + nous définirons les limites avec une LED verte et une LED rouge .Regarder une vidéo de démonstration
CARBOT SIMPLE -- ARDUINO -- CONTRLE BLUETOOTH -- TUTORIEL : 10 étapes (avec photos)
CARBOT SIMPLE || ARDUINO || CONTRLE BLUETOOTH || TUTORIEL : DANS CET INSTRUCTION, JE MONTRERAI COMMENT CRÉER UN BOT SIMPLE QUI EST CONTRLÉ PAR VOTRE SMARTPHONE VIA BLUETOOTHPARTS NÉCESSAIRES :☻ARDUINO☻MOTEURS 2X ☻HC-05 MODULE BLUETOOTH☻ORDINATEUR PORTABLE OU PC (POUR TÉLÉCHARGER LE CODE SUR ARDUINO☻ALIMENTATION ÉLECTRIQUE ( J'AI UTILISÉ UNE BANQUE D'ÉNERGIE
Tutoriel pour L298 2Amp Motor Driver Shield pour Arduino: 6 étapes
Tutoriel pour le blindage de pilote de moteur L298 2Amp pour Arduino: DescriptionLe blindage de pilote de moteur L298 2Amp pour Arduino est basé sur le circuit intégré de pilote de moteur L298, un pilote de moteur à pont complet. Il peut piloter deux moteurs CC 2A séparés ou 1 moteur pas à pas 2A. La vitesse et les directions du moteur peuvent être contrôlées séparément
Comment programmer en C-simple Tutoriel : 5 étapes
Comment programmer en C-simple Tutoriel : Veuillez commenter si vous aimez ça ! Ce Instructable apprendra à n'importe qui à écrire un programme simple dans le langage de programmation C