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!
Welches "professionelle CAN-USB-Gerät" ist es denn? CANH/CANL vertauscht? Masse mit verdrahtet?
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
Also habe jetzt noch ein drittes Gerät getestet - Das Arduino CAN Modul kann's einfach nicht... Wandert gleich in die Tonne, Joy-it wird ab jetzt vermieden. Werde mir mal ein anderes CAN Shield holen und dieses dann testen. LG
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.
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
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
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.
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
:
Bearbeitet durch User
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
Tobi O. schrieb: > klingt für mich nach 16MHz Das von dir verlinkte Produkt Datenblatt sagt was anderes. Aber, wie auch immer .....
Arduino Fanboy D. schrieb: > Das von dir verlinkte Produkt Datenblatt sagt was anderes. Stimmt, da steht 8Mhz, aber wenn man schaut, stehen auf Website und Datenblatt was verschiedenes. Die Abbildung vom Datenblatt zeigt auch einen 8MHz Oszillator. Auf meinem steht nix von 8, nur von 16M...
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
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
Tobi O. schrieb: > Ja der loopback funktioniert einwandfrei. Also mit ziemlicher Sicherheit ein Problem der Taktfrequenz. Kannst ja das "fremde" Gerät mal auf halbe Baudrate setzen. Das passt dann, wenn die Initialsierung des MCP von 16MHz ausgeht, tatsächlich aber nur mit 8MHz läuft.
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
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!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.