Nulldurchgangsdetektion,
          Nulldurchgangserkennung, Nulldurchgangsschalter
Ein Thema, das zum Beispiel beim Bau eigener
      Netzeinspeise-Wechselrichter
      oder aber der genauen Netzfrequenzmessung wichtig ist.
Wenn man nach verbreiteten Schaltungen sucht, begegnet
      man
      sehr häufig dem Typ „Optokoppler mit Vorwiderstand antiparallel am Netz“,
      wie
      zum Beispiel hier:
https://www.mikrocontroller.net/attachment/346722/Nulldurchgangserkennung_PC817.png
(Quelle: Mikrocontroller.net)
Das Problem dabei: entweder ist bei moderater Leistungsaufnahme der Schaltung der Puls sehr breit (Zeit um den eigentlichen Nulldurchgangszeitpunkt herum sehr lange und die Flanken nicht steil) ODER man verheizt zugunsten eines möglichst steilen Pulses sehr viel Leistung im Vorwiderstand. Ich habe das mal simuliert:

Eine Verbesserung der Charakteristik kann mit einer einfachen Konstantstromquelle erreicht werden (oben schon mit abgebildet). Sie vermeidet eine sehr hohe Stromaufnahme zu Zeiten, in denen diese Stromaufnahme eigentlich überhaupt nicht gebraucht wird. Stattdessen ermöglicht sie eine Ansteuerung der Optokoppler auch bis sehr nahe an die Nulldurchgänge heran, was sich in steilen Flanken nahe um den Nulldurchgang herum ausdrückt:

 
Es soll nicht verschwiegen werden, dass die
      Transistoren für
      diese Konstantstromquellen eine Kollektor-Emitter Spannung von mindestens
      400V
      vertragen können müssen. Hierfür kommen zum Beispiel die Typen MPSA44 oder
      KSP44 in Frage. Die Verlustleistung ist hingegen minimal und bleibt bei
      der angegebenen
      Dimensionierung unter 150mW.
Aber auch die Schaltung mit Konstantstromquellen lässt
      sich
      noch verbessern. Zum einen sollte man Optokoppler verwenden, die auch für
      so
      geringe Ströme wie 0,5mA spezifiziert sind und einen hohen CTR (current
      transfer ratio – Stromübertragungsverhältnis) aufweisen. Unter diesem
      Blickwinkel empfiehlt sich vor allem der Typ SFH618A-5 mit einem typischen
      CTR
      von immerhin typisch 300% (minimal 125%) bei 0,5mA. Im Vergleich dazu
      weisen
      viele andere Optokoppler selbst bei einem Diodenstrom von 1mA noch einen
      CTR
      unter 100% auf. Man sollte aber auch bei einem SFH618A-5 den Diodenstrom
      nicht
      zu niedrig dimensionieren, denn ein Blick ins Datenblatt zeigt, dass der
      CTR
      bei höheren Temperaturen abfällt. Auch mit zunehmendem Alter zeigen
      Optokoppler
      eine Abnahme des CTR. Mit einer „konservativen“ Annahme von CTR=100% ist
      man
      aber bereits gut beraten. Mit 0,5mA „primär“ kann man dann einen 10k
      Pullup an
      5V sicher schalten.
Eine andere Verbesserung betrifft die Spannung, bis
      herab zu
      der die Schaltung noch den vollen Konstantstrom liefert: der
      Basisvorwiderstand
      (in der obigen Abbildung 470k) vermag es unter ca. 5V nicht mehr, noch
      genügend
      Basisstrom zum Aufsteuern des Transistors zu liefern. Dem kann man mit
      einem
      zweiten Widerstand 470k begegnen (oder den Widerstand in 220k ändern).
Eine weitere Verbesserung kommt durch die Art der Regelung der Konstantstromquelle zustande: bisher wurde als Referenz die Spannung zweier Si-Dioden 1N4148 genutzt. Nach Abzug der Spannung der B-E-Strecke des Regeltransistors MPSA44 (ca. 0,6V) liegen rechnerisch noch etwa 0,6V über dem Emitterwiderstand. In der Praxis ist diese Spannung jedoch einerseits viel geringer als angenommen (bei geringer momentaner Netzspannung oft nur noch ca. 0,3V) und außerdem recht stark schwankend, da der veränderliche Strom durch die zwei Dioden eben auch recht große Spannungshübe verursacht (Bereich 1,0 – 1,3V). Ein Trick besteht darin, noch einen weiteren Transistor einzuführen, der den Basisstrom des MPSA44 abregelt, sobald eine B-E-Spannung von 0,6V überschritten wird.
 
      
Das Resultat ist ein sehr viel konstanterer und ausreichend hoher Strom durch die Infrarotdiode der Optokoppler bis zu tiefen momentanen Netzspannungen hin. Die Auswirkung auf die Flankensteilheit des Nulldurchgangsimpulses am 10k Pullup zeigt folgende Abbildung:
