Use 555 timer to drive vex motors?

I have been wondering, i know that 555 timers can be set up for pulse width modulation but could they drive a vex motor.

Vex motors are controlled by pwm i believe so i guess the 555 timer acts like the micro controller.

If this is possible i plan on building 2x555 timer circuits one for full reverse and one for full forward speed. I will then connect 2 relay to 2 separate D/O ports on the vex which will control the 555 timers state. Basically to control the motors you would turn on an D/0 port on the vex which would turn on the relay and depending on which one you turn on it would go forward or backward.

The only reason i want to do this is so that i can run the motor at high voltages +15v ect…

Also would it be possible to just plug in the one motor control pin and then connect the other 2 power pins to a separate power supply?

Its just an idea i had but i don’t know if it would work or not.

The 555 is pretty versatile, so I wouldn’t be surprised if you could get it to do this. Sorry, but I don’t have anything more concrete to offer.

I bet this would work, though you’d need to run the Black and White wires to the Vex controller, and the Black and Red wires to the larger battery. The only risk I can see is if the motor has a pull-up resistor on the signal line which could cause the Vex to see higher than 5v on one if its signal lines.


  • Dean

I just ran across this little board that uses a pair of 555’s to directly drive a servo. (It actually uses one 556, which is just a dual-555)

They have a nice spec sheet here with a schematic and theory of operation. It uses one 555 to create a 50Hz pulse train, and a 2nd 555 to shape it into 1ms-2ms wide pulse, according to the position of a potentiometer.

This is a great place to start if you want to figure out how to drive a servo using 555’s.


  • Dean

Hello all,

First of all thank-you for the link to the 555 servo motor diagram, I’ve been looking for something like this.

I just finished bread-boarding this circuit, and with a couple minor changes, it seems to work great.

It’s important to note that my changes were necessary because I do not have a 4.8VDC power supply which they show in the photos. I’m sure if you purchase this kit and use it as directed, it works great. However, since the 555 uses 1/3 and 2/3 voltage for its trigger levels, changing the voltage would probably require some minor changes to the circuit.

To make a most servos work you give them a 50Hz pulse and control the width of that pulse – from 1mS to 2mS. A little math yields 1/50 = .02 or one pulse every 20mS. So the duty cycle range is between 1/20 = 5% and 2/20 = 10%. Using an Extech 330 meter that measures frequency and duty cycle I was able to verify the output before testing it on a Futaba S3003 servo.

The power supply I’m using is a 5V “wall-wart”. It measures 5.25V on my meter. To adjust for this voltage difference, I had to make two changes:

  1. I replaced the 270K (R1) resistor with a couple 100K resistors and a 100K pot all in series. With this I was able to dial into 50Hz using the 100K pot.
  2. I added a second 10K resistor in parallel to R3, effectively cutting the resistance in half. This was necessary since I could not otherwise get the duty cycle to go less than about 7%. In this modified arrangement it’s duty cycle’s range measures between 4.5% and 9.5%. Not perfect, but close enough.

Hope this helps. Overall a very good circuit. However, I’m at a bit of a loss on how you might interface it to a microcontroller. I suppose you could replace the 10K pot (P1) on the diagram with a digital pot but I don’t have any of those. If anyone does have one of those, and you try it, please let us know what you find out.

I was thinking about that too. The O.P. wanted to have a few 555 circuits, each tuned to a fixed speed, and just switch between them as needed.

The 50Hz number is basically the same as the update rate from the Vex master processor (certainly not a coincidence). You could simply eliminate the 555 generating the 50Hz trigger, and instead trigger the thing from a digital out port each time through the program loop. You could wire two or more of these 555’s in parallel and just trigger the one that generates the pulse width you want. You’d have to use a diode wired-or arrangement to hook them together, since the outputs are not open-collector.

What does a Vex motor/servo do if the 50 HZ pulse train stops? Does it “go limp” or does it hold the last speed/position it was given?

I suspect it would be simpler to just modify a PWM->DC adapter to run on independent batteries, though.


  • Dean