Meta

555 / 556 H bridge

Introduction

You might find yourself needing a low power H bridge for driving a motor like I once did. The 555 IC can drive a load up to 200mA, source or sink, which might make is usable as a driver, if one can control the output as desired.

The Why?

Although it is an unusual use for a 555/556 IC, it is an easy way to make a bridge with these easy to find and cheap ICs. They are a good solution for a low power H bridge that operates at a higher voltage than the controlling circuit, up to 15V, requiring only an extra zenner diode.

How it works:

Two comparators control an SR flip flop which drives the output buffer. A high logic level on the Reset input makes the Output go low and a high logic level on the Set pin makes the output go high. In order to set the output, a voltage lower than 1/3*VCC must be applied to the Trigger pin and in order to reset it a voltage higher than 2/3*VCC must be applied on the Threshold pin. The 1/3 and 2/3 voltage references are given by the three 5K resistors.

Connecting the two inputs (threshold and trigger) together means that the output may be set by a voltage under 1/3*Vcc and reset by a voltage over 2/3*VCC. Two of those circuits together make a H bridge:

The 555 offers another advantage: the voltage reference 2/3VCC is connected to the Control voltage pin (see internal block schematic). That means that the two thresholds may be altered by controlling that voltage.

If the motor requires a high voltage, such as 12V but needs to be controlled from a lower voltage microcontroller (3.3 / 5V) the thresholds can be altered by forcing the control voltage pin to another level. Because a voltage higher than the control voltage pin level is required to reset the output, the control voltage pin should be pulled to a level that is some distance below the microcontroller supply.

There are two ways to do this: add a resistor between the control voltage pin and ground to form a divider or add a zenner diode to precisely set the voltage. The former method will work correctly if the supplies are well stabilized, but I prefer the latter. It is well suited even if the higher voltage, the one for the motor, comes from a battery (so it varies in a larger range) and the microcontroller voltage comes from a regulator (so it is stable).

I decided not to simulate this circuit using SPICE as it is rather straightforward and, as practice proved it, it worked flawlessly.

Note: I’ve later realized that I could connect the Discharge pin to the output and have a lower drop on the transistor switching to ground, but left the schematic in the original and tested form.

Testing

To demonstrate this works just fine I’m going to make a test setup using:

-a small board containing the 556 H-bridge (which could also have been made of two 555s), connectors and a 2.7V zenner diode (first value lower than 3.3V),

-a small motor (which comes from a servo from which I have removed the electronics, so it’s just a motor and gear),

-and a 12V power supply.

I’m using the microcontroller to generate a 450Hz PWM signal(orange wire) and a logic high/low signal(green wire) with the maximum amplitude of 3.3V. These control the H bridge.

The is the setup while checking the output of the H bridge without the motor:

Below are oscilloscope capture images for various duty cycles and directions. The top and bottom signals indicate the outputs, while the middle shows the difference, meaning the actual voltage across the load (which was not present at that moment):

Depending on the state of the logic signal(bottom of screen) the output difference is either positive or negative, and has a duty cycle controlled by the PWM signal(top of screen). This allows controlling the direction of the motor and the speed.

Next I’ve added the motor and a 220nF capacitor in parallel with it in order to minimize the noise and prevent damage of the chip due to back EMF.

The capture from the oscilloscope shows a noisier signal. That is a normal situation, since we are dealing with a motor.

Be sure to check out the video below:

Additional gallery:

The board, showing only the 556 and the diode, nothing on the back except wires:

I’ve used this microcontroller board for various projects, that’s why it has some other LEDs and connectors. The wire with the connector at the left is the serial port that I am using for programming:

The motor used in this project is actually a modified servo motor used for model planes. I’ve removed the electronics and the mechanical blocking to allow it to spin 360 degrees. The unloaded motor draws about 80mA when connected to a 12V supply.

Other ideas:

Although I have not seen any visible improvement when tried on this motor, it is possible to connect two (or maybe more?) 556 in parallel and have a higher current capacity, just by putting them one on top of the other.

There is another use for this H bridge: if an independent PWM signal is required, one of the 555’s from the bridge may be wired in the classical way of a pwm generator. This creates an H bridge that can control independently vary the speed and direction of a motor.

If the motor were to require the same voltage as the microcontroller, the zenner diode may be omitted.

Nice. I’ve been thinking for a while that the ~200mA output of a 555 is “middle ground” between what you can get from logic gates (74ACxxx, ala BEAM) and what you get from real motor drivers, and a not-unreasonable value for any number of hobby-sized motors or actuators. But I never got around to actually figuring out how to properly diddle the pins. And noticing that you can get level conversion by using the control-voltage pin is particularly clever!

That’s true, the current is not that great, but there are many applications suited for it. I first used 2 555s for driving a motor that controlled my blinds, but at that time didn’t need the voltage conversion. The idea came to me when I saw the contest and tried to figure out how I could improve it.