2
\$\begingroup\$

In my servo-driven pen-plotter project, I have been experimenting with various different servos to discover more about their characteristics.

Immanuel Kant, by BrachioGraph

In practice I have found that:

  • analog micro servo motors work well and give good results, as you can see
  • comparable digital micro servo models are useless for the purposes

This is because the masses attached to them cause digital motors to oscillate uncontrollably at the slightest provocation (because the motors are both twitchy, and not very powerful).

I'd like to try some larger digital motors, but I don't want to spend money unnecessarily if I'm only going to discover that they too are unsuitable for the purpose. I hope that someone else with more experience of servo motors in general can give me an informed judgement.

How much less susceptible to oscillation are larger digital motors? Given the arrangement illustrated, am I likely to discover that they exhibit the same sort of behaviour?

\$\endgroup\$
10
  • 1
    \$\begingroup\$ The shaky sketch makes it more artistic, how fast was it cm/s? and what would you like for accuracy and speed? \$\endgroup\$
    – D.A.S.
    Commented Nov 5, 2019 at 0:21
  • \$\begingroup\$ @TonyStewartSunnyskyguyEE75 It's pretty slow, it takes about 10 minutes to draw images like the ones at brachiograph.readthedocs.io/en/latest/index.html, and longer if the image includes hatching for shading. But speed is not exactly the point of course, or accuracy. \$\endgroup\$ Commented Nov 5, 2019 at 0:29
  • \$\begingroup\$ mechanical stiffness needs to be addressed to prevent overshoot. Torque can be increased with current but power of motor is too small. I have used 2A 12V stepper motors as a servo to draw something like this with 0.1mm accuracy using a pen in 30 s in vector mode.. but using a 3W laser on wood or paper takes a really long time. \$\endgroup\$
    – D.A.S.
    Commented Nov 5, 2019 at 0:34
  • \$\begingroup\$ Larger / more expensive / digital servos are likely to make only marginal mprovement, hobby servos are just not the right actuator for this application. Look at the mechanism of actual plotters before you waste your money. Even a pen holder on a 3d printer would be drastically better than you would do using servos for positioning. \$\endgroup\$ Commented Nov 5, 2019 at 0:46
  • \$\begingroup\$ If the servo motor temperature rise is low, you can boost the servo motor voltage somewhat and reduce wiggles with more torque to reduce error, but I don't know how your vector slew rate is limited in software to avoid motor damage from long accelerations. These servo's are cheap, so I might increase V 25% for a cheap and dirty fix but monitor motor temp with finger during tests... but certainly more powerful motors will reduce overshoot error but also increase wiggle frequency. Acceleration and deacceleration vector limit control is the software fix for target position. \$\endgroup\$
    – D.A.S.
    Commented Nov 5, 2019 at 0:46

3 Answers 3

5
\$\begingroup\$

How much less susceptible to oscillation are larger motors? Given the arrangement illustrated, am I likely to discover that they exhibit the same sort of behaviour?

Good digital servos generally have a smaller dead-band and higher holding torque. Some can be programmed to minimize dead-band without oscillating. A well-tuned digital servo will 'sing' when any load is applied as the high frequency motor PWM and advanced PID algorithm forces it to hold position, whereas an analog servo will 'buzz' and vibrate at the servo pulse frequency. The low drive frequency and crude proportional feedback in analog servos also causes them to move off position at high torque, and require larger dead-band to avoid overshoot.

Mechanical construction also important. Plastic gears generally have less 'slop' (backlash) than metal gears, but are more flexible and less tolerant of overloads. Carbon reinforced plastic retains the tightness of plastic with greater durability. Larger diameter gears have less slop than small ones, and ball bearings are much better than plastic bearings.

The torque specifications of most cheap hobby servos are 'optimistic'. Just by looking at your setup I can tell that those servos are being grossly overloaded.

For better positioning accuracy you need:-

  • Large diameter gears - standard or mini size servo rather than micro.

  • Carbonite or metal gears.

  • Ball bearings.

  • High quality digital servos - not cheap Chinese ripoffs.

  • Small dead-band to reduce positioning error.

  • Much more torque than is actually needed. The first servo has higher load due to the weight of the other two, so it should be stronger.

  • Extremely rigid servo mounts and pantograph arms.

  • A good power supply that doesn't sag under a load of several amps.

In your application accuracy is more important than speed, so choose servos with highest torque and lowest speed in their 'family'. These will have lower gearing and draw less current when moving.

\$\endgroup\$
2
\$\begingroup\$

I think your problem is that the servo control loop is not designed for your use case, and so starts to oscillate as you see. Servos are intended for moving aircraft control surfaces. These have low angular momentum, are highly damped, with some restoring force - like a massless spring resisting the servo torque. In this case a simple high gain proportional control loop works fine.

You have a large mass on the end of an arm, and possibly a slightly springy arm. With a proportional controller this will oscillate. What you need is a better control algorithm - a PD controller would suppress the oscillations better. Are you able to open up the servos and separate the motor control from the position feedback? Then you could write a control loop on the computer. You could even leave the current servo amplifier in place, as it has all the high current bits in place, but add an A/D converter to measure the position of the servo, then write a better control loop around the first one.

Another idea might be to add some sort of mechanical damping to the system, but I can't think of a small enough damper. Try large air vanes, like some playing cards attached to the arms? These add mass too, so might not help.

Finally, if the stiction - sticking friction - is significant compared to your motor torque and/or your arm springiness, the control will not work either. The only solution is less friction (try a Teflon pad from an old mouse?) a stiffer arm, and more torque.

\$\endgroup\$
2
  • \$\begingroup\$ All the analog servo motors I have tried work perfectly well in the use case, though some are more precise than others. It's the digital motors I have tried oscillate. \$\endgroup\$ Commented Nov 5, 2019 at 8:12
  • 1
    \$\begingroup\$ Aircraft control surfaces with appreciable airflow over them probably can't be treated as low mass. \$\endgroup\$ Commented Nov 5, 2019 at 14:16
1
\$\begingroup\$

I don't think the micro servos are useless so much as you are over torquing them overly heavy loads at the end of overly long lever arms, and digital servos will try and fight harder to maintain position than analog servos will. They work fine on the tiny model aircraft they were meant for.

It appears you never considered how much torque was required before starting things, and just went for the cheapest servos.

Physics dictates that, the torque of a joint closer towards the base of a mult-jointed lever is always greater than the torque at all the joints further out towards the tip. This should be evident from mechanical intuition.

There are only penalties placing the same motor at every joint because the loads are never the same. It only ensures that motors are either underworked or overworked. Doing so only ensures that the motors further out have torque capability that can never be used (since whatever torque they exert is amplified and passed back towards the motors towards the base). And if you are working against gravity, then it's even worse because motors at further out are now heavier than they need to be with all that useless extra torque capability which means the motors towards the base now have even more of a load.

The minimum torque required by a motor is:

\$ \tau_{static} = \sum_{Joint}^{Tip} (Force \times Distance)\$

"Distance" is the distance through space from the joint of interest to the point where the force is applied in the worst case scenario. The worst case scenario is when the lever is fully extended as long as possible.

If this force is a weight, then the distance is from the joint of interest to the center-of-gravity of the component. For example, if this component is a segment of lever itself, you can probably assume a lever that is uniform along its length which means the COG is halfway along its length.

Also note that "Distance" is a distance through space. If the arm can extend to be completely straight then the distance follows along the arm linkages. But in the case that the arm cannot fully extend (maybe it can only ever fully extend 90 degrees), this distance is along line that cuts straight across space itself from the joint of interest to the point the force is acting at. It need not follow along the linkages of the arm.

Note that this is the minimum force required. It is not the force required to actually accelerate anything. In terms of lifting against gravity, this means this is the force required to hold something at a given position. Extra force is actually required to produce acceleration to get it to that position.

If you choose to account for this, there is an extra torque to add to the torque calculated above:

$$ \tau_{dynamic} = I \times \alpha $$

This formula is just the rotational equivalent of $$F = M \times A$$ which is for a straight line.

\$\tau_{dynamic}\$ is the torque required to swing (or stop a swing) for everything under its own inertia under the worst case. Worst case being when everything further out is extended such that as much of the mass as possible is farthest away from the joint as possible.

\$\alpha\$ is the angular acceleration in \$radians/s^2\$. It is the rotation analog of linear acceleration.

\$I\$ is the "Moment of inertia" which is the rotational equivalent of mass and can be tricky to figure out if you have never seen it before.

To get moment of inertia, you first have to arrange everything past the joint into the worst case scenario and the calculate the center-of-gravity and moment of inertia of the entire assembly.

Worst case being when everything further out is extended such that as much of the mass as possible is farthest away from the joint as possible.

From there, it is most convenient to first turn every object in the arm into a point mass, rather than leaving them as the distributed masses they are. So place the mass of every component at it's center of gravity.

From there, the moment of inertia of the entire assembly is

\$I = \sum (m \times r^2)\$

Where:

\$m\$ is the mass of each object

\$r\$ is the distance from the joint to the center-of-gravity of each object

This is the simple way. You can technically model your components as simple geometric objects of uniform weight distribution (like beams, or cubes, or rectangular prisms) and look up the moment of inertia in a table. The table will provide the moment of inertia for the object spinning around it's center-of-gravity, so you have to use a simple equation called the "Parallel axis thereom" that translates that table's moment of inertia of the object about it's center-of-gravity to some arbitrary point in space (which will be your joint). Then you just add all the moment of inertias up.

For the record, I probably would not calculate moment of inertia and just pick a torque double the static torque.

Also...RC servo torque and speed ratings are not are not to be trusted. Take them with a grain of salt. They are almost certainly slower and weaker than what the manufacturer claims.

\$\endgroup\$
8
  • \$\begingroup\$ Rude and condescending. \$\endgroup\$ Commented Nov 5, 2019 at 0:28
  • \$\begingroup\$ @DanieleProcida I consider this a lack of research post. \$\endgroup\$
    – DKNguyen
    Commented Nov 5, 2019 at 0:29
  • \$\begingroup\$ Really? Did you actually read the research I posted at electronics.stackexchange.com/a/465526/200441? Or even the first sentence of the question, "I have been experimenting with various different servos"? \$\endgroup\$ Commented Nov 5, 2019 at 0:32
  • \$\begingroup\$ @DanieleProcida And nowhere in there was there any attempt to determine the torque (which just glancing at how your arm works suffice). \$\endgroup\$
    – DKNguyen
    Commented Nov 5, 2019 at 0:33
  • 1
    \$\begingroup\$ @ScottSeidman Sorry. I was a bit hungry and grumpy last night and was immediately put off by what appeared to to be a straight dash to cost cutting without any thought given to a specification that should be immediately obvious (and if it weren't, I believe should have become obvious after giving it some though since we all have arms and we all grow up with some degree of mechanical intuition). Now it's just going to cost more money than it would have otherwise. \$\endgroup\$
    – DKNguyen
    Commented Nov 5, 2019 at 19:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.