Let's Make Robots!

Relay vs H-bridge question

most of the time I use an L298D motor driver IC for controling motors. However i find that the 1+ voltage drop is anoying. Some motors just dont go fast enough. 

Using a 7.2V power supply, leaves about 6V going to the motors and, as I understand it, the L298D is not designed to take in higher voltages. Although I think it can handle quite a bit if you cool it properly.

One option would be to use a mosfet to provide the current, as shown in the picaxe manual example circuits. Another pin can then control a relay to reverse the polarity to the motor. The idea is to use the full voltage of the batteries to the motors. I've tried to sketch the circuit here with 9.6V, but 12V could be an option too.

Can anyone tell me whether this will work OK and what the pitfalls and downsides are?


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

No thanks, that's what LMR is for :) The L9110 is a great little driver for small motors.

I set up a small motor and ran it through the L9110 to compare input and output voltages. I ran the test at 7.2V 10V and 12V letting the motor run free and also putting some load on it by stopping the spinning wheel with my hand.

The L9110 drops about 0.6V - 0.7V running free with 80-100mA current. Straining the motor the current goes up to 600mA (at7.2V) to 1A (at 12v) which results in the voltage dropping another 0.2V

I did the same test using a IRF530 Power mosfet and got results that are comparable. Off course at these small loads, temperature is not an issue.

I conclude that a setup with my MOSFET and a relay, will not beat the L9110 so I'll go with that one. (thanks for the tip Bajdi!)


I'm a fan of the SN754410NE. I made this motor shield awhile back, pumped in 12v, got out ~11v. I ran a burnout test and kept the motors going for a solid hour before one burned a hole. I can't swear to the current flow, but I think it was around 300-700mA per IC. And I'm still guessing the burnout was due to my poor pcb design, not the IC. Not to mention they have internal fly-back diodes (although weaker than I'd use). http://letsmakerobots.com/node/36608

I find the L9110 works great for small low power motors i.e. yellow and white gear motors and the like. I get @2v drop in my usage.


If you have a L293D hole, you could fill it with a SN754410NE.  It's pin and drop in compatable with the L293D and has higher current and voltage ratings.

I have a base I put together that uses one of the cheap (5$US) opto isolated 4 relay boards from China for driving two gear motors. It works fine and the motors get all the happy electrons they can take :)  It was very easy to set up with a few jumpers.

Not saying this is best for all applications though.


Thanks guys. I will check out those fet based h-bridges. Sorry for the confusion with the relay drawing. I realise i didn't draw it correctly, but you obviously got the idea. The reason for this settup is that in R2D2 I want to place a motor controler in each foot: close to the motor and i have mosfets and relays laying around somewhere.

it isn't the "best" choice, normally.  The relay is noisy.  It will wear out, although it should last quite a while if used properly.  Most relays use quite a bit of power in the coil.  that wastes power but won't affect the power available to the motor. You can wire the relays so that both are "off" for forward, then the coils only use power when that particular motor is reversed.  You still lose some voltage in the mosfet, but it will probably be a lot less than the H-bridges you mention. Use a good quality (low Rdson) mosfet for lowest drop. The drop will be I (current) * Rdson, so a mosfet with 0.5 ohm Rdson and a 1 amp motor will lose 0.5 volt. The IRF530 you show needs about 10 Volts on the gate to get fully on.  If you want to drive the mosfet with a logic signal (like from an arduino) you should use a logic level mosfet. Otherwise you will need a driver circuit.

Like Bajdi and Oddbot said, a more modern H-bridge is probably a better choice.  Having said that, I currently have a relay h-bridge partially assembed on the bench for a project.  It is viable and has some nice features like low or zero loss and electrical ruggedness and simplicity.

Not to metinon you can handle way higher currents and voltages for reasonably cheap compared to comerciall options for driving high powered motors :)

You don't seem to have drawn the relay in a way I completely understand but as long as you use a DPDT then it will work. My only suggestion with relays is that you turn off the FET before switching direction to increase the life of the switching contacts.

Considering the cost of many motor drivers these days it might be worth you looking at buying a Mini Driver from Chris.

For $16 you get a dual FET "H" bridge rated at 2.5A per motor.The total resistance of the FETs is about 0.1Ω so even with a 2A load you only get a voltage drop of 0.2V

As a bonus you get an ATmega8A with an Arduino NG bootloader, USB interface and a servo controller. When your not using it as a motor driver or an Arduino or a servo controller you can use it to burn bootloaders or upload code directly via the ISP socket.


The L293 and L298 are uber old technology, the only benefit they have is that they are dirt cheap. Why not use some more modern H-bridges instead of relays? To say it simple those old h-bridges are based on transistor technology and have a big voltage drop. More modern h-bridge chips are based on mosfet technology and are much more efficient.

Some examples:

For small motors you could use a L9110 h-bridge, only costs 3-4$ for a dual motor module on ebay. I tested one and it had a 0,5V voltage drop. http://www.bajdi.com/l9110-h-bridge-module/

For bigger motors (up to 5A) you can find boards based on the MC33886 on ebay for less then 20$.