Let's Make Robots!

Practical question about servos and capacitors

I have read in many places on this site about using capacitors to reduce motor and servo noise. I am now using 0.1 uF capacitors across the leads of my motors as standard practice. I'm also using 470 uF and 0.1 uF capacitors around both sides of my voltage regulator. As yet I haven't tried applying a cap to a servo, and I have a quick question.

Where do you attach the capacitors on the servos? It is easy enough to solder caps directly to the leads of a motor, but the leads on a servo are much longer, and usually already in a nice 3-pin connector to attach to a microcontroller. I believe it is best to have the capacitors as close to the source of the noise as possible. What are some good practice ways to connect noise suppression caps to the servo?

Off the top of my head, I can think of several ways, some of them are probably really bad:

  • crack open the servo case and add a small cap where the power leads come in (ick!)
  • cut the servo power leads just outside the case and splice in the capacitor across the leads.
  • disassemble the 3-pin connector, solder the cap to the pins, and reassemble
  • run the servo leads to a PCB or protoboard, add the cap to the board, and then wire from the board to the microcontroller

So, how do you do it?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Most people don`t add capacitors to servos. If you really have noise problems it could be something to look at but it probably isn`t worth your time until the problem arises.
My servos often seem pretty jittery, and the one on Robot Leader right now emits a constant electrical whine. Some of this I may be able to clean up with better programming, but I thought eliminating some noise at the source would help.
I've used caps at the point where I connect the servo to the pcb which has worked for especially twitchy servos. Due to the power being shared, I usually use a 470uf. I had software tricks as well that really helped as I would get spikes that would cause the servo to move a few degrees. Caps didn't help in those cases.
try switching the servo pin to Low or off once the servo is in position ...
Good call on this trick. This actually helps when going from a low->high->low on the clock....say when you need to use 4800 baud on the serial port i/o call. :)

I'm a hardware guy at heart, so that's where I look for answers first.

Thanks for the advice.I will definitely try this.

It may be that the servos are jittery due to infrequent servo pulses coming in. It may be possible that the pulses aren't gettin delivered as quickly as needed, every 20 ms or so. Higher update rates have given even better performance in my experience. I've pulsed servos every 13 ms with better results. Try writing a program that does nothing but move a servo, and see how that performs. Then add more servos or more of whatever your robot has onboard. It may be one component is throwing off the timing.

It also might be that the servos are current starved. It helps to have them directly connected to a battery pack rather than through a regulator. The use of 4 or 5 AA rechargable batteries have been a good working pack in servo apps. Just some thoughts to try out. 

The 6V for the servo is coming direct from the battery. There are 0.1 and 470 uF caps on each side of the 5V regulator, so the battery side has some capacitors on it, but no other regulation.

 I think it is proabably interference with the Picaxe timer, which is also driving an SRF005 every 2 seconds.

I'll try your suggestions. Thanks!

Are you using a ldo reg with the 6v->5v .  Not using one could cause potential power issues I would imagine.

Yes, indeed. I'm using this one:

http://letsmakerobots.com/node/10291

It is based on OddBot's design, only using a different low dropout voltage regulator.