Driving signals : Dead-gapWhen driving the H-bridge it is important to note that because PMOS and NMOS transistors turn on and off at different speeds, it is possible to create transient short-circuits along the two vertical paths of the H-bridge which can destroy the transistors.The solution to this, is to have a dead-gap - I.e. a period where there are no drive signals when transitioning between forward drive and reverse drive. This will ensure that all the transistors in the bridge are in an off-state before turning the next pair of transistors on.Many MCU's (e.g. Atmel) have dead-gap circuits as part of their PWM signal generator hardware.
I just tested the circuit today, in fact, and it didn't run as smoothly as I thought it would. The motor ran, but more slowly than I expected, and my best bet is it's related to the IRF9510 and it's 1.2ohm Rds(on), not to mention the fact that the 5V from the Arduino isn't turning it on fully.
I do want to stick to MOSFETs for max power across the motor, though.
I had PN2222As on hand today and I tried to use those for the outside level-shifters, but what ended up happening was the transistors got really hot and I don't think I want to do that again. ... Does anybody have any insights on why that might happen?
The resistor and inductor in the middle is just a representation of the motor (I don't actually know the motor resistance or inductance).
When I replaced the transistors with IRLZ24s, the circuit worked, albeit not as well as I'd hoped.