purpose of using min/max endstops
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.
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?
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.