Hallo,
Ich hab viele interessante Artikel in diesem Forum zum CAN Bus gefunden.
Nun würde ich gerne einen AT90CAN128 oder ähnlichen Controler verwenden
um den CAN Bus eines Fahrzeugs mitzulesen. Ich dachte mir,man könnte ein
kleines Interface konstruieren, das man einfach parallel an die drei Bus
leitungen anschließt und die Frames seriell ausgibt oder auf ein Display
schreibt. Leider weis ich nicht so recht, ob beispielsweise folgendes
Projekt dabei hilfreich ist:
Beitrag "Beispiel Projekt AT90CAN128 AVRStudio LCD Timer"
Würde eine socleh einfache Schaltung ausreichen?
Gruß,Sebastian
>Masse wird nicht benötigt. CAN ist ein Differenzieller Bus.
dennoch gibt es eine seperate CAN_GND-Leitung die gerade im
automobilebereich für alle Hersteller notwendig ist.
das grösste Problem welches Du wahrscheinlich bekommen wirst ist dass,
das Du in erfahrung bringen musst welche COB-ID zu welchem Parameter
gehört, ansonsten nützt das ganze auslesen ja nichts!
Wenn Du auf dem Bus "nur hören" willst, müsste das Teil oben völlig
ausreichen, vom Daten senden würde ich ersteinmal abraten bis Deine
Soft- und Hardware ganz sicher fehlerfrei funktioniert! ;)
die GND Verbindung wird benötigt.
Es ist richtig, dass CAN ein differentieller Bus ist, aber er beruht
trotzdem auf einer Referenzspannung und das ist nun mal GND. Im Auto
dient die Karosserie als GND Referenzpotential.
Bei kurzen Anschlusskabeln mag es vielleicht funktionieren, aber bei
längeren nicht mehr. Das Problem verstärkt sich, wenn man zudem eine,
vom Fahrzeug, unabhänge Spannungsversorgung nimmt.
@F'Dor
Ich würde mal behapten, dass dein Aussage von vorne bis hinten Falsch
ist. Der CAN-Bus läuft auch bei getrennten Betriebsspannung nur über 2
Leitungen. Wenn GND als Referenz dienen würde währe es kein
differentieller Bus mehr. Das einzige wozu GND gut ist, ist für die
Abschimung der Leitung.
> Wenn GND als Referenz dienen würde
Nein, GND dient NICHT als Referenz, trotzdem musst du die GNDs verbinden
oder das Ganze galvanisch trennen.
Sag mal, arbeitest du zufällig in einer Firma, die sowas herstellt? Dann
bitte deren Namen- damit man nicht zufälligerweise solch einen Schrott
kauft.....
> Nein, GND dient NICHT als Referenz, trotzdem musst du die GNDs verbinden> oder das Ganze galvanisch trennen.
Ist doch genau das was ich sage. Ich hoffe du hast dich auch schon mit
Masseschleifen beschäftigt.
> Sag mal, arbeitest du zufällig in einer Firma, die sowas herstellt?
Ich arbeite bei Renault ;-P
Die ganze Diskussion über die Masse ist doch sinnlos, bei Anschluss an
das Bordnetz ist der GND des CAN-Transceiver an GND bzw. Fahrzeugmasse
angeschlossen. Eine galvanische Trennung ist auch vollkommen sinnfrei,
wenn die Schaltung aus dem Bordnetz versorgt wird.
Gruss Otto
@Bensch - Warum so aggressive? Dieses Problem hatte ich während meiner
Diplomarbeit!
Hab mir fast schon gedacht, dass meine Erklärung etwas zu kurz ist. :)
GND dient als Referenz! (siehe auch HS-CAN Application Note von Infineon
Seite 5)
und zwar weil:
beim CAN Bus der rezessive Zustand bei 2,5V liegt. Im dominanten Zustand
ist CANL etwa 1,5V und CANH etwa 3,5V (messbar).
Differenziell heißt nun, dass der Transceiver intern eine differentielle
Spannung "berechnet" U_diff = U_CANH - U_CANL. Das macht im rezessiven
Zustand 0V und im dominanten Zustand 2V. Nachlesbar in diversen
Application Notes, zB. Infineon TLE6251 oder Philips TJA1041.
Ohne GND Verbindung kann es nun zu eine GND Offset zwischen den Knoten
kommen, damit kann die differentielle Spannung nicht mehr ermittelt
werden. Ein Knoten kann den anderen zwar empfangen, der andere aber
nicht mehr senden. (hängt davon ab ob man einen negativen oder positiven
GND Offset hat).
Das einzige Problem sind Bezugspotentiale, die so unterschiedlich sind,
dass die Transceiver sterben.
Beispiel: CAN-Teilnehmer1 hat seine Masse bei 0V, CAN-Teilnehmer2 hat
seine Masse z.B. bei 80V -> wenn diese nur über die beiden CAN-Leitungen
verbunden sind, führt das zum vorzeigen Ableben des Transceivers, da die
absoluten Pegel dann eben 80V+2.5V sind...
Sollten die beiden Teilnehmer galvanisch getrennt sein, funktioniert
alles wie gewollt.
> Das einzige Problem sind Bezugspotentiale, die so unterschiedlich sind,
dass die Transceiver sterben.
Genau DAS ist das Problem, das hier einige nicht kapieren.
In jedem Fall gibt es bei differentieller Übertragung DREI Verbindungen.
Ob eine davon jetzt durch die Fahrzeugkarosserie hgergestellt wird,
spielt keine Rolle. Und beim Projekt des OP ist das zusätzliche Teil
vermutlich NICHT fest mit der Karosserie verbunden, also braucht er
mindestens 3 Leitungen plus evtl. Betriebsspannung.
Ich denke, hier wird einiges zusammen in einen Topf geworfen.
1. Gemeinsamme Betriebsspannung : GND sollte nicht als 3. Leitung für
den Bus verwendet werden, bereits eine Masseverbindung über das Chassis
besteht => Masseschleife. Empfänger und Sender sind schon (über die
Karosserie) Massemäßig verbunden. Da darf die Potentalunterschied
(Shifted Ground) nicht zu groß werden, sonst Tranciever kaputt.
Gut das F'Dor die Application Notes vom Infineon TLE6251 ansprichst.
http://www.infineon.com/dgdl/HighSpeedCAN-AN.pdf?folderId=db3a304412b407950112b408e8c90004&fileId=db3a304412b407950112b416f93221e8
Ihr möget euch mal Absatz 2.3.6 zu Gemüte führen.
2. Getrennte Versorgungsspannungen : Eine GND Leitung ist nicht
erforderlich, da differentieller Bus.
> Das einzige Problem sind Bezugspotentiale, die so unterschiedlich sind,> dass die Transceiver sterben.
Das nenntr sich auch Ground shift. Also "gemeinsamme" Masse, da nicht
galvanisch getrennt, oder anders herum eine elektrische Verbindung
besteht.
> Beispiel: CAN-Teilnehmer1 hat seine Masse bei 0V, CAN-Teilnehmer2 hat> seine Masse z.B. bei 80V -> wenn diese nur über die beiden CAN-Leitungen> verbunden sind, führt das zum vorzeigen Ableben des Transceivers, da die> absoluten Pegel dann eben 80V+2.5V sind...
Sollte sich dieser Satz auf Getrennte Versorgungsspannungen beziehen:
Ohne Masseverbindung gibt es diese 80V nicht, sondern nur die
Differenspannung.
>Warum braucht man diesen MC2515? Ist der ATCAN nicht ausreichend?
Du meinst den MC2551, das ist der Transceiver für die CAN-Hardware des
uC.
>Du meinst bestimmt den MCP2515 und das ist ein CAN-Controller.
Ich glaube nicht, dass er das meinte... ;)
Gruss,
Edson
Um noch mal eben auf die Eingangsfrage zurückzukommen (die Sache mit dem
GND sollte man vielleicht in einem anderen Thread austragen...):
Die reinen CAN-Daten abzuhören ist sicherlich hardwaremäßig kein
Problem. Wenn du jetzt aber versuchen möchtest, Fahrzeugdaten
(Geschwindigkeit, Drehzahl, Temperatur, what ever----) als Klartext auf
einem Display auszugeben, muss ich dir leider sagen, dass du da nahezu
keine Chance haben wirst. Die ID's sind absolute Firmengeheimnisse und
es ist quasi unmöglich da ran zu kommen. Es gibt allerdings von einigen
Autofreaks diverse Versuche experimentell an die nötigen Infos zu
kommen. So weit ich weiß bis jetzt aber ziemlich erfolglos.
Sorry für schlechte Nachrichten
viele Grüße
Soe