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.
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.
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)
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.
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.
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.
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:
Stromsparen. Ein Optokoppler sollte so angesteuert werden daß er möglicht wenig Zeit Strom verbraucht.
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.