So erstellen Sie ein CAN-Bus-Netzwerk mit MCP2515- und Arduino-Modulen

  • Das CAN-Protokoll ermöglicht eine effiziente Kommunikation im Industrie- und Automobilumfeld.
  • Das Modul MCP2515 ist eine optimale Lösung für die Anbindung von Arduino an ein CAN-Netzwerk.
  • Der CAN-Bus verwendet zwei Kabel (CAN_H und CAN_L) für eine zuverlässige Datenübertragung über große Entfernungen.
  • Dieses Tutorial führt Sie Schritt für Schritt durch die Einrichtung und Verwendung eines CAN-Netzwerks mit Arduino.

vernetzte Autos

Wenn Sie Technik lieben und oft mit Arduino experimentieren, wird Sie dieser Artikel faszinieren. Heute werden wir sehen, wie Sie mit dem MCP2515-Modul und Arduino Ihr eigenes CAN-Netzwerk einrichten. Sie erfahren, wie Sie effizient und zuverlässig zwischen verschiedenen Geräten in einem CAN-Netzwerk kommunizieren. Diese Art von Netzwerk wird häufig in Automobilen und anderen industriellen Anwendungen eingesetzt.

Ganz gleich, ob Sie ein Automobilprojekt durchführen oder die Kommunikation zwischen mehreren Mikrocontrollern benötigen, der CAN-Bus eignet sich perfekt für Anwendungen, bei denen Zuverlässigkeit und Leistung von entscheidender Bedeutung sind. Und mit dem MCP2515-Modul ist es sehr einfach, Arduino in dieses Netzwerk zu integrieren. Machen Sie sich also bereit, sich eingehend mit dem CAN-Protokoll, der Hardware-Konfiguration und der notwendigen Programmierung vertraut zu machen.

Was ist CAN-Bus?

Der CAN-Bus (Controller Area Network) ist ein serielles Kommunikationsprotokoll, das es verschiedenen Geräten ermöglicht, miteinander zu kommunizieren. Es wurde 1986 von Bosch entwickelt und ist speziell für Automobilanwendungen konzipiert, obwohl seine Verwendung auch auf andere Bereiche wie die industrielle Automatisierung ausgeweitet wurde. In dieser Art von Netzwerk senden und empfangen verbundene Geräte Nachrichten, ohne dass ein zentraler Host oder Controller erforderlich ist. Dies macht es zu einem sehr effizienten Protokoll für Umgebungen, in denen Kommunikation und Zuverlässigkeit von entscheidender Bedeutung sind.

Ein modernes Auto enthält mehr als 70 Steuergeräte, sogenannte ECUs (Electronic Control Units), die über den CAN-Bus miteinander verbunden sind. Dank dieses Protokolls tauschen die Steuergeräte wichtige Informationen für den Betrieb des Fahrzeugs aus, beispielsweise Geschwindigkeitsdaten des Fahrzeugs oder die Stellung des Gaspedals.

CAN-Bus-Topologie und -Signale

Die Topologie des CAN-Systems ist Typ MultimasterDies bedeutet, dass jedes mit dem Netzwerk verbundene Gerät die Kontrolle über den Bus übernehmen und Nachrichten senden kann. Alle Knoten hören diese Nachrichten ab und entscheiden, ob sie antworten oder sie ignorieren.

Physikalisch gesehen erfolgt die Kommunikation über zwei Kabel: CAN_H y KANN ICH. Diese Kabel sind geflochten, um elektromagnetische Störungen zu minimieren. Zusätzlich müssen die Enden des Netzwerks mit 120-Ohm-Widerständen abgeschlossen werden, um Reflexionen im Signal zu vermeiden.

CAN-Signalisierung

Das CAN-System nutzt zur Kommunikation zwei logische Zustände: dominant y rezessiv. Im dominanten Zustand hat CAN_H eine Spannung von 3.5 V und CAN_L eine Spannung von 1.5 V. In diesem Zustand wird eine logische „0“ übertragen. Im rezessiven Zustand hingegen liegt an beiden Leitungen eine Spannung von 2.5V an, was anzeigt, dass der Bus frei ist und eine logische „1“ übertragen werden kann. Es ist diese Spannungsänderung zwischen den beiden Kabeln, die die Datenübertragung im Netzwerk ermöglicht.

Das MCP2515-Modul

El MCP2515-Modul Es ist eine ideale Lösung, um Ihrem Arduino CAN-Konnektivität hinzuzufügen. Es besteht aus einem CAN-Controller (dem MCP2515, der der CAN 2.0B-Spezifikation folgt) und einem CAN-Transceiver (dem TJA1050, der die physikalische Kommunikation übernimmt). Diese beiden Chips arbeiten zusammen, sodass Sie mit Ihrem Arduino über die SPI-Schnittstelle CAN-Nachrichten senden und empfangen können.

Der MCP2515 unterstützt sowohl Standardnachrichten (11 Bit) als auch erweiterte Nachrichten (29 Bit) und kann mithilfe von Masken und Filtern unerwünschte Nachrichten herausfiltern, wodurch der Mikrocontroller entlastet wird. Es ist eine hervorragende Option für Projekte, die eine zuverlässige Kommunikation erfordern, sei es in lauten Umgebungen oder über große Entfernungen.

Komponenten des MCP2515-Moduls

Das MCP2515-Modul umfasst die folgenden Teile:

  • MCP2515 CAN-Controller: Verantwortlich für die Ausführung aller CAN-Protokollfunktionen, wie z. B. das Senden und Empfangen von Nachrichten.
  • TJA1050 CAN-Transceiver: Verantwortlich für die Umwandlung von Daten vom CAN-Controller in Signale für den physischen CAN-Bus und umgekehrt.
  • SPI-Kommunikationspins: Mithilfe der SCK-, MOSI-, MISO- und CS-Pins kommuniziert der MCP2515 über seine SPI-Schnittstelle mit dem Arduino.
  • CAN-Bus-Terminals: Dieser kleine Schraubklemmenblock ist mit „H“ und „L“ gekennzeichnet. CAN_H und CAN_L müssen an die CAN-Netzwerkkabel angeschlossen werden.

So richten Sie ein CAN-Netzwerk mit Arduino ein

Mit dem MCP2515-Modul ist der Aufbau eines CAN-Netzwerks relativ einfach. Im Folgenden erkläre ich, wie Sie das Modul an Ihr Arduino-Board anschließen und die Software konfigurieren.

Anschlüsse des MCP2515-Moduls

Verbinden Sie zunächst die SPI-Pins Ihres Arduino wie folgt:

  • MISO (Modulausgang) an Pin D12 des Arduino
  • MOSI (Moduleingang) an Pin D11 von Arduino
  • SCK (Uhr) an Arduino-Pin D13
  • CS (Chip Select) an Arduino Pin D10

Sie müssen außerdem den INT-Pin des MCP2515 mit einem digitalen Arduino-Pin, zum Beispiel D2, verbinden, da dieser Pin zur Verarbeitung von Interrupts verwendet wird, wenn eine gültige Nachricht empfangen wird.

Vergessen Sie nicht, Ihr Modul mit Strom zu versorgen. Der VCC-Pin sollte an 5 V und der GND-Pin an Masse angeschlossen werden.

Bei den CAN-Bus-Anschlüssen verbinden Sie CAN_H mit CAN_H und CAN_L mit CAN_L zwischen den verschiedenen Knoten, die Sie miteinander verbinden möchten. Denken Sie daran, dass der CAN-Bus an beiden Enden mit einem 120-Ohm-Widerstand abgeschlossen werden muss.

Arduino-Programmierung

Sobald Sie die Knoten verbunden haben, ist es an der Zeit, Ihren Arduino so zu programmieren, dass er über das MCP2515-Modul mit dem CAN-Bus kommuniziert. Dies geht am besten über die Nutzung einer geeigneten Bibliothek, wie z.B. der Bibliothek 'mcp2515'.

Zuerst müssen Sie diese Bibliothek installieren. Wenn Sie die Arduino-IDE verwenden, gehen Sie zu Skizze > Bibliothek einschließen > Bibliotheken verwalten. Suchen Sie nach „mcp2515“ und wählen Sie die Installationsoption.

Wenn die Bibliothek installiert ist, können Sie mit dem Schreiben des Codes für Ihren Senderknoten und Ihren Empfängerknoten fortfahren. Im Folgenden zeige ich Ihnen grundlegende Beispiele für beides.

Codebeispiel für Senderknoten

Dieser Code sendet jede Sekunde eine „Hello World“-Nachricht über den CAN-Bus.

#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo transmisor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); }}void loop() { Serial.print("Enviando mensaje... "); CAN.beginPacket(0x12); CAN.write('H'); CAN.write('o'); CAN.write('l'); CAN.write('a'); CAN.write(' '); CAN.write('M'); CAN.write('u'); CAN.write('n'); CAN.write('d'); CAN.write('o'); CAN.endPacket(); Serial.println("Mensaje enviado correctamente"); delay(1000);}

Codebeispiel für den Empfangsknoten

Dieser Code empfängt Nachrichten vom CAN-Bus und zeigt sie auf dem seriellen Monitor an.

#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo receptor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); } CAN.onReceive(onReceive);}void loop() {}void onReceive(int packetSize) { Serial.print("Mensaje recibido con ID: 0x"); Serial.print(CAN.packetId(), HEX); Serial.print(" | Tamaño: "); Serial.print(packetSize); Serial.print(" | Datos: "); while (CAN.available()) { Serial.print((char)CAN.read()); } Serial.println();}

Geschwindigkeiten und Entfernungen in einem CAN-Netzwerk

Der CAN-Bus ermöglicht die Kommunikation mit unterschiedlichen Geschwindigkeiten. Die vom MCP2515 unterstützte Höchstgeschwindigkeit beträgt 1 Mbit/s, allerdings begrenzt die Länge des Busses die Übertragungsgeschwindigkeit. Bei 1 Mbit/s beträgt die maximale Buslänge beispielsweise etwa 40 Meter. Wenn Sie jedoch größere Distanzen zurücklegen müssen, können Sie Ihre Geschwindigkeit reduzieren. Bei 125 kbit/s kann die Buslänge 500 Meter erreichen.

Es ist wichtig, das Netzwerk gut zu planen und die Geschwindigkeit entsprechend der Länge des Busses und der Umgebung, in der er verwendet wird, zu verwenden, da laute Umgebungen die Qualität der Kommunikation beeinträchtigen können.

Denken Sie auch daran, Twisted-Pair-Kabel für CAN_H- und CAN_L-Kabel zu verwenden, da dies dazu beiträgt, elektromagnetische Störungen zu reduzieren und die Netzwerkzuverlässigkeit zu verbessern.

CAN-Netzwerk mit mehreren Knoten

Wenn Sie ein Netzwerk mit mehreren Knoten bilden möchten, ist der Vorgang sehr ähnlich. Sie müssen lediglich sicherstellen, dass alle Knoten parallel an die CAN_H- und CAN_L-Leitungen angeschlossen sind. Denken Sie auch daran, Abschlusswiderstände nur an den Enden der Hauptleitung und nicht an den Zwischenknoten anzubringen.

In einem komplexeren Netzwerk verfügen Sie möglicherweise über mehrere Knoten, die als Sender und Empfänger fungieren. Jeder Knoten belastet den Bus nur minimal, sodass bis zu 112 Knoten in einem CAN-Netzwerk verbunden werden können, ohne die Leistung wesentlich zu beeinträchtigen.

Ganz gleich, ob Sie einen CAN-Bus in einem Automobil zum Auslesen von Motordaten oder in einem Industrieprojekt zur Kommunikation mehrerer Sensoren verwenden, mit dem Modul MCP2515 können Sie diese Funktionalität einfach und effizient hinzufügen. Diese Art von Netzwerk ist ideal für Anwendungen, bei denen niedrige Latenzzeiten und Zuverlässigkeit bei der Datenübertragung von entscheidender Bedeutung sind.


Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.