Re: EMC backlash (was EMC-programming request)
Posted by
Ron Wickersham
on 1999-07-19 13:51:00 UTC
hi Fred,
my backlash experience is with a mill with stepper motors and ball screws
which developed backlash due to the fixed axial thrust bearings on one axis.
it was going to be a big deal to disassemble this axis to correct the problem
so i wrote backlash correction into my control software.
my algorithm is functionally the same as yours and i chose only to invoke
the correction when motion changed direction, and agree that there is no
apparent reason to take action at rest for a milling machine where the
tool forces may be in any direction. (i guess one could argue for moving
to the center of the lash range to minimize errors when the tool forces are
large enough to force the table).
but for a lathe, it would make sense to set comp_value to backlash / 2
for both moving positive and no motion since the cutting forces come from
one direction only. this mimics the action of an operator on a conventional
lathe who makes sure to take up the lash for accurate cuts.
-ron
my backlash experience is with a mill with stepper motors and ball screws
which developed backlash due to the fixed axial thrust bearings on one axis.
it was going to be a big deal to disassemble this axis to correct the problem
so i wrote backlash correction into my control software.
my algorithm is functionally the same as yours and i chose only to invoke
the correction when motion changed direction, and agree that there is no
apparent reason to take action at rest for a milling machine where the
tool forces may be in any direction. (i guess one could argue for moving
to the center of the lash range to minimize errors when the tool forces are
large enough to force the table).
but for a lathe, it would make sense to set comp_value to backlash / 2
for both moving positive and no motion since the cutting forces come from
one direction only. this mimics the action of an operator on a conventional
lathe who makes sure to take up the lash for accurate cuts.
-ron
On Mon, 19 Jul 1999, Fred Proctor wrote:
---snip---
> I'd like to gather as much information on backlash compensation as I
> can. The algorithm works like this:
>
> /* begin */
> if (moving positive) then
> comp_value = backlash / 2
> else if (moving negative) then
> comp_value = -backlash / 2
> else
> /* leave comp_value as is */
> endif
>
> comp_output = command_output + comp_value
> /* end */
>
> One variation of this sets the comp_value to 0 in the last else clause,
> which moves the motor into the middle of the backlash range when motion
> stops. This resulted in an extra motion in the reverse direction when a
> move stopped, which I didn't like, but if there's a good reason for this
> someone let me know.
>
> --Fred