PC817, Widerstand berechnen

Hallo zusammen,

ich hab ein PC817 Fertigmodul das schon den Widerstand für die LED mit integriert hat.

Benötigt werden auf der Transistorseite 3,3V um einen Teensy 3.5 damit füttern zu können.

Wäre meine Berechnung für den Last Widerstand RA auf der Transistorseite so richtig ?

RA = Vcc * SF
-----------------
IF * CTR

                    3,3V *3                    9,9
 =   ---------------------------------- = ----------- =  396 Ohm
                0,05 A  * (0,5)               0,025

sollte der Sicherheitsfaktor SF anders gewählt werden ?
Vielleicht doch noch ein Denk - oder Rechenfehler drin ?

Der PC817 hat einen offenen Kollektor Ausgang. Schalte den Emitter auf GND und den Kollektor auf den Eingangspin des Controllers. Dann aktivierst du den internen Pullup und fertig.

Hi Hotsystems,

das wär ja fast zu einfach...

Würde meine Rechnung denn stimmen wenn ich einen externen PullDown verwende ?

Die Berechnung kann ich nicht nachvollziehen. Der Widerstand ist für diese Verwendung viel zu klein und damit der Strom unnötig hoch. Ein 4k7 Ohm Widerstand ist da völlig ausreichend.

Hallo Hotsystems

die Berechnung des Arbeitswiderstandes stammt von hier:

Dort allerdings für 12V mit einen CNY17 und anderem CTR.

Beim PC817 liegt der IF bei 0,05A, CTR wird mit 50% angegeben
gewünschte Vcc = 3.3V.
Den SF hatte ich dabei mit 3 angenommen (zu lesen waren Werte zwischen
2 und 5)

Wo ist der Fehler in meiner Berechnung ?

Kein Fehler, aber bei der Berechnung geht es um den Vorwiderstand der Led.
Der ist auf deiner Platine schon drauf.

Es geht bei der Berechnung NICHT um den Vorwiderstand der LED sondern um den Widerstand zur Begrenzung des Stromes auf der Ausgangsseite. Dort ist auf dem Breakout kein Widerstand vorhanden.

Wenn es darum geht an einem Pin des Teensy ein High oder Low Signal zu detektieren, wird nur ein sehr geringer Strom benötigt. Daher sollte der Anschluss so möglich sein, wie in Beitrag #2 vorgeschlagen.

Man hat dann eine invertierende Schaltung.

Stimmt, da habe ich die falsche Formel genommen.

macht Sinn einen internen Pullup zu verwenden, - aber wär der dann nicht viel zu groß ?

Soweit ich weiß liegt der zumindest beim Uno zwischen 20 und 50K - beim Teensy vermutlich ähnlich (ohne das nachgeschlagen zu haben).

Schaltung müsste dann so aussehen - nur der Ausgang ist invertiert:

grafik

Wie kann ich das Signal dann in der Software wieder drehen ?

Bei geringer Schaltfrequenz sollte das funktionieren. Warum willst Du das Signal in der Software wieder drehen? Dann ist halt LOW aktiv und HIGH ist inaktiv.

Da der OK in meinem Fall ein PC817 Fertigmodul ist, kann ich da die Eingangsbeschaltung nicht ändern.
Ich benötige aber das am OK anliegende Eingangssignal genauso am Teensy Ausgang.

Die einfachste Variante währe wohl:

  digitalWrite(OUT_PIN, not digitalRead(IN_PIN));

Habe gerade gesehen das der Teensy 3.5 sowohl Pull Up als auch Pull Down kann.

Wäre die Beschaltung für den nicht invertierenden Optokoppler dann
so richtig ? R1 wäre in dem Fall dann der interne Teensy Pull Down.

grafik

Ja.

Ich interpretiere diese Berechnung so:
Der AusgangsTransistor des Optokopplers hat durch das Licht der Eingangs-LED einen "Basisstrom". Dieser "Basisstrom" steuert einen Collektorstrom am Ausgangstransistor (Stromverstärkung wie hfe). Da dieser max mögliche Collektor-Strom vom Basisstrom und somit vom Licht der LED bzw dem LED Steuerstrom begrenzt wird, muß der PullupWiderstand (bzw der PulldownWiderstand, je anch Verschaltung) so bemessen sein, daß ein eindeutiger HIGH bzw LOW Level entsteht.
Der errechnete Widerstand ist der Minimal-Grenzwert der verwendet werden kann.
Da Pulldow/Pullup Widerstand bei leitenden Transistor nur einen Verluststrom generiert ist es nicht ratsam den Widerstand nahe am möglichen Minimum zu verwenden.
Ein oft vorgeschlagener 10kOhm Widerstand ist sicher eine gute Wahl.
Teoretisch kann man Widerstände von 1kOhm bis 1MOhm wählen, wobei je kleiner der Wert ist desto störresistenter die Schaltung wird.

Grüße Uwe

Man ist bei optokopplern ziemlich frei in der WAhl.
Man kann die LED auch gegen +5V schalten und somit den Optokoppler mit einem LOW am Ausgang einschalten.

Andererseits ist es der Software egal ob man einen Ausgang LOW oder HIG schaltet um ein gewisses Signal zu generieren.

Eigentlich sind es die Programmierer die ein LOW für eingeschaltet mit einem negativen Gefühl verbinden. Der Elektronik und Software ist es egal.

Die Anstuerunf eines Optokopplers sollte meiner Ansicht nach 2 Erwägungen geschehen:

  1. Stromsparen. Ein Optokoppler sollte so angesteuert werden daß er möglicht wenig Zeit Strom verbraucht.

  2. Sicherheit. Der Optokoppler sollte so angesteuert werden, daß ein Stromausfall im Steuerkreis den Sekundärkreis in einen mögichst sicheren Zustand führt. zB Optokoppler steueet Relais das einen Motor einschaltet. Der sicherste Zustand ist wenn der Motor steht. Wenn der Arduino, der den Optokoppler ansteuert ausfällt sollte der Motor nicht weiterdrehen.

Grüße Uwe

Eigentlich nur die Programmieranfänger ... :wink:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.