Hallo liebe Community :)
Es hat sich bei mir ein neues Projekt herauskristallisiert, was mich an
die Grenze meines Wissens uns Könnens treibt, aber die Motivation ist
groß!
Ich hoffe ihr könnt mir weiter helfen.
Das Vorhaben ist:
Das verbinden von 2 (bzw. 3) Bussystemen (K-CAN und K-Line in einem KFZ)
Also ein 2Adern CAN 2.0A Bus (100kbit/s) , mit einem Einfachen 9,6kbit
1Adern Bus.
Nun habe ich leider noch wenig Ahnung wie ich das ganze angehen soll.
Was ich mich überlegt habe, ich brauche einen Programmierbaren
Microcontroller, welcher Busbotschaften auf der einen Seite empfängt,
übersetzt, und auf der anderen Seite wiederausgibt.
So nun meine Frage:
Gibt es soetwas schon? Wenn ja woher bezieht man es, und wie
programmiert man es? wie ihr seht bin ich neuling :)
Vielen Dank im Voraus!
Gruß
Andrej
Hardwareseitig kann das jeder µC mit CAN-Controller und UART (für
K-Line).
Die wichtigste Frage ist aber:
Hast Du eine Spezifikation über die Protokolle, die auf CAN und K-Line
laufen?
Sprich: Ist Dir bekannt, welche Informationen in welcher CAN-Nachricht
in welcher Codierung kommen?
Ohne dies kannst Du mit den CAN-Nachrichten nichts anfangen, da Du nicht
weißt, was sie Dir sagen sollen.
Hi,
ja so etwas gibt es schon komplett fertig oder als Bauteil.
Du kannst einen einfachen OBD2 Adapter nehmen, der z.B. per USB an den
PC angeschlossen wird. Dort ist meist ein PIC oder ein ELM Baustein
verbaut, die die Umsetzung der ASCII Anfragen in das entsprechende
Protokoll machen.
Lade dir einmal das Datenblatt des ELM327. Das ist ein Baustein, der
alle OBD2 Bussysteme des OBD2 unterstützt und auch die entsprechenden
Protokolle selbst ermittelt.
Diese Logik müsstest du in deinem Controller auch umsetzen, wenn du
kompatibel sein möchtest.
Neuere Fahrzeuge nutzen CAN und da ist das Protokoll einheitlich.
Was möchtest du denn damit genau machen?
LG
Danke schinmal für die Infos :)
Die k-line Codierung ist eigentlich komplett bekannt, beim k-can ist man
(ich noch nicht) gerade dabei zu loggen und zuzuordnen, gibt aber schon
einiges :)
Ziel ist es (zuerst mal) in alle BMWs zwischen 1995 und 2004 (welche
k-line bzw. Ibus benutzen) die kompletten navi, Audio, Systeme einbauen
zu können der neueren BMWs , und damit halt auch die erweiterten
infosystemeUnd dazu muss die kommunikation stimmen (lenkwinkelsensor,
PDc Etc. )
Bronco, kannst du mir ein Beispiel geben für solch einen uc mit uart und
can Controller?
Das mit dem elm327 find ich auch interessant, nur was mach ich mit
meiner k-line? Die ist nicht obd2 Standard :(
Andrej S. schrieb:> edit:>> grad beim stöbern auf>> http://www.chip45.com/products/crumb128-can-5.1_avr_atmega_modul_board_at90can128_usb_rs485_can.php>> das ding da gestossen, das wäre doch ideal oder irre ich da?
leider nein. Beide serielle Ports des AVRs sind bereits belegt - einer
mit der USB-Bridge, einer mit dem RS485-Transceiver. Dein K-Line
Transceiver will auch noch eine serielle Schnittstelle haben. Du
müsstest also das Board ändern. Da ist es besser, ein neues zu machen.
Nimm doch einfach einen PIC32MX564F128H-I/PT. Da hast Du CAN drin, da
sind genügend UARTs drin, alle LIN-fähig (falls Du das mal brauchst),
für USB brauchst Du keinen extra Chip, das ist auch schon drin, 64k RAM
drin, 512k Flash, 32Bit 80 MHZ Prozessor, und kostet z.B. bei Farnell
5,73€. Der auf dem von Dir gefundenen Board verwendete AT90CAN128, der
nur ein 8 Bit Controller mit viel weniger Leistung ist, kostet dort
11,60 €. Da wärst Du doch schön doof, wenn Du für einen Bruchteil der
Leistungsfähigkeit die doppelte Kohle hinlegst, oder?
fchk
Andrej S. schrieb:> Es hat sich bei mir ein neues Projekt herauskristallisiert, was mich an> die Grenze meines Wissens uns Könnens treibt, aber die Motivation ist> groß!
Eher weit darüber hinaus.
Andrej S. schrieb:> Danke schinmal für die Infos :)>> Die k-line Codierung ist eigentlich komplett bekannt, beim k-can ist man> (ich noch nicht) gerade dabei zu loggen und zuzuordnen, gibt aber schon> einiges :)>> Ziel ist es (zuerst mal) in alle BMWs zwischen 1995 und 2004 (welche> k-line bzw. Ibus benutzen) die kompletten navi, Audio, Systeme einbauen> zu können der neueren BMWs , und damit halt auch die erweiterten> infosystemeUnd dazu muss die kommunikation stimmen (lenkwinkelsensor,> PDc Etc. )>> Bronco, kannst du mir ein Beispiel geben für solch einen uc mit uart und> can Controller?>> Das mit dem elm327 find ich auch interessant, nur was mach ich mit> meiner k-line? Die ist nicht obd2 Standard :(
Vergiß es, Dazu brauchst du sehr viele BMW interne Informationen , die
dir niemand geben wird. Jedenfalls keiner der noch länger bei BMW
arbeiten will.
Was du brauchst ist ein Gateway zwischen der alten und der neueren BMW
Systemarchitektur.
Also such dir mal die Entwicklungsdokumentation zu den beiden Versionen
der Systemarchitektur.
Wenn du diese Daten zusammen hast, kannst du mal anfangen.
( Das ist weit mehr als nur die Can Signalbeschreibung )
Frank K. schrieb:> leider nein. Beide serielle Ports des AVRs sind bereits belegt - einer> mit der USB-Bridge, einer mit dem RS485-Transceiver. Dein K-Line> Transceiver will auch noch eine serielle Schnittstelle haben. Du> müsstest also das Board ändern. Da ist es besser, ein neues zu machen.
Alles klar danke schonmal :)
Also wenn ich den RS485 transreceiver auf dem Board tauschen würde
(gegen was für k-line?), wäre es möglich?
Ich wollte kein neues Board entwickeln.
Zum hintergrund: bin nun im 5. Semester an der TU Darmstadt, in Elektro
und Informationstechnik, und es ist ganz viele tolle theorie die ich
behersche, ich wollte aber mal was "machen"
> Nimm doch einfach einen PIC32MX564F128H-I/PT. Da hast Du CAN drin, da> sind genügend UARTs drin, alle LIN-fähig (falls Du das mal brauchst),> für USB brauchst Du keinen extra Chip, das ist auch schon drin, 64k RAM> drin, 512k Flash, 32Bit 80 MHZ Prozessor, und kostet z.B. bei Farnell> 5,73€. Der auf dem von Dir gefundenen Board verwendete AT90CAN128, der> nur ein 8 Bit Controller mit viel weniger Leistung ist, kostet dort> 11,60 €. Da wärst Du doch schön doof, wenn Du für einen Bruchteil der> Leistungsfähigkeit die doppelte Kohle hinlegst, oder?
sehr cool, gibt es für dem (oder einen ähnlichen) schon ein "fertiges"
Board?
Ralph schrieb:
> Eher weit darüber hinaus.
Mag sein, ich lerne jedoch schnell, und an Zeit mangelt es mir nicht...
> Was du brauchst ist ein Gateway zwischen der alten und der neueren BMW> Systemarchitektur.
das ist mir bewusst, ich möchte aber nicht die vollständige
kommunikation herstellen, ich benötige nur einen Bruchteil. Ich habe
nicht vor ein Motor von 2010 in eine Karrosserie von 1998 einzubauen,
sondern lediglich das Navi- und Infosystem. d.h. Ich übernehme z.b.
Monitor, Navi-computer, iDrive Radio aus einem neuerem BMW, welche alle
untereinander über ihren K-Can kommunizieren. Diese Systeme brauchen
dann bestimmte Infos, bsp:
Navi: Blinker gesetzt?, Geschwindigkeit, Licht an (nachtmodus des
monitors)
Bordcomputer: Öltemp, Wassertemp, Serviceintervalle, PDC sensoren
abstände, etc.
Ich habe hier kein Projekt mit Deadline x, sondern wollte mich in das
Bussystem einarbeiten, und mal was produktives tun, was sich im
überschaubaren rahmen halten kann, wo man aber auch erweitern kann, und
ich denke das ist machbar. (so wie die meisten projekte die ich hatte,
unterschätze ich es natürlich, aber das ist ja mein problem ;))
Für die Aufgabe empfehle ich dieses günstige Board mit LPC11C24:
- CAN 1MBit (CAN-Treiber im ROM) für K-CAN
- GPIO 50MHz (oder UART) für K-Line
- Demo-Software ist dabei
- falls später doch mal eine eigene Platine notwendig wird, auf dem
LPC11C24 ist der CAN-Transceiver mit drauf, ist also eine 1-Chip-Lösung
https://www.olimex.com/Products/ARM/NXP/LPC-P11C24
Andrej S. schrieb:> Frank K. schrieb:>>> leider nein. Beide serielle Ports des AVRs sind bereits belegt - einer>> mit der USB-Bridge, einer mit dem RS485-Transceiver. Dein K-Line>> Transceiver will auch noch eine serielle Schnittstelle haben. Du>> müsstest also das Board ändern. Da ist es besser, ein neues zu machen.>> Alles klar danke schonmal :)> Also wenn ich den RS485 transreceiver auf dem Board tauschen würde> (gegen was für k-line?), wäre es möglich?> Ich wollte kein neues Board entwickeln.
Na ja, "neues Board" heißt: Controllerchip mit Taktgenerator,
CAN-Transceiver, K-Line Transceiver und Spannungsversorgung mit
Überspannungsschutz, d.h.in einem 12V Bordnetz hast Du bei Anlassen
Spannungen bis zu 30-40V, da müssen also Schutzschaltungen vor alle Ein-
und Ausgänge und in die Spannungsversorgung rein, sonst ist das ein
Einweg-Board.
Bei den üblichen Demoboards wie den von Dir vorgeschlagenen hast Du nur
den Prozessor mit Takterzeugung und vielleicht noch den CAN-Transceiver
drauf, der ganze Rest, insbesondere die ganze Schutzbeschaltung in der
Stromversorgung und dem CAN fehlt. Und der CAN-Transceiver ist
vielleicht einer, der nicht ganze so spannungsfest ist. Du musst also
trotz Verwendung eines Demoboards noch einiges selber machen, und viel
fehlt dann zum eigenen Board nicht mehr. Und wenn Deine Schaltung den
Labortisch verlässt, wirst Du es zu schätzen wissen, wenn es kein
fliegender Aufbau ist, wo mal ein Draht abgeht oder Störungen in die
Verdrahtung einkoppeln.
> Zum hintergrund: bin nun im 5. Semester an der TU Darmstadt, in Elektro> und Informationstechnik, und es ist ganz viele tolle theorie die ich> behersche, ich wollte aber mal was "machen"
Fein. Dann mal zu.
>> Nimm doch einfach einen PIC32MX564F128H-I/PT. Da hast Du CAN drin, da>> sind genügend UARTs drin, alle LIN-fähig (falls Du das mal brauchst),>> für USB brauchst Du keinen extra Chip, das ist auch schon drin, 64k RAM>> drin, 512k Flash, 32Bit 80 MHZ Prozessor, und kostet z.B. bei Farnell>> 5,73€. Der auf dem von Dir gefundenen Board verwendete AT90CAN128, der>> nur ein 8 Bit Controller mit viel weniger Leistung ist, kostet dort>> 11,60 €. Da wärst Du doch schön doof, wenn Du für einen Bruchteil der>> Leistungsfähigkeit die doppelte Kohle hinlegst, oder?>>> sehr cool, gibt es für dem (oder einen ähnlichen) schon ein "fertiges"> Board?
Das ist ein größerer Prozessor aus der Serie. Wie gesagt, die ganze
Außenbeschaltung, musst Du ohnehin selber machen, und sie muss
automotive-fest sein, d.h. Du musst an jeden Pin, der rein oder raus
geht, so 30-40V plus oder minus anlegen können, und das Board muss es
überleben, und zwar nicht nur einmal.
https://www.olimex.com/Products/Duino/PIC32/PIC32-T795/
Programmieren und debuggen tust Du hiermit:
https://www.olimex.com/Products/PIC/Programmers/PIC-KIT3/
Es gibt auch diverse ARM-basierte Controller als Alternative.
Wenn Du gerne DIL haben willst, dann kannst Du einen dsPIC33FJ128GP802
nehmen, das ist ein 16-Bitter mit 40MHZ Takt, 16k RAM und 128k Flash,
CAN, 2*UART im DIL28-Gehäuse. Ein 8 MHz Quarz mit den obligatorischen
18-27pF an jedem Quarzpin dran, an jedem VCC-GND-Paar 100n, 10u
keramisch 16V an VCAP gegen GND, MCLR über 10k gegen VCC, und dann läuft
das Teil.
Als CAN-Transceiver nimmst Du am Besten einen MAX13054, der kann bis
+-80V auf CAN_H/CAN_L ab. Die übliche Schutzbeschaltung wie
stromkompensierte Drossel und TVS-Dioden bzw MOVs brauchst Du natürlich
trotzdem noch.
Als K-Line Transceiver wäre da z.B. der MC33660 oder der TLE6258-2G zu
nennen. In wieweit man auch normale LIN-Transceiver für K-Line aka
ISO9141 verwenden kann, die nicht ausdrücklich dafür vorgesehen sind,
weiß ich nicht - die ISO-Norm dafür habe ich nicht da.
fchk