Inhaltsverzeichnis:
- Schritt 1: Was ist CANBUS?
- Schritt 2: Über CAN-Kommunikation
- Schritt 3: Rahmen
- Schritt 4: Geschwindigkeit und Distanz
- Schritt 5: Hardware
- Schritt 6: Verbindung
- Schritt 7: Code
- Schritt 8: Zeigen
Video: Ein einfaches Tutorial für CANBUS - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Ich studiere seit drei Wochen CAN und habe jetzt einige Bewerbungen ausgefüllt, um meine Lernergebnisse zu validieren. In diesem Tutorial erfahren Sie, wie Sie mit Arduino die CANBUS-Kommunikation implementieren. Wenn Sie Vorschläge haben, können Sie gerne eine Nachricht hinterlassen.
Lieferungen:
Hardware:
- Maduino Zero CANBUS
- DHT11 Temperatur- und Feuchtigkeitsmodul
- 1,3" I2C OLED 128x64 - Blau
- DB9 zu DB9 Kabel (weiblich zu weiblich)
- Dupont-Linie
Software:
Arduino-IDE
Schritt 1: Was ist CANBUS?
Über CAN
CAN (Controller Area Network) ist ein serielles Kommunikationsnetzwerk, das eine verteilte Echtzeitsteuerung realisieren kann. Es wurde für die Automobilindustrie entwickelt, um den komplexen Kabelbaum durch einen Zweidrahtbus zu ersetzen.
Das CAN-Protokoll definiert die Sicherungsschicht und einen Teil der physikalischen Schicht im OSI-Modell.
Das CAN-Protokoll ist ISO-standardisiert mit ISO11898 und ISO11519. ISO11898 ist der CAN-Hochgeschwindigkeits-Kommunikationsstandard mit einer Kommunikationsgeschwindigkeit von 125kbps-1Mbps. ISO11519 ist der CAN-Low-Speed-Kommunikationsstandard mit einer Kommunikationsgeschwindigkeit von weniger als 125kbps.
Hier konzentrieren wir uns auf High-Speed-CAN.
ISO-11898 beschreibt, wie Informationen zwischen Geräten in einem Netzwerk weitergegeben werden und entspricht dem Open Systems Interconnection Model (OSI), das in Bezug auf Schichten definiert ist. Die tatsächliche Kommunikation zwischen Geräten, die über das physikalische Medium verbunden sind, wird durch die physikalische Schicht des Modells definiert
- Jede an den Bus angeschlossene CAN-Einheit kann als Knoten bezeichnet werden. Alle CAN-Einheiten sind an einen Bus angeschlossen, der an beiden Enden mit 120--Widerständen terminiert ist, um ein Netzwerk zu bilden. Der Bus besteht aus den Leitungen CAN_H und CAN_L. Der CAN-Controller bestimmt den Buspegel anhand der Differenz des Leistungspegels auf beiden Drähten. Bus-Ebenen werden in dominante und rezessive Ebenen unterteilt, die eine davon sein müssen. Der Sender sendet die Nachricht an den Empfänger, indem er eine Änderung auf Busebene vornimmt. Wenn die logische Leitung "und" auf dem Bus ausgeführt wird, ist der dominante Pegel "0" und der rezessive Pegel "1".
- Im dominanten Zustand beträgt die Spannung von CAN_H etwa 3,5 V und die Spannung von CAN_L etwa 1,5 V. Im rezessiven Zustand beträgt die Spannung beider Leitungen etwa 2,5V.
- Das Signal ist differentiell, weshalb CAN seine robuste Störfestigkeit und Fehlertoleranz ableitet. Das symmetrische Differenzsignal reduziert die Rauschkopplung und ermöglicht hohe Signalraten über Twisted-Pair-Kabel. Der Strom in jeder Signalleitung ist gleich, aber in die entgegengesetzte Richtung und führt zu einem Feldunterdrückungseffekt, der für geringe Geräuschemissionen entscheidend ist. Die Verwendung von symmetrischen Differenzempfängern und Twisted-Pair-Verkabelung verbessert die Gleichtaktunterdrückung und die hohe Störfestigkeit eines CAN-Busses.
CAN-Transceiver
Der CAN-Transceiver ist für die Wandlung zwischen dem logischen Pegel und dem physikalischen Signal verantwortlich. Wandeln Sie ein logisches Signal in einen Differenzpegel oder ein physikalisches Signal in einen logischen Pegel um.
CAN-Controller
Der CAN-Controller ist die Kernkomponente von CAN, die alle Funktionen der Sicherungsschicht im CAN-Protokoll realisiert und das CAN-Protokoll automatisch auflösen kann.
MCU
Die MCU ist für die Ansteuerung des Funktionskreises und des CAN-Controllers zuständig. Zum Beispiel werden die CAN-Controller-Parameter beim Start des Knotens initialisiert, der CAN-Frame wird gelesen und durch den CAN-Controller gesendet usw.
Schritt 2: Über CAN-Kommunikation
Im Ruhezustand des Busses können alle Knoten mit dem Senden von Nachrichten beginnen (Multi-Master-Steuerung). Der Knoten, der zuerst auf den Bus zugreift, erhält das Senderecht (CSMA/CA-Modus). Wenn mehrere Knoten gleichzeitig mit dem Senden beginnen, erhält der Knoten, der die ID-Nachricht mit hoher Priorität sendet, das Recht zum Senden.
Im CAN-Protokoll werden alle Nachrichten in einem festen Format gesendet. Wenn der Bus im Leerlauf ist, können alle an den Bus angeschlossenen Einheiten mit dem Senden neuer Nachrichten beginnen. Wenn mehr als zwei Zellen gleichzeitig mit dem Senden von Nachrichten beginnen, wird die Priorität basierend auf der Kennung bestimmt. Die ID repräsentiert nicht die Zieladresse des Sendens, sondern die Priorität der auf den Bus zugreifenden Nachricht. Wenn mehr als zwei Zellen gleichzeitig mit dem Senden von Nachrichten beginnen, wird jedes Bit der zinsfreien ID nacheinander entschieden. Die Einheit, die das Schiedsverfahren gewinnt, kann weiterhin Nachrichten senden, und die Einheit, die das Schiedsverfahren verliert, hört sofort auf zu senden und empfängt das Werk.
Der CAN-Bus ist ein Broadcast-Bus. Dies bedeutet, dass alle Knoten alle Übertragungen „hören“können. alle Knoten werden ausnahmslos den gesamten Verkehr aufnehmen. Die CAN-Hardware bietet eine lokale Filterung, so dass jeder Knoten nur auf die interessanten Nachrichten reagieren kann.
Schritt 3: Rahmen
CAN-Geräte senden Daten über das CAN-Netzwerk in Paketen, die als Frames bezeichnet werden. CAN hat vier Rahmentypen:
- Datenrahmen: ein Rahmen, der Knotendaten für die Übertragung enthält
- Remote-Frame: ein Frame, der die Übertragung einer bestimmten Kennung anfordert
- Error-Frame: ein Frame, der von einem beliebigen Knoten gesendet wird, der einen Fehler erkennt
- Overload-Frame: ein Frame zum Einfügen einer Verzögerung zwischen Daten oder Remote-Frame
Datenrahmen
Es gibt zwei Arten von Datenrahmen, Standard und erweitert.
Die Bitfelder der Abbildung haben folgende Bedeutung:
- SOF – Das einzelne dominante Start-of-Frame-Bit (SOF) markiert den Beginn der Nachricht und wird verwendet, um die Knoten auf einem Bus nach dem Leerlauf zu synchronisieren.
- Identifier-Der Standard-CAN-11-Bit-Identifier legt die Priorität der Nachricht fest. Je niedriger der Binärwert, desto höher seine Priorität.
- RTR – Das einzelne Remote Transmission Request (RTR)-Bit
- IDE – Ein dominantes Single Identifier Extension (IDE)-Bit bedeutet, dass ein Standard-CAN-Identifier ohne Erweiterung übertragen wird.
- R0 – Reserviertes Bit (für mögliche Verwendung durch zukünftige Standardänderungen).
- DLC – Der 4-Bit-Datenlängencode (DLC) enthält die Anzahl der übertragenen Datenbytes.
- Daten–Bis zu 64 Bit Anwendungsdaten können übertragen werden.
- CRC – Die 16 Bit (15 Bit plus Trennzeichen) zyklische Redundanzprüfung (CRC) enthält die Prüfsumme (Anzahl der übertragenen Bits) der vorhergehenden Anwendungsdaten zur Fehlererkennung.
- ACK–ACK besteht aus 2 Bits, eines ist das Bestätigungsbit und das zweite ist ein Begrenzer.
- EOF – Dieses 7-Bit-Feld für das Ende des Rahmens (EOF) markiert das Ende eines CAN-Rahmens (Nachricht) und deaktiviert das Bitstuffing, was bei Dominanz einen Stuffing-Fehler anzeigt. Wenn im Normalbetrieb 5 Bits des gleichen Logikpegels nacheinander auftreten, wird ein Bit des entgegengesetzten Logikpegels in die Daten gestopft.
- IFS – Dieser 7-Bit-Interframe-Raum (IFS) enthält die Zeit, die der Controller benötigt, um einen korrekt empfangenen Frame an seine richtige Position in einem Nachrichtenpufferbereich zu verschieben.
Schiedsverfahren
Im Bus-Ruhezustand erhält die Einheit, die zuerst mit dem Senden der Nachricht beginnt, das Senderecht. Wenn mehrere Einheiten gleichzeitig mit dem Senden beginnen, beginnt jede sendende Einheit beim ersten Bit des Arbitrierungssegments. Das Gerät mit der größten Anzahl von Dauerausgangs-dominanten Pegeln kann weiter senden.
Schritt 4: Geschwindigkeit und Distanz
Der CAN-Bus ist ein Bus, der mehrere Geräte gleichzeitig verbindet. Die Gesamtzahl der anschließbaren Geräte ist theoretisch unbegrenzt. In der Praxis ist die Anzahl der anschließbaren Geräte jedoch durch die Zeitverzögerung am Bus und die elektrische Last begrenzt. Reduzieren Sie die Kommunikationsgeschwindigkeit, erhöhen Sie die Anzahl der anschließbaren Einheiten und erhöhen Sie die Kommunikationsgeschwindigkeit, die Anzahl der anschließbaren Einheiten verringert sich.
Die Kommunikationsentfernung ist umgekehrt proportional zur Kommunikationsgeschwindigkeit, und je weiter die Kommunikationsentfernung ist, desto geringer ist die Kommunikationsgeschwindigkeit. Die längere Distanz kann 1 km oder mehr betragen, aber die Geschwindigkeit beträgt weniger als 40 km/s.
Schritt 5: Hardware
Das Maduino Zero CAN-BUS-Modul ist ein von Makerfabs entwickeltes Tool für die CANbus-Kommunikation, das auf Arduino basiert, mit dem CAN-Controller und dem CAN-Transceiver, um einen gebrauchsfertigen CAN-Bus-Port zu erstellen.
- MCP2515 ist ein eigenständiger CAN-Controller, der die CAN-Spezifikation implementiert. Es ist in der Lage, sowohl Standard- als auch erweiterte Daten und Remote-Frames zu senden und zu empfangen.
- Der MAX3051 bildet die Schnittstelle zwischen dem CAN-Protokollcontroller und den physischen Leitungen der Busleitungen in einem Controller Area Network (CAN). Der MAX3051 bietet differentielle Sendefähigkeit zum Bus und differentielle Empfangsfähigkeit zum CAN-Controller.
Schritt 6: Verbindung
Verbinden Sie das DHT11-Modul mit dem Maduino Zero CAN-BUS-Modul mit Drähten, die als Instrument zur Unterstützung der CAN-Kommunikation verwendet werden sollen. Schließen Sie auf ähnliche Weise das Display an das Modul an, um die Daten zu empfangen und anzuzeigen.
Die Verbindung zwischen Maduino Zero CANBUS und DHT11:
Maduino Zero CANBUS -- DHT11
3v3 ------ VCC GND ------ GND D10 ------ DATEN
Die Verbindung zwischen Maduino Zero CANBUS und OLED:
Maduino Zero CANBUS -- OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
Verwenden Sie ein DB9-Kabel, um die beiden Maduino Zero CANBUS-Module zu verbinden.
Schritt 7: Code
Der MAX3051 vervollständigt die Umwandlung von Differenzpegeln in logische Signale. Der MCP2515 vervollständigt CAN-Funktionen wie Datenkodierung und -dekodierung. Die MCU muss nur den Controller initialisieren und Daten senden und empfangen.
- Github:
- Nach der Installation von Arduino gibt es kein Paket zur Unterstützung des zu installierenden Boards (Arduino Zero).
- Wählen Sie Tools -> Board -> Board Manager, suchen Sie nach "Arduino Zero" und installieren Sie "Arduino SAMD Boards".
- Wählen Sie Tools -> Board -> Arduino Zero (Native USB Port), wählen Sie Tools -> Port -> com…
- Nachdem Sie das Programm von GitHub erhalten haben, müssen Sie sicherstellen, dass sich alle Dateien im Projektverzeichnis befinden, das Bibliotheksdateien enthält, die CANBUS unterstützen.
- Installieren Sie die DHT-Sensorbibliothek von Adafruit, die verwendet wird, um den DHT11 zu steuern, um Temperatur und Luftfeuchtigkeit zu erhalten.
- Verwenden Sie im Code Test_DHT11.ino unterschiedliche Adressen, um Temperatur und Luftfeuchtigkeit separat zu senden.
CAN.sendMsgBuf(0x10, 0, stmp1.length(), stmp_send1);
Verzögerung (500); CAN.sendMsgBuf(0x11, 0, stmp2.length(), stmp_send2); Verzögerung (500);
„0x10“steht für die Nachrichten-ID, „0“steht für den Standard-Frame, „stmp1.length()“steht für die Nachrichtenlänge, „stmp_send1“für die gesendeten Daten.
- Im Code Test_OLED.ino werden alle Nachrichten auf dem CANBUS per Abfrage empfangen und die benötigten Informationen auf dem OLED angezeigt.
- Laden Sie das Programm Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino auf das Modul hoch, das mit dem Sensor verbunden ist, und laden Sie das Programm Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino auf ein anderes Modul hoch, das mit dem OLED verbunden ist.
Schritt 8: Zeigen
Schalten Sie die beiden Module ein, Temperatur und Luftfeuchtigkeit werden auf dem Display angezeigt.
Empfohlen:
Machen Sie ein einfaches Bewegungssensor-Licht! (PIR): 13 Schritte (mit Bildern)
Machen Sie ein einfaches Bewegungssensor-Licht! (PIR): Machen Sie eine kleine & Einfaches Bewegungssensorlicht mit weniger Aufwand und weniger Komponenten. Ein Anfänger könnte dies auch machen. Ein einfaches Verständnis der Funktionsweise von Transistoren und Kenntnisse über Anode und Kathode sind nur erforderlich, um es spannungsfrei zu machen
So erstellen Sie ein einfaches Logo in Indesign – wikiHow
So erstellen Sie ein einfaches Logo in Indesign: Von: Alyssa White, Joanne Fong und Hannah BarreMaterialien:-InDesign 2015-Computer und Maus-Optional: Stift und Papier für SkizzenZeit zum Ausfüllen: weniger als 10 MinutenHintergrund:Bevor Sie ein Logo erstellen, ist es wichtig, das grundlegende CRAP-Design zu verstehen
Fügen Sie ein Bild für Ihr Konto ein: 4 Schritte
Setzen Sie ein Bild für Ihr Konto: Ich werde einige von Ihnen zeigen, die Hilfe beim Hinzufügen eines Bildes als Avatar oder für Ihr anweisbares benötigen. Hier sind einige Schritt-für-Schritt-Anleitungen, wie Sie dies tun. Bitte zögern Sie nicht, Kommentare und einige Tipps für dieses instructable hinzuzufügen. Unter
So erstellen Sie ein einfaches Videospiel: 3 Schritte
So erstellen Sie ein einfaches Videospiel!: Bei Popfly.com können Sie kostenlos ein einfaches Spiel erstellen, ohne Code schreiben zu müssen!! Alles was Sie brauchen ist ein Hotmail-Konto und VIEL Zeit
Ein einfaches Batch-Trivia-Spiel erstellen – wikiHow
So erstellen Sie ein einfaches Batch-Trivia-Spiel: Dies ist eine sehr einfache Möglichkeit, ein Trivia-Spiel zu erstellen. Ich hoffe du magst es. Übrigens habe ich auch bereits ein Trivia-Spiel gepostet. Wenn Sie also kein eigenes machen möchten, gehen Sie einfach auf diese Website https://www.instructables.com/id/Trivia_Game/die über uns gepostete Website