Error: Homing failed when all axis are homed
-
@deckingman said in Error: Homing failed when all axis are homed:
@piet This is a long shot and I could be wrong but something at the back of my mind is telling me that the firmware will not normally allow homing of Z unless X and Y have already been homed. The reason being that many people use a probe which must first be moved to certain XY coordinates on the bed.
I could be wrong (often am) but try changing the order in your homeall.g so that homexy comes before homez.
Good thinking! If no Z endstop has been declared with M574 then RRF assumes you are homing using a Z probe and requires XY to be homed first. But in that case, it should refuse to home Z at the start.
-
@dc42 said in Error: Homing failed when all axis are homed:
Good thinking! If no Z endstop has been declared with M574 then RRF assumes you are homing using a Z probe and requires XY to be homed first. But in that case, it should refuse to home Z at the start.
Looking at the OP's config.g, he seems to have both a switch (M574 Z1 S1 P"!io1.in" )
and a probe (M558 P1 C"!^io3.in" H5 F120 T6000). Maybe that's his problem - and/or the order that axes are homed. -
Hi,
A few questions if you don't mind.
In the homing files you posted what is the intent of the various bits of conditional code that is testing endstop status, homed status, variable status?
Why do you have a homezy.g file? Do you also have a homex.g and a homey.g file?
Thanks.
Frederick
-
@deckingman I tried changing it so it homes X and Y first but that doesn't seem to solve it. Reason i have a Z-endstop is as a safety measure. It triggers ~15mm from the bed and stays triggered moving down. That way i always know when the extruder is close to the bed. That is also why i move it up while the endstop is triggered so it is at a safe distance from the bed for movement to happen.
-
@fcwilt Is there a specific bit you're curious about?
I do have a homex and homey file. The only difference is that in the homexy file it moves diagonally instead of homing each axis seperately. -
@piet said in Error: Homing failed when all axis are homed:
@fcwilt Is there a specific bit you're curious about?
Well how about this bit of code in your homez file?
I see what it is doing I just don't understand why you are doing it.
What is the goal?
Thanks.
Frederick
if sensors.endstops[2].triggered == true G1 H1 Z1 F360 while sensors.endstops[2].triggered == true G1 Z1 F360
-
@fcwilt As i replied to deckingman my Z-endstop triggers around 15mm above the bed and stays triggered below that. Now if i start my printer and the Z-axis isn't homed yet but the endstop is triggered i want it to move up so the endstop is not triggered anymore. However i can't move the Z-axis if it isnt homed yet. Therefore i home it first using the
G1 H1 Z1 F360
so i can move it up with the while loop. After that the endstop is not triggered anymore and i move it down once more so i can set the final home position to a predefined value.I understand it is a bit of a hassle but i want to have an endstop in place next to the probe so i know where i am at before probing.
-
@piet said in Error: Homing failed when all axis are homed:
I understand it is a bit of a hassle but i want to have an endstop in place next to the probe so i know where i am at before probing.
Thanks. I have the same Z endstop setup but mine triggers 20mm (appx) early.
You don't really need to make the test you are making.
Your Z homing code already does the typical pair of slow/fast G1 H1 moves.
The point of the two G1 H1 moves is that the first is fast to get the to endstop quickly, in case the starting point is far away, then the second is slow for unknown reasons.
If the Z endstop is already triggered at the start of Z homing the first G1 H1 "ends" immediately, sets the logical Z position to Zmin and marks the Z axis as homed.
So then the "backup" G1 executes, and then the second G1 H1 executes and homing is complete.
If the endstop triggers 15mm (appx) away and stays triggered that G1 Z3 move may not clear the endstop in all cases. G1 Z20 would always work.
Now if you really want to do a check and backup to allow both G1 H1 moves to actually move you can just do
if sensors.endstops[2].triggered == true G1 H2 Z20 ; or whatever value is needed to clear the endstop in all cases
This works because G1 H2 moves don't require the axis be homed.
Frederick
-
If the endstop triggers 15mm (appx) away and stays triggered that G1 Z3 move may not clear the endstop in all cases. G1 Z20 would always work.
I might not understand you correctly but this is why i use the while loop. It goes up 1mm everytime the endstop is still triggered. This way it does not move up more than it has to and the G1 Z3 will clear it in all cases because it is already positioned above the endstop.
I suppose it is better to use the H2 parameter, i wasn't aware the axis doesn't have to be homed with it.
I'm however still not sre why it throws the error. I've tried the solutions given earlier in this thread but they don't seem to solve the problem.
-
@piet this issue is triggered by the M291 S2 command in your homeall.g file. I have fixed it in the source code, so the fix will be in RRF 3.4.0 stable.