Slow down before endstop?
-
@cjm from a code point of view, the controller already has the ability to carry on with the gcode... sure, it may have steps in a buffer to flush, but there's already that next step. it's mostly a question of how fast can it start executing that next step.
That said, it would already have the deceleration steps and timings in the buffer, the interrupt would be mostly about skipping N places in the buffer for it to slow down gracefully without much exception handling...
...would be my guess as a software dev, but it's just a guess
-
@thekm Iโm sure youโre right that implementing a buffer flush/defined deceleration down to stop after a trigger event is eminently doable from a firmware code point of view.
I was thinking also about helping the Duet team see the need for this (i.e. putting it on firmware wish list) and adding a vote to support its introduction, in comparison with the many other priorities they must have.
-
Given that we already have G1 parameters H1, H3 and H4 which terminate the move it might be simplest to have a new parameter, say H5, which would behave like H4 but would respect the M201 setting for that axis.
That would seem to be a simple update requiring no additional parameters. It could involve using M201 to set a temporary deceleration value if desired and then reset it.
The next step would be to add a additional parameter to G1 for use with H5 which would specify the deceleration to use and eliminating the need to use M201.
I'm sure @dc42 could tell us how much work those two approaches would be.
Frederick
-
@fcwilt ...yup, your spiel about "H5" is my thought exactly. We could then find out how long the stop takes from jogging speed, place the switches and then figure out the gcode that would follow after it.
-
@fcwilt ... created a thing in the wishlist
https://forum.duet3d.com/topic/24900/g1-option-to-apply-max-deceleration-to-stop
-
@thekm said in Slow down before endstop?:
Is there any way to connect a sensor that's near the endstops so that it can tell the machine to slow way down before touching the endstop?..
Y'all need to take a step back a minute and stop making everything so complicated.....
@theKM are you using RRF3 by chance?
Z_Probe in Mode 1 already does this. Its made use of with the mini IR-Probe. When the probe's raw analoge data hits the 500/1000 threshold, the machine slows down just like the OP is wanting.
Since you can define multiple probes, and can define probed as endstops, I think the heavy lifting is already done. We just need to confirm we can confgure the other probes similarly with Mode 1.
https://duet3d.dozuki.com/Wiki/RepRapFirmware_3_overview#Section_M558
I think then that you would have to use a device that will generate the analog signal like the IR_probe, or use IR_Probes for endstops. I can imagine a rheostat wiper as part of a voltage divider circuit behaving simlarly.
@theKM i gotta ask, if you are driving that much weight, are stepper motors really the best way to go for your motion system? you might be better off with a closed loop system and controller that can tell abs and rel positions at all times.
-
What you say is/may be true but that could/would make things more complicated.
What is being suggested regards H5 allows using a typical endstop sensor for both purposes, a fast approach to the location of the endstop without an abrupt stop and then normal endstop move.
I personally would rather not have to install two additional axis probes.
Frederick
-
Y'all need to take a step back a minute and stop making everything so complicated.....
...I enjoy being told to stop making it so complicated, and then being given an explanation that's much more complicated than what I'm after ...which is pretty simple; can G1 be given an option to decelerate to zero rather than a hard stop. This can operate with basic switches. How can it get simpler than that?
To answer your question, "are stepper motors really the best way to go for your motion system?"... likely not, but I'll happily accept your donation of a closed loop upgrade. It's the machine I have, it works... but like literally everyone on this forum, just tinkering with it to find ways to make it more productive incrementally. Being able to home it efficiently from anywhere would be handy.
-
@thekm said in Slow down before endstop?:
...closed loop upgrade.
I have a number of closed loop systems that I have tested but none of them provide information about what the current position is.
With the current RRF firmware they are treated like an open loop system.
I don't know if the RRF firmware has/or will have any provision for dealing with a system that can provide position information.
Frederick
-
@thekm the probe and type already have the functionality that you want built into it.
how is using what you already have to use of more complicated than a NEW G1 parameter?
-
@sinned6915 The suggestion of using a mode 1 Z-probe certainly sounds an interesting solution.
However, are we absolutely certain that it does give a controlled deceleration, rather than just forcing a stop like all the other Z-probe options?
I ask because this appears to be an undocumented feature, although I might well have misread the Duet dictionary!
-
@sinned6915 ...so, your less complicated solution is to set up the circuitry of the switches so that it emulates the analog output of an IR probe...
(pregnant pause)
...clearly we have different definitions of what "more complicated" means.
-
@sinned6915 said in Slow down before endstop?:
@thekm the probe and type already have the functionality that you want built into it.
I looked at the docs but I cannot figure out how to connect a given probe to a given axis.
This states a probe is to be used for the X axis:
M574 X2 S2
This configures a switch type probe:
M558 P5 C"io8.in" H300 F300 T300 R0.0 A1 S0.01
G1 P500 X0 Y0 Z0But what connects the two?
Frederick
-
But what connects the two?
G38
-
@sinned6915 said in Slow down before endstop?:
But what connects the two?
G38
Thanks. I will give it a try.
But it is more complicated than just changing the behavior of an existing endstop.
Frederick
-
...I see the two feedrates in 558 that I wasn't seeing before (nor someone nicely saying "you can provide both the fast and slower rates with 558")...
M558 F600:120
...so, voltage dividers to 1 or 2 volts on the first switch to emulate the initial analog, then send it high with the endstop?
...I guess I'll go play a little. Thanks for the help, generally appreciated.
-
@fcwilt said in Slow down before endstop?:
But it is more complicated than just changing the behavior of an existing endstop.
I dont see how a probing command is any more complicated than homing or controlled move command.
G38.2 K5 X0
-
@thekm that might work of you wire them in parallel, not sure of the voltage divider though. voltage dividers are 'dirty signals'. if the MCU tolerates it you might be ok.
you might have more consistent repeatability with an opamp instead of the voltage divider.
-
@sinned6915 said in Slow down before endstop?:
@fcwilt said in Slow down before endstop?:
But it is more complicated than just changing the behavior of an existing endstop.
I dont see how a probing command is any more complicated than homing or controlled move command.
G38.2 K5 X0
Assume. The endstops of the kind discussed previously are in place and working. The new goal is to have the first movement slow to a stop, the last stop immediately as done now.
; as done now for a Xmax endstop G91 G1 H1 Xmax Ffast G1 X-25 G1 H1 X30 Fslow ; with new parameter G91 G1 H5 Xmax Ffast G1 X-25 G1 H1 X30 Fslow
-
@fcwilt ...with an extra line to change the endstop switches from the proximity to the endstop?