Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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
Ich nutze:
C164CI-ControllerBoard, eigenes Board
> 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: