Re: CC2 als Tacho im Auto ? Kategorie: Sensoren (von Mike "E320CDI" - 15.09.2005 19:30) | ||
Als Antwort auf Re: CC2 als Tacho im Auto ? von Kili - 23.08.2005 1:12 | ||
| ||
> Hallo Thorsten, > > es gibt ja neuerdings eine "halbwegs" genormte Schnittstelle namens EOBD für die Abfrage von KFZ-Daten, > versuchs mal unter: > > http://www.obd-2.de/ > > Je nach Typ kann man direkt über dan CAN-Bus der CC2 oder über die RS232 gehen. > In der vorletzten Elektor Heft Juli/August 2005 war auch eine Bauanleitung für einen entsprechenden Adapter > drin. Schau mal nach, das Heft sollte vielleicht am Kiosk auch noch erhältlich sein: > > Auto-Diagnose mit OBD-2/ > > Gru� Kili Hallo Thorsten, hallo Kili, so einfach wie Kili sich das vorstellt geht das trotz OBD/EOBD nicht, da die Diagnoseschnittstelle nur einige wenige genormte Parameter kennt, der Rest ist i.d.R. herstellerspezifisch. Auch wenn die CC-II grundsätzlich von der Hardware gut dafür geeignet ist fehlen dann die Kenntnisse der unterstützten Protokolle (ISO9141, ISO15765) um überhaupt die Schnittstelle ansprechen zu können. Es gibt aber einen anderen Weg, der zumindest in einem Fahrzeug mit analogem Tachosignal sehr gut funktioniert. Der Frequenzme�eingang der CC-II ist dafür sehr gut geeignet und kann mit ein paar Zeilen Code schon sehr gut als digitaler Tacho verwendet werden. Zu berücksichtigen ist, das man die Anzahl der Impulse pro Radumdrehung (RIZ) kennen mu�, dieser Wert ist bei VW/AUDI z.B. "8" oder bei den meisten Mercedes-Benz PKW "48". Diesen Wert benötigt man zur korrekten Ermittlung der Geschwindigkeit aus der über den Port gemessenen Frequenz, zur Erhöhung der Genauigkeit sollte man natürlich noch Reifengrö�e bzw. Radumfang berücksichtigen. Hier ein kurzes Beispiel: speed_hz = 7; // default factor to calc kmh from hz speed_kmh = 0; speed_hz = eeprom.readbyte(0,mglobal.m_base + mglobal.m_speed); mtool.msg(1,"Start speed OK>",1); mtool.msg(2,"reading ? NO>",1); key_num = mtool.waitkey(mglobal.key_delay); if key_num == 0x10 { speed_flag = 1; mtool.msg(1,"Speed measure: ",1); do { rx_speed_val = ""; rx_kmh = ""; rx_freq = ports.getfreq (0); sleep 10; str.putlongf (rx_speed_val, rx_freq, 6); mtool.msg(2,rx_speed_val,1); lcdext.print("Hz "); speed_kmh = rx_freq / speed_hz; str.putlongf (rx_kmh, speed_kmh, 3); lcdext.print(rx_kmh); lcdext.print("km/h"); sleep 25; key_num = mtool.getkey(); if key_num == 0x30 { speed_flag = 0; } } while speed_flag != 0; } Die in diesem Beispiel verwendeten Toolfunktionen (mtool.xxx) sind aus meiner Toolbox und müssen nur durch direkte Funktionen (lcdext.print usw.) ersetzt werden, au�erdem lese ich den Umrechnungsfaktor (speed_hz) aus einem EEPROM ein, da ich diesen in einer Setup-Funktion verändern und abspeichern kann. Gru�, Mike | ||
Antwort schreiben Antworten: |