0
$\begingroup$

I'm designing a piston that I need to expand a few cm in <100ms to load energy into a spring-mass system with around a pound of force (as shown below). Based on power specs alone, high-end hobby servos are light, strong and cheap enough for my needs: they simulate well when I'm able to push max voltage into them right away (i.e. operating them on the max torque-speed curve).

enter image description here

What I'm concerned about is the torque behavior in real-world servos. I'm interested in digital high-torque, high-frequency servos, typically used for steering in RC vehicles, that are either coreless or brushless. As a representative example, consider something like the Savox SV1272 or SB2274 (resp.), with refresh rates of 333Hz.

Is anyone aware if servos like this hold back on their power output with some kind of integrating control/loop delay in response to a step function? The tight timing of the stroke is what really concerns me: even if they wait for ~50ms I could lose most of the energy.


Looking around for clues, I've seen this comment here that links to this linearized position model of a Futaba servo as an example. This model is a PID controller in position rather than torque, so I imagine this is the response you get from operating below the torque-speed ceiling, while I really want to know the delta → torque behavior along that ceiling.

$\endgroup$
4
  • $\begingroup$ It this for a hobby servo like the Futaba mentioned? Digital or analog servo? Brushed or Brushless? $\endgroup$ Commented Mar 2, 2021 at 4:49
  • $\begingroup$ @ScienceGeyser Fair questions, I've updated the post. In order: a) kind of insofar as the same form factor, but digital and a fair bit higher power. It was just the only data-backed response function I could find in my search; b) Digital. c) If they differ here, whichever responds faster in torque is what I care about. High-end coreless servos have similar nominal specs to BLDCs, so from that standpoint I'm unopinionated. $\endgroup$
    – concat
    Commented Mar 2, 2021 at 5:02
  • $\begingroup$ Okay, one more clarification. What is the mechanical movement of the step function. Distance? Required speed? Could you provide a basic mechanical drawing of the proposed system? $\endgroup$ Commented Mar 2, 2021 at 8:25
  • $\begingroup$ @ScienceGeyser It's a step in target position (i.e. a step in pulse width for these digital hobby servos). See the post for a mechanical drawing, where the motor pushes on a spring and accelerates itself and a mass. $\endgroup$
    – concat
    Commented Mar 2, 2021 at 8:45

1 Answer 1

1
$\begingroup$

Generally, for small movements (or steps), most servos are torque limited to prevent overshoot and oscillations. If you change the input pulse timing by 20uS, the motor will not reach full torque before it starts braking the motor to stop. The motor torque is also throttled at the end of the desired motion to prevent overshoot of the target position. Even when moving about 10 degrees (100uS change in pulse width) the motor will not reach full torque before it starts to get throttled to stop. At movements of about 15 degrees the motor will reach maximum speed in about 20-40 mS (depends on load), but then is throttled to stop within 10-20 mS. Greater movements sustain maximum speed for longer, of course.

So, If 50 mS is problematic in your system, you will likely have problems with the servo response.

One additional note is that servos can behave poorly with elastic loads.

As far as the specific servos that you reference, I don't have experience with those. The second one claims 12 bit resolution, I'm guessing this is the encoder resolution that is probably a magnetic sensor rather than a potentiometer like the old-school servos. If these servos are very high accuracy, this definitely requires some advanced motor current control schemes that will limit torque for low angle moves and at the end of the movement as the angle approaches the set point.

Some scope traces measuring motor current @300mA/V Ch1 and motor voltage (across motor terminals) Ch2. Servo is JX 5521 digital with a constant elastic load. Notice that the rise time on motor current stays the same no matter the step size of the setpoint. Also, you can see by the commutation glitch frequency that the speed is still increasing even after the current reaches its maximum. Time constant on this servo is about 28 mS for max current and >70 mS for max speed.

Image 1 - 100 uS step from 1500 uS to 1600 uS.

Image 1 - 100 uS step from 1500 uS to 1600 uS.

Image 2 - 200 uS step from 1400 uS to 1600 uS.

Image 2 - 200 uS step from 1400 uS to 1600 uS.

Image 3 - 400 uS step from 1300 uS to 1700 uS.

Image 3 - 400 uS step from 1300 uS to 1700 uS.

$\endgroup$
3
  • $\begingroup$ For clarity, the servo will be held at one endstop, then commanded to the other, so an initial delta of >100º and a total travel of ~30º. Have you found your 20-40ms figure to be dependent on delta? $\endgroup$
    – concat
    Commented Mar 2, 2021 at 10:35
  • $\begingroup$ No, It's not dependent on the setpoint delta. I think this time is dependent on the spin-up of the motor and gear-set and is caused by over-current limiting in the motor. When the motor is still, the initial current would be equal to the motors stall current if it were not limited. As the motor speeds up and the back EMF builds the controller stops throttling the current and the motors back EMF starts limiting the current. This could be faster on the brushless servos but I don't have any to test, so I can't say for sure. $\endgroup$ Commented Mar 2, 2021 at 10:58
  • $\begingroup$ Come to think of it, it could be the motor coil inductance. Coil resistances of \~100m&Omega; and inductance of \~1mH will put the time constant around 10ms. Did you identify this delay through an oscilloscope? If so, what does the current ramp look like? $\endgroup$
    – concat
    Commented Mar 2, 2021 at 18:26

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.