Forum: Mikrocontroller und Digitale Elektronik Arduino Schaltung für Lenkradfernbedienung


von Philip (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

um die Lenkradfernsteuerung in meinem Twingo auch mit dem Sony 
MEX-N5300BT Autoradio weiternutzen zu können, müssen deren Eingaben 
übersetzt werden. Sony und Pioneer haben eine 3,5mm Klinkenbuchse als 
Eingang, zwischen Spitze und Schaft liegen 5V an und verschiedene 
Widerstände zwischen den beiden lösen am Radio die entsprechenden 
Funktionen aus. Zusätzlich kann der mittlere Ring mit dem Schaft 
verbunden werden, dies dient als "Shift-Taste" für bestimmte Funktionen.
Ein Arduino Nano übersetzt die Signale der Lenkradfernbedienung und legt 
jew. über Optokoppler den entsprechenden Widerstand an. Der Nano wird 
über USB vom Zigarettenanzünder mit Strom versorgt, so muss ich mich 
nicht um dieses Thema kümmern und es erscheint mir relativ sicher und 
einfach.
Die Dioden (und gemessenen Widerstandswerte) habe ich von hier 
http://jvde.net/comment/150 übernommen. Auf anderen Seiten sind sie 
nicht aufgeführt, aber ich vermute, dass sie auch nicht schaden werden.

Meine Frage bezieht sich auf den Schaltplan: sieht der Profi hier sofort 
einen schwerden Fauxpas oder könnte das so funktionieren?

Danke und viele Grüße
Philip

von Nase (Gast)


Lesenswert?

Was sofort auffällt:
Deine Optokoppler werden ohne Vorwiderstände betrieben, das ist 
schlecht!
Die Spannungsversorgung für deinen Controller fehlt, das ist schlecht! 
(Ohne Spannungsversorgung keine Funktion und Störungen im Boardnetz 
müssen eggektiv aufgefangen werden).
Die Eingänge deines Controllers sind nicht geschützt, das würde ich 
anders machen. Ansonsten önnte es womöglich funktionieren.

Grüße

von Eric B. (beric)


Lesenswert?

Der "Shift"-Optokoppler (ganz rechts) hat Ausgangsseitig 2 Dioden die 
sich gegenseitig blockieren. o_O

von Jens M. (schuchkleisser)


Lesenswert?

Stört UCE nicht den Empfang im Radio? ;)

von Markus M. (adrock)


Lesenswert?

Einziges Problem könnte der Spannungsabfall am (Photo-)Transistor 
werden, der ist lt. Datenblatt zwar relativ gering (0,12V bei 30 Grad 
C), aber es hängt davon ab, wie das Radio die Auswertung macht.

Das hier ist aus dem verlinkten Post:

"For the analogue input, the internal pull-up and the series/external 
resistor form a voltage divider which is evaluated by AD-converter. The 
nominal thresholds apparently are 
17.5/25/32.5/40/47.5/55/62.5/70/77.5/85% of the respective 
microcontroller supply (5V in older HUs, 3,3V in newer ones).

To ensure safe operation of the "shift" (ring) functions, it is 
recommended to use shottky diodes instead of 1N4148 to reduce the 
undesired voltage offset to be able to use the same resistors as for the 
equivalent Tip function. Otherwise the resistors need to be lowered due 
to the diode's forward voltage."

Okay, also wenn das Radio 3,3V verwendet und die Abstufungen für die 
Erkennung der analogen Widerstände jeweils 7,5% sind, dann sind es 
jeweils 0,24V. D.h. mit den 0,12V Spannungsabfall am Transistor bist Du 
schon an der Grenze zwischen zwei Werten.

von Willibald (Gast)


Lesenswert?

Ich bin nicht sicher ob ein Optokoppler für deinen Zweck das richtige 
Mittel ist. Der Transistor des Optokopplers hat weder einen 
Durchgangswiderstand von 0 Ohm, noch stellt er einen linearen Widerstand 
dar. Es wird sich abhängig von Ic eine Spannung Uce einstellen, mit der 
du deine Widerstandswerte korrigieren müßtest.
Das wird vermutlich nicht ganz einfach, wenn man auch noch die 
Temperaturschwankungen im Auto (Sommer-Winter) mit berücksichtigen muß.

von EGS (Gast)


Lesenswert?

Hallo Philipp,

Ich würde mir mal per I2C steuerbare digitale Widerstände anschauen. Da 
kannst du den Wert digital vom Arduino vorgeben lassen und auch noch 
steuern ob der ausgang des Digital-Potis an oder aus ist, defaultwerte 
gesetzten Wert rücklesen...

Zusätzlich kannst du die Temperatur mit dem Arduino auswerten und 
eventuelle Drifts in den Widerstandswerten (Kabelwiderstand,...) 
ausgleichen. Auch ist es dann nicht notwendig so ein OK Grab zu bauen.

MfG EGS

von Jens M. (schuchkleisser)


Lesenswert?

Da wär ich vorsichtig. Da fehlt die galv. Trennung, kann sein das der 
Radio das nicht mögen tut.
Am Ende hört man immer die Lichtmaschine surren...

Reedrelais wären sinniger. Gibt's auch in winzig.

von Markus M. (adrock)


Lesenswert?

Also ich habe nochmal in dem verlinkten Post gelesen:

"The wired remote interface is internally composed of a pull-up (10k) 
and a series resistor of 1k to the analogue input (Tip) as well as to 
the digital input (Ring). I have this information from the circuit 
diagram inside the service manual of the DEH-5200-SD."

D.h. aufgrund dieser Beschaltung wird der Strom durch den 
Phototransistor nie größer als 5V (3,3V) / (10k+1,2K+1k) = 0,41 (0,27) 
mA werden.

Bei diesem geringen Strom wird auch der Spannungsabfall am (Vce(sat)) am 
Transistor noch geringer. Leider fehlt dieses Diagramm in dem 
Toshiba-Datenblatt vom TPL621. Aber dieses Teil ist eh nicht mehr 
empfohlen.

Habe mal bei Reichelt geschaut, der günstigste Optokoppler LTV817 (gibt 
es auch als 2-und 4-Kanalversion) sollte sogar ausreichen.

Damit Vce(sat) niedrig bleibt, musst Du den Strom durch die Diode vom 
Optokoppler aber eher hoch dimensionieren, also z.B. 20mA (wenn der 
Arduino das liefern kann am IO-Pin).

von EGS (Gast)


Lesenswert?

Jens M. schrieb:
> Da wär ich vorsichtig. Da fehlt die galv. Trennung, kann sein das
> der
> Radio das nicht mögen tut.
> Am Ende hört man immer die Lichtmaschine surren...
>
> Reedrelais wären sinniger. Gibt's auch in winzig.

Mach mal halblang,

1. die Fernbedienung von dieser Möhre muss ja an den Arduino ran und die 
andere Seite an das Radio.
2. kann man, da die Stromaufnahme des ganzen überschaubar ist, es auch 
gleich aus dem Antennen Vcc des Radios speisen. Wozu dann also 
galvanisch trennen. Somit hat man auch gleich die Radio internen 
Vpeak-Schutzschaltungen dran.

Einfach nen Step-down ran und gut ist. Schlimmer wäre es, wenn die 
Fernbedienung noch 12V Bordnetz hat was benötigt wird. Dann braucht 
diese Seite ne galvanische Trennung.

Eventuell hat das Autoradio ja auch nen USB ausgang/ 5VDC 
Kontakt...warum einfach wenn es auch kompliziert geht. ?

MfG EGS

von Jens M. (schuchkleisser)


Lesenswert?

Da wurde oben gesagt, das die Kiste über den Ziggy versorgt werden soll.
Ziggymasse an Radio-Klinkenmasse macht ziemlich sicher Ärger. Kann sein 
von nich, würd ich trotzdem nicht riskieren. BTDT...

Wenn man natürlich das Radio anzapft und zugleich die Lenkerkiste 
isolieren kann (oder sichergestellt ist das sie das ist) ist das schon 
ok.

von Mercedesfahrer (Gast)


Lesenswert?

Jens M. schrieb:
> Stört UCE nicht den Empfang im Radio?

Jens M. schrieb:
> Da wär ich vorsichtig. Da fehlt die galv. Trennung, kann sein das der
> Radio das nicht mögen tut.
> Am Ende hört man immer die Lichtmaschine surren...

Das ist bei einem Renault doch völlig egal.

von Philip O. (largolagrande)


Angehängte Dateien:

Lesenswert?

Vielen, vielen Dank für eure Gedanken!

Die fehlenden Vorwiderstände an den Optokopplern und die überflüssige 
Diode für den /shift/-Opto habe ich im vorläufigen Schaltbild schonmal 
korrigiert.

@EGS
Steuerbare Widerstände fand ich auch sexy, hab es aber eben wegen der 
fehlenden galvanischen Trennung verworfen. Die Idee mit der 
Temperaturanpassung ist auf jeden Fall was für Version 2, coole Idee! 
Beim aktuellen Sommer plane ich erstmal nach Raumtemperatur. =)
Die Stromaufnahme hat mich ziemlich beschäftigt und ich habe mich wie 
erwähnt dafür entschieden, eine USB-Buchse aus dem 
Zigarettenanzünder-USB-Adapter für den Arduino zu nutzen. So muss ich 
nicht in die Autoelektrik eingreifen um da die 12V-Leitung zu kapern, 
abzusichern und runterzupegeln. Insofern: ja, warum kompliziert machen? 
=)

@Markus M. @Willibald
Der Spannungsabfall durch die Transistoren ist in der Tat nicht so 
prickelnd. Das Radio kommt morgen, dann werde ich als erstes messen, 
welche Spannung an der Remote-Buchse anliegt. Witzigerweise habe ich für 
das Projekt bereits LTV 817 bestellt. Aber natürlich in der 1er-Variante 
=)
Der Arduino liefert laut 
https://playground.arduino.cc/Main/ArduinoPinCurrentLimitations/ pro Pin 
40mA, hier also alles gut..


Ich gehe davon aus, dass ich eh ein bisschen mit den Widerständen 
rumprobieren muss. Werde mir das auf einem Steckbrett zurechtstecken und 
dann im Auto einfach mal ausprobieren. Es sind ja nicht so viele 
Funktionen. Wenn es mit den Optos nicht klappt, werde ich mir Reedrelais 
anschauen und die Stromversorgung überdenken.

TLDR:
Ich bin bei der Recherche zum ganzen Vorhaben auch auf einen 
Reverse-Engeering-Ansatz gestoßen: Die Widerstandswerte in dem oben 
verlinkten Blog wurden durch Trial-and-Error herausgefunden, deshalb 
sind sie auch so krumm. Auf https://llg.cubic.org/tools/sonyrm/ 
(Abschnitt Circuit) und 
http://www.riocar.org/Developer_Info/14.html#40 sind die Widerstände aus 
einer Sony RM-X2S Fernbedienung entnommen (als Kaskade).
Die Werte weichen von den gemessenen ab, sie sind durchweg ein bisschen 
höher aber nah dran. S. Anhang


Danke allen, ich werde es einfach mal testen und berichten--
Philip

von Manfred (Gast)


Lesenswert?

Markus M. schrieb:
> Problem könnte der Spannungsabfall am (Photo-)Transistor
> werden,

Anstatt klassischer Optokoppler würde ich Photo-MOS-Relais einsetzen, 
suche nach Panasonic Serie "AQV" oder vergleichbar.

von Das dass das das !!! (Gast)


Lesenswert?

1 Kann man die Widerstände nicht an Portpins gegen Masse schalten 
lassen? Original kam die Fernbedienung ja auch ohne galvanische Trennung 
aus.
2 Wenn "OFF" auch einschalten können kann und soll, braucht man eine 
Standby-Versorgung. Das ist auch easy, der Prozessor schläft bis ein 
Tastendruck kommt, darauf aktiviert der einen eigenen Pullup, misst die 
Taste aus, gibt sie weiter und schläft dann wieder ein.

von Jens M. (schuchkleisser)


Lesenswert?

Das dass das das !!! schrieb:
> Original kam die Fernbedienung ja auch ohne galvanische Trennung
> aus.

Weils nur Kabel und Tasten sind, ohne Versorgung.
Sobald irgendwo Masse und +12V ins Spiel kommen muss man aufpassen.

von Philip O. (largolagrande)


Angehängte Dateien:

Lesenswert?

Soo, ich habe ausgiebig getestet und mit den Optokopplern hat es 
tatsächlich nicht so toll funktioniert. Die Spannung an der 
Remote-Klinkenbuchse am Radio liegt auch leider bei 3,3V. Deshalb habe 
ich wie von Jens M vorgeschlagen Reed-Relais in winzig (Comus 5V, 
Bauteilnr. 3570-1331-053 
https://produktinfo.conrad.com/datenblaetter/1300000-1399999/001300079-da-01-en-REEDRELAIS_5V_10W_3570_1331_051.pdf) 
besorgt (Schaltplan im Anhang. Die Relais haben zwischen den Beinchen 
jeweils eine Einheit Abstand; die nicht angeschlossenen Beinchen können 
also ignoriert werden und sind nur Platzhalter für die Platine)
Prinzipiell funktioniert es, allerdings nur bei Vol-, Seek+ und Seek-. 
Daraufhin habe ich wegen möglicher Toleranzen mit den Widerständen 
rumgespielt, die anderen Tasten ließen sich aber nicht zur Mitarbeit 
überreden.
Habe dann testweise das Multimeter ans Steckbrett angeschlossen (Radio 
rausgezogen) um zu schauen, was überhaupt beim Radio ankommt, wenn die 
Lenkradfernbedienung auslöst. Es sieht so aus, als ob bei den anderen 
als den o.g. Relais die Widerstände deutlich höher liegen, als sie 
dürften (mehrere hundert Kiloohm).
Es ist wahrscheinlich ein offensichtlicher Fehler, das Steckbrett habe 
ich hundertmal kontrolliert und es erscheint willkürlich. Testweise ein 
Relais gewechselt, danach funktionierte Vol- nicht mehr.. sehr 
merkwürdig.
Hat jemand eine Idee?

von Hubert G. (hubertg)


Lesenswert?

Die Relais mit eingebauter Diode verwendet?

Sehe gerade, sind mit Diode.

: Bearbeitet durch User
von Hubert G. (hubertg)


Lesenswert?

Verwende immer das gleiche Relais das funktioniert und ändere nur den 
Widerstand. Dann weisst du schon mal ob der Radio richtig reagiert.

von Philip O. (largolagrande)


Angehängte Dateien:

Lesenswert?

Hubert G. schrieb:
> Verwende immer das gleiche Relais das funktioniert und ändere nur den
> Widerstand. Dann weisst du schon mal ob der Radio richtig reagiert.

Das Radio hat ja teilweise richtig reagiert, das würde ich ausschließen.
Bei meiner Messung sind jetzt alle Widerstände sehr hoch. Habe nochmal 
alles entfernt bis auf ein Relay. Wenn der Widerstand separat gemessen 
wird, stimmt der Wert auf dem Multimeter (8,2 kOhm), daran liegts also 
nicht. Angeschlossen auf dem Steckbrett wie im Anhang ist der Widerstand 
wieder hoch--

Kann es sein, dass es einen Unterschied macht, ob ich mit dem Multimeter 
messe (Radio ist ja dann nicht angeschlossen) oder das Radio "misst" (es 
liegen dann 3,3V vom Radio an)?

von Jens M. (schuchkleisser)


Lesenswert?

Löte die Verbindungen mal.
Und miss den Widerstand des Kontakts. Evtl. zieht das Relais nicht 
richtig an, weil der Arduino nicht genug Strom liefert?

Ich könnte mir auch vorstellen, das Dreck auf den Widerstandsbeinchen 
(vom Klebeband) in die Testbrettfedern gekommen ist und nun hast du 
schlechte Übergänge.

Das MG misst mit deutlich weniger als 3V...

von Joachim B. (jar)


Lesenswert?

Jens M. schrieb:
> Da wär ich vorsichtig. Da fehlt die galv. Trennung, kann sein das der
> Radio das nicht mögen tut.
> Am Ende hört man immer die Lichtmaschine surren...
>
> Reedrelais wären sinniger. Gibt's auch in winzig.

statt Reedrelais würde ich lieber Photomos Relais nehmen AQV252g, 
niedriger Einschalt R, galv. getrennt.

Oder I2C Poti mit kleinem Arduino per DC/DC Wandler galv. getrennt von 
der 12V PKW Versorgung, Sim1 1205

: Bearbeitet durch User
von Willibald (Gast)


Lesenswert?

Philip O. schrieb:
> Das Radio hat ja teilweise richtig reagiert, das würde ich ausschließen.
> Bei meiner Messung sind jetzt alle Widerstände sehr hoch. Habe nochmal
> alles entfernt bis auf ein Relay. Wenn der Widerstand separat gemessen
> wird, stimmt der Wert auf dem Multimeter (8,2 kOhm), daran liegts also
> nicht. Angeschlossen auf dem Steckbrett wie im Anhang ist der Widerstand
> wieder hoch--

Hast du mit dem Multimeter den Widerstand direkt gemessen, oder über den 
Relaiskontakt? Wenn du mit dem Multimeter etwas vernünftiges messen 
möchtest, muß auf jeden Fall die Verbindung zum Radio getrennt werden.

Ich tippe aber eher, daß das Relais falsch an den Arduino angeschlossen 
ist, und die Spulenspannung durch die Diode auf 0,7 Volt begrenzt wird. 
Eventuell hast du den Pin1 am Relais falsch interpretiert. Messe doch 
mal direkt die Spulenspannung wenn das Relais anziehen soll.

von Philip O. (largolagrande)


Lesenswert?

Vielen Dank für eure Anregungen! Ich habe testweise eine 
Minimalschaltung mit einem Relais direkt verlötet, gleiches Problem wie 
vorher. Anschluss des Relais auch nochmal geprüft, insgesamt ist es ja 
keine überaus komplizierte Schaltung.
Das Verlöten hat das Steckbrett als Fehlerquelle ausgeräumt, das Relais 
müsste laut Datenblatt gut mit dem Arduino klarkommen, da war ich 
überzeugt davon, dass es an der Schaltung einfach nicht liegen kann. Was 
blieb noch? Die Software. Es hat sich herausgestellt, dass die Relais 
nicht durchgehend beim Betätigen einer Taste auf der Fernbedienung 
geschaltet wurden, sondern an- und ausgeschaltet wurden (mit jedem 
Programmdurchlauf). Daher kam auch das Fiepen der Relais beim Auslösen, 
ich dachte das sei normal. Ist es nicht =)

Jetzt funktioniert auf jeden Fall schonmal die Schaltung und ich kann 
die Widerstände endlich richtig am Radio messen--

Die Photomos-Relais habe ich auf jeden Fall in mein Spektrum 
aufgenommen, guter Tipp!

von Philip O. (largolagrande)


Lesenswert?

Wer das nachbauen möchte: Der Adapter funktioniert, ich habe ihn hier 
dokumentiert:
https://github.com/deranku/twingo-remote-to-sony

Danke nochmal für alle Antworten!

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.