Dealing with servos & physical resonance


I've been playing around recently with servos which move long, thin wooden rods (around 30cm long and 8mm is diameter). Each rod is attached in one extremity to the servo (think of it like a large needle). When the servo is commanded to go to a position, depending on the rod size and weight, there is significant resonant feedback on the rod, which oscillates back and forth very loudly around the position it has just reached. It has to be stopped by touching it, otherwise it can rattle for entire minutes.

I can find a mechanical solution to it (using absorption pads, similar to what goes on inside a piano), but this restricts the movement arc. I tried to find a solution in software, by sending out slight variations in position (in a direction opposite the movement direction) after different short intervals (10 to 200 milliseconds), but this doesn't help.

If anyone has any ideas on how to limit this oscillation, I'd be very thankful.

There is a variation on the Servo library that allows you to ramp up and down the speed that the servo moves at. Perhaps moving the servo with less acceleration will help.

Thanks but that's the opposite of what I'm trying to achieve (I need the fastest possible movement).

I don’t think there are very many ways to deal with a problem like this, eg
beef up the rods so they don’t flutter so much, or else control the acceleration.
In regards the latter, you might still be able to move the servos at top speed
over most of their path, but when they get near their final positions, then
slow them down in stages, rather than stop them dead instantly. IOW,
decelerate in a controlled fashion. A third possibility might be to figure out
some way to mount the rods on the servo horns in a cushioned fashion, rather
than hard-coupled, IOW introduce some sort of a “dashpot” or mechanical damper.

If I understand you correctly, you've effectively extended the servo horn by about 30cm and the far end is oscillating.

You need damping somewhere. I can see four places where it may be possible to add damping:

At the connection between the servo and your extended horn. For example attach the extension using 'servo tape' or similar (double-sided adhesive tape with a foam core) which allows slight flex, instead of a rigid attachment.

In the rod itself - make the rod out of something that is damped in the direction of flex. All the solutions I can think of would add weight which you probably want to avoid.

At the far end of the road, between the rod and whatever it touches. You haven't described that.

Between the rod and the surrounding air. Depending on the packaging, you may be able to attach some light paddles perpendicular to the direction of vibration. I don't think they would need to be very big to be effective on a light rod, and I'm envisaging simple bits of tape attached to the free end of the rod so they stick out and form paddles.

Depending what you're trying to do, you may find you can avoid the problem entirely by changing the material. For example a plastic tube of the sort used for large drinking straws would have far better stiffness-to-weight than a solid wooden dowel. It would also be weaker and less stiff, but removing almost all the weight I think would make a big difference to the resonance problem.

Thank you @oric_dan & @PeterH, great suggestions. I'll see if I can get by using software (i.e. deceleration just near the final position). I'll write back here if I achieve something useful. I like the paddles idea, too :)

Actually, even moving one of my servos from a position where it’s resting to a (position + 1 degree) makes it enter self-oscillation, so a software solution seems impossible.

Maybe if you add a weight similar to the weight of the rod on the opposite side of the servo?

Not sure how/if can you do this, but you could try to increase/decrease the servo update frequency. Usually it's a pulse every 20ms, but you can it longer or a bit shorter. I think this would change the servo's response time and maybe get better adapted at your inertial load.

Ischia: Actually, even moving one of my servos from a position where it's resting to a (position + 1 degree) makes it enter self-oscillation, so a software solution seems impossible.

That may be the result of mechanical backlash. If that's the problem, you could 'park' the servo by detaching it after it has reached your target position -I suppose you can only guess when that is based on how far you have moved it and how long it's likely to take to move that far. Your mileage may vary, but in my experience the servo will become inert when you detach it. As long as the force on the servo is not enough to overcome the mechanical friction and make the servo move, that might work OK.

An excellent idea PeterH. I do that with servos modified for continuous rotation, but to ensure they really stop.

Actually, even moving one of my servos from a position where it's resting to a (position + 1 degree) makes it enter self-oscillation, so a software solution seems impossible.

The rods appear to be too thin and wiggly, and sounds like mechanical damping might not even help. So the alternative seems to be to beef up the rods in some manner so they are not as flimsy. I am envisioning you having something like a solid copper wire attached to a servo horn, and it's so flimsy laterally it oscillates no matter what. Have to go to something more structurally rigid, like PeterH mentioned. Maybe some sort of tube.

As an analogous image [just something to think about], I remember watching guys operating cranes, and moving large weights suspended from cables. The cables obviously free-swing, and have no horizontal rigidity, so the crane operators learned how to move the cranes so the loads would simply sweep across and "magically" come to rest at the intended target position. I guess, give the load just enough of a jog to slew it to the end position, and then sweep the crane arm over so it stopped in synchrony right above the load. Something like that. LOL.

The rods appear to be too thin and wiggly

The one I was referring to was cut from an Animal-grade professional drum stick.

you could 'park' the servo by detaching it

Good idea, I'm not sure it would be feasible the way my project works (I have around 8 servos, attaching an detaching them in succession seems like a mess waiting to happen) but I'll give it a try.

professional drum stick.

??? Hmm, drum stick doesn’t sound very “wiggly”. Sounds more like the servos
are oscillating, maybe the torque-ratings are too low for the loads.

maybe the torque-ratings are too low for the loads

Maybe, that's what I thought at first, but if I push them firmly with my finger while powered they stay put so I figure they should be powerful enough. I'll see if I can get a video up tomorrow.

Well this sounds strange. I guess the correct question to ask is ... is it just the rods that are oscillating and the servo horns are not moving at all, or are both the rods and servo horns oscillating together?

Usual questions:

  1. what size servo are you using?
  2. how are you powering the servo?

Your servos and/or power supply may be undersized or inappropriate for the task. You may need to go to a lighter weight pointer, like a bamboo skewer.