KFZ-Gala einlesen

Hallo miteinander,

ich habe da ein paar Ideen die ich gerne Umsätzen würde doch leider fehlen mir die Grundlagen dafür :frowning:

Daher möchte ich bei eich ein mal nachfragen ob Ihr mir ein wenig Helfen könntet.

Gerne würde ich das GALA Signal eines KFZ Radios in mein "arduino mega 2560" einlesen und dann berechnen wie schnell das KFZ sich bewegt.

Ich habe nur keinen Plan wie ich das GALA Signal an das "arduino mega 2560" anschließen muss, kann mir da jemand etwas Helfen? und mir den einen oder anderen Tipp geben wie ich so was machen kann?

Gruß

Auf dieser Leitung kriegst Du ein Rechteck-Signal, das in ungefähr die km/h in Hz abbildet. Das Signal springt von 0V auf Bordspannung, also 12-15V. Mit einem 1:3 Spannungsteiler könntest Du also direkt auf einen Digitaleingang des Arduinos gehen, wenn Du sicher gehen willst, schadet wahrscheinlich eine Zener-Diode nicht. Alternativ kannst Du auch einen Optokoppler nehmen, der ist einfach etwas teurer. Dann würde ich einen externen Interrupt-Eingang benützen, das vereinfacht die Programmierung etwas, obwohl Du im normalen Geschwindigkeitbereich eigentlich mit Polling gut durchkommen solltest.

Danke für die schnelle Antwort.

auf die Gefahr hin das man mich nicht mehr für voll nimmt doch was ist ein 3:1 Spannungsteiler?

habe da ein mal eine Zeichnung gemacht wie ich das verstanden habe mit dem Spannungsteiler.
Wie meinst du das mit den Zener-Diode? werden die auch bei der Verwendung mit einem Optokoppler benötigt?

das mit einem Optokoppler finde ich nicht schlecht dann währen beide Stromkreise Galvanisch getrennt :slight_smile: wenn ich das richtig verstanden habe.
Da schaue ich jedoch morgen Abend danach wie man so was machen könnte das ist mir jetzt etwas zu spät :frowning:

würde mich über ein Feedback freuen.

auf die Gefahr hin das man mich nicht mehr für voll nimmt doch was ist ein 3:1 Spannungsteiler?

Das mit Deiner Zeichnung ist schon mal gar nicht so schlecht, aber der Abgriff für den Arduino-Pin ist in der Mitte (zwischen den beiden Widerständen, dort wo Du das Gala-Signal anbinden wolltest) und das Signal kommt an's andere Ende, wo bei Dir der Arduino-Pin war.

Wie meinst du das mit den Zener-Diode? werden die auch bei der Verwendung mit einem Optokoppler benötigt?

Die Zener-Diode würde vom Arduino-Pin nach Masse ziehen, damit am Pin sicher keine zu grosse Spannung ankommt, wenn das Bordnetz mal eine Spitze hat.
Mit dem Optokoppler wäre sie natürlich nicht notwendig.

das mit einem Optokoppler finde ich nicht schlecht dann währen beide Stromkreise Galvanisch getrennt :slight_smile: wenn ich das richtig verstanden habe.

Hmmh, wahrscheinlich nicht, da ich davon ausgehe, dass Du den Arduino auch mit der Bordspannung betreibst. Aber es wäre sichergestellt, dass eine hohe Bordspannungsspitze nicht den Arduino-Eingang beschädigt.

OK, wenn ich das richtig verstanden habe sollten die Pins vertauscht werden.
Dies habe ich ein mal auf dem Bild festgehalten.

OK, dann lassen wir das mit den Zener-Diode mal weg, und ich schaue morgen nach dem Optokoppler das mir das Bord nicht versehentlich kaputt geht.

Für den Optokoppler brauchst du keinen Spannungsteiler, sondern einen Vorwiderstand, genaugenommen abhängig von den Daten deines Optokopplers.
1k wird aber wohl passen.

GALA  ( 1 ) ----- 1k ----+    C ----------------------  INPUT_PULLUP
                         [u]v[/u]
MASSE ( 8 ) -------------+    E ----------------------  GND
                          opto

so habe das mal in einem neuen Bild zusammen gestellt.

Optokoppler: KB 817

Typ. Vorwärtsspannung: 1,2 V
Typ. Vorwärtsstrom: 20 mA
Max. Vorwärtsspannung: 1,4 V
Max. Vorwärtsstrom: 50 mA
Collector-Emitter-Spannung: 35 V
Collector-Strom: 50 mA
Isolationsspannung I/O: 5000 V
CTR: 50 - 600 %

kann mir jemand sagen ob das mit den Widerständen so klappt oder ob ich da andere verwenden muss?
möchte nicht irgend was kaputt machen.

Der Optokoppler muss zumindest gedreht werden, dass dein Signal die interne Diode zum Leuchten bringt. Dann schaltet der eingebaute Transistor auch durch, dann kann man auch den den jeweiligen Pegel auslesen und anhand der Frequenz auf die Geschwindigkeit schließen.

sth77:
Der Optokoppler muss zumindest gedreht werden, dass dein Signal die interne Diode zum Leuchten bringt. Dann schaltet der eingebaute Transistor auch durch

das ist ein gutes Argument ;-).

habe den Optokoppler jetzt mal gedreht, auf der Zeichnung.
kann mir auch jemand sagen ob das mit den Widerständen so stimmt?

Vorwiderstand arduino:
R = U/I
mit welchen Daten muss ich denn am arduino rechnen? damit ich hier den Widerstand berechnen kann?

Vorwiderstand GALA:

R = U/I

R = (GALA_strom - LED_verbrauch) / LED_Stromsterke
R = (12V - 1,22) / 20mA
R = 10,78 / 20 mA
R = 0,539
R = 540 ?

ist das Richtig was ich berechne ?

Na so ganz klappt das noch nicht, schau dir mal diese Schaltung im Bereich des Transistors an:


[Quelle: ioproz.de jetzt kaufen!]

Auf R2 könntest du sogar verzichten, wenn du den internen Pullup-Widerstand aktivierst.

OK, ich hoffe das ich das so richtig verstanden habe.

Verwendete Bauteile:

R1 = 1K ?
R2 = 10K ?

D1 = 1N4148
OK1 = 4N28

Arduino = Arduino Mega 2560

Stimmt das so mit den Bauteilen?

wenn ich das richtig verstanden habe, wird nun die Arduino 5V auf den Digitalen Eingang gelegt wenn der Optokoppler Schaltet, die 5V kann ich dann wiederum auslesen, ist das richtig so?

wenn der Optokoppler Schaltet, die 5V kann ich dann wiederum auslesen...

Vermutlich hilft dir diese Erklärung noch ein bisschen:
Wenn der Optokoppler nicht geschaltet ist, ist das Signal an PD4 HIGH (ca. 5V )
Wenn der Optokoppler durchschaltet, ist das Signal an PD4 LOW, da fast auf GND, und an R2 liegen fast 5V Spannungsdifferenz.

Für Frequenzmessung/Zählung ist dieses Invertieren belanglos.

Der MicroController hat übrigens das Äquivalent zu R2 schon eingebaut. Dieser Pullup-Widerstand wird mit
pinMode(4, INPUT_PULLUP);
aktiviert. Das habe ich gestern in meiner ASCII - Grafik wohl etwas zu verkürzt dargestellt.

Dein R2 schadet aber in keinem Fall.

OK, verstehe.

wenn ich den internen Pullup-Widerstand Aktivire dann kann ich den R2 dennoch an 5V angeschlossen haben?

stimmen denn die anderen Bauteile? da ich so Bauteile nicht bei mir habe muss ich die immer bestellen :frowning:

von 1k und 10k Widerständen solltest du schon jeweils 10 Stück bestellen. Dann hast du eine Grundausstattung :wink:

Ich war anfangs sehr erstaunt, dass diese Werte gar nicht so kritisch sind bzw. sein sollten.
Als Allround-Werte reichen oft Abstände im Verhätlnis 1:2, bzw. 3 Schritte für 1:10 ( 1 , 2.2 , 4.7 , 10 )

Du hattest z.B. einen Wert von R=560 ausgerechnet für 20 mA. Das ist allerdings am Limit, mit 1k bist du bei ca 10 mA, selbst mit 2k und einem Strom von 5mA kannst du deinen Opto-Transistor mit seinen 10k noch durchschalten.

Wenn zu den 10k noch der interne Pullup von ca. 20 .. 30k parallel liegt, hast du statt einem Collektorstrom von 5mA ( 5V / 10k ) einen etwas höheren von ca 7mA. Die Collektorspannung sollte immer noch klein genug sein und von 7mA wird auch nichts warm.

Evtl. als Inspiration für weitere Basteleien...

Bei modernen Autos gibt es das Gala Signal nicht mehr, ist alles auf dem Can Bus.
Es gibt natürlich eine fertige Can Lib dazu.

http://forum.arduino.cc/index.php/topic,8626.0.html

Damit kann man mehr machen, und nicht nur die Geschwindigkeit auslesen. 8)

rudirabbit:
Evtl. als Inspiration für weitere Basteleien...

Bei modernen Autos gibt es das Gala Signal nicht mehr, ist alles auf dem Can Bus.
Es gibt natürlich eine fertige Can Lib dazu.

http://forum.arduino.cc/index.php/topic,8626.0.html

Damit kann man mehr machen, und nicht nur die Geschwindigkeit auslesen. 8)

an so was habe ich auch schon gedacht dachte nur das es schwierig sein wird so was auszulesen bzw. wie man das abgreifen kann soll.
gibt es da auch eine Beschreibung in Deutsch? (werde selber später mal danach suchen)

Vorweg - Ich bin mit den Atmels noch nicht an den Can-Bus eines KFZ gegangen.

Da ich aber von Beruf her zwangläufig damit zu tun habe, habe ich mir das schon vorgenommen wenn mal Zeit dafür frei ist.
Sehr gute Infos gibts es im Canhacker Forum, du must nicht die Hardware nehmen die dort verwendet wird.

Die Can Lib arbeitet im Prinzip immer gleich.

Abgreifen des Can Bus im Fahrzeug:

Am OBD Anschluß, ist der Diagnose-CAN damit ist aber nicht alles erreichbar

Dann gibt es noch den CAN-Bus Antrieb ....das ganze schaut in etwa so aus http://www.kfztech.de/kfztechnik/elo/can/can_grundlagen_1.ht

Ich würde es mit den Infortainment Can versuchen und die Geschwindigkeit dieses Can und die anderen Parameter in der Lib (im Can Hacker Forum zu Finden) einstellen.

Am Radio ist der Infortainment Can meist gut anzuzapfen.
Wie schon gesagt auch bei mir noch alles theoretisch.

:slight_smile: also die Idee ist super diese werde ich auch versuchen umzusetzen,
wobei ich als erstes das mit dem GALA Signal versuchen werde :slight_smile:

was ich bei dem OBD noch nicht so richtig verstanden habe,
muss ich da noch mal einen Adapter zwischen das Bord und
KFZ klemmen oder kann ich das direkt an das Bord anschließen?

Am OBD Stecker ist unter anderem der Diagnose Can herausgeführt.

Um den Can dann an den Atmel zu bekommen brauchst du z.b sowas CAN-BUS Shield - DEV-13262 - SparkFun Electronics

Ein bisschen teuer, das fällt mir schon länger auf bei allem was mit Can Bus zu tun hat.

Ganz witzig was man damit machen kann Arduino CAN-Bus OBDII demo - YouTube
interessant wird es wenn du damit selbst Messages auf den Bus schickst und z.b die Fensterheber runterfährst.

rudirabbit:
Ein bisschen teuer, das fällt mir schon länger auf bei allem was mit Can Bus zu tun hat.

ich wusste gar nicht das man über den Stecker aus Befehle zum KFZ abgeben kann, das ist ja cool.

Teuer finde ich das auch, schade das man den CAN Bus nicht auf die Digitalen Eingänge legen kann um Sie dann einzulesen :frowning:
jetzt habe ich schon das große Bord "arduino mega 2560"

naja dann muss ich mir das mal bei Gelegenheit bestellen.