Proposal for flexible endstop configuration in RRF 2.03
-
I hope this is not too far off-topic, but regarding backward-compatibility of G-/M-codes:
Whats the plan for the future for config files? At some point there were discussions about moving to a human-readable key-value style configuration system.3 out of 6 listed objects would be immediately solved if the "one and only" configuration format for the future would be key-value style...
But I suppose you plan a more gradual upgrade and want to keep both config systems in parallel use?
-
We may or may not support key-value style configuration after we have finished implementing the object model. It may come only to Duet 3.
-
@dc42 May I suggest that if and when this is implemented, a table is included in the Wiki for M574 with the physical end stop labels in the left hand column and the "P" value in the right hand column. Basically to make it easier to see that end stop labelled "E0" is referred to by P3, etc. I guess its a pity that the end stops (and drives) are physically labelled as they are on the boards but hindsight is always 20:20.
-
@dc42 The suggested approach, while achievable with current firmware if we ignore the endstops remapping part, will clearly allow anyone to configure proper axis alignment with much simpler macros. Thus I'm totally for the improvement as there are quite a few questions on the forum on this matter.
Still related, it is not unusual to have Z0 for the top of the axis in CNCs, with negative values when lowering the spindle. With the homing switch installed on top, would the firmware move the Z-axis up? When I tried this, about 9 months ago, the firmware tried homing away from 0, no matter what.
-
@catalin_ro said in Proposal for flexible endstop configuration in RRF 2.03:
@dc42 The suggested approach, while achievable with current firmware if we ignore the endstops remapping part, will clearly allow anyone to configure proper axis alignment with much simpler macros. Thus I'm totally for the improvement as there are quite a few questions on the forum on this matter.
Still related, it is not unusual to have Z0 for the top of the axis in CNCs, with negative values when lowering the spindle. With the homing switch installed on top, would the firmware move the Z-axis up? When I tried this, about 9 months ago, the firmware tried homing away from 0, no matter what.
Thanks for your feedback.
If you are homing Z using an endstop switch, the direction of movement while Z homing is determined by the direction you put in your G1 S1 Z commands in homeall.g and homez.g. Positive Z will home to increasing Z value, which is up in your example. Remember to use G91 to select relative motion before the G1 S1 Z command, and to set the M208 upper and lower limits correctly.
-
I guess my only comment would be to make sure the endstop numbers match the motor controller numbers. It looks like you do, but I figured I would mention it.
Another thing for future duet boards (off topic) is to label the motor controllers in silkscreen not only what their default setting (as it is now, ie y motor, x motor) but by their motor number (MC 0, 1, 2, etc). It sometimes gets confusing when you aren’t wiring all the time (last time was months ago) and having to remember motor numbers aren’t in order of their position on the board.
-
The Duet 3 prototypes have the motor outputs numbered. The "endstop inputs" are 5-pin connectors supporting general purpose low-speed I/O and are likewise numbered. The heater and fan outputs are interchangeable (subject to rated current) so they are also numbered.
-
I think you've got the bases covered. The only situation not explicitly mentioned (unless I missed it) was having both min and max endstops on an X/Y axis. For example, my M584 looks like this...
M584 X0:3 Y1:4 Z5:6:7 E2 P3
Based on what I read I think my Z axis is covered with being able to use 3 independent Zmax endstops and having each motor stop when the endstop assigned to it is triggered (coarse bed leveling). For the X/Y axes, can I have both a min and a max? -
@dc42 I still have the dynamic force gantry installed (but disabled) on my coreXYUV printer. It was largely a waste of time because the vibrations it cancels out don't actually have a negative effect on print quality. However, it does stabilise the printer and stops it rocking about when I print at higher speeds so (as it's there) I might as well use it. What was stopping me was that I never found a way to home this additional (coreXY) gantry. Will this new proposal allow me to do that?
Currently I split the axes, home X then home U then Y then V then re-combine the axes into X and Y. So what I would envisage would be carry out the above procedure but before combining axes map the third gantry motors to (say) XY and also map the third set of end stops. Then repeat XY homing (with those end stops and motors) and finally combine all 3 pairs of motors to XY. Would that work? Or would I use some other procedure?
The third gantry is completely independent of the other two - i.e there are no Bowden tubes coupling this gantry to the others unlike the XY UV gantries.
Hope that makes sense.
-
@deckingman, the new generalised Cartesian kinematics supported by my current internal build should already support homing your additional axes. You would configure them as W and A axes (or A and B) for the purposes of homing them independently of X and Y and use the first 2 endstop inputs on the DueX5.
-
Maybe it is already possible, but I do not know how to... I would like to MEASURE my axis. I use sensorless homing. And set the size of the printing area. Would be possible to just measure the travel length of an axis using sensorless homing?
-
@brunofporto said in Proposal for flexible endstop configuration in RRF 2.03:
Maybe it is already possible, but I do not know how to... I would like to MEASURE my axis. I use sensorless homing. And set the size of the printing area. Would be possible to just measure the travel length of an axis using sensorless homing?
That's already possible, if you can get stall detection to work reliably at both ends of the axis (it's probably easier to get a hard stall when the motor is pulling the carriage towards it, so that the length of belt under tension at the point of stall is small). Home to one end using a G1 S1 move, then measure the position of the other end using a G1 S3 move.