Common collector H-bridge driver - is there a way to do this with MOSFETs? Gate voltage seems too high
What you need to use are called "Logic Level" MOSFETS. They typically have a gate threshold voltage of less than 5V DC. This is what I most commonly use to control simple LED circuits directly from an MCU pin, but they are also how a lot of modern motor driver chips work on the inside.

Full a full H-bridge, you will need at least 4 MOSFETS: 2 N channel for the low sides, and 2 P channel for the high sides. The problem with that is keeping the HIGH side drivers on and off completely from an MCU pin without the need of a lot of external components. 

Here is the basic H-Bridge. Do note, I have NOT included any sort of safety diodes, which YOU NEED, nor are there any bulk capacitors. The top rail is the battery, the bottom is ground.







simulate this circuit &ndash; Schematic created using CircuitLab

Note, MOSFETS are voltage controlled devices, hence, you should be able to drive them from a voltage source without worrying about current flow. You can get fancy and actually try to limit the voltage seen at any gate to directly control the current flow through the FETs, but it is more common to saturate the FETs for maximum current flow, and then controlling speed using PWM. Using logic level MOSFETs, you can do this directly from the MCU gate.


Motor CW:  A-0, B-1, C-0, D-1
Motor CCW: A-1, B-0, C-1, D-0
Motor Free: A-1, B-1, C-0, D-0
Motor Brake: A-0, B-0, C-0, D-0 OR A-1, B-1, C-1, D-1


From this, you can safely connect A-C and B-D to prevent the possibility of shorting battery to ground. Some people would likely also suggest a resistor between the MCU pin and the FET gates, just for safety. Some people even use opto-coupling for complete isolation. I doubt you are looking to get that fancy.

The problem is that you can't supply enough voltage from an MCU pin to fully turn off the P Channel MOSFETs unless the motor battery is no more than (and really need to be less than) the MCU voltage, which is either 5V or 3.3V if you are using Arduino.

In that case, we can add a second pair of N-Channel MOSFETs to help drive the HIGH side P-Channel MOSFETS like this:







simulate this circuit

Now, M5 and M6 serve to either pull the gates on M3 and M4 LOW, or let them float HIGH. This does change the control a bit...


Motor CW:  A-1, B-0, C-0, D-1
Motor CCW: A-0, B-1, C-1, D-0
Motor Free: A-0, B-0, C-0, D-0
Motor Brake: A-1, B-1, C-0, D-0 OR A-0, B-0, C-1, D-1


Notice that now if you wanted to cross connect lines, it would be A-D and B-C; however, this means you loose the ability to electrically brake the motor, and it still doesn't protect against shorting the supply and ground.

There are other ways to do it, but this is a fairly common and simple way that doesn't require a lot of external parts (like charge pumps). Then again, you would be best off just finding a motor driver IC that could handle the voltage and current of your motor(s) - it will likely be much more efficient than anything you build out of transistors on your own.