GALA auslesen

Hallo Forum,

ich habe heute versucht mein GALA-Signal im Auto auszulesen (mit Arduino Mega), da ich die Geschwindigkeit bzw. den Weg für einen Tripmaster brauche. Hat leider nicht funktioniert und die Beiträge im Forum haben mir auch nicht wirklich geholfen.

Zum GALA-Signal:

Da hab ich folgendes dazu gefunden (auch mit Oszi-Bildern). Im Prinzip ein 12 V Rechteck, das bei jedem Impuls auf 0 V gezogen wird. 8 Impulse pro Raddrehung.

http://forum.msh-elektronik.de/showthread.php?tid=127&page=1
https://forum.group44.de/viewtopic.php?p=1072723

Zu meiner Schaltung:

Die schaut aus, wie im Anhang abgebildet, nur hat R_Z3 2,2 stat 10 kOhm und ich verwende den Mega, wo ich das Signal an den Pin 2 (interrupt) gelegt hab. Die Schaltung selbst funktioniert, wenn man 12 V anlegt, ist Pin 2 high.

Zum Code:

Den hab ich auch mal hier ausm Forum adaptiert und schon verwendet um einen Hall-geber auszulesen. Sollte soweit auch funktionieren.

// Tachosignal Audi 100

volatile byte ImpulseCount = 0;
byte Impulse = 0;
volatile long ZeitImpuls = 0;
unsigned long ZeitbeiletztemImpuls = 0;
unsigned long ZeitfuerImpulse = 0;
float Timestamp = 0;
//float Drehzahl = 0;
float Impulsrate = 0; // in Impulse/s
float Geschwindigkeit = 0; // in km/h
float Weg = 0; // in m
//static float Reifenumfang = (16 * 2.54 + 2 * (20.5 * 0.55)) * PI / 100; // in m
static float Reifenumfang = 1.9852; // in m (gemessen)


void setup()
{
  Serial.begin(9600);
  attachInterrupt(0, functionCount, FALLING); //Interrupt Pin 0 ist Digital Pin 2; LOW löst aus wenn Pin low; FALLING löst aus wenn Pin von high auf low fällt
}

void functionCount()
{
  ImpulseCount++;
  ZeitImpuls += millis() - ZeitbeiletztemImpuls; //Zeit pro Umdrehung wird über den Zeitintervall der Berechnugns-Schleife aufsummiert und ergibt dann die Zeit für alle Umdrehungen während eines Schleifendurchlaufs
  ZeitbeiletztemImpuls = millis();
}

void loop ()
{
  if ( millis() - Timestamp > 500) // Wenn 500 Millisekunden vorüber...
  {
    noInterrupts(); //Interrups sperren
    Impulse = ImpulseCount; //Counter umkopieren
    ImpulseCount = 0; //Counter null setzen
    ZeitfuerImpulse = ZeitImpuls; //Zeitzähler umkopieren
    ZeitImpuls = 0; //Zeitzähler null setzen
    interrupts(); //Interrupts zulassen

    Impulsrate = (float)Impulse / (float)ZeitfuerImpulse * 1000; //Geschwindigkeit in Impulse/s



    if (Impulsrate > 0)
    {
      Geschwindigkeit = Impulsrate / 8.0 * Reifenumfang * 3.6; // 8 Impulse pro Radumdrehung
      Weg = (float)Impulse / 8.0 * Reifenumfang; // Weg in m

      Serial.print(Impulsrate, 0); Serial.print(" || "); Serial.print(Weg, 0); Serial.print(" || "); Serial.println(Geschwindigkeit, 0);
    }
    else
    {
      Geschwindigkeit = 0.0;
      Weg = 0.0;
      Impulsrate = 0.0;
      
      Serial.print(Impulsrate, 0); Serial.print(" || "); Serial.print(Weg, 0); Serial.print(" || "); Serial.println(Geschwindigkeit, 0);
    }

  }

}

Wenn ich das ganze ausprobiere, bekomm ich nur nullen angezeigt. Leider hab ich auch kein Oszi um die Signale genauer zu untersuchen. Aber fällt euch da schon irgend ein Fehler auf? Ich fürchte ich seh den Wald vor lauter Bäumen nicht mehr...

Danke schon mal und LG

Wo wird Timestamp gesetzt?

Ok, danke! Das war schon mal der erste Fehler.

Hab dann noch die KFZ-Masse mit Arduino Masse verbunden und das ganze nochmal probiert. Zumindest zwischenzeitlich bekam ich vernünftige Werte. Ich glaub die Kontake dieser Steckboards sind sehr bescheiden. Werd mal was zusammenlöten...

Hallo,

hab jetz nach dem Urlaub alles aufgelötet und nochmal ausprobiert. Funktioniert leider nicht. Die Schaltung selbst ja, wenn ich Impulse anlege (manuell) werden die gezählt. Wenn ich GALA anlege, kommen keine Impulse rein.

Folgendes hab ich noch festgestellt: Gleichspannungspegel am GALA bei Zündung aus 4,5 V und Zündung an 8,9 V. Mit meiner Schaltung dran bei Zündung aus 1,2 V und bei Zündung an 1,5 V. Das scheint den Pegel runter zu ziehen und das GALA-Signal zu beinflussen. Kann das an der Z-Diode liegen?

Werde jetz zwei Dinge noch probieren. Z-Diode weg, stattdessen noch ein 100 Ohm Widerstand zwischen R_Z2 und R_Z1. Dann müsst ich an der LED vom OC genau auf die 1,2 V kommen.

Oder mittels LM7805 von 12 V (bzw. anscheined vielleicht nur 8,9 V) auf saubere 5 V und dann mittels Vorwiderstand in den OC.

Was haltet ihr davon??

LG

Wenn Du weiter rumprobieren möchtest halte ich von Deinem Vorgehen eine Menge.

Alternativ solltest Du Dir das GALA-Signal mal tatsächlich mit nem Oszi anschauen. Dann weißt Du genau was passiert, und zwar ohne und mit Deiner Schaltung. So ist das Rumraterei, mag noch vom Hersteller abhängig sein, was weiß ich :slight_smile:

Die Idee mit dem 7805 kannst Du gleich einstampfen, das ist ein Spannungsregler und kein Level-Konverter. Aber probier's ruhig mal aus, bin gespannt.

Ja mit rumprobieren gehen mir dann eh die Ideen aus. Selbst mit einem simplen Spannungsteiler bricht der Spannungspegel des GALA-Signals ein. :confused:

Sollte eigentlich nicht Herstellerabhänging sein. Muss ja mit handelsüblichen verschiedenen Autoradios in verschiedenen Autos funktionieren.

Vielleicht werd ich mir wirklich mal ein Oszi besorgen. Worauf sollte man beim Kauf den achten?

LG

Hi

Es sollte Das können, was Du brauchst und ggf. in Zukunft brauchen wirst.
Meiner Meinung nach solltest Du Dir ein nicht zu billiges DSO (digitales Speicher Oszilloskop) kaufen.
Die gibt Es als StandAlone, oder als USB-Ansteck-Box.
Bei dem USB-Ding drauf achten, daß Du NICHT potentialfrei bist - mindestens Dein Rechner hängt mit dem Gehäuse am Schirm der Tastköpfe - auf diese Weise habe ich mir einen PC und ein DSO geschrottet - das Licht in der Küche und im Wohnzimmer verließ mich auch ein paar Minuten!!

Zwei Kanäle sind ein Muß (gibt auch ganz Kleine mit nur einem Kanal)

So Eines habe ich z.B. auch, läuft aber unter Linux nicht (oder ich bin zu blöd).
In der Win-VM sollte Das aber schon gelaufen sein ... Du siehst, ist eher weniger in Benutzung).
Bei meinem 'richtigem' Oszi (Fluke PM3082) vermisse ich das 'Speicher'-Kürzel :wink:
Wenn das Signal weg ist, ist das Signal halt weg!
Beim DSO hast Du Deinen Fenster und darin Deine Messung - solange Du Diese Dir auch ansehen wilst oder mit dem Cursor drin herumfahren, um Zeiten/Spannungen auszulesen.
DAS geht beim echten Oszi (ohne Speicherfunktion) nur bei sich stetig wiederholendem Signal.

Ggf. kannst Du auch etwas mit einem LogikAnalysator anfangen.
Der kann auch diverse Protokolle entschlüsseln - I²C wäre Da z.B. nennenswert.
Der LA will aber TTL-Pegel - wenn Du Dem 12V aufbrutzelst, spielt Der nicht mehr mit Dir!

Der LA ist der 'erst Beste, Der mir unter kam' - also keine Kaufempfehlung o.Ä. .

MfG

Hallo zusammen,

hatte jetzt endlich mal Zeit weiterzubasteln und mein Oszi is inzwischen auch in Betrieb genommen. Ich hatte ja das Problen, dass der Pegel meines Signal eingebrochen ist. Impulse zählen funktioniert aber. Das ließ mich vermuten, dass meine Schaltung mit Z-Diode zuviel Strom zieht. Hab jetzt auch eine neue Schaltung aufgebaut mit einem Transistor vorm OC. So sollte das GALA-Signal eigentlich nicht mehr nennenswert belastet werden. Pegel bricht dennoch ein. Ich hab die Schaltungen und Messungen mal im Anhang zusammengefügt. Im "Labor" mit Netzgeräten funktioniert das ganze seltsamerweise einwandfrei.

Hat noch irgendjemand einen Tipp für mich?

Vielen Dank!

GALA-Signalmessungen.pdf (456 KB)

Operationsverstärker als Impedanzwandler

Hallo,

falls es jemanden interessiert: Mit einem 100k von Signal zur Basis und einem 22k von Basis zur Masse funktioniert das ganze.

LG