I'm not saying it's not my fault...
-
Thanks, @deckingman
I too will need to look at my homing macros to incorporate a status check, so I’d be interested to see how you’ve done it.
Other comments regarding the NC switch make sense, because that’s why I changed to nc proximity sensors on the X, Y and Z axes, rather than mechanical no switches!
Thanks, everyone!
-
@fcwilt said in [I'm not saying it's not my fault...](/post/285096
Your approach is certainly safe but what do you do then? Jog the gantry away from the endstop sensor?
Yes that's the first thing to do although it's very unlikely that my machine would be left in a position where one or more axes was hard up against an end stop. The only times it has saved me have been a genuine fault, usually related to my use of a nozzle as a probe and the associated kinematic mount which used to be a bit temperamental.
-
@nightowl999 said in I'm not saying it's not my fault...:
Thanks, @deckingman
I too will need to look at my homing macros to incorporate a status check, so I’d be interested to see how you’ve done it.
I'm away from home right now and only have my phone to hand so I can't give you the exact code. But it's in the form of "if axis(n) is homed - show message and abort". You'll have to look up conditional gcode. If you remind me in about a week, I'll post the exact code.
-
@nightowl999 said in I'm not saying it's not my fault...:
so I’d be interested to see how you’ve done it.
Here is a stripped down version of one of my homing routines.
If the endstop is triggered at the start of the move I first backoff a bit to see if it clears.
Most of the time this won't cause any problems unless the endstop was stuck on and there was no room to backoff because of the current axis position.
If that is of concern to you, simply remove the code the does the check and the backoff.
You will notice the code at the end that talks about moving to the centerline. That is because my endstops rarely are at the exact min or max position of the axis. A G1 H1 move sets the logical axis position to the axis min or max setting (depending on where the endstop is located) but that doesn't mean the axis is actually at the position. Since I always configure my printers to have X=0 Y=0 at the center of the bed, by testing I determine how far I have to move the axis, after the G1 H1 moves complete, to reach the centerline. Once I know that number it goes into the homing code followed by the G92 which then sets the logical position to 0.
; === homeY.g BOF === ; --- setup to home Y --- var msg = "" M291 R"Homing Y" P"Please wait..." T0 ; --- check Y endstop state --- if sensors.endstops[1].triggered G91 ; relative movements G1 H2 Y-35 F3000 ; if triggered backoff so both G1 H1 moves below will be performed ; --- check endstop state again to be sure it cleared --- if sensors.endstops[1].triggered set var.msg = "homeY: Cannot home - the endstop seems to be stuck on" M291 R{var.msg} P"Aborting" S2 abort var.msg ; --- home Y --- G91 ; relative movements G1 H1 Y299 F3000 ; fast move to endstop G1 Y-10 ; backoff a bit as needed to clear endstop G1 H1 Y15 F300 ; slow move to endstop ; --- finish up --- G91 ; relative movements G1 Y-117 F3000 ; move as needed to get to Y centerline of bed G92 Y0 ; sync logical and physical M291 R"Y Homed" P"Done" T1