Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi mit mehreren Optokopplern zum Schalten einer Fernbedienung


von Michel W. (michel_wa)


Angehängte Dateien:

Lesenswert?

Hallo liebe Community,

ich arbeite aktuell an einem Projekt, bei dem ich mithilfe eines 
Raspberry Pi Zero die Tasten einer Fernbedienung ansteuern möchte.
Dies wollte ich gerne mit Optokopplern realisieren, da diese recht 
einfach ansteuerbar sind und als Schalter dienen können.
Im Internet habe ich dann nach etwas Recherche die angehängte Schaltung 
gefunden und prompt alle notwendigen Teile bestellt (exakt die gleichen, 
die dort verwendet wurden).
Für mich relevant ist nur die linke Seite der Schaltung und der 
Optokoppler selbst, da ich keine LED ansteuere, sondern die Tasten einer 
Fernbedienung.
Die Schaltung an sich funktioniert auch genau wie gewünscht, das habe 
ich getestet, nachdem ich diese nachgebaut habe.
Das Problem an der Sache - und die Stelle an der ich Hilfe benötige - 
ist jedoch, dass die Schaltung nicht mehr funktioniert, sobald ein 
weiterer Optokoppler (+ Transistor zum Ansteuern) hinzukommt.
Ab diesem Moment funktioniert die Schaltung nicht mehr korrekt. Sobald 
ich einen Gpio Ausgang aktiviere, wird immer der eine und selbe 
Optokoppler angesteuert, nicht jedoch der, dessen Transistor ich 
eigentlich ansteuere.

Hat hier jemand eine Idee, woran das liegen könnte?
Ich kenne mich damit leider nicht gut genau aus und weiß nicht, ob die 
Transistoren, die ja alle am gleichen Ground hängen das Problem sind, 
oder ob die 5V vom Raspberry nicht an alle optokoppler gleichzeitig 
angeschlossen werden können.

Ich bin über jede Hilfe dankbar und würde es begrüßen, wenn ich die 
Bauteile nicht großartig austauschen müsste, sondern nur beispielsweise 
anders verbinden müsste.

Die Optokoppler direkt an einen Gpio anschließen, funktioniert meines 
Wissens nach nicht, da diese 20ma benötigen, die ein Gpio nicht liefern 
kann.
Falls ich hier falsch liege, lasse ich mich gerne korrigieren :)

Vielen Dank im Voraus!

von Peter Z. (hangloose)


Lesenswert?

Mach mal ein Bild von deiner Verdrahtung.
Zeig den Code wie du die GPIO ansteuerst.

von Ingo S. (Firma: privat) (nisus)


Lesenswert?

Hallo :)
Masse vom Raspi, von der extra
Stromversorgung und Masse der
Fernbedienung müssen galvanisch
getrennt sein, weil da sonst ein
Kurzschluß entstehen kann und
deshalb nur der Optokoppler
schaltet, der als erstes an war.

Ich habe ein ähnliches Problem.

Versuche mal, jedem Optokoppler
eine Stromgegenkopplung zu
verpassen am MPS2222A ... so 10
Ohm.
Du mußt erreichen, daß der Raspi
am Ausgang einen höheren Pegel
erzeugen kann, als die externe
Versorgung am Steuertransistor
aufbringt.
Praktisch läuft dein Steuersignal
über Masse kurzgeschlossen durch
den Raspi hin zum ersten,
geschaltetem Pin.

Signalkreis und Lastkreis müssen
galvanisch getrennt sein.
Da aber der Basistrom das gleiche
Bezugspotential wie die 5 Volt
ext. hat, ist keine galvanische
Trennung gegeben.

von Wolfgang (Gast)


Lesenswert?

Michel W. schrieb:
> Hat hier jemand eine Idee, woran das liegen könnte?

Vielleicht sind die Tasten deiner Fernbedienung als Matrix verschaltet.
In deinem Screenshot ist keine Fernbedienung zu sehen. Was hast du 
wirklich aufgebaut?

von Manfred (Gast)


Lesenswert?

Ingo S. schrieb:
... eine Menge Unfug.

> Stromgegenkopplung

> über Masse kurzgeschlossen

> einen höheren Pegel erzeugen kann, als die externe Versorgung am 
Steuertransistor

von Johannes S. (Gast)


Lesenswert?

einfache IR FB? Da könnte der Controller doch gleich das IR Protokoll 
funken, siehe IRMP Projekt. Die Protokolle der meisten IR FB sind 
bekannt und könnnen generiert werden.

von Michel W. (michel_wa)


Angehängte Dateien:

Lesenswert?

Im Anhang befindet sich die Platine, die ich gelötet habe (ja, meine 
Lötkünste sind fragwürdig..) und der Code den ich zum Testen verwendet 
habe.
Die Pins zum Ansteuern habe ich dabei nach Bedarf ersetzt.

von Michel W. (michel_wa)


Lesenswert?

Ich habe aktuell die Fernbedienung noch nicht angeschlossen, sondern an 
den Ausgängen der Oktokoppler lediglich per Multimeter auf Durchgang 
geprüft wenn der entsprechende Transistor angesteuert wurde.

von Stefan F. (Gast)


Lesenswert?

Wenn du die GND Anschlüsse der Eingänge mit den GND Anschlüssen der 
Ausgänge verbindest, hast du keine galvanische Trennung mehr. Dann sind 
Optokoppler völlig sinnfrei geworden.

Wenn du die GND Anschlüsse aller Ausgänge mit einander verbindest, aber 
die Fernbedienung ganz anders ausgebaut ist. Wird sie nicht 
funktionieren. Meistens sind die Tasten nämlich als Matrix angeordnet 
(siehe 
http://stefanfrings.de/mikrocontroller_buch/Einstieg%20in%20die%20Elektronik%20mit%20Mikrocontrollern%20-%20Band%202.pdf#page=79, 
Kapitel "Tasten-Matrix").

Wozu sind die Transistoren gut? Der Raspberry Pi kann genug Strom Strom 
liefern, um die Optokoppler direkt anzusteuern. 3mA reichen locker aus. 
Mache das so:
1
            680Ω   LED vom Optokoppler
2
3
GPIO 1 o----[===]----|>|----| GND
4
5
GPIO 2 o----[===]----|>|----| GND
6
7
GPIO 3 o----[===]----|>|----| GND
8
9
GPIO 4 o----[===]----|>|----| GND

Die Ausgänge der Optokoppler lötest du an die Tasten-Kontakte an. Also 
jeweils einen Kollektor und einen Emitter an die Kontakte der Tasten.

Die Ausgänge der Optkoppler sollen nicht mit GND verbunden verden.

von Michel W. (michel_wa)


Lesenswert?

Die Fernbedienung besitzt kein IR, sondern arbeitet über eine Radio 
Frequenz, die mir leider nicht bekannt ist.
Daher wollte ich den Weg via Optokoppler einschlagen und die 
Fernbedienung direkt ansteuern.
Die Masse des Raspberry und der Fernbedienung sind nicht miteinander 
verbunden.
Die Tasten der Fernbedienung werden nur über die Ausgänge der 
Optokoppler geschaltet, ansonsten ist die Fernbedienung nicht mit dem 
Raspberry verbunden.
Die beiden Stromkreise sind also getrennt.
Die 5V an die Optokoppler kommen über den 5V Ausgang des Raspberry.

von Stefan F. (Gast)


Lesenswert?

Michel W. schrieb:
> Die Masse des Raspberry und der Fernbedienung
> sind nicht miteinander verbunden.

Dann müsste es ja gehen.

Ich vermisse in deinen Fotos die Vorwiderstände für die LEDs der 
Optokoppler. Ich sehen nur Vorwiderstände an den Basen der Transistoren.

Außerdem sind die Transistoren eventuell alle falsch herum gedreht. Bei 
meinen ist (wenn man auf die Beschriftung guckt) rechts der Emitter. Der 
gehört an GND, nicht an die LED.

von Michel W. (michel_wa)


Lesenswert?

Ich habe die 5V vom Raspberry direkt abgegriffen und zwei 100 Ohm 
Widerstände in Reihe dahinter angeschlossen, um auf 200 Ohm zu kommen.
Dahinter sind dann alle Eingänge der LED der Optokoppler an dem Ende des 
zweiten 100 Ohm Widerstand angeschlossen.
Liegt hier vielleicht der Fehler?
Muss jeder Optokoppler für sich alleine die 200 Ohm Widerstand erhalten?

von Achim S. (Gast)


Lesenswert?

Michel W. schrieb:
> Liegt hier vielleicht der Fehler?

Ja

Michel W. schrieb:
> Muss jeder Optokoppler für sich alleine die 200 Ohm Widerstand erhalten?

Ja

von Thomas (kosmos)


Lesenswert?

du musst eben auf der linken Seite die 5V und GND vom Raspberry nehmen 
und rechts 9V und GND von der 9V Blockbatterie der Fernbedienung, so 
besteht keine  galvanische Verbindung zw. den beiden Schaltungsteilen.

Du könntest aber auch einen IR-LED mittels Transistor an den RPI klemmen 
und die Signale direkt verschicken.

von Joachim B. (jar)


Lesenswert?

Stefan ⛄ F. schrieb:
> Der Raspberry Pi kann genug Strom Strom
> liefern, um die Optokoppler direkt anzusteuern.

ja genug ist relativ, mit 3mA Rv um 680 Ohm bist du dabei und sicher für 
den PI

Stefan ⛄ F. schrieb:
> Wenn du die GND Anschlüsse aller Ausgänge mit einander verbindest, aber
> die Fernbedienung ganz anders ausgebaut ist. Wird sie nicht
> funktionieren. Meistens sind die Tasten nämlich als Matrix angeordnet

stimmt!

Wenn Optokoppler DANN jeder Ausgang nur ein Taster und nicht alle GND 
zusammen, dann klappts auch mit einer Matrix, man muss nur schauen wo + 
C(ollector) und - E(mitter) liegt für den OptoTransistor!

Bessere helfen CNY17-F4 CTR min 100% reicht also für 3mA sekundär

Eine reine Transistorlösung klappt nur WENN es keine Matrix ist, aber 
dann die GND links und rechts verbinden sonst offen lassen

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Michel W. schrieb:
> Ich habe die 5V vom Raspberry direkt abgegriffen und zwei 100 Ohm
> Widerstände in Reihe dahinter angeschlossen, um auf 200 Ohm zu kommen.
> Dahinter sind dann alle Eingänge der LED der Optokoppler an dem Ende des
> zweiten 100 Ohm Widerstand angeschlossen.

Ah, das habe ich nicht gesehen. Ja das kann man machen, wenn immer nur 
ein Optokoppler gleichzeitig angesteuert wird.

> Dahinter ... Liegt hier vielleicht der Fehler?

Glaube nicht. Wenn die Transistoren auch richtig herum gedreht sind, 
sehe ich im Aufbau keinen Fehler.

Am besten zeichnest du mal einen kompletten Schaltplan wo auch die 
geplanten Verbindungen zur Fernbedienung sichtbar sind. Die 
Fernbedienung selbst kannst du als Blackbox darstellen.

Welche Transistoren verwendest du konkret?

von Erich (Gast)


Lesenswert?

Thomas O. schrieb:
>
> Du könntest aber auch einen IR-LED
> mittels Transistor an den RPI klemmen
> und die Signale direkt verschicken.

DAS wäre wohl zu einfach?

Ok, das Protokoll der Fernbedienung (z.B. "NEC"-IR-Code) und den Code 
jeder einzelnen Taste müsste man herausfinden.

Gruss

von Oliver S. (phetty)


Lesenswert?

Bei mir tut es seit Jahr und Tag ein CD4066 anstelle der Optokoppler um 
eine Fernbedienung anzusteuern.

von Forist (Gast)


Lesenswert?

Michel W. schrieb:
> Screenshot_20211212-164433.png

Schräger geht's wohl nicht.
Quellcode als unscharfes PNG

Brrrr...

von Peter D. (peda)


Lesenswert?

Oliver S. schrieb:
> Bei mir tut es seit Jahr und Tag ein CD4066 anstelle der Optokoppler um
> eine Fernbedienung anzusteuern.

Sollen viele Tasten ersetzt werden, gehen auch 2 Stück CD4051 für bis zu 
64 Tasten (8*8 Matrix).

von Joachim B. (jar)


Lesenswert?

Forist schrieb:
> Schräger geht's wohl nicht.
> Quellcode als unscharfes PNG
>
> Brrrr...

wieviel man wohl in 141 KB png als Code einstellen könnte?

von Michel W. (michel_wa)


Angehängte Dateien:

Lesenswert?

Stefan ⛄ F. schrieb:
> Am besten zeichnest du mal einen kompletten Schaltplan wo auch die
> geplanten Verbindungen zur Fernbedienung sichtbar sind.

Im Anhang ist die Schaltung, so wie sie aktuell aufgebaut ist. 
Beispielhaft für zwei Optokoppler jeweils mit einem Transistor zum 
Schalten an einem Gpio (3.3V).
Die angesteuerten LEDs sind dabei als Optokoppler zu verstehen.

Hierbei wäre jeweils nur ein 3.3V Eingang aktiv.

Die Fernbedienung kann erstmal außen vorgelassen werden, Ziel ist es 
jeden Optokoppler einzeln aktivieren zu können, so dass dessen Ausgang 
Durchgang geschaltet bekommt.

Liegt hier ein Fehler vor?

von Stefan F. (Gast)


Lesenswert?

Michel W. schrieb:
> Liegt hier ein Fehler vor?

Nö.

Teste mal ob die Ausgänge des Raspi funktionieren, ganz unabhängig von 
deiner Schaltung und mit einem anderen Testprogramm (bzw. 
Kommandozeile).

von Michel W. (michel_wa)


Lesenswert?

Vielen Dank für die rege Anteilnahme an alle Beteiligten!
Nachdem ich durch eure Antworten sicherstellen konnte, dass die 
Schaltung grundsätzlich funktionieren muss, habe ich noch einmal 
akribisch alle Kontakte geprüft und festgestellt, dass die 5V Zuleitung 
einen "Wackler" hatte.
Nachdem ich diese neu verdrahtet habe, funktioniert die Schaltung jetzt 
korrekt!

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.