purpose of using min/max endstops
Hi,
Problem I faced today was with behavior of max
endstops. I wanted to use Repetier FW as CNC so for safety reasons I mounted
all 3 MAX endstops + 3x MIN.
My surprise was that they do not work as I
expected. And what were my expectations? Just to stop motor when max endstop is
triggered and I noticed that FW does not work like that.
All three MIN endstops are read while homing
procedure, when it is finished they are ignored, as well as MAX endstops.
Let's imagine a situation:
1. Z homing triggered manually at 10mm high. FW
sets it as Z home and any move up and then down sets axis at 10mm level. This
is OK;
2. Z homing triggered manually at 10mm high. FW
sets it as Z home and any move up to 20mm and then again down but at 15mm
let's trigger Z min endstop. Motors are still running until they
"reach" zero position at 10mm.
I ideal world it would be OK but we do not live in
such an environment.
Another situation:
X axis homed. Goes to 100mm and back to 10mm and
while it is running to 10mm for whatever reason cartridge was stopped at 50mm.
X motor does not know that and "thinks" 10mm position was reached,
but in fact it was not. Then X has to reach 180mm (20mm to end position) so in
reality it goes to 220mm position, 20mm out of physical possibilities.
I wrongly assumed that MAX endstops would prevent
this but in fact they do not! With X MAX endstop triggered motor will move
forward without any problem!
Is it me only thinking that it should not work
like that and HW endstops should prevent FW from moving motors when min/max
direction was "stopped" with proper endstop?
Is there any other way to set MAX/MIN endstops to
stop motors when endstop is triggered?
edit:
I found an option:
Always check endstops. Only enable if you have no cross talk from your motors, which could trigger wrong signals causing the print to skew. (ALWAYS_CHECK_ENDSTOPS)
which it looks does the job.
Comments
Do you mean that if #define USE_XMAX_PLUG is de-activated, they are not checked (which I assume), or do you mean if ALWAYS_CHECK_ENDSTOPS is disabled, they will not be checked?
For definition of cross-talk ask google. In short iduction from motor cables can cause voltages on signal wires causing a stop if the treshhold is reached.