PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : optokoppler als schalter



inka
25.07.2020, 13:13
hallo,
ich habe diesen optokoppler:

https://de.banggood.com/PC817-4-Channel-Optocoupler-Isolation-Board-Voltage-Converter-Adapter-Module-3_6-30V-Driver-Photoelectric-Isolated-Module-PC-817-p-1610313.html?cur_warehouse=CN

wenn ich an einem eingang (IN1 und GND) 5V anlege, messe ich am ausgang einen widerstand von 3.8 kohm. Liegt am eingang keine spannung an, ist der ausgang hochohmig/kein durchgang....
Kann ich damit auf der ausgangsseite auch ein signal wie z. RX / TX von und zum arduino ein und abschalten?

Gnom67
25.07.2020, 14:30
Das kannst du...

3,8 KOhm kommt von dem Widerstand, der da aufgelötet ist (302) - wozu der gut sein soll, weiß ich aber nicht.

Wenn ich dich richtig verstehe, hast du ein serielles Signal und willst das quasi abschalten?
Du kannst Von Tx über einen Widerstand nach Rx gehen. Hinter dem Widerstand zweigst du eine Leitung ab und gehst damit über V1 nach Ground.
Wenn der Optokoppler eingeschaltet ist, wird jedes Signal der Seriellen Leitung auf GND gezogen und am Empfänger (Tx) kommt nichts mehr an.
Der Widerstand (302) stört dabei allerdings etwas. Wenn das funktionieren soll, muss der Widerstand zwischen Tx und Rx mindestens 30 KOhm haben. Kann sein, dass es dann andere Probleme gibt. Einen Versuch ist es aber wert.

Du kannst auch versuchen, den Ausgang des Optokopplers direkt zwischen Tx und Rx zu schalten (Tx an V1, Rx an G). Das ist zwar nicht ganz korrekt, aber es könnte trotzdem funktionieren.

inka
25.07.2020, 14:49
ich muss - weil ich hier (https://www.roboternetz.de/community/threads/74136-outdoor-I) in zwei unterschiedlichen situationen, also einmal "aufgebockt" und einmal "im feld" - den mega2560 über USB, bzw. wifi (über zero-pi) programmieren möchte, umschalten...
Der USB adapter ist quasi ein T-stück, und ich muss mal die eine, oder die andere TX/RX verbindung kappen um die andere nutzen zu können...
Deshalb die frage ob das mit einem optokoppler geht - einmal einen arduino pin auf LOW oder HIGH schalten und damit über den 4kanal optokoppler das andere mit-schalten...

EDIT:


Du kannst auch versuchen, den Ausgang des Optokopplers direkt zwischen Tx und Rx zu schalten (Tx an V1, Rx an G). Das ist zwar nicht ganz korrekt, aber es könnte trotzdem funktionieren.
Tx an V1 und G schalten und Rx an V2 und G schalten - habe ich mir gedacht - also je nach eingang HIGH, oder LOW, Tx an/aus und Rx an/aus...

021aet04
25.07.2020, 17:37
Der Widerstand wird als Überlastschutz dienen. UART kannst du damit schalten weil dort 0/5V Signale verwendet werden. Die richtige RS232 Schnittstelle (V24) wird nicht funktionieren, weil dort +/-12V Signale verwendet werden.

Im Prinzip kannst du den Widerstand entfernen und gegen einen Drahtbügel oder einen 0Ohm Widerstand (in passender Größe) tauschen. Wichtig ist das die Polung passt (der PC817 hat einen Transistorausgang). Ich verwende als Optokoppler die KB8x7 Serie, die Zahl statt dem "x" gibt die Anzahl der Kanäle an. Es gibt KB817 (1Kanal) bis KB847 (4Kanal). Bin mir nicht sicher, es könnte aber sein das die KB817 und PC817 die gleichen OK sind (unterschiedliche Hersteller).

MfG Hannes

White_Fox
25.07.2020, 17:47
Wenn du UART oder ähnliches galvanisch trennen willst, dann gibt es dafür Pegelwandler.

Optokoppler funktionieren zwar theoretisch auch, aber praktisch ist das oft fehleranfällig. So ein Pegelwandler erschlägt deine Probleme und kostet weniger Nerven, Zeit und vermutlich auch Geld.

inka
25.07.2020, 18:38
erstmal vielen dank für die "anteilnahme" :-) - sprich eure antworten...
ich versuch mal zu beschreiben was ich bisher gemacht habe:

- alle INx anschlüsse habe ich miteinander verbunden
- alle jumper entfernt, die verbinden eher nur die massen am ein- und ausgang, denke ich...

ich kann den 4kanal optokoppler (sind 4 PC817) auf zwei wegen schalten, direkt mit 5V von einem step-up, dann variiert der ausgangswiderstand (mir fehlt jetzt die fantasie was ich dort sonst messen könnte) an allen vier ausgängen zwischen den 3,8 kohm und kein durchgang - was ich auch erhofft habe und was wohl auch ok ist...

steuere ich den optokoppler über einen arduinopin an, auch 5V, aber wohl nur 20mA, sinkt der widerstand am ausgang von 20 Mohm relativ langsam bis auf ca. 8 Mohm. Erklärungsversuch - ein eiziger verbraucher ist das messgerät und die 20mA vom arduinopin....

Wie erreiche ich ein gleiches verhalten? Die idee mit dem pegelwandler habe ich - ehrlich gesagt nicht verstanden, dafür sind meine kenntnisse der elektronik - auch nach 16 jahren roboterbau nicht gut genug :-(

021aet04
25.07.2020, 20:37
Warum sollte es einen Unterschied machen ob du direkt 5V aufschaltest oder du 5V von einem uC schaltest? Wenn die Spannung gleich ist, ist auch der Strom gleich (Elektrogrundlagen auffrischen bzw lernen).

Was ich mir vorstellen kann ist, das du beim Arduino den Ausgang zwar schaltest, aber nicht als Ausgang programmiert hast. Wenn du einen Pin als Eingang konfiguriert hast und du dann beim Ausgang zwischen high und low schaltest, schaltest du nur den Pullup-Widerstand ein und aus (hatte ich selbst schon).

Ansonsten misst du den Ausgang des PC817 falsch. Du musst mit der Diodenfunktion messen. Der Ausgang des PC817 ist ein Transistor.

MfG Hannes

Gnom67
26.07.2020, 08:51
Ehrlich gesagt, verstehe ich immer noch nicht, was du machen willst. Mal sprichst du von USB, dann von Tx/Rx. Wo ist da der Zusammenhang?
Unter "aufgebockt" und "im Feld" kann ich mir auch nicht wirklich was vorstellen.

Moppi
26.07.2020, 09:26
UND-Gatter - 74HC08
Bereich Vcc 2 bis 6V
mit 3.3V Logik kompatibel

oder

74HC 4066 Analog-Schalter-IC, 4-Kanal, DIL-14


MfG

021aet04
26.07.2020, 09:43
Ich bin mir nicht ganz sicher, aber vermute das du einen Umschalter zwischen "Programmieren Roboter am Schreibtisch" und "Programmieren Roboter nicht am Schreibtisch" benötigst.
Ich würde das aber nicht elektronisch lösen sondern über Schalter oder bistabiles Relais.

MfG Hannes

inka
26.07.2020, 09:52
Ehrlich gesagt, verstehe ich immer noch nicht, was du machen willst. Mal sprichst du von USB, dann von Tx/Rx. Wo ist da der Zusammenhang?
Unter "aufgebockt" und "im Feld" kann ich mir auch nicht wirklich was vorstellen.
ok, das mitTx/Rx war im zusammenhang mit USB verwirrend, hätte eher D+ und D- heissen sollen. Der mega2560 ist durch dieses USB t-stück einmal von aussen über ein USB kabel zum flashen zugänglich, wenn er neben meinem PC "aufgebockt" auf meinem schreibtisch steht
35167
und zum anderen "im feld" - https://youtu.be/RlBlxOTrYzI - nur über eine fernbedienung oder VNC-viewer (auf dem smartphone) über den raspberry-pi-zero erreichbar...
Der PI ist am gleichen USB t-stück angeschlossen und solange D+ und D- von beiden USB anschlüssen dran sind, lässt sich keines der beiden USB anschlüsse nutzen. Immer über den Pi zu flashen, also auch am schreibtisch dauert einfach zu lange um es immer nutzen zu wollen...


Warum sollte es einen Unterschied machen ob du direkt 5V aufschaltest oder du 5V von einem uC schaltest? Wenn die Spannung gleich ist, ist auch der Strom gleich (Elektrogrundlagen auffrischen bzw lernen).
ist in meiner situation etwas schwierig - was soll ich den "auf vorrat" lernen? Um ein elektronikstudium anzufangen ist es in meinem alter einfach zu spät. Bedauerlich, ist aber so. Deshalb bleibt nichts anderes übrig, als - je nach bedarf - die blümchen am wegesrand zu sammeln, im vorbeigehen eben...


Was ich mir vorstellen kann ist, das du beim Arduino den Ausgang zwar schaltest, aber nicht als Ausgang programmiert hast. Wenn du einen Pin als Eingang konfiguriert hast und du dann beim Ausgang zwischen high und low schaltest, schaltest du nur den Pullup-Widerstand ein und aus (hatte ich selbst schon).
genau das war den punkt: Ich habe zwar den pin definiert, aber den pinMode nicht mehr auf dem schirm gehabt. Der optokoppler schaltet jetzt, das etappenziel ist erreicht :-)

Gnom67
26.07.2020, 10:01
Da fiele mir ein, entweder ein vierpoliger mechanischer Umschalter oder ein bidirektionaler 4-Kanal Multiplexer.

021aet04
26.07.2020, 10:23
@inka
Ich habe auch nicht geschrieben das du ein Studium machen sollst, aber die Grundlagen sind immer wichtig. Das benötigst du immer (Vorwiderstände berechnen, Spannungsteiler, Fehlersuche,.....).
Wichtig sind auch die Grundlagen von Standartbauelementen (Widerstände, Kondensatoren, die verschiedenen Transistoren,....)


Trotzdem ist des gut wenn es jetzt funktioniert.

Wenn du einen Schalter verwendest, würde aber ein 2poliger reichen. GND kannst du dauerhaft verbinden. Die 5V kannst du entweder fix vom Raspi nehmen (von "USB extern" abklemmen) oder mit 2 Dioden arbeiten.

MfG Hannes

inka
26.07.2020, 10:30
Da fiele mir ein, entweder ein vierpoliger mechanischer Umschalter oder ein bidirektionaler 4-Kanal Multiplexer.

also das mit dem mechanischen umschalter - ist eigentlich schon vorgesehen, ich kann mit einem normalen kippschalter (jetzt über den optokoppler) alles, was für draussen vorgesehen ist, drinnen abschalten. Möchte aber eben draussen und zwar verständlicherweise nicht von hand, sondern per FB und/oder VNC-viewer das outdoorzeug wieder dazuschalten können...

- - - Aktualisiert - - -


@inka
Ich habe auch nicht geschrieben das du ein Studium machen sollst, aber die Grundlagen sind immer wichtig. Das benötigst du immer (Vorwiderstände berechnen, Spannungsteiler, Fehlersuche,.....).
Wichtig sind auch die Grundlagen von Standartbauelementen (Widerstände, Kondensatoren, die verschiedenen Transistoren,....)

OT/on:
O'ja, da sprichst Du ein thema an. Mein leider bereits verstorbener freund (hat elektronik studiert) konnte mir nicht widersprechen, als ich ihn mal in einem wutanfall als einen alchymisten bezeichnet habe, von schwarzer magie wollte er dann doch nichts wissen... :-)

ich hoffe hier niemanden zu nahe getreten zu sein... :-)

OT/off

inka
26.07.2020, 12:35
hier eine simple skizze einer "schaltung" - der optokoppler (ein kanal)

- einmal mit nur einem voltmeter dran, die 12V lassen sich schalten und messen
- die zweite mit einem 12V/5V step-up zwischen dem optokoppler und dem voltmeter

ich verstehe nicht warum der optokoppler hier die 12V nicht "weitergibt"? Die LED an dem step-up leuchtet nicht, messen lässt sich auch nichts...
35168
zur kontrolle hing ich den step-up an eine normale 12V quelle, alles ok...

Holomino
26.07.2020, 16:09
Ein Optokoppler ist kein Relais.
Der Fototransistor im Koppler ist nur auf hochohmige Signale ausgelegt (max. 50mA, das aber auch nur, wenn er von der ansteuerungsseitigen LED wirklich voll durchsteuert.) Du kannst damit ähnlich wie bei einem Prozessorpin einen PullUp oder vielleicht eine LED treiben.

Angesehen davon: Mit "StepUp" komme ich nicht ganz klar: Der steppt lt. Deiner Schaltung Down (12V auf 5V)???

inka
26.07.2020, 16:36
Ein Optokoppler ist kein Relais.
Der Fototransistor im Koppler ist nur auf hochohmige Signale ausgelegt (max. 50mA, das aber auch nur, wenn er von der ansteuerungsseitigen LED wirklich voll durchsteuert.) Du kannst damit ähnlich wie bei einem Prozessorpin einen PullUp oder vielleicht eine LED treiben.
ich dachte ich kann mit einem optokoppler einen zweiten schaltkreis mit seinen 12V versorgung ein- und ausschalten. Aber das ist jetzt eine aussage die nicht nur klipp und klar sagt, dass das, was ich vorhatte damit nicht geht - und erklärt verständlich warum nicht. danke!


Angesehen davon: Mit "StepUp" komme ich nicht ganz klar: Der steppt lt. Deiner Schaltung Down (12V auf 5V)???
stepp-up ist falsch, muss step-down heissen, ich wandle damit vom vorhandenen 12V akku die betriebsspannung auf 5V für teile, die allesamt durch den arduino ab- und zuschaltbar sein sollen, eben mit dem ein- oder ausschalten des step-down converters, je nach dem ob sie gebraucht werden oder nicht...
also brauche ich nun ein relais...

021aet04
26.07.2020, 17:24
Ein OK ist kein Relais mit dem man hohe Lasten schalten kann. Ein OK ist für Signale ausgelegt, eine Versorgungsspannung ist aber kein Signal.

Und da sind wir wieder bei Grundlagen, aber egal.

Hier ist das Datenblatt vom PC817 https://www.farnell.com/datasheets/73758.pdf

Es gibt Spannungsregler die einen Enable Eingang besitzen. Diesen kannst du vom OK ansteuern. Die Last direkt schalten geht nicht, da der Ausgangstransistor überlastet wird.

Bei einem Bauteil (egal welches) gibt es die "Absolute Maximum Ratings", die du auf keinen Fall überschreiten darfst. Dann gibt es noch die "Recommended Ratings" oder "Electrical Characteristics", das sind die Werte für das das BT ausgelegt ist.

Beim PC817 hast du (bei den Absolute Maximum Ratings) einen If=50mA (das ist der Strom durch die Led) und Ic=50mA (das ist der Kollektorstrom vom Ausgangstransistor). Achtung: Das sind die Maximalwerte und nicht die Empfohlenen.
Zusätzlich hast du noch den CTR (Current Transfer Ratio), das ist das Stromübersetzungsverhältnis zwischen Eingangs- und Ausgangsstrom (sprich Verstärkungsfaktor). Dort gibt es ein Diagramm.
Bei If=0,9mA hast du einen CTR von ca.500%. Das bedeutet das du am Ausgang (Ic) von max. 500% von If hast (=4,5mA). Das max. CTR hast du bei ca. 2,5mA. Hier musst du aufpassen, diese Werte sind Temperaturabhängig und auch Spannungsabhängig (im Diagramm steht VCE=5V und Ta=25°C)


Also als Zusammenfassung: Die USB-Signale kannst du damit schalten. Die Versorgungsspannung kannst du nicht schalten, du kannst nur Regler schalten die einen EN-Eingang haben (ich kenne z.B. den Schaltwandler LM2574).

MfG Hannes

inka
26.07.2020, 17:58
Ein OK ist kein Relais mit dem man hohe Lasten schalten kann. Ein OK ist für Signale ausgelegt, eine Versorgungsspannung ist aber kein Signal.
Also als Zusammenfassung: Die USB-Signale kannst du damit schalten. Die Versorgungsspannung kannst du nicht schalten, du kannst nur Regler schalten die einen EN-Eingang haben (ich kenne z.B. den Schaltwandler LM2574).
danke für die ausführlichen erklärungen...
Einiges an modulen habe ich bereits aus china in meiner vorratskiste, unter anderem verschiedene spannungswandler, weil man sowas immer wieder braucht, leider ist keiner mit einem EN-eingang dabei. Ich würde mich jetzt aufgrund des gelesenen für folgendes entscheiden:
- für die 12V ein relaismodul, von arduino aus geschaltet, dieses relais schaltet den step-down und damit die versorgung aller zu- und abschaltbaren module
- über einen zweiten pin (aber vielleicht geht ja auch der gleiche) schalte ich mit hilfe des optokopplers die USB datenleitungen

mal drüber schlafen...