Probleme beim Aufbau einer Verbindung CAN-BUS

Hallo zusammen,

ich habe versucht mit 2 Arduino UNO's und jeweils einem MKR CAN Shield (https://www.arduino.cc/en/Guide/MKRCANShield) eine Verbindung aufzubauen und über den CAN-Bus zu kommunizieren. Ich habe die vom CAN Shield empfohlene Library verwendet (https://github.com/sandeepmistry/arduino-CAN/). Dabei gibt es Beispiele "CANReceiver" und "CANSender". Das jeweilige Beispiel erfolgreich auf einen Arduino geladen und die Boards miteinander verbunden.

CAN Bus Shield - Arduino Uno INT 7 - INT0 2 SCK 9 - SCK 13 MOSI 8 - MOSI 11 MISO 10 - MISO 12 CS 3 - CS 10 GND - GND VCC - 5V

Leider zeigt es im Serial Monitor beim Receiver nur "CAN Receiver" und beim Sender nur "CAN Sender" "Sending packet ..." an. Das erste Paket wird also nicht komplett versendet und beim Receiver kommt auch nichts an.

Ich habe schon verschiedenste Libraries und Beispiele probiert, leider ohne Erfolg...

Sind die MKR CAN Shields nicht mit dem Arduino UNO kompatibel? Ich dachte es wär nur die SPI-Schnittstelle entscheidet? Habt ihr noch andere Ideen was das Problem sein könnte?

Viele Grüße!

Hallo,

im Prinzip sind diese CAN-Module zwar alle gleich, weil überall der MCP2515 drauf ist.

Aber dieses Teil ist für den Anschluss an Controller gedacht, die mit 3,3 V Logik arbeiten. Wenn du das mit 5 V Signalen aus einem Uno versorgt hast, ist die Wahrscheinlichkeit hoch, dass es jetzt hinüber ist.

Hallo,

danke für schnelle Antwort! kann ich das irgendwie überprüfen? Wenn ich während dem Sketch beim Sender den Stecker SCK, MISO oder MOSI abziehe dann läuft das Programm beim Sender durch. Allerdings kommt beim Receiver nichts an. Ich benutze auch CANoe am Computer und wenn ich das Interface mit meinem Shield verbinde und Nachrichten senden möchte wird kein Empfänger erkannt.

Angaben vom Shield:

Interface: SPI Driven CAN Controller at 5V with 16V Vin Max Buck On-Board Converter Circuit Operating Voltage: 3.3 V

Viele Grüße

Hallo,

überprüfen kann man das mit Scope oder Logikanalysator. CANoe ist ja eher nicht bei armen Leuten zu Hause, da kann man das ja mal vorschlagen.

Nochmal: Das Shield ist nicht für einen 5 V Controller geeignet. Wenn du es also testen willst, nimm einen 3,3V Arduino. (Bei dem Preis für dieses Shield hätte man auch gleich einen Teensy und ein Transceiver IC kaufen können, da hätte man leistungsfähigeres CAN und einen leistungsfähigeren Arduino.)

Schau, ob da SPI-Kommunikation stattfindet, ob noch Signale zwischen dem MCP2515 und dem Transceiver laufen und ob an den Ausgängen des Transceivers was ist.

Für Abschlusswiderstände im Bus hast du gesorgt ?

Laut Schaltplan wird das Shield mit drei Spannungen versorgt: (links oben)
5V geht zum Transceiver
VIN geht zum Wandler, der anscheinend 12 V erzeugt ? Hat mit dem Rest der Schaltung kaum Verbindung
VCC geht als +3V3 Leitung einmal durch die ganze Schaltung

Wenn du für VCC 5V statt 3.3V angelegt hast, ist wahrscheinlich der Transceiver kaputt, das ist ein TJA1049T/3, der bekommt 3.3V und 5V Versorgungsspannung. Schau ins Datenblatt, ob der 3,3V Teil auch 5V überlebt.

Beim MCP2515 kommt es drauf an, was du an VCC angelegt hast. Der kann 5V, aber die Eingänge vertragen nur VCC + 1.0V. Hast du ihn mit 3,3V versorgt und ein 5V SPI Signal an den Eingang gelegt, waren das 0,7 V zuviel, das dürfte der Eingang kaum überlebt haben.

Hallo,

Logikanalysator habe ich leider keinen zur Verfügung. Ich könnte mit einem LeCroy Oszilloskop Messungen durchführen.

Da in der Beschreibung (https://github.com/sandeepmistry/arduino-CAN) VCC auf 5V gelegt wurde bin ich entsprechend vorgegangen.

Abschlusswiderstände habe ich bei dem Shield aktiviert als auch deaktiviert getestet, also an denen kann es nicht liegen.

Ich werde das Shield mit einem Adafruit Feather M0 Blueprint LE nochmal testen. Soll ich einfach die Beispiele aus der Library hochladen oder kannst Du mir etwas anderes empfehlen?

Aus dem Datenblatt vom TJA1049/T3 habe ich folgendes entnommen: "TJA1049T/3 and TJA1049TK/3 can be interfaced directly to microcontrollers with supply voltages from 3 V to 5 V"

Viele Grüße

Nexo: Soll ich einfach die Beispiele aus der Library hochladen oder kannst Du mir etwas anderes empfehlen?

Mit den Libraries für den MCP habe ich keine eigene Erfahrung, ich benutze für CAN nur den Teensy oder notfalls den Due. Die haben beide integrierte CAN-Interfaces.