I've been trying to design a push-on, push-off power control circuit, and came up with this design:


simulate this circuit – Schematic created using CircuitLab

Theory of operation: Pressing the button causes the gate of M1 to go high, forcing the gate of M1 to remain high through R2, latching M1 on. Q1 is turned on through R4. This causes the left hand side of the button to go low. Pressing the button again causes the gate of M1 to go low, turning off M1 and Q1, causing the left hand side of the button to go high in preparation for turning on again.

This doesn't work in practice. What have I missed?


3 Answers 3


It's bad design. You press the button and this initially activates the mosfet. That mosfet then turns the bjt on and before you have thought about removing your finger the voltage that was turning the mosfet on (via the pushbutton) has crashed to ground due to the bjt.

Then, a micro second later the mosfet is off and so is the bjt and the process repeats and becomes an oscillator while your finger is pressed.

When you eventually remove your finger the mosfet has a fifty fifty chance of being on. However this won't help because the gate will discharge to ground via the 100 kohm and the circuit turns off.

Note that you cannot expect the sources voltage to be able to drive the gate to hold that mosfet on. Gate has to be several volts above source to fully or partially turn on the mosfet.


The circuit will oscillate. The transistors will switch on and off multiple times in the shortest pulse you can give the switch.

Try adding a capacitor of a few hundred µF between the base and emitter of Q1.

A similar question was asked already today: Soft latching push button circuit using 2 buttons. The EEV blog video referenced on that question goes on to explain this problem in detail.


You should observe the generated waveforms to see what the specific problem is.

When toggling SW1, expecting the gate of 'M1' to go high, what actual value do you see?

Now, when the switch is let go, how does this value change? I would expect that it drops enough (driving Q1) that M1 is no longer on, which causes M1 to turn off even more, eventually unlatching itself. But this could easily be verified with waveforms.

Does the left hand side of the button actually 'go low' (0.2V)? It may be settling around 1V or so which may not properly pull down the M1 gate.

Also a 'one-button' toggle like this begs the question ... why would this not just oscillate?

A much simpler and fool-proof method may be to use a T-flip flop (J-K master/slave flip flop with both inputs tied together: jk flip flop or any other master/slave flip-flop) to do the latching and add your own output driver stage.

  • \$\begingroup\$ I was thinking a one-shot (debounce) to JK CLK (J&K tied high) to driver. Or... probably cheaper and easier these days, a SOT-23-6 MCU. \$\endgroup\$
    – jonk
    Oct 8, 2016 at 18:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.