I have a routine to find a limit switch. When the switch is triggered I issue .stop & set the position as 0 (my new home position).
but it is not a hard stop, it decelerates thus traveling past the limit switch which of course makes sense because of the .setAcceleration command.
I want to disable .setAccceleration when hunting for the limit switch. Once my endpoints are set, I can re-enable the .setAcceleration back to normal.
I don't know how to do this.
I have tried stepper.setSpeed in setup and stepper.runSpeed() in loop which works. I get a hard stop.
After that I want to do position movements with .setAcceleration, .moveTo and .run (notrunSpeed!)
I think I am going about this wrong or don't know of the correct function. Cranking up the value for .setAcceleration won't work because it is still not a hard stop.
The thought would be just run your limit hunting with .setSpeed &.runSpeed initially, the use .setAcceleration and .run.
But I want to jump back and forth for re-calibration at anytime.
What's the generally accepted way to find limit position with a hard stop, then jump into positional movements with .setAcceleration?
When trying to find a limit switch just move the motor one step at a time.
Many systems cruise through the limit switch at some speed, stop and back up enough to pass it and then approach it over a shorter distance one step at a time.
What happens if you do stepper.moveTo( stepper.currentPosition());
But you must keep in mind that an attempt at a sudden stop can cause the motor to miss steps.
What happens if you do stepper.moveTo( stepper.currentPosition());
It accelerates.
I cranked the acceleration rate up to 1200 and slowed down the speed. So I have it stopping pretty hard even with acceleration. Not ideal, but it works.
I am running 32 micro step mode and only opening 90 degrees at a pretty slow speed. The current fix seems ok.
My 3D printer moves towards the limit at high speed, touches the limit, then backs off and touches it again at a slower speed. Perhaps that would work for you.
DivinerGregg:
I want to disable .setAccceleration when hunting for the limit switch. Once my endpoints are set, I can re-enable the .setAcceleration back to normal.
No, that will miss steps and make for inaccurate/random homing. Its worth studying the various
options and methods EMC2 (aka LinuxCNC) uses for homing - out of the box its highly configurable,
but basically allows for fast, then slow pass, and also can arrange that homing is done in a particular
direction (assumption is the homing sensor is more accurate in one direction).
Emergency stop is another thing - that might be sensible to implement by disabled all calls to run():