Forum: Mikrocontroller und Digitale Elektronik Umsetzer von CAN auf RS232 bauen


von Paul B. (paul_baumann)


Lesenswert?

Ich habe hier ein Auto, an dessen OBD-Anschluß nur noch der CAN-Bus
auf der OBD-Buchse im Gange ist. Dadurch funktioniert mein altes 
K/L-Interface nicht mehr.

Ich sah eine Menge Schaltungen, in dem ein MCP2551 als CAN-Bus 
Ankopplung
fungiert. Da ja die Baudrate dabei unheimlich hoch ist und auch der Auf-
bau des Protokolls mit bis zu 134 Bit für einen "Durchgang" ganz anders
als bei RS232 aussieht, kann ich ja nicht einfach einen MAX232 hinten
dran hängen und das auf den Rechner "jagen".

Ich fand heraus, daß es Spezialschaltkreise gibt (ELM327), die offenbar 
diese Protokollumsetzung bewerkstelligen. Diese Biester sind allerdings
sehr teuer.

Frage: Hat schon einmal jemand diese Umsetzung mit einem AVR (nicht 
CAN-AVR sondern "normale" Atmega xx oder Attiny xx) realisiert?

Hinweis: Ich bin kein Tachoversteller, mir geht es nur darum, wie früher 
mit dem K/L Interface eventuell aftretende Fehlercodes auslesen zu 
können.

MfG Paul

von Anja (Gast)


Lesenswert?

Paul Baumann schrieb:
> Diese Biester sind allerdings
> sehr teuer.

Du bezahlst da natürlich auch einen Teil der Entwicklungskosten mit. 
Dafür finde ich die Preise ganz ok.
Du kannst dir das ganze natürlich auch mit einem ATMega + MCP2515 (über 
SPI) + MCP2551 aufbauen und das Protokoll + die Host-Software selbst 
implementieren.

von TestX .. (xaos)


Lesenswert?

das billigste und vor allem einfachste ist ein at90can128 (<10euro) und 
nen ft232rl dran damit man nen CAN<>USB adapter hat. hab letztens erst 
nen paar von so dingern gebaut, ist echt simpel

von Erik L. (Firma: chip45) (uc-erik)


Lesenswert?

Mit einem AT90CAN128 und einem USB UART Wandler kommt man schnell zum 
Ziel. Es braucht nur noch den CAN Transceiver (z.B. PCA82C251). Auf 
einem Crumb128 
(http://www.chip45.com/AVR-ATmega-Mikrocontroller-Module/Crumb128-V4-0-AVR-ATmega128-ATmega2561-90CAN128-USB-RS485-CAN-Modul.html) 
ist alles an Hardware schon vorhanden.

Von Atmel gibt es auf der AT90CAN128 Seite 
http://www.atmel.com/dyn/products/product_card_v2.asp?part_id=3388 unten 
eine "AT90CAN32/64/128 Software Library", die man kostenlos 
herunterladen kann. Da ist ein CAN-Spy Beispiel dabei, das alle CAN 
Messages auf einem UART ausgibt. Ich habe das kürzlich verwendet und es 
hat super funktioniert. Für eine schnelle Lösung gut zu gebrauchen.

Viele Grüße,
ER!K

http://www.chip45.com

von TestX .. (xaos)


Lesenswert?

Erik Lins schrieb:
> Von Atmel gibt es auf der AT90CAN128 Seite
> http://www.atmel.com/dyn/products/product_card_v2.asp?part_id=3388 unten
> eine "AT90CAN32/64/128 Software Library", die man kostenlos
> herunterladen kann. Da ist ein CAN-Spy Beispiel dabei, das alle CAN
> Messages auf einem UART ausgibt. Ich habe das kürzlich verwendet und es
> hat super funktioniert. Für eine schnelle Lösung gut zu gebrauchen.

die lib kann ich jetzt nicht so wirklich empfehlen, ist einfach sich da 
eben was eigenes zu schreiben...

von Paul B. (paul_baumann)


Lesenswert?

Ich danke Euch fuer die Anworten.
Mit dem CAN-Bus habe ich mich noch nie befassen muessen. Deshalb eine 
Frage: Wie ich in der Spezifikation des CAN-Busses sah, kann ein 
"Durchgang" zwischen 1 und 64 Bit an "Nutzinformation" beinhalten.
Ich muesste mir also aus dem Datenstrom an Rxd vom MCP2551 die 
eigentliche
Information herauspicken und dann in Form von 1 Byte bzw. maximal 8 Byte
langen Paketen zu meinem Kontroller senden. Der aber wiederum kann ja 
nur
langsamer (115000 Baud) an den angeschlossenen Rechner senden. Es wuerde
also mein Kontroller in kurzer Zeit mit CAN-Daten "zugestopft".

Frage: Sind meine Ueberlegungen richtig

Hier ist noch ein Link auf eine derartige Schaltung:
http://www.tuning.it/elm327_schematic.pdf

Ich suchte nach einer Schaltung die diese Funktion statt des ELM327
(der auch alle anderen Protokolle unterstuetzt)mit einem z.B. Atmega8
erfuellt.

Ich fand mittlerweile heraus, dass dieser ELM327 kein spezifisch her-
gestellter Schaltkreis, sondern ein PIC ist.

MfG Paul

von Anja (Gast)


Lesenswert?

Paul Baumann schrieb:
> Ich muesste mir also aus dem Datenstrom an Rxd vom MCP2551 die
> eigentliche
> Information herauspicken und dann in Form von 1 Byte bzw. maximal 8 Byte
> langen Paketen zu meinem Kontroller senden.

Dafür brauchst Du einen CAN-Controller. Entweder im Prozessor oder als 
Stand-Alone Teil wie z.B. der MCP2515. Mittels Port-Pin oder serieller 
Schnittstelle schaffst Du das nicht.

> Der aber wiederum kann ja
> nur
> langsamer (115000 Baud) an den angeschlossenen Rechner senden. Es wuerde
> also mein Kontroller in kurzer Zeit mit CAN-Daten "zugestopft".

Die Hauptarbeit macht dein Prozessor. Steuergerät reizen, zyklisches 
"tester present" Signal und ausfiltern der nicht an der 
Testerkommunikation beteiligten CAN-Botschaften. Auf der Seriellen 
Schnittstelle reichen dann im allgemeinen 9600 bis 57600 Baud.

Gruß Anja

von Paul Baumann (Gast)


Lesenswert?

Danke, Anja für Deine Erklärungen und Hinweise. Ich habe mir das 
Datenblatt
vom MCP2515 hergeholt. Das sieht ganz vernünftig aus.

Dann werde ich mir mal den MCP2551 und den 2515 besorgen und mal sehen,
wie ich über die SPI-Schnittstelle von einem Atmega8 aus mit ihm "reden"
kann.

MfG Paul

von (prx) A. K. (prx)


Lesenswert?


von David .. (david1)


Lesenswert?

Nur so als anregung, mit den FTDI-Chips sind sehr schnelle uart/rs232 
verbindungen über den USB-Port möglich.

Weis aber grach nich ob's dafür reichen würd 1:1 zu senden, ich mein mal 
was von 3Mbaut gelesen zu haben, aber kann ich mit Sicherheit nich 
sagen. Hab auch  leider grad keine zeit das rauszufinden ...

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Für den FT2232H gibts eine Applikation mit den SJA1000 im Datenblatt:
http://www.ftdichip.com/Documents/DataSheets/DS_FT2232H.pdf

von Paul Baumann (Gast)


Lesenswert?

Nein, das was ich vorhabe, ist mit den FTDI-Chips auch nicht zu machen.
Die Geschwindigkeit würde wohl reichen, aber: Ich will den CAN-Bus eines
Autos ansteuern. Sämtliche PC-Programme dafür verwenden AT-Kommandos
(wie bei Telefonen üblich), um die einzelnen Steuergeräte im Auto ab-
zufragen. Es muß also ein Kontroller zwischen den CAN 
Receiver/Transmitter MCP2551 und den Rechner gesetzt werden, der dann
die AT-Kommandos, die die PC-Programme senden in die entsprechenden CAN-
Kommandos umsetzt. Das wäre z.B. oben genannter ELM327.

Den gibt es aber nicht mehr mit DIL-Gehäuse zu kaufen, so daß ich mir
etwas Anderes überlegen muß. Der Link von A.K. (prx) ist gut für mich.

Das ist zwar in C geschrieben, aber gut kommentiert.

MfG Paul

von lrlr (Gast)


Lesenswert?

das ELM ding für CAN kostet beim chinesen (fix fertig) mit USB anschluss 
15€

was soll denn da bitte teuer sein ?

von Paul Baumann (Gast)


Lesenswert?

@lrlr

Gibst Du mir bitte mal einen Link zu den 15 Euro?
;-)

MfG Paul

von lrlr (Gast)


Lesenswert?

ebay 320547140755

von Paul Baumann (Gast)


Lesenswert?

OT:
Genau das habe ich erwartet: Einen Link zu Ebay und dann  3schlechte 
Bewertungen für dieses Gerät. Es funktioniert nicht mit dem CAN-Bus
Außerdem zahle ich nie per Paypal.

Trotzdem danke ich Dir für Deine Suche.

MfG Paul

von lrlr (Gast)


Lesenswert?

es gibt nur 3 negative? was glaubst wie viele "experten" das ding 
bestellen, und dann nicht mal den treiber installiert bekommen....


ich hab einen smart forfour (der hat nur can)
und dieses ding

drehzahl, irgendwelche drücke usw. wird alles angezeigt

ps. ich hab keine negative bewetungen (für dieses geräte) gefunden. (bin 
ich wohl "blind".)
ich weiß aber auch nicht mehr von welchem chinesen ich es gekauft hab..

ich hab das aber auch eher vorgeschlagen, weil behauptet wurde der ELM 
wäre so teuer, .. das ding kannst dir ja zerlegen und alles brauchbare 
rauslöten...

von Rudolf (Gast)


Lesenswert?

>Frage: Hat schon einmal jemand diese Umsetzung mit einem AVR (nicht
>CAN-AVR sondern "normale" Atmega xx oder Attiny xx) realisiert?
Der ELM327 ist ein PIC aus Kanada. Von den Chinesen gecrackt. Mehr 
schlecht als recht. Also entweder das Original, was ja auch nicht sooo 
teuer ist oder Finger weg -> Original PIC googeln "Küster Hannover".
In der Zeitschrift Elektor (Aachen) und Funkamateur (Berlin) ist ein 
Industriemodul beschrieben (Homepages der Verlage findet man auch leicht 
über Google), das nennt sich DXM und beinhaltet schon die gesamte 
Peripherie für den OBD2 Anschluss. Selbst wenn Du Dir die Bauelemente 
dafür einzeln kaufst und zusammenbastelst, wirst Du teurer kommen - und 
das Modul ist komplett fertig. Was die Bastelei am CAN-Bus betrifft, da 
kann man geteilter Meinung sein. Aber das DXM hat wohl auch einen 
CAN-Open Modus, damit kann man mit der Freeware CANHACKER auf den 
CAN-Bus frei zugreifen. Homepage DXM: http://dxm.obd-diag.net/

ELV bietet ein Starterkit dazu an (RS232): Artikel-Nr.: 68-880-31

Ein Bausatz für ein Gerät mit LCD-Anzeige ist im Elektor erschienen:
Elektor: 
http://www.elektor.de/jahrgang/2009/september/obd-2-analyser-ng.1040758.lynkx
Homepage dazu: http://openhandheld.obd-diag.net/

Wie gesagt, ich glaube kaum, dass der Aufwand sowas selbst zu entwickeln 
den Preis dafür rechtfertigt. Das gibt es für überschaubare Preise alles 
fertig. Letzteres Projekt ist sogar open-source, PC-Software gibts 
gratis dazu und die Sourcen zum download.

von Rudolf (Gast)


Lesenswert?


von Paul Baumann (Gast)


Lesenswert?

Hallo Rudolf,
dieses DXM 1-Modul ist eine feine Sache. Ich denke, daß ich mir statt 
des
ELM327 dieses Modul bestelle, da es genau so viel kostet, wie der ELM
allein. Einen MAX3232 habe ich zur Anpassung an den RS232-Pegel auch 
noch
da. Außerdem ist mir ein Kontroller von Atmel lieber als ein PIC.

Deine Ausküfte haben mir sehr geholfen.

MfG Paul

von Rudolf (Gast)


Lesenswert?

>Außerdem ist mir ein Kontroller von Atmel lieber als ein PIC.
da ist sogar ein Cortex M3 drauf. Man findet keine Schalt-Pläne zu dem 
Teil, aber rein optisch ist das ganz schön mit Silizium vollgepflastert 
- auch ziemlich klein das alles. Einen K-Line-, CAN-Treiber hab ich 
entdeckt, diverse Spannungsregler, ein paar Transistoren. Spezial-ICs 
sind auch drauf. Konnte ich bisher nicht identifizieren. Die PCB ist 
minimum vierlagig. Ich habe ein Evalutionboard, da ist auch noch ein LCD 
(dreizeilig) drauf, das wird direkt über ISP angesteuert. Das braucht 
man sicher nicht unbedingt. Das Board lässt sich sauber als 
USB-Interface betreiben. Und ist nach meinem Geschmack preislich 
durchaus attraktiv. Der Anschluss eines LCDs ist in den Datasheets 
beschrieben. Man braucht also strenggenommen kein Developmentboard, weil 
man sich das LCD selbst an das DXM dran klemmen kann, aber wenn ich bei 
Reichelt schaue, ist das LCD (EA-DOG-M 163 - Electronic-Assembly) doch 
nicht gerade ein Schnäppchen. Sicher gehen da auch andere Teile mit ISP 
Schnittstelle. Nur wenn man es selber dranklemmt ist das sicher teurer 
als wenn man gleich komplett und fertig kauft. Mal abgesehen davon, dass 
der Spaß abhanden kommt. Der Hauptvorteil liegt im bereits 
freigeschalteten CAN-Open Modus, den man sonst beim DXM extra bezahlen 
muss. Also nochmal 15 Euro gespart.
Hier der Link zum Anbieter: 
http://www.obd-shop.com/danila/product_details.php?id=359&lang=de

Das Entwicklungsbord bekommt man offenbar nur dort.

von Rudolf (Gast)


Lesenswert?

uahh - meine natürlich SPI Schnittstelle nicht ISP - sorry

von Paul B. (paul_baumann)


Lesenswert?

Das werde ich gar nicht brauchen, da ich nur einen Rechner anschließen
will, um zu sehen, was dem Motorsteuergerät auf der Seele brennt, wenn
es mir die gelbe MIL-Anzeige leuchten läßt. ;-) Auf andere Sachen
(ABS, Airbag usw. will ich gar nicht zugreifen können.

Vielleicht kannst Du mir diese Frage beantworten:
Sehe ich das richtig, daß der Kontroller hierbei eigentlich "nur" ein 
Interpreter sein muß, der AT-Kommandos vom Rechner empfängt und sie dann
in CAN-Befehle umsetzt?

MfG Paul

von Rudolf (Gast)


Lesenswert?

>Sehe ich das richtig, daß der Kontroller hierbei eigentlich "nur" ein
>Interpreter sein muß, der AT-Kommandos vom Rechner empfängt und sie dann
>in CAN-Befehle umsetzt?
ja das ist ja ein Interpreter im OBD2 Modus.

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.