Forum: Mikrocontroller und Digitale Elektronik Verbrennungsmotor: Drehzahl messen und über CAN verschicken


von peterguy (Gast)


Lesenswert?

Hi Leute,

ich baue mir grade einen kleinen Drehzahlmesser für mein Auto.

Aktuell bekommt er sein Drehzahlsignal über OBDII. Allerdings bietet 
mein Auto an der SChnittstelle nur das KWP2000 Protokoll mit 
wahnsinnigen 10kBaud an.
Das Resultat ist, daß men Drehzahlmesser die Daten verzögert anzeigt.

Da mein Drehzahlmesser aber auch noch einen CAN Anschluss hat, möchte 
ich mir jetzt ein kleines Gerät bauen, daß im Motorraum verbaut wird und 
an der Zündspule/Kerze/Leitung (oder wo auch immer es sinnvoll ist) die 
Drehzahl misst und dann über CAN an meinen DZM schickt.

Kann mir jemand ein paar Tips geben, wie und wo man die Drehzahl am 
einfachsten mit einem µC messen kann?
Suche ausserdem noch einen passenden kleinen (8Bit sollte langen) 
Controller mit CAN für diese Aufgabe.

von R. F. (rfr)


Lesenswert?

Messen am besten am Hallsensor des Fingerrades. Ein Atmel der CAN Serie 
reicht.

Gruss

Robert

von Andreas W. (geier99)


Lesenswert?

Hallo

peterguy schrieb:
> Hi Leute,
>
> ich baue mir grade einen kleinen Drehzahlmesser für mein Auto.

Was für ein Auto?  (Typ / Baujahr)

Gruss
 Andi

von Erwin R. (er-tronik)


Lesenswert?

Das OBD2-Protokoll ist genormt und die Drehzahl ist über Service 01 PID 
0x0C auszulesen. Die KWP2000 Übertragungsrate von 10.400 Baud ist auch 
nicht das Problem, weil nur sehr wenige Daten übertragen müssen, viel 
wichtiger ist, dass das Timing eingehalten werden muss und hier sind 
ziemlich grosse Timeoutwerte vorgeschrieben, die die Abfragen verzögern 
und die Abtastrate gering halten.

Sicher sind die gewünschten Daten auch über den schnellen CAN-Bus 
auszulesen, jedoch gibt es hierzu keinerlei Unterlagen und man kann 
davon ausgehen, dass das Datenformat und die CAN-Adressen bei jedem 
Fahrzeug unterschiedlich sind. Ja es kann sogar sein, dass 
unterschiedliche Baureihen eines Fahrzeuges unterschiedliche Daten 
liefern. Es ist eben nur ein interner Datenbus, den jeder Fahrzeug- und 
Steurgerätehersteller nach eigenen Belieben und Bedarf belegen kann.

Als CAN-Controller bieten sich natürlich die gängigen AVR-Typen 
AT90CAN32, AT90CAN64, AT90CAN128 an. Im 32-Bit-Bereich ist die Auswahl 
natürlich viel größer.

Erwin

von peterguy (Gast)


Lesenswert?

@Robert:
Fingerrad sagt mir nichts aber ich frag mal Tante Google.
Habe auch mal was gehört von einer Firma die zur Messung der Drehzahl 
eine Drahtschlaufe um ein Zündkabel legt und dann darüber misst. Müsste 
auch gehen, oder?

@Andreas:
Es handelt sich bei dem Auto um ein Z4 Coupe 3.0si, BJ Ende 2006

@Erwin
Das Kernproblem bei der Kommunikation über KWP2000 ist, daß ich noch 
weitere Werte auslesen möchte, z.B. Geschwindigkeit, Temperaturen, 
Motordaten, ...
Da bleibt für das Drehzahlsignal nicht mehr viel Bandbreite.

Deswegen meine idee dafür ein kleines CAN Modul zu bauen.

Und keine Sorge, den Fahrzeugbus lasse ich unangetastet, habe keine Lust 
da rumzupfuschen... :-)

von Andreas W. (geier99)


Lesenswert?

peterguy schrieb:

> @Andreas:
> Es handelt sich bei dem Auto um ein Z4 Coupe 3.0si, BJ Ende 2006
>
> Deswegen meine idee dafür ein kleines CAN Modul zu bauen.
>
> Und keine Sorge, den Fahrzeugbus lasse ich unangetastet, habe keine Lust
> da rumzupfuschen... :-)

warum denn nicht, solange Du nur mit lesen tust. Ausserdem musst Du ja 
nicht unbedingt an den Motor-CAN ran, der etwas langsamere 
Infortainment-
CAN tut es ja auch:-)
Einen Z4 hatte ich noch nicht in den Fingern, somit kann ich Dir leider 
auch nicht sagen, auf welcher ID die Drehzahl liegt. Aber meine 
Glaskugel meint (0xAA).
Gruss
 Andi

von peterguy (Gast)


Lesenswert?

Ja klar, es wäre schon möglich den CAN anzuzapfen.
Allerdings müsste ich da auch erstmal suchen wo genau die Busse 
langlaufen, dann müsste man sich da irgendwie zerstörungsfrei mit 
draufhängen und schlussendlich ID + Signalposition + Skalierung 
raustüfteln.

So eine kleine intelligente Messeinheit reizt mich mehr. Das ganze ist 
ja Hobby und es muss nicht immer der einfachste Weg sein :-)

von Henning (Gast)


Angehängte Dateien:

Lesenswert?

peterguy schrieb:
> Fingerrad sagt mir nichts aber ich frag mal Tante Google.
> Habe auch mal was gehört von einer Firma die zur Messung der Drehzahl
> eine Drahtschlaufe um ein Zündkabel legt und dann darüber misst. Müsste
> auch gehen, oder?

Moin
hab mal sowas gebaut für einen 2-Takter. Funktioniert Prima. Anbei ein 
Auszug aus meinem Schaltplan.
An JP1 kommt einfach ne Krokoklemme, die man um das Zünkabel macht und 
Pin3 vom 4093N geht auf einen Interrupt-Pin (steigende Flanke) vom AVR

Viele Grüße

Henning

von MaWin (Gast)


Lesenswert?

> Funktioniert Prima.

Überflüssig.

Es reicht eine kapazitive Kopplung um das Zündkabel
(was du mit einer Krokolklemme gemacht hast,
aber auch mit drumgewickleten Draht oder Blech ginge)
direkt an einen Eingang des uC zu legen der einen
Schmitt-Trigger besitzt, wie quasi alle AVR Eingänge.

Da ein Zündimpuls schwingt, und ein AVR schnell ist,
gibt das pro Zündfunke schnell nacheinander Impulse,
man muß also nach der ersten Flanke (Interrupt)
einige Zeit taubstumm sein und folgeimpuls ignorieren
(man könnte auf ihnen erkennen, ob der Zündfunke
gezündet hat).

Man braucht nicht mal einen Vorwiderstand, weil ja
die kapazitive Kopplung entsprechend schwach sein kann,
andererseits darf man die Kopplung auch mit Vorwiderstand
nicht zu stark machen, sonst wird nicht nur der uC
gestört, sondern vielleicht sogar (Strom über die
Eingangsschutzdioden) zerschossen. Es ist baer nicht
nötig, einen (CMOS) IC vorzuschalten, der ist nicht besser
als der uC direkt (und so teuer ist ein uC nun auch nicht).


Also besteht eine Schaltung, die aus abgefangenen Zündimpulsen
CAN-Bus Meldungen (in hoffentlich dokumentiertem Protokoll)
macht nur aus

Bordspannung---5V-KFZ-Regler--+
                              |
                          +-------+
Zündkabel Kabelende-------|  uC   |-- CAN
                        ^ +-------+ ^
          interner Pullup     |     ggf. 120 Ohm Terminierung
          damit Kabel nicht  GND
          offen

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.