MCP2515 CAN Problem (Arduino)

OP (Firma: privat :)) #6062741
Lesenswert?

Liebe Experten!

ich bin dabei, Daten über ein Arduino-CAN Modul Daten an ein 
"professionelles" CAN-USB Gerät zu senden. Habe alle möglichen Tests 
probiert, mein CAN-Modul auf dem Arduino Uno funktioniert (habe sogar 
ein zweites). Das Oszi spuckt auch was CAN-mäßiges daher bei allen CAN 
Modulen und dem USB Gerät mit Tx Modus.

Das Problem ist, dass zwischen dem CAN-USB Gerät und meinem CAN Modul 
keine Nachrichten erkannt werden. Beide Richtungen Tx/Rx auf beiden 
Geräten können nix miteinander anfangen (teilweise werden keine Errors 
angzeigt, nur wenn die Baudraten nicht übereinstimmen)... Leitungslänge 
ist 50cm mit 1x 120 Ohm.

Meine Frage ist, ob jemand Erfahrungen mit dem CAN Modul MCP2515 
zusammen mit industriellen CAN Geräten hat?
Habe auch noch verschiedene Libraries durchprobiert, alles erfolglos.

CAN MODUL:
MCP2515 
https://cdn-reichelt.de/documents/datenblatt/A300/SBC-CAN01-DATENBLATT.pdf
ARDUINO UNO (ATMEGA328P)

Besten Dank im Voraus!
OP (Firma: privat :)) #6062780
Lesenswert?

Hallo,

danke für die rasche Antwort.

Nein habe alles korrekt verdrahtet - die Komplexität dabei hält sich in 
Grenzen :D

Meine Bedenken sind nur, ob dieses "billige" CAN Modul das auch kann - 
dabei habe ich mal die Datenblätter durchforstet und die Frames, Pegel 
usw alles noch gegengecheckt - auch das sollte funktionieren.

Das professionelle Gerät ist von DeweSoft.

LG
#6062962
Lesenswert?

Tobi O. schrieb:
> Das Arduino CAN Modul
> kann's einfach nicht...

Glaub ich nicht, das Problem wird wohl eher bei dir oder den blind 
verwendeten Bibliotheken liegen.
So ist das wohl in der Arduino-Welt...

Nimm dir die Schaltung des Teils zur Brust. Schau nach der 
Hardwareanbindung ob das alles so passt wie es die lib. Taktfrequenz des 
MCP2551 muss auch berücksichtigt werden.
OP (Firma: privat :)) #6062978
Lesenswert?

Naja, dass es an mir liegt, schließe ich niemals aus. Habe gerade die 
Geduld verloren...

Habe sogut wie alle Bibliotheken durchprobiert, mit dem Oszi messe ich 
ja auch immer was. Könnte nochmal probieren, ob dasselbe rauskommt mit 
unterschiedlichen Bibliotheken.

Mit Joy it habe ich mal eine schlechte Erfahrung mit einem PC gemacht - 
das habe ich jetzt emotional mitgetragen haha.

Ich werde mich die nächste Woche wiedermal dranmachen an meine 
Problemstellung, und die Bibliotheken besser studieren.


LG
Gast #6063134
Lesenswert?

Tobi O. schrieb:

> CAN MODUL:
> MCP2515
> https://cdn-reichelt.de/documents/datenblatt/A300/SBC-CAN01-DATENBLATT.pdf
> ARDUINO UNO (ATMEGA328P)

Ich habe eine Idee, wo das Problem liegt. Du benutzt die Schraubklemmen? 
Da sind aber nur zwei, also eine zu wenig. Du brauchst, CAN_H, CAN_L und 
GND. Ohne durchverbundenen GND funktioniert es nicht sicher.

Außerdem muss am Anfang und am Ende des CAN-Busses jeweils ein 120 Ohm 
Widerstand zwischen CAN_H und CAN_L sein. Wenn alles angeschlossen , 
aber ausgeschaltet (Wichtig!) ist, musst Du etwa 60 Ohm zwischen CAN_H 
und CAN_L messen. Im Ruhezustand müssen CAN_H und CAN_L auf 2.5V liegen.

fchk
Gast #6063146
Lesenswert?

H.Joachim S. schrieb:
> Glaub ich nicht, das Problem wird wohl eher bei dir oder den blind
> verwendeten Bibliotheken liegen.
> So ist das wohl in der Arduino-Welt...

Das Problem liegt öfter mal hier:
> 8MHz Kristalloszillator

Einige Libs(alle?) gehen von 16MHz aus, da weit üblicher.
Das muss also aufmerksam konfiguriert werden.
OP (Firma: privat :)) #6063151
Lesenswert?

fchk schrieb:

> Ich habe eine Idee, wo das Problem liegt. Du benutzt die Schraubklemmen?
> Da sind aber nur zwei, also eine zu wenig. Du brauchst, CAN_H, CAN_L und
> GND. Ohne durchverbundenen GND funktioniert es nicht sicher.

hm, werde ich auf jeden Fall probieren - zwischen den beiden CAN-USB 
Geräten ging es mit dem gleichen Kabel tadellos, ohne GND dazwischen. 
Natürlich habe ich die beiden am gleichen PC betrieben - das wäre der 
dann gleiche GND. amKopfkratz

@Arduino Fanboy:
Ja das hatte ich bereits in einigen Foren mitgekriegt - auf dem 
Oszillator steht SW-65-16M  --> klingt für mich nach 16MHz (google 
liefert nix dazu).

Komme wie gesagt nächste Woche wieder dazu, halte Euch am laufenden!

Danke und noch schönen Nikolo :D

LG Tobi
#6063154
Lesenswert?

H.Joachim S. schrieb:
> Nimm dir die Schaltung des Teils zur Brust. Schau nach der
> Hardwareanbindung ob das alles so passt wie es die lib. Taktfrequenz des
> MCP2551 muss auch berücksichtigt werden.

Genau, das ist ein häufiges Problem: in der Lib ist als Standardtakt 16 
Mhz eingestellt, auf dem CAN-Modul ist jedoch ein anderer Quarz verbaut.
Siehe: https://www.fischl.de/usbtin/#troubleshooting
#6063315
Lesenswert?

Hallo Tobi,

der MCP2515 hat die Betriebsart Loop-Back-mode. Damit kannst du deinen
CAN-Modul ohne externen CAN-Busteilnehmer testen (Acknowlwdge wird 
simuliert).

In dieser Betriebsart wird die gesendete CAN-Message intern als 
CAN-Message
empfangen. Damit kannst du deinen CAN-Modul einschliesslich Software 
testen.

Noch ein spezieller Hinweis zur Initialisierung des MCP2515. Wenn du
einen RESET-Befehl (0xC0) an den MPC2515 sendest, um den MCP2515 in den
COnfiguration-Mode zu setzen, solltest du mindestens 10ms warten, bis du
weitere Befehle an den MCP2515 sendest.

Gruß  Werner
OP (Firma: privat :)) #6063325
Lesenswert?

Hallo Werner!

Danke für deine Antwort! Ja der loopback funktioniert einwandfrei. Den 
Reset brauche ich ja nur ein einziges Mal zur Initialisierung oder?

Gedenke das mcp2515-board nur als Sender zu verwenden, um ein paar Daten 
vom microcontroller weiterzuschieben.

Lg
#6064414
Lesenswert?

Tobi O. schrieb:
> Hallo Werner!
>
> Danke für deine Antwort! Ja der loopback funktioniert einwandfrei. Den
> Reset brauche ich ja nur ein einziges Mal zur Initialisierung oder?
>

Hallo Tobi,

ja, den RESET brauchst du in der Regel nur für den Configuration Mode.

Wenn dein Modul im Loop Back Mode funktioniert, liegt dein Problem
wahrscheinlich im BIT-Timing bzw. in der falschen Baudrate.
Bei wieviel Prozent liegt denn der Sample Point ?

Gruß

Werner
OP (Firma: privat :)) #6068085
Lesenswert?

So liebe mikrocontroller.net Helfer -

Es funktioniert nun einwandfrei - habe CAN_L und CAN_H doch nochmal 
vertauscht und siehe da... Das Ding ist, es steht vlt sogar falsch auf 
dem CAN Shield drauf - habe alle Dokumentationen durchgeschaut, so wie 
es jetzt funktioniert, ist es eigentlich verkehrt rum verdrahtet...

An der Baudrate lag es nicht - der Oszilalla hat 16MHz...

Manch andrer möge sich doof vorkommen, aber mei - jetzt geht es!

Danke an Eure Unterstützung! Ich hoffe irgendwann selbst genug Erfahrung 
zu haben und andere hier unterstützen zu können.

Macht's gut und bis bald!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren