Active braking with an arduino

I am working on a computerized nerf Stampede and have run into an issue with my mosfets burning on me. The system I am working with can be simplified into a brushed motor being driven by a pair of mosfets, one n channel one p channel. The whole thing is running on an 11.1 lipo battery. is the build I am using for the mosfets themselves. My first iteration used this active braking mosfet and a cherry mx blue switch to turn the mosfet on and off. This worked great, no overheating, no shorts. I then tried to take out the cherry blue switch and wire in an arduino mini (5/16mhz) to turn the mosfet on and off. The idea is that I could use this the controller to get a semi-auto/three round burst function. However adding in the arduino caused the mosfet to fry. I am not sure what the issues is. In theory The high/low of the digital output should be enough to turn the mosfet on and off. Is there something I am missing? I I think I might be getting some shoot through. Is it possible to have a secondary transistor that can switch with the 5v from the board and translate that into a 11.1v current that the active braking mosfet can work with?

The attached file has a rough sketch of my circuit.

Vdd is 11.1V

R2 is 22k ohms

R1 is 100 ohms

Q1 is https://www.digikey.com/product-detail/ … ND/2081673

Q2 is https://www.digikey.com/product-detail/ … -ND/812161

This circuit has been discussed before on this forum. It is a bad design.

Okay, all i need it to turn on and off a brushed motor, as well as have the brushed motor stop in place when turned off. I have a sensor tracking the position of a gear and when that gear moves to a designated point and trips the sensor i need the motor to stop at that position. This is the core problem that is stopping me from just using a n-channel mosfet alone. To this end do you have any ideas or other topics that have a solution to the problem?

as well as have the brushed motor stop in place when turned off.

This is impossible. The rotor and gears have inertia and keep rotating for a short time, even when braked. If you want the motor to stop at a certain place, you have to start braking before it reaches that place.

Okay, I can understand that. I can move the sensor forward in the rotation to compensate for a small amount of forward moment after the signal is cut, but how I can reduce that inertia in the same way as the circuit above? I know that it is not ideal, but when it is triggered with a simple switch attached to the positive wire and the gate in place of the 5v from the board, the motor has almost no forward movement after the switch is opened. What I am looking for is either a better method to get that same active breaking effect or a way to switch the 11.1 current using the 5v from my arduino. I have tried two different P-channel mosfets to try and switch that 11.1 current and thus far failed.

Just put a flyback diode across the motor, capable of carrying the full motor current.

To switch off a high side P-channel MOSFET powered by 11.1 V, you have to set the gate to around 11.1 V. You can’t do that with an Arduino. Even if you could, this is still a very bad design, because it takes some time to switch. During that time the MOSFETS short the power supply to ground.

does it matter what kind of diode? I tried doing that with just an N-channel mosfet and this diode https://www.digikey.com/product-detail/ … ND/2623454 and i didn’t see any better results when it came to stopping the motor after the mosfet shut off.

I would use a Schottky diode, not a TVS diode.

something like this http://www.digikey.com/product-detail/e … ND/3102976 ?

You don’t need nearly that much forward current capacity, and I would try to find one with lower forward voltage, but try it and let us know.

You do know that the flyback diode needs to be reverse biased when the motor is powered on, right?

https://www.youtube.com/watch?v=LXGtE3X2k7Y