LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with finite minimum velocity for a servo motor.

Hi all,

I am having problems doing motion control with a servo motor. The problem is that the error (difference between setpoint position and acutal position) never, or almost never, reaches zero, but oscillates slowly about zero, e.g. 1 to -1 increments.

I do the motion control using a DAQ-card, and it is desirable that the system reaches an exact position, i.e. error=zero.

I think the problem has to do with the finite min. velocity at which my axis can move. When the axis has stopped, and the error is small, but non-zero, the PID output starts to increase due to the integral term, and the axis stays still until the output reaches a voltage that is high enough to start the axis. However, at this point the
axis moves to far, and then the same thing happens but in the opposite direction, repeatingly until by chance it manages to stop at a zero error.

The voltage-band around zero (-1 to 1V) at which the signal is too weak to start the axis I have tried to compensate with a look-up table. However, it doesn't remedy my problem, only shortens the oscillation period.

Any hints, someone?!!

thanks,
Mats
0 Kudos
Message 1 of 3
(2,660 Views)
Curry wrote:
> Hi all,
>
> I am having problems doing motion control with a servo motor. The
> problem is that the error (difference between setpoint position and
> acutal position) never, or almost never, reaches zero, but oscillates
> slowly about zero, e.g. 1 to -1 increments.
>
> I do the motion control using a DAQ-card, and it is desirable that the
> system reaches an exact position, i.e. error=zero.
>
> I think the problem has to do with the finite min. velocity at which
> my axis can move. When the axis has stopped, and the error is small,
> but non-zero, the PID output starts to increase due to the integral
> term, and the axis stays still until the output reaches a voltage that
> is high enough to start the axis. However, at this point the axis
>
moves to far, and then the same thing happens but in the opposite
> direction, repeatingly until by chance it manages to stop at a zero
> error.
>
> The voltage-band around zero (-1 to 1V) at which the signal is too
> weak to start the axis I have tried to compensate with a look-up
> table. However, it doesn't remedy my problem, only shortens the
> oscillation period.
>
> Any hints, someone?!!
>
> thanks,
> Mats


If the motor can't move when at rest due to hysteresis then you don't
need an integrator, a term there to keep the position from drifting when
on target. I would go for a tune that has no integrator and no
overshoot, you have to creep up on the target. Other than that, I would
say that you have too small a motor or too much friction in your drive.
Also, I would test to insure that it behaves the same on approaches from
the left or right (up/down) and provide a two lobed tune dependent on
direction if its the case. OK?
0 Kudos
Message 2 of 3
(2,660 Views)
Thanks for your answer, C.o.N.!

You are right, I too think the motor is not a very good one (actually it is taken from a windscreen wiper). Maybe I will have to use another gearing to get down its speed, with the tradeoff of having a lower max. speed.

I think however that the I-part in the controller is necessary. Otherwise it doesn't reach zero-error!

Another wild idea I had was to decrease the servo loop rate, to somehow decrease the impulse (delta_T*Voltage?) when the controller tries to compensate for the error. Have not had the chance to try it yet however.

/Curry
0 Kudos
Message 3 of 3
(2,660 Views)