-
-
Notifications
You must be signed in to change notification settings - Fork 19.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
LIN_ADVANCE does not work with DELTA #7521
Comments
Good and true information. I just wasn't reading them in time. thinkyhead added the sanity check as he also found out that it's incompatible. One important thing I learned is to put a note into the LIN_ADVANCE section of configuration_adv to mention "@Sebastianv650" or I will likely never read the related issue reports X-) |
for this i suggest to look at pull request #8778 |
I dont experience any issues with lin_advance on my delta since 1.1.6 even 1.1.8 disable sanitycheck.h for Delta and Lin_Advance, no problems.
I must be an anomaly |
@mylife4aiurr it will probably work in a degraded manner, but I doubt it provides optimal results due to the issues I laid out. @filippor I completely forgot about this issue when I was working on #8878. But to your point, that solution is basically an implementation of what I outlined above. |
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs. |
I tried
LIN_ADVANCE
on my Delta machine, and it did not go well. With any non-zero value for K, the extruder would shudder violently and ultimately retracted the filament as opposed to feeding anything. I've been looking through the code, and I have a few thoughts as to why this is happening.First, the
a
,b
, andc
parameters passed toPlanner::_buffer_line
for a Delta machine are the distances to move the tower carriages. However,Planner::_buffer_line
computes the distance of the move as ifa
,b
, andc
are in the XYZ coordinate system. As suchmm_D_float
andblock->millimeters
do not represent the actual distance that the nozzle moves.To correct this issue,
Planner::_buffer_line
needs to know the starting and ending coordinates of the move in the XYZ coordinate system. One solution would be to callforward_kinematics_DELTA
to determine these coordinates, but that would be rather expensive. Another option is to provide either the XYZ delta in mm toPlanner::_buffer_line
when the machine is a Delta type, so that it can calculate the actual length of the move in the XYZ coordinate system. This should be easily achievable sinceprepare_kinematic_move_to
can simply providesegment_distance
toPlanner::buffer_line
(which callsPlanner::_buffer_line
).Second,
block->use_advance_lead
is set totrue
if there are steps in the X or Y axes, but these once again correspond to movement of the carriages on the towers and not movement in the XYZ coordinate system. The seemingly simple solution would be to check thatblock->steps
are not equal for the ABC axes since moving all three carriages an equal amount results in the nozzle moving up or down in the Z axis. However, I believe the Delta calibration offsets can result in the steps not being equal for a Z only movement. A better solution is to use the same solution as the previous issue and look at the XYZ delta in mm and verify that there is movement in the XY plane.I'll try to implement fixes to these two issues and see what happens. If anyone has any other insights into this problem, please chime in.
In the meantime, we might consider adding a sanity check to verify that
LIN_ADVANCE
is not enabled withDELTA
since it currently does not workThe text was updated successfully, but these errors were encountered: