Transistor mit niedriger Spannung und Strom schalten

Ich entwerfe eine Schaltung, die eine Kombination aus Schaltern und Widerständen verwendet, damit ein Mikrocontroller anhand der gelesenen Spannung erkennen kann, welcher Schalter gedrückt wurde, und eine schalterspezifische Aktion ausführt. Das Design, das ich mir ausgedacht habe, beinhaltet die Verwendung eines Transistors, um ein Relais zu aktivieren, das den Mikrocontroller mit Strom versorgt. Wenn der Mikrocontroller mit Strom versorgt wird, zieht er einen Pin hoch, um die Stromversorgung des Relais zu übernehmen. Wenn die Aktion beendet ist, zieht der Mikrocontroller den Pin auf Low, deaktiviert das Relais und unterbricht die Stromversorgung des Mikrocontrollers.

Ich habe die Schaltung mit einem Schalter und einem Spannungsteiler getestet, um die Kombination aus größtem Widerstand und niedrigster Spannung aus meinem Schalterarray zu simulieren. Die Spannung, die ich am Transistor berechnet habe, beträgt 1,6 V und der Strom 0,017 mA. Die hohen Widerstandswerte sind notwendig, da ich ungefähr 0,2 V Differenz zwischen den Schaltern benötige. Das Problem ist, dass der Transistor nicht aktiviert wird (es funktioniert, wenn ich ihm direkt 5 V zuführe).

Meine Frage: Liegt das daran, dass der Strom zu niedrig ist? Wie würde ich vorgehen, um dies zu korrigieren (außer die Widerstände zu verringern)? Wenn es einen besseren Ansatz für dieses Problem gibt, würde ich es auch gerne hören.

Schema der nicht funktionierenden Schaltung

Bearbeiten

Das Diagramm lässt der Einfachheit halber die 15 anderen Schalter und Widerstände weg.

Dies ist eine Schaltung für einen Bilderrahmen, der abhängig von der gedrückten Taste bestimmte Aktionen ausführt. Dies wird batteriebetrieben mit 6 D-Zellen-Batterien, die an der Wand montiert sind. Ich würde gerne Monate, wenn nicht Jahre davon profitieren, bevor ich das Gerät ersetzen muss. Mein Arduino mit angeschlossenem Schild (bei Verwendung eines MAX667-Netzteils anstelle des Standardnetzteils) verbraucht 45 mA bei geringer Leistung. Der serienmäßige Arduino wechselt nicht in den Energiesparmodus, obwohl der Chip mit einem Programmierer so modifiziert werden kann, dass er in den Energiesparmodus wechselt und nA Strom verbraucht. Bei 45 mA halten die Batterien etwa 11 Tage (266 Stunden bei einer 12000-mAh-Batterie). Daher die Anforderung, dass die Widerstandsleiter das Gerät einschaltet.

BC337-40 hat eine garantierte Beta im Bereich von 250-600. (Familie ist BC337, BC327, BC807, BC817)
ABER ein MOSFET braucht nur Spannung, um auszulösen. \\Ihr Netzschalter kann ein MOSFET anstelle des rea;y/ sein
Das Platzieren des Relais im Emitter ergibt eine Spannungsverstärkung von ~~ von 1
Es ist ein bisschen Heath-Robinson, all das ... bietet es viele wirkliche Vorteile gegenüber einem Low-Power-Mikrocontroller, der immer eingeschaltet ist, aber die meiste Zeit schläft?
@pjc50 Was hast du gegen Mr. Robinsons feine Produkte? :-). | Die Probleme liegen eher in der Umsetzung. Richtig gemacht kann dies Vorteile haben und sehr wenig kosten. Relais sollte ein MOSFET sein. Kurts CCT geht in die richtige Richtung und ist als Beispiel in Ordnung, ABER der Low-Side-Schalter und der Hi-Floating-Prozessor verursachen leicht Probleme. Das Platzieren des MOSFET auf der High-Side und die Verwendung eines schaltergesteuerten Jellybean-BJT oder eines anderen FET zum Betreiben des High-Side-FET ist das meiste, was benötigt wird. Der Abfluss kann so nahe am wahren Nullpunkt liegen, dass er nicht messbar ist.
@pjc50 - ... Prozessor im Ruhezustand kann abstürzen und sogar Mikroampere können zB LiIon-Akkus zerstören, wenn der Akku leer ist und dann monatelang beiseite gelegt wird (kann passieren - hängt von der Anwendung ab).
Ich habe den Leckstrom auf einem (zufälligen) 2n3904 nachgeschlagen. 50 nA. Dann habe ich mir einen "XLP" PIC18F24K22 angeschaut. Ruhestrom 20 nA. Hmmm.

Antworten (6)

Ja; Im besten Fall beträgt der hFe eines BJT ungefähr 100, was bedeutet, dass Ihre 0,017 mA zu 1,7 mA werden, was nicht ausreicht, um die Relaisspule mit Strom zu versorgen.

Es gibt noch ein weiteres Problem: Der Strom aus einem Arduino reicht nicht aus, um die Spule eines Relais anzutreiben, da die typische Spezifikation 25 mA pro Pin-Ausgang beträgt und typische Relais 35-100 mA Strom für ihre Spulen verbrauchen.

Ich bezweifle jedoch Ihre Annahme: Was sind die "0,2 V", die Sie für den Schalter benötigen? Was denkst du, bedeutet das? Woher kommt diese Zahl? Insbesondere wenn der Schalter geöffnet ist, beträgt die Spannungslücke über dem Schalter ziemlich genau VCC, da der Schalterwiderstand nahezu unendlich ist. Wenn der Schalter geschlossen ist, ist die Spannung über dem Schalter nahe Null, da der Schalter einen Widerstand nahe Null hat.

Es gibt verschiedene Lösungen für das Kernproblem, "wie man einen Mikrocontroller mit einem Knopf einschaltet und ihn dann eingeschaltet lässt, bis er fertig ist". Sie können einen Low-Side-N-Kanal-MOSFET verwenden, um die Relaisspule einzuschalten. Es würde ein Pulldown am MOSFET-Gate geben, und der Schalter würde es auf VCC hochziehen. Der digitale Ausgang der MCU würde ebenfalls mit diesem MOSFET-Gate verbunden, mit einem Strombegrenzungswiderstand, der niedriger als der Pulldown ist, aber hoch genug, um den Schalter nicht zu stören, wenn er niedrig ist. Ich würde 10 kOhm für den Pulldown und 1 kOhm für den digitalen Pin-Widerstand vorschlagen, und der Schalter geht direkt vom MOSFET-Gate zu VCC. Beachten Sie, dass die MCU in der Lage sein muss, das MOSFET-Gate sowohl hoch als auch niedrig zu ziehen, sodass eine Diode in diesem Fall nicht funktionieren würde.

Wenn Sie genauer sagen können, was die Anforderung "0,2 V" tatsächlich bedeutet und woher sie tatsächlich kommt, wäre das auch nützlich. Fast alle Spannungsangaben haben mit Isolationswerten zu tun, und 0,2 V liegen nicht in deren Bereich. Andere Werte stammen von Lichtbogenlücken, und diese sind normalerweise ebenfalls 16 V oder höher. Abgesehen davon ist der wichtigste Faktor für Schalter die Menge des unterbrochenen Stroms, und die wird normalerweise in mindestens Dutzenden von Milliampere angegeben.

Denken Sie darüber nach: Ist der Grund, warum Sie 0,2 V Differenz "zwischen Schaltern" benötigen, dass Sie einen ADC verwenden möchten, um herauszufinden, welcher von vielen Schaltern zum Starten der MCU verwendet wurde? Wenn dies der Fall ist, wird für 5 V eine Differenz von 0,2 V mit einem Verhältnis von Widerständen anstelle von absoluten Werten erreicht. Ein 24-Ohm-Widerstand und ein 1-Ohm-Widerstand teilen 5 V in 4,8 V und 0,2 V, genau wie ein 24-kOhm-Widerstand und ein 1-kOhm-Widerstand 5 V in 4,8 V und 0,2 V teilen, allerdings mit unterschiedlichen Stromstärken!

Die Differenz von 0,2 V ist da, damit mein ADC genau erkennen kann, welcher Schalter gedrückt wurde (z. B. 5 V, 4,8 V, 4,6 V, 4,4 V, 4,2 V). Ich habe meine Frage bearbeitet, um mehr zu erklären, was ich versuche zu tun. Das Diagramm lässt der Einfachheit halber die 15 anderen Schalter und Widerstände weg.

Es gibt eine Menge Fehler mit Ihrer Schaltung, die andere Leute erwähnt haben. Ich werde diese Probleme nicht durchgehen, sondern Ihnen stattdessen eine Alternative präsentieren.

Wenn du das sagst:

Ich entwerfe eine Schaltung, die eine Kombination aus Schaltern und Widerständen verwendet, damit ein Mikrocontroller anhand der gelesenen Spannung erkennen kann, welcher Schalter gedrückt wurde, und eine schalterspezifische Aktion ausführt.

Es hört sich so an, als würden Sie versuchen, eine Widerstandsleiterschaltung zu implementierenso dass ein Pin des ADC verschiedene Tastendrücke durch die resultierende Spannung bestimmen kann. An dieser Idee ist nichts auszusetzen, aber Sie haben sie nicht in den Schaltplan aufgenommen. Die einzige Leitung, die zu Ihrem ADC führt, ist die von der Schaltfläche "Schalten Sie die MCU ein", was sinnlos ist, da die MCU weiß, dass diese Taste gedrückt wurde, da sie bereits eingeschaltet ist. Wenn Sie versuchen, diese Taste zu verwenden, um die MCU anfänglich einzuschalten, sowie einen Schalter, um eine Aktion auszuführen, sobald die MCU eingeschaltet ist, ist das eine andere Geschichte. Ich denke jedoch nicht, dass dies eine gute Idee wäre, wenn Sie diesen Schalter als Teil einer Widerstandsleiter einbeziehen. Wie von anderen Personen erwähnt, ist der Transistor stromgesteuert und wird nicht stark genug angesteuert, um sich vollständig einzuschalten. Das Hinzufügen weiterer Tasten, die unterschiedliche Spannungspegel erzeugen, wird dieses Problem nur noch komplizierter machen.

Ich bin auch verwirrt über Ihre Notwendigkeit eines 0,2-V-Differentials, es sei denn, Sie beziehen sich auf die Spannungspegel, die in den ADC eingespeist werden sollen. Aber das beweist weiter, dass Sie diesen "Einschalten" -Knopf aus diesem Durcheinander heraushalten sollten. Ein weiteres Problem neben Ihrer Platzierung des Relais und dem Versuch, es vom MCU-Pin anzusteuern, ist Ihre Verwendung des Relais insgesamt. Es scheint, als würden Sie dies tun, um Strom zu sparen, indem Sie die MCU ausschalten, es sei denn, sie muss etwas tun. Aber Relais verbrauchen ständig ziemlich viel Strom, nur um die Spule aktiviert zu halten.

Schau dir mal diese Schaltung an:

Kontrollierte MCU-Leistung

Wenn sie gedrückt wird, legt die Taste SW1 VCC an das Gate des FET-Transistors. Dadurch wird der FET "eingeschaltet" und die MCU mit Masse verbunden. Sobald die MCU eingeschaltet ist, kann sie PINx als hohen Ausgang aktivieren, der das Transistorgate hoch und glücklich hält. Der Widerstand R2 ist da, um das Gate niedrig zu halten, wenn es niedrig sein soll, und R1 schützt den MCU-Pin während der Zeit, in der es niedrig ist und die Taste gedrückt wird. Der Kondensator C1 sollte helfen, den Schalter zu entprellen, damit der Transistor nicht schnell ein- und ausgeschaltet wird. Der Transistor sollte ein Logikpegel-Gate (Gate-zu-Source-Spannungsschwelle von weniger als VCC) haben, um einen ordnungsgemäßen Betrieb sicherzustellen.

Ihre anderen Schalter und Widerstände können dann für andere Zwecke, die Sie für sie haben, in einen ADC-Kanal eingespeist werden.

Wenn die MCU fertig ist, kann sie PINx senken. Sobald sich der Kondensator C1 entladen hat, schaltet der Transistor ab und trennt die MCU von Masse.

Allgemeine Methode ist gut. Es ist schwieriger, mit einem High-Side-verbundenen Floating-Prozessor umzugehen, wenn er ausgeschaltet ist. Die Verwendung von Hogh-Side-MOSFETs und allem, was sonst noch benötigt wird, macht das Leben einfacher.
@RussellMcMahon Sehr guter Punkt.
Ich habe meine Frage bearbeitet, um mehr zu erklären, was ich versuche zu tun. Die Differenz von 0,2 V ist da, damit mein ADC genau erkennen kann, welcher Schalter gedrückt wurde (z. B. 5 V, 4,8 V, 4,6 V, 4,4 V, 4,2 V).

Warum mit einem bipolaren und Relais stören. Wie wäre es mit einem Pch, der vom + 5-V-Eingang an den Vdd-Versorgungsstift (Arduino) angeschlossen ist? Verwenden Sie einen Schalter, um das Gate von 5 V (aus) auf gnd (ein) zu treiben. Das Gate-Signal kann mit einem 5-V-Logikgerät (z. B. D-Typ-Flip-Flop) zwischengespeichert oder umgeschaltet werden. Wählen Sie den PFET so, dass sein Vt -1 bis -1,5 V und ein Rds-on (100 mOhm oder weniger) beträgt, der unter der maximalen Strombelastung des Arduino nicht stark abfällt.

Ich habe meine Frage bearbeitet, um mehr zu erklären, was ich versuche zu tun. Meine Schalter geben 5 V, 4,8 V, 4,6 V usw. aus. Funktioniert das mit einem solchen FET?

Es gibt ein großes Problem mit Ihrer Schaltung: Sie haben das Relais in Reihe mit dem Emitter, was bedeutet, dass das Relais nur die Spannung an der Basis erhalten kann, abzüglich des BE-Abfalls von etwa 0,6 V des Transistors.

Für das, was Sie versuchen, müssen Sie das Relais in den Kollektorkreis des Transistors stecken und einen zweiten Transistor verwenden, der vom Arduino angesteuert wird, um es nach der Aktivierung eingeschaltet zu halten. Wenn Sie wirklich mit so niedrigen Messströmen arbeiten müssen, dann sollte Ihr vorhandener Transistor durch einen Darlington ersetzt werden.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Abgesehen von meinen Bedenken hinsichtlich der Energieverschwendung im Relais ist dies wahrscheinlich der beste Weg, dies zu tun.

Schauen Sie sich meine Schaltung an, die für Sie geeignet sein könnte:

Geben Sie hier die Bildbeschreibung ein

https://www.circuitlab.com/circuit/dsyqc8/uc-switching-by-bjt/

Die BJTs Q1 und Q2 bilden einen elektronischen Schalter. Wenn SW1 gedrückt wird, erhält der Mikrocontroller +Vcc und um den uC eingeschaltet zu halten, sollte der HOLD-uC-Ausgang hoch gemacht werden. Dies funktioniert auch bei sehr niedriger Eingangsspannung.

In die richtige Richtung gehen, ABER Q1e sollte an Masse zurückgegeben werden und R5 im Kollektor. Da die Basis neds über emoitter vy 2 x Vbe sein muss, ABER halten uC kann nicht dorthin gelangen.
danke Russel für den Hinweis auf den Fehler. Ich werde den Schaltplan aktualisieren

Hier poste ich die Arbeitsschaltung (selbst konstruiert mit MSP430G2553 mit internem Oszillator und verwendeter 2XAA EVEREADY-Zelle. Wenn ich die Spannung des R8 unter 0,8 verringert und wieder auf 0,9 oder Vcc erhöht habe, friert der Controller ein, dann setze ich den Controller zurück, auch wenn Sie ihn verwenden können Watchdog-Timer, um dieses Problem zu vermeiden)

https://www.circuitlab.com/circuit/u9j7dk/uc-switch-by-bjt-1_1/

Stellen Sie den Pot (R8) ein, um die an den Basisanschluss von Q1 angelegte Spannung zu ändern (Der Schalter würde sogar bei 0,9 V bis Vcc einschalten). Ich habe nicht mit dem HOLD-uC-Signal getestet, es könnte funktionieren, da die zum Einschalten erforderliche Mindestspannung 0,9 V beträgt (Ausgang vom uC ca. 3 V und Abfall über D2 wäre 0,7).