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
**Most people dont add**<br>Most people dont 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 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 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.
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.
Good call on this trick. 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.
More often than not I’ve More often than not I’ve disassembled a servo to find there’s already a small ceramic cap fitted across the motor leads, inside the case. Apart from all the other good suggestions, you could always add a third, even larger (>1000μF) cap across the battery leads that feed the servos. This would help smooth out any voltage sag when your servo draw large currents - especially if you have several servos that are operating synchronously.