immediate backlash take up

Moderators: TomKerekes, dynomotion

Post Reply
robosilo
Posts: 2
Joined: Wed Mar 13, 2019 2:08 pm

immediate backlash take up

Post by robosilo » Wed Mar 13, 2019 2:18 pm

Is there a way to set the backlash to be taken up upon completion of a movement instead of waiting until direction is reversed? I have the backlash set for my z-axis but I'd like the screw to reverse immediately once the destination is reached to make sure the weight is loaded on the screw in the pulling direction.
Thank you,
Erik

User avatar
TomKerekes
Posts: 2529
Joined: Mon Dec 04, 2017 1:49 am

Re: immediate backlash take up

Post by TomKerekes » Wed Mar 13, 2019 7:27 pm

Hi Erik,

That wouldn’t be normal as there isn’t a way to tell if the next motion will continue forward or reverse.

You could add in a microscopic reversal in the GCode to cause it to occur.

Otherwise you could write a C Program to detect stopped motion and force the backlash reversal.
Regards,

Tom Kerekes
Dynomotion, Inc.

robosilo
Posts: 2
Joined: Wed Mar 13, 2019 2:08 pm

Re: immediate backlash take up

Post by robosilo » Thu Mar 14, 2019 11:52 am

Thanks Tom,

I did think about editing the post processor to accomplish this. I don't think the post processor lets me edit commands for just the Z-Axis but I'll look again into adding:
G91 G01 Z-.0001
G01 Z.0001
G90

If I go the C-program route would I use something along the lines of:

while(!CheckDone(Zaxis)); // wait until movement stops
MoveRel(Zaxis) = -1; // move one encoder count negative
MoveRel(Zaxis) = 1; // move in positive direction
while(CheckDone(Zaxis)); // block until movement commanded again

User avatar
TomKerekes
Posts: 2529
Joined: Mon Dec 04, 2017 1:49 am

Re: immediate backlash take up

Post by TomKerekes » Thu Mar 14, 2019 7:22 pm

Hi Erik,
If I go the C-program route would I use something along the lines of:

while(!CheckDone(Zaxis)); // wait until movement stops
MoveRel(Zaxis) = -1; // move one encoder count negative
MoveRel(Zaxis) = 1; // move in positive direction
while(CheckDone(Zaxis)); // block until movement commanded again
No those commands are related to Independent axis movements not coordinated motion type of movements (GCode).

You might try this C Code:

Code: Select all

#include "KMotionDef.h"
#define ZAXIS 2

void main()
{
    for (;;)
    {
        double LastDest = chan[ZAXIS].Dest;
        WaitNextTimeSlice();
        if (LastDest == chan[ZAXIS].Dest)    // stopped?
            chan[ZAXIS].BacklashDirection = -1;    // yes, force reverse direction
    }
}
Regards,

Tom Kerekes
Dynomotion, Inc.

Post Reply