4 motors on one axis homing
-
Hello
I building a laser engraver with Duet3 + Duet 3 Expansion board 3HC
I have 2 motors on X (both motors moves one X belt), 4 Motors on Y (two motors moves left Y belt, two motors moves right Y belt) and 2 on Z (8mm lead screw).
Can I use sensorless homing in case of 2 motor moving same belt?
what will the Homeall file look like in this case?
Do I need to change motors mapping?; Drives
M569 P0.0 S1 ; physical drive 0.0 goes forwards
M569 P0.1 S1 ; physical drive 0.1 goes forwards
M569 P0.4 S1 ; physical drive 0.5 goes forwards
M569 P0.2 S1 ; physical drive 0.2 goes forwards
M569 P0.3 S1 ; physical drive 0.3 goes forwards
M569 P1.0 S1 ; physical drive 1.0 goes forwards
M569 P1.1 S1 ; physical drive 1.1 goes forwards
M569 P1.2 S1 ; physical drive 1.2 goes forwards
M584 X0.2:1.2 Y0.0:0.3:0.4:1.0 Z0.1:1.1 ; set drive mapping
M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z400.00 ; set steps per mm
M566 X600.00 Y600.00 Z100 set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z200.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z60.00 ; set accelerations (mm/s^2)
M906 X1200 Y2400 Z1200 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X300 Y680 Z120 S0 ; set axis maxima
... -
Using endstops to home is pretty easy in RRF3.
Using sensorless homing is also straightforward. Just define the sensorless endstop type and it will take care of the rest. Home the axis as normal. Though you will have to tune the stall detection settings, and long belt runs and multiple motors might make that a bit harder.
Endstop switches really not an option?
-
I probably can place endstops for the Y axis. But for X and Z it will be almost impossible.
For sensorless homing should I use both motors pulling one belt or just one of them? -
@phaedrux any idea if sensorless homing should use both motors pulling one belt or just one of them?
-
@dk
How would you use only one motor? Turning down the motorcurrent works per axis and is the same for all motors AFAIK. -
Why multiple motors on a single belt?
Thanks.
Frederick
-
@o_lampe
in this case endstop detection will be considered at a stall detection from the first of the two motors if they do not stall simultaneously? Or do both motors need stall detection to trigger the endstop? -
@fcwilt
Heavy X axis with Z axis mounted on it.
taking into account the low cost of the steppers, and 6+3 driver on Duet3 + 3HC I decide to put 2 motors for 1 belt and thereby reduce the backlash and increase the torque. Which is especially important for high accelerations of a heavy head. And I plan to put a spindle in addition to the print head to be able to finish the surface after printing and drilling holes -
@dk said in 4 motors on one axis homing:
and drilling holes
You think there's enough bed adhesion to keep the part in place while drilling?
Don't get me wrong, I like the idea.
Maybe I'd use a quick release mount for the spindle and only attach it when needed. -
Stall homing resolved.
But I cant get Y to home properly. I add 2 endstop for each of Y rails and everything work great if I use only 2 Y motors, one for left rail and one for right rail. But my setup have two Y motors on both rails (4 total for Y).
M584 X0.2:1.2 Y0.0:0.3:0.4:1.0 Z0.1:1.1 ; set drive mapping
In this case first homing stops when the first endstop is triggered.
@dc42
Is it possible to independently homing the right and left rails of the Y axis if there are 2 motors on right rail and 2 motors on left rail of Y axis? -
@dk https://duet3d.dozuki.com/Wiki/Gcode#Section_M574_RepRapFirmware_Num_3
See M574 S4 for multi-motor load stall detection.
-
@phaedrux
Yes, S4 works well on Z - 2 motors on Z stopped individually. But for Y axis I use 2 optical endstop and so my only choice M574 S1
But because of 4 motors on Y, left and right rail do not stoped individually -
Ah ok. It's even easier with with endstops, you just need to specify all the endstop pins used for that axis in the M574 command.
Please post your full config.g
-
@phaedrux
Config fileG90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"Duet3" ; set printer name; Drives
M569 P0.0 S0 ; physical drive 0.0 goes forwards
M569 P0.1 S1 ; physical drive 0.1 goes forwards
M569 P0.4 S1 ; physical drive 0.5 goes forwards
M569 P0.2 S1 ; physical drive 0.2 goes forwards
M569 P0.3 S0 ; physical drive 0.3 goes forwards
M569 P1.0 S1 ; physical drive 1.0 goes forwards
M569 P1.1 S1 ; physical drive 1.1 goes forwards
M569 P1.2 S1 ; physical drive 1.2 goes forwards
M584 X0.2:1.2 Y0.0:0.3:1.0:0.4 Z0.1:1.1 ; set drive mapping
M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
M92 X80.00 Y80.00 Z400.00 ; set steps per mm
M566 X900.00 Y900.00 Z90.00 ; set maximum instantaneous speed changes (mm/min)
M203 X19000.00 Y19000.00 Z900.00 ; set maximum speeds (mm/min)
M201 X1200.00 Y1200.00 Z120.00 ; set accelerations (mm/s^2)
M906 X800 Y2200 Z1000 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X300 Y660 Z110 S0 ; set axis maxima
M564 H0 ; allow move without homing; Endstops
M574 X1 S3 ; configure sensorless endstop for low end on X
M574 Y1 S1 P"0.io0.in+1.io0.in" ; configure active-low endstop for low end on Y via pin io0.in
M574 Z1 S4 ; configure sensorless endstop for low end on Z
M915 X Z R0 F0 ; configure sensorless homing for X and Z; Z-Probe
M558 P0 H5 F1200 T6000 ; disable Z probe but set dive height, probe speed and travel speed
M557 X50:250 Y50:650 S50 ; define mesh grid; Heaters
M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0
M950 H0 C"out0" T0 ; create bed heater output on out0 and map it to sensor 0
M307 H0 B1 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp1
M950 H1 C"out1" T1 ; create nozzle heater output on out1 and map it to sensor 1
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S280 ; set temperature limit for heater 1 to 280C; Fans
M950 F0 C"out4" Q500 ; create fan 0 on pin out4 and set its frequency
M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"out5" Q500 ; create fan 1 on pin out5 and set its frequency
M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on; Tools
M563 P0 F-1 ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C; Custom settings are not defined
; homeall.g
; called to home all axes
;M400 ; Clear buffer
M913 X30 Z50 ; Drop motor current 30% for X 50% for Z
M400 ; Clear buffer
G91 ; relative positioning
G1 H2 Z5 F600 ; lift Z relative to current position
G1 H1 X-305 F6000 ; move quickly to X axis endstop and stop there (first pass)
G1 H2 X5 F6000 ; go back 5 mm
G1 H1 X-15 F3000 ; move slowly to X axis endstop once more (second pass)
G1 H1 Y-685 F3000 ; move quickly to X and Y axis endstops and stop there (first pass)
G1 H2 Y5 F5000 ; go back a few mm
G1 H1 Y-15 F600 ; move slowly to X and Y axis endstops once more (second pass)
G1 H1 Z-125 F600 ; move Z down stopping at the endstop
G90 ; absolute positioning
G92 Z0 ; set Z position to axis minimum (you may want to adjust this)
G91 ; relative positioning
G1 Z5 F500 ; lift Z relative to current position
G90 ; absolute positioning
M400 ; Clear buffer
M913 X100 Z100 ; motor current back to 100%
M400 ; Clear buffer -
@dk said in 4 motors on one axis homing:
M584 X0.2:1.2 Y0.0:0.3:1.0:0.4 Z0.1:1.1 ; set drive mapping
It looks like you have your drives spread out all across the mainboard and expansion. Is there any way to get them grouped together or is that due to wiring runs?
@dk said in 4 motors on one axis homing:
; Endstops
M574 X1 S3 ; configure sensorless endstop for low end on X
M574 Y1 S1 P"0.io0.in+1.io0.in" ; configure active-low endstop for low end on Y via pin io0.in
M574 Z1 S4 ; configure sensorless endstop for low end on ZSo sensorless on X, endstops on Y, and sensorless on Z?
What kinematics type is this printer?
What kind of motors?
How much of your homing currently works? Are you able to home each axis individually? Please explain where each fails.
-
@phaedrux
Yes, this drivers spread due to wiring. I have 4 NEMA23 for Y (2 motors move one belt for left and right rail), 2 Nema17 34mm with lead screw for Z, 2 NEMA17 20mm for X.
Cartesian kinematic. Dual Y axis rails (its actually dual 16mm shafts on both sides of printer) moving two Z rails, which hold X axis.For now sensorless homing on X and sensorless on Z works find.
Endstops on Y also work, but not independently for two Y rails. if the axis is slightly shifted (I specifically moved one rail by 10 mm relative to the second), the homing is triggered when the first rail touches the endstop. And printer remains shifted Y axis by 10 mm.
If I disconnect 2 motors
(M584 X0.2:1.2 Y0.3:1.0 Z0.1:1.1 instead of M584 X0.2:1.2 Y0.0:0.3:0.4:1.0 Z0.1:1.1 ),
then the independent homing works as it should, both rails go to the endstop.
So, I want to achieve independent homing for two Y axis rails with four motors (2 motors for each rail) -
@dk said in 4 motors on one axis homing:
@phaedrux
Yes, S4 works well on Z - 2 motors on Z stopped individually. But for Y axis I use 2 optical endstop and so my only choice M574 S1
But because of 4 motors on Y, left and right rail do not stoped individuallyThat's correct. The built-in multiple-endstop homing requires you to have the same number of endstops as axis motors.
Here are three possible solutions:
-
Connect two Y motors to each to two drivers, so that they look like single motors. As you are using Duet 3 which can drive motors with up to 6.3A peak, you can connect two motors in parallel to make a pair, and set the current to 4400 in M906 instead of 2200.
-
Alternatively, you can continue to use a separate driver per motor, and during homing split the Y axis into two axes (e.g. Y and U), just as we had to do in RRF2 when using multiple endstop switches. See https://duet3d.dozuki.com/Guide/Independent+Z+motors+and+endstop+switches+in+RRF2/18 but adapt the GCode commands for RRF3 (e.g. use endstop pin names in the M574 commands).
-
Pretend that you have 4 endstop switches. M574 will not allow you to use the same input more than once, so you would need to use 4 inputs and connect each endstop switch to 2 of them.
-
-
@dc42
the first option looks the most interesting. This way I can get 2 more spare drivers for future upgrades!
Do you have wiring diagram for parallel stepper connection?
Should steppers wire length be the same? or 500mm difference in wires lengths does not effect synchronies of motor movements?