Optokoppler-Design

Ich muss eine MOSFET-Steuerschaltung entwerfen, die von einem FPGA über einen Optokoppler angesteuert wird. Folgende Bedingungen müssen in meinem Design erfüllt sein:

  1. Wenn die Stromversorgung anfänglich eingeschaltet ist und das FPGA nicht programmiert ist, sollte der MOSFET eingeschaltet sein.

  2. Wenn das FPGA HIGH treibt (3,3 V), sollte der MOSFET eingeschaltet sein.

  3. Wenn das FPGA LOW (0 V) treibt, sollte der MOSFET AUS sein.

Das FPGA IO wird mit LVCMOS 3,3 V Pegeln angesteuert. Die Ausgangslastanforderung bei 12 V beträgt ungefähr 1,5 A. Hier ist die Schaltung, die ich mir ausgedacht habe:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Bitte beachten Sie, dass die oben erstellte Schaltung nicht simuliert werden kann. Obwohl diese Schaltung sowohl die Bedingungen 2 als auch 3 erfüllen kann, erfüllt sie nicht die Bedingung 1. Gibt es eine Möglichkeit, dieselbe Schaltung zu modifizieren und sie allen 3 Bedingungen anzupassen?

@Mandar: Was soll das ganze Geschrei? Hier muss man nicht unhöflich sein. Er hat bereits gesagt, dass die FPGA-Ausgangsleitung zwischen 0 und 3,3 Volt umschaltet, und wir können dem Schema entnehmen, dass die Masse des FPGA und die 12-V-Versorgung miteinander verbunden sind. Scheint mir ziemlich klar zu sein.
@Olin, das war ursprünglich eine "Antwort", die aus offensichtlichen Gründen in einen Kommentar umgewandelt wurde.
@ Peter: Ja, das kenne ich. Ich war einer der Leute, die es markiert haben. Das hat aber nichts mit meiner Frage zu tun. Grundloses Schreien ist immer noch unhöflich, sei es in einem Kommentar oder in einer Antwort, die ein Kommentar hätte sein sollen.

Antworten (2)

Hier ist kein Optokoppler erforderlich. In Ihrer Schaltung führt es keine Isolierung durch, da beide Seiten mit derselben Masse verbunden sind. Es verhält sich daher nur wie ein langsam reagierender Transistor mit sehr begrenzter Verstärkung. Ersetzen Sie U2 durch einen NPN-Transistor oder einen N-Kanal-MOSFET mit "Logikpegel".

Persönlich würde ich in diesem Fall den NPN-Transistor verwenden. Fast jedes kleine Signal NPN reicht aus. Ich verwende 2N4401 (eigentlich MMBT4401, die SOT-23-Version, aber das ist umständlicher zu schreiben) für solche Jellybean-Anwendungen, aber viele, viele andere würden auch gut funktionieren. Verbinden Sie den Emitter mit Masse, die Basis mit der rechten Seite von R1 und den Kollektor mit dem FET-Gate. Ja, es ist wirklich so einfach.

Da ein nackter Transistor mehr Verstärkung als der Optokoppler hat, können Sie R1 erhöhen. 1 mA Basisantrieb ist in diesem Fall mehr als genug. Nehmen wir an, der BE-Abfall des NPN-Transistors beträgt 700 mV. Das lässt 2,6 V über R1, wenn der Transistor eingeschaltet sein soll. (2,6 V)/(1 mA) = 2,6 kΩ. Das Ausschalten ist langsamer, aber die FET-Ausschaltzeit wird ohnehin von R2 dominiert, der gegen die Gate-Kapazität des FET wirkt.

Dies ist keine Hochgeschwindigkeits-Switching-Anwendung, oder? Wenn dies der Fall wäre, müssten Sie den FET bewusster ausschalten als mit nur einem 10-kΩ-Pullup. Ihre Schaltung ist in Ordnung, wenn der FET nur gelegentlich eine andere Schaltung oder ein anderes Gerät ein- und ausschaltet und nicht mit mehr als 100 Hz oder so schaltet.

Hinzugefügt:

Mir ist gerade aufgefallen, dass Sie möchten, dass die 12-V-Stromversorgung eingeschaltet ist, wenn das FPGA "nicht konfiguriert" ist, was auch immer das wirklich bedeutet. Ich nehme an, dass der P1-Ausgang zu diesem Zeitpunkt schwebt. Fügen Sie in diesem Fall einen Pullup-Widerstand zum P1-Ausgang hinzu. Mit dem oben beschriebenen NPN-Transistor benötigen Sie nicht wirklich viel Strom durch seine Basis, um den FET einzuschalten. Sogar ein 10-kΩ-Pullup würde ausreichen, um den NPN-Transistor eingeschaltet zu halten, aber hoch genug, um keinen signifikanten Strom zu verursachen, wenn das FPGA die Leitung aktiv auf einen niedrigen Pegel treibt, um die 12-V-Versorgung abzuschalten.

Hier ist die Gesamtlösung, die ich vorschlage:

Dies ist eine bessere Möglichkeit, den MOSFET in der Schaltung anzusteuern. Danke! Mine ist eine langsame Schaltanwendung. Auch wenn ich "unkonfiguriert" schrieb, meinte ich eigentlich, dass das FPGA nicht programmiert ist. Mir ist jetzt klar, dass ich es nicht klar erwähnt hatte und oben Änderungen vorgenommen habe. Kann ich die Schaltung isolieren, wenn ich bedenke, dass meine FPGA-Stromschienen auch von derselben 12-V-Schiene abgeleitet sind?
@Avin: Eine Isolierung macht in diesem Fall keinen Sinn, da die 3,3-V- und 12-V-Versorgung dieselbe Masse teilen. Was von was isolieren? Ich verstehe nicht, was Sie mit dieser Isolierung erreichen wollen, selbst wenn es möglich wäre.
Der DC-DC-Wandler, der 3,3 V aus 12 V ableitet, hat eine separate Eingangs-GND-Ebene und eine Ausgangs-GND-Ebene. Wenn ich also mein FPGA-IO vor Spannungsspitzen oder Spannungsspitzen auf der 12-V-Schiene schützen muss, kann ich sie isolieren, indem ich den Emitter des Optokopplers mit der Eingangs-GND-Ebene verbinde?
@Avin: Ich sehe immer noch keine Notwendigkeit für eine Isolierung.

Angenommen, die FPGA-Pins schweben, wenn sie nicht konfiguriert sind, versuchen Sie Folgendes:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Wenn der Pin P1 schwebend ist, ist der Optoisolator "aus" und der MOSFET M1 ist eingeschaltet (das Gate wird in Bezug auf die Source auf -12 V gezogen.

Wenn der Pin P1 hoch ist, das gleiche wie oben.

Wenn der Pin P2 auf Low gezogen wird, schaltet sich der Optoisolator ein und das Gate wird bis auf wenige hundert mV an die Source gezogen, wodurch M1 ausgeschaltet wird.

Natürlich sorgt der Optoisolator für Isolierung, sodass die Masse zwischen den beiden Seiten nicht gemeinsam sein muss, was das FPGA schützt und Bedenken darüber vermeiden kann, wie der starke Rückstrom durch die 12-V-Last fließt (vorausgesetzt, Sie halten es getrennt).