mikrocontroller.net

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


Autor: Paul Baumann (paul_baumann)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Erik Lins (Firma: chip45) (uc-erik)
Datum:

Bewertung
0 lesenswert
nicht 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-M...) 
ist alles an Hardware schon vorhanden.

Von Atmel gibt es auf der AT90CAN128 Seite 
http://www.atmel.com/dyn/products/product_card_v2.... 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

Autor: Andi ... (xaos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erik Lins schrieb:
> Von Atmel gibt es auf der AT90CAN128 Seite
> http://www.atmel.com/dyn/products/product_card_v2.... 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...

Autor: Paul Baumann (paul_baumann)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: David .. (david1)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Autor: Michael X. (Firma: vyuxc) (der-michl)
Datum:

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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: lrlr (Gast)
Datum:

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

was soll denn da bitte teuer sein ?

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@lrlr

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

MfG Paul

Autor: lrlr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: lrlr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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-...
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.

Autor: Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso - hier habe ich Dokus zum DXM gefunden: 
http://www.er-forum.de/obd-diag-dl/index.php?PHPSE...

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Das Entwicklungsbord bekommt man offenbar nur dort.

Autor: Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
uahh - meine natürlich SPI Schnittstelle nicht ISP - sorry

Autor: Paul Baumann (paul_baumann)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rudolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.