Forum: Mikrocontroller und Digitale Elektronik CAN lesen und mit ATMEGAx weiterverarbeiten


von S. W. (wos)


Lesenswert?

Hallo,
ich habe ein Projekt vor bei dem ich gut die Hilfe der User in diesem 
Forum gebrauchen könnte. Habe schon viele Beiträge über die Suche 
gelesen, aber das reicht nicht.
Ich möchte den CAN-Bus meines Audis (A3 8P) "abhören" und bei bestimmten 
ID's 12V Ausgänge schalten lassen (im Bestfall erweiterungsfähig, mit 
Timern usw).

Ich möchte folgendes realisieren:
Mein Austauschradio soll bei "Zündung an" einschalten und bei "Schlüssel 
abgezogen" ausschalten. Und eine Coming/Leaving Funktion auf die 
Tagfahrleuchten und diverse LED's.

Das Szenario soll das so aussehen:

Ich stelle das Auto ab und ziehe den Zündschlüssel (Radio geht aus), 
dann betätige ich kurz die Lichthupe um die ComingHome/Leaving Home 
Funktion bis zum nächsten Start zu aktivieren. Ich öffne von innen die 
Tür (Tagfahrleuchten / LEDs im Spiegel und unter der Tür gehen an) und 
steige aus. Ich verschließe mit der Fernbedienung den A3 womit der Timer 
der ComingHome Funktion startet (Lichter schalten nach ca. 30 sek aus). 
Später komm ich wieder Richtung Auto, öffne mit der FFB und die Leuchten 
gehen an (Leaving Home) solange bis ich die Fahrertür öffne (dann gehen 
die LED's aus). Ich schalte die Zündung ein (Radio geht an) und damit 
wird die Coming Leaving Home Funktion "resettet". Diese sollte für den 
nächsten Durchgang nun wieder mit Lichthupe aktiviert werden müssen.

Das zu meiner Fantasie ^^

Ich suche nun sinnvolle Bauteile und Schaltungsvarianten um zu 
realisieren, dass die CAN-Informationen gelesen werden (zB: Zündung an). 
Die gelesene Info soll der CAN-Mikrochip lesen, dann wissen das er das 
an einen zB: Atmel Mega16 weitergeben soll damit dieser einen Ausgang 
setzt um über einen Optokoppler 12V auf das Autoradio zu geben. 
Vergleichbar wäre das mit den Informationen "Tür auf", "Verschlossen" 
und "aufgeschlossen" auf dem CAN Bus. Diese sollen auch ausgewertet 
werden um dann Ausgänge zu setzen.

Ich weis, das ist bestimmt etwas zu grob aber ich kenn keine Bauteile 
und kann nur sagen das ich durch das lesen im Netz damals auf den Atmel 
Mega16 gekommen bin und durch weiteres lesen auf die Möglichkeit den CAN 
Bus mitzuhören.

Könnt ihr Bauteile / Kombinationen zwischen lesendem und schaltendeM 
Teil empfehlen? Es gibt ja viele Infos im Netz, deshalb bin ich 
optimistisch.

Ich brauche nur erstmal einen Anfang mit Bauteilen um dann Schaltungen 
zu überlegen. Oder kennt ihr Beispielschaltungen?

DAs sollte reichen an Text, wäre super wenn Ihr mal ein paar Erfahrungen 
schreiben könntet. Wie gesagt, es geht mir vorwiegend um das auslesen, 
nicht um das schreiben auf dem Bus.

thx und Grüße! WoS

von Sachich N. (dude) Benutzerseite


Lesenswert?

Sehr aufwaendig das ganze, das braucht mindestens mehrere FPGAs oder 
Power PCs... Die Platine muss ausserdem mindestens 8lagig sein.

von crazy horse (Gast)


Lesenswert?

jetzt kommen gleich ganz viele erhobene Zeigefinger:
-das darfst du nicht
-Versicherungsschutz erlischt
-ABS funktioniert nicht mehr
-vielleicht kannst du plötzlich gar nicht mehr bremsen, Kind totgefahren

und ganz viele andere Horrorszenarien.

Das meiste davon ist reines Hörensagen, die Warner vom Dienst haben noch 
nie was am CAN gemacht und haben auch keine Ahnung, wie das so im Auto 
(z.B. mit der Bremse) funktioniert:-)

Was du in der Tat lassen solltest: eigene Sachen auf den CAN schreiben, 
ohne die gesamte CAN-Matrix zu kennen (normalerweise kommt man auch gar 
nicht an die Infos).
Mithören und eigene Sachen hinten dran hängen ist überhaupt kein 
Problem.
Der MCP2515 ist der ideale Chip für dich, der Rest ist Softwaresache.

von ARM-Fan (Gast)


Lesenswert?

Kennst du denn die IDs, die du abhören möchstest?

Wenn nicht -> vergiß den Rest.

Schaltungstechnisch ist das alles nicht so wild.

X-beliebigen µC + externen CAN-Controller (wie MCP2515) oder gleich
einen µC mit integriertem CAN.

Aber ich schätze mal bei deinen nicht vorhandenen Elektronik- und
Programmierkenntnissen - so lese ich das mal raus - weiß ich nicht
wohin das führen soll.

von S. W. (wos)


Lesenswert?

Cool, schonmal viele Antworten.

@ DUDE: warum soll das ganze denn sehr aufwendig werden? 8-lagig usw... 
wenn es MC mit integriertem CAN gibt, dann brauche ich "nurnoch" den MC 
programmieren und die Ausgänge festlegen die schalten sollen. Dort 
optokoppler ran und schalten. es geht ja erstmal nur um 2 Ausgänge die 
ich schalten möchte. Der Rest ist ja wirklich die Softwaresache.

Das mit dem ganzen " die Bremsen gehen nichtmehr" usw. ist albern. Mal 
ehrlich, wenn ich nichts auf den CAN schreibe, beeinflusse ich nicht. 
Ich lese vorhandene ID's (die ich teilweise schon kenne) und schalte 
damit ne Lampe an (simpel gesagt). Das hat auch nichts mit 
Versicherungsschutz zu tun, weil meine Tagfahrlichter als Standlicht 
genehmigt sind und LED's unterm Spiegel die Leuchten wenn ich stehe sind 
nicht verboten. Und es gibt 3 unterschiedliche CAN Busse im Audi. Ich 
greife nichtmal in den Motorsteuerungs-CAN Bus ein...

@ARM-Fan: Danke für deine Antwort!
 Ja, ich kenne die ID's ("Zündungs ID's, Tür verschlossen usw")
Ich würde gern bei deiner Aussage ansetzen, was würdest du für 
Controller empfehlen? Was spricht gegen einen integrierten CAN im MC?
Du kannst gut "rauslesen" ^^ Also fast, weil ich habe nur mal mit nem 
555er ne PWM mit nem Kumpel gebaut um meine Tagfahrleuchten zu dimmen.
Aber ich zeige Interesse und würde mir gern die Sache aneignen... Mit 
etwas Unterstützung wird das werden.

Was für CAN-MC kombinationen sind zu empfehlen? Ich würde das ganze 
demzufolge NICHT über CAN Bus programmieren, sondern den Atmel über 
MISO, MOSI,SCHK...

PS: Die Bremse hat garnichts mit dem Komfortbus zu tun ^^

thx WoS

von Otto (Gast)


Lesenswert?

> Mal ehrlich, wenn ich nichts auf den CAN schreibe, beeinflusse ich nicht.

Wird immer wieder behauptet, wird dadurch aber nicht wahrer - es reicht 
bereits eine Fehlterminierung um Störungen zu verursachen.....

Otto

von Gast (Gast)


Lesenswert?

@S. Wolf

Bei dude war eine Menge Ironie dabei. Bzw. meinte er das werden viele 
andere hier schreiben.

> Wird immer wieder behauptet, wird dadurch aber nicht wahrer - es reicht
> bereits eine Fehlterminierung um Störungen zu verursachen.....

Es kommt drauf an, an welchen CAN-Bus man geht. Mach einen Kurzschluss 
zwischen CAN-L und CAN-H am CAN-Komport oder lege beide Leitungen auf 
+12V und du wirst keine Funktionsstörung beim Motor, Bremsen oder 
Airbags haben.

von (prx) A. K. (prx)


Lesenswert?

Es geht nicht (nur) um die reale Beeinflussung eines Busses sondern eher 
um die rechtliche Bewertung, und da sitzen Anwälte, keine Techniker. 
Wenn irgend etwas passiert, ganz egal ob es wirklich was mit CAN zu tun 
hat, steht jede erkennbare Manipulation auf dem Prüfstand und kann einer 
Versicherung als Grund dienen, nicht zahlen zu müssen. Wenn du Pech hast 
führt das de fakto zu einer Beweislastumkehr und du musst dann beweisen, 
dass die Manipulation nicht die Ursache gewesen sein kann.

von Gast (Gast)


Lesenswert?

> sitzen Anwälte, keine Techniker

Eben.

Dann darfst du auch kein Radio selbst einbauen, keine Lampe selbst 
wechslen, kein Handy im Auto verwenden, kein Subwoofersystem einbauen 
usw. Es könnte ja alles das ABS beeinflussen.

von S. W. (wos)


Lesenswert?

Ich habe das original Radio entfernt, dadurch fehlt ein Teilnehmer bzw. 
der CANbus ist an dieser Stelle offen - daraus folgt ein Fehlereintrag 
im Fehlerspeicher. Naund? Das passiert auch wenn eine Glühbirne defekt 
ist.

Das ABS und ESP funktionieren auch schon nichtmehr (kurzzeitig) wenn die 
Batterie abgeklemmt wurde. Lernt sich aber wieder selbst an. Vieleicht 
gibt es dadurch diese Meinungen, weil dieser Effekt schnell auftreten 
kann.

Aber ich möchte das hier nicht diskutieren ob das irgendwann mal irgend 
ein Anwalt so verdrehen könnte das das der Grund war! Ich vertrete auch 
die Meinung, da dürfte man ja ncihteinmal ein hifi System verbauen, bzw. 
müsste ich meine selbst verbauten Tagfahrleuchten wieder ausbauen obwohl 
die völlig legal verbaut sind (lt. TÜV).

Aber gut ist mit dem Zeug, zurück zur Frage:

Empfehlt ihr eher die Verwendung von einem AT90CAN oder eher einen 
MCP2515 und einen MC hinten ran? Was wäre simpler zu realisieren? Und 
welche Variante kann ich zum CAN Bus abhören mit einem Laptop verwenden? 
Ich möchte auch per Laptop die Programmierung übertragen können.

Ich wäre wirklich dankbar wenn jemand dazu was sagen könnte. Deshalb 
stelle ich ja hier die Frage, weil hier Leute sind, die mir helfen 
könnten.

Also danke schonmal!

mfg WoS

von Meister E. (edson)


Lesenswert?

>Empfehlt ihr eher die Verwendung von einem AT90CAN oder eher einen
>MCP2515 und einen MC hinten ran? Was wäre simpler zu realisieren?

Machs wie dir besser gefällt(evtl. Errata vergleichen). In jedem Fall 
bedenken, dass auch noch ein Transceiver nötig ist. z.B. MCP2551

Hast also die Wahl zwischen einer 2- und 3-Chip Lösung.

Gruß,
Edson

von crazy horse (Gast)


Lesenswert?

Tja, die Varianten nehmen sich nicht allzuviel - ich habe damals auf den 
MCP2515 gesetzt, da die CAN-Varianten der AVRs schlecht zu bekommen 
waren.
Ich bin mit dem Teil mehr als zufrieden. U.a. eine CAN-Bridge, die dem 
Auto ein korrektes Motorsteuergerät vorgaukelt, obwohl ein ganz anderes 
drin ist. Umgekehrt natürlich auch, der Motor merkt nichts davon, dass 
der im falschen Auto werkelt...
Zum einfachen Mithören am PC: nimm da auf jeden Fall einen fertigen 
CAN-USB-Dongle, gibts von mehreren Herstellern.
Ich habe den:
http://www.peak-system.com/index_de.html

Alles, was du für den MCP2515 an Software brauchst, findest die hier 
super behandelt - nochmal ein Lob von mir an diese Seite!
http://www.kreatives-chaos.com/artikel/ansteuerung-eines-mcp2515#empfangen

von S. W. (wos)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe heute die Seite ordentlich durchgelesen und viele Leute 
schreiben ja positiv von der MCP2515 Variante.
Erst dachte ich eher in die Richtung AT90CAN aber zu dem MCP2515 sind 
natürlich viele nützliche Infos zu finden. Da werde ich wohl zu der 
Kombination greifen:

MCP2551 / MCP2515 /ATMega8

Wieviele freie Ausgänge hat der ATMega8 dann noch wenn er fertig 
verdrahtet ist? Ich habe gelesen, dass der 3 PWM Funktionen hat, 2 
könnte ich gut gebrauchen. Zudem brauche ich mindestens 5 Ausgänge die 
ich verwenden kann. Das sollte aber doch machbar sein mit dem MEGA8 
oder?
Ich bin noch nicht soweit eingelesen um das sicher zu wissen wieviele 
ich verwenden kann. Im Anhang habe ich mal einen Ausschnitt (Mega8) der 
Schaltung vom kreatives-chaos.de hochgeladen. Habe ich da die Pins Nr. 
23-26  11-16  4 und 6 noch frei um diese als Ausgänge zu verwenden? 
Oder kann ich zB. Pin 11 nur als Timer verwenden?

Ich bin weiter am lesen ^^

Danke erstmal!

cu WoS

von crazy horse (Gast)


Lesenswert?

MOSI, MISO und SCK solltest du auf jeden Fall von der Hardware-SPI 
nehmen. Dazu einen beliebigen Portpin als CS und einen (Int0 oder Int1) 
Interrupteingang.
Den Rest kannst du beliebig verwursten.
OC2 geht dir also verloren.

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
Noch kein Account? Hier anmelden.