Backlash on CoreXY
Hi , as far as i know backlash compensation in firmware is only for cartesian machines, but what about z-axis on a corexy ?
in my case i use a 12X4 ballscrew for my z axis , and as nearly all spindles it has a (quite small) backlash.
paired wit preloaded linear rails the backlash is not compensated by weight of heated bed , in my machine its 0.035mm.
as i want to get maximum possible precision where can i start in firmware?
Comments
ok, found it twice , once in queueCartesianSegmentTo , the second in queueCartesianMove
replaced the following :
back_diff[X_AXIS] = (changed & 1 ? (p->isXPositiveMove() ? Printer::backlashX : -Printer::backlashX) : 0);
back_diff[Y_AXIS] = (changed & 2 ? (p->isYPositiveMove() ? Printer::backlashY : -Printer::backlashY) : 0);
back_diff[Z_AXIS] = (changed & 4 ? (p->isZPositiveMove() ? Printer::backlashZ : -Printer::backlashZ) : 0)
by
#if DRIVE_SYSTEM == 0back_diff[X_AXIS] = (changed & 1 ? (p->isXPositiveMove() ? Printer::backlashX : -Printer::backlashX) : 0);
back_diff[Y_AXIS] = (changed & 2 ? (p->isYPositiveMove() ? Printer::backlashY : -Printer::backlashY) : 0);
back_diff[Z_AXIS] = (changed & 4 ? (p->isZPositiveMove() ? Printer::backlashZ : -Printer::backlashZ) : 0);
#else if DRIVE_SYSTEM == 1 || DRIVE_SYSTEM == 2
back_diff[X_AXIS] = 0;
back_diff[Y_AXIS] = 0;
back_diff[Z_AXIS] = (changed & 4 ? (p->isZPositiveMove() ? Printer::backlashZ : -Printer::backlashZ) : 0);
#endif
and in repetier.h from :
#if ENABLE_BACKLASH_COMPENSATION && DRIVE_SYSTEM != CARTESIAN && !defined(ENFORCE_BACKLASH)
to :
#if ENABLE_BACKLASH_COMPENSATION && DRIVE_SYSTEM >= 2 && !defined(ENFORCE_BACKLASH)
think that will do the Job for me , will check it out tonight and give you feedback