Hallo, ich habe einen CAN- BUS mit 3 Teilnehmern (A, B, C). Teilnehmer A ist ein Raspberry, welcher mit dem pican 2 Shield betrieben wird. B & C sind ein Arduino mit jeweils einen TJA1050 MCP2515 Shield. Teilnehemr A und B sind 30cm entfernt, B ist zu C etwa 8m entfernt. Hänge ich nur A und B an den CAN- Bus, funktioniert alles problemlos. Hänge ich zusätzlich Teilnehmer C dazu, kann Teilnehmer B plötzlich nichts mehr senden (keiner Acknowledged das Datenpaket), aber er empfängt noch Pakete. A und C können miteinander sprechen. Entferne ich Teilnehmer C wieder, können A und B wieder kommunizieren. Alle benutzen das gleiche GND, B und C jedoch eine andere Spannungsquelle. Auf A und C ist der Endwiderstand aktiviert. Geschwindigkeit ist 125kbit/s auf allen Teilnehmern eingestellt. Ich hatte das gleiche Setup bereits öfters mit allen 3 Teilnehmern auf gleichen Tisch probiert, dort funktionierte alles problemlos (alle hatten aber die gleiche Spannungsquelle und waren höchstens 30cm auseinander. Hat jemand eine Idee, woran das liegen könnte?
tja typisch. Die Bastler können heute nur noch Shields benutzen -sprich irgendwas irgendwo reinstecken- und fertige Software einbinden und sind nicht in der Lage einem evtl. Fehler auf den Grund zu gehen. Wie wäre es als erstes, sich mit einem Oszi die Signale und Signalqualität anzusehen? Die dann zu sehenden Unterschiede sind wesentlich zielführender, als hier im Nebel rumzustochern und anderer Leute Zeit zu stehlen.
Beitrag #5360848 wurde vom Autor gelöscht.
Holger T. schrieb: > Terminierungswiderstände? Würde ich auch vermuten. Wenn entweder zu wenig (offene Enden) oder zu viele (Shields sind als Punkt-zu-Punkt-Verbindung ausgelegt).
Thomas schrieb: > Was sind Terminierungswiderstände? Die Abschlußwiderstände für den Bus. 120 Ohm am beiden Enden des Busses. Thomas schrieb: > Auf A und C ist der Endwiderstand aktiviert.
Da hier nun ein 2ter Thomas als Gast herumgeistert, habe ich meinen Namen auf ThomasM geändert :)... Komme leider erst wieder nächste Woche zum probieren, aber mal grundsätzlich: Als Kabel kann ich ein mormales Datenkabel geschirmt verwenden? Es muss kein besonderes Kabel sein? STK500-Besitzer schrieb: > Würde ich auch vermuten. Wenn entweder zu wenig (offene Enden) oder zu > viele (Shields sind als Punkt-zu-Punkt-Verbindung ausgelegt). Derzeit ist ein Endwiderstand auf Client A und C (siehe Bild erster Beitrag). Wäre es auch möglich, dass ich gar keine brauche? Wenn ich die Datenrate reduziere, werden Fehler auf dem Bus eher verziehen oder? Also könnte ich mal mit wesentlich geringerer Geschwindigkeit testen?
ThomasM schrieb: > Derzeit ist ein Endwiderstand auf Client A und C (siehe Bild erster > Beitrag). Ich habe schon viel zu oft im Leben gehört: Das haben wir geprüft. Das ist In Ordnung und kann nicht die Ursache sein. ThomasM schrieb: > Wäre es auch möglich, dass ich gar keine brauche? Echt jetzt? Beschäftige Dich mit der CAN Spezifikation! ThomasM schrieb: > Alle benutzen das gleiche GND, B und C jedoch eine andere > Spannungsquelle. Ist für mich völlig unlogisch. A und B liegen nebeneinander, C angeblich in 8 m Entfernung. Wie ist GND ausgeführt? Vervollständige Deine Skizze um GND, Versorgung und Endwiderstände. Aber so, wie ausgeführt und nicht wie geplant. Es ist sehr wahrscheinlich, dass der Fehler dort zu finden ist. ThomasM schrieb: > Als Kabel kann ich ein mormales Datenkabel geschirmt verwenden? Es muss > kein besonderes Kabel sein? Bei den Datenraten, Längen können es (zum Test) zwei einzelne (verdrillte) Drähte sein. Sven L. schrieb: >Was passiert wenn du B und C tauschst? Beantworte diese Frage, sonst Oliver schrieb: >... als hier im Nebel rumzustochern und anderer > Leute Zeit zu stehlen.
Alles ausschalten und messen ob zwischen CAN-HI und CAN-LO 60 Ohm sind.
Anbei die absolute Wahrheit. Die Endwiderstände sind jeweils am Shield mit einem Jumper aktiviert.
ThomasM schrieb: > Anbei die absolute Wahrheit. Ich sehe gerade, die L & H leitung vom CAN Bus ist beim Teilnehmer C verdreht ist in der Realität nicht so ;-)
ThomasM schrieb: > Anbei die absolute Wahrheit. > > Die Endwiderstände sind jeweils am Shield mit einem Jumper aktiviert. Hast Du jetzt mal gemessen und sind da tatsächlich 60 Ohm zu messen ? (wie oben vorgeschlagen ?) Gruß Sven
:
Bearbeitet durch User
Sven K. schrieb: > Hast Du jetzt mal gemessen und sind da tatsächlich 60 Ohm zu messen ? > (wie oben vorgeschlagen ?) Kann ich leider erst wieder Sonntag bzw. Montag :( ...
ThomasM schrieb: > Anbei die absolute Wahrheit. Die Masseverbindung zwischen A+B und C ist bei CAN nicht zwingend notwendig. Versuchs mal ohne. Meine China-MCP2515-Module haben eine 8MHz Quarz statt die üblichen 16MHz. Das muss man bei der Initialisierung des MCP2515 berücksichtigen.
Thomas F. schrieb: > Die Masseverbindung zwischen A+B und C ist bei CAN nicht zwingend > notwendig. Die habe ich auch erst gezogen, weil B nicht funktionierte. dummschwaetzer schrieb: > Dreh mal ein Netzteilstecker 180° in der Steckdose +/- sind korrekt angeschlossen und gemessen. Thomas F. schrieb: > Meine China-MCP2515-Module haben eine 8MHz Quarz statt die üblichen > 16MHz. Das muss man bei der Initialisierung des MCP2515 berücksichtigen. Der Raspberry (A) hat ein 16Mhz Quarz verbaut, die Microcontroller (B,C) haben 8Mhz Quarz verbaut. Bei der Initialisierung ist der korrekte Wert angebenen. 2 unterschiedliche Quarz machen eh kein Problem?
Hallo, habe nun einen 4ten CAN- Bus mit Arduino zum Testen gebaut und anstatt von Teilnehmer B ins Netz gehängt. Siehe da, es funktioniert alles. Habe nun vom Teilnehmer B den CAN- Bus Shield ausgetauscht und alles funktioniert nun :) ... Danke für eure Hilfe!
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.