Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    4 motors on one axis homing

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    5
    18
    772
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Phaedruxundefined
      Phaedrux Moderator
      last edited by

      https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors#Section_In_RepRapFirmware_Num_3

      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?

      Z-Bot CoreXY Build | Thingiverse Profile

      dkundefined 1 Reply Last reply Reply Quote 0
      • dkundefined
        dk
        last edited by

        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?

        1 Reply Last reply Reply Quote 0
        • dkundefined
          dk @Phaedrux
          last edited by

          @phaedrux any idea if sensorless homing should use both motors pulling one belt or just one of them?

          o_lampeundefined 1 Reply Last reply Reply Quote 0
          • o_lampeundefined
            o_lampe @dk
            last edited by

            @dk
            How would you use only one motor? Turning down the motorcurrent works per axis and is the same for all motors AFAIK.

            dkundefined 1 Reply Last reply Reply Quote 0
            • fcwiltundefined
              fcwilt
              last edited by

              Why multiple motors on a single belt?

              Thanks.

              Frederick

              Printers: a small Utilmaker style, a small CoreXY and a E3D MS/TC setup. Various hotends. Using Duet 3 hardware running 3.4.6

              dkundefined 1 Reply Last reply Reply Quote 0
              • dkundefined
                dk @o_lampe
                last edited by

                @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?

                dkundefined 1 Reply Last reply Reply Quote 0
                • dkundefined
                  dk @fcwilt
                  last edited by

                  @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

                  o_lampeundefined 1 Reply Last reply Reply Quote 0
                  • o_lampeundefined
                    o_lampe @dk
                    last edited by o_lampe

                    @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.

                    1 Reply Last reply Reply Quote 0
                    • dkundefined
                      dk @dk
                      last edited by

                      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?

                      Phaedruxundefined 1 Reply Last reply Reply Quote 0
                      • Phaedruxundefined
                        Phaedrux Moderator @dk
                        last edited by

                        @dk https://duet3d.dozuki.com/Wiki/Gcode#Section_M574_RepRapFirmware_Num_3

                        See M574 S4 for multi-motor load stall detection.

                        Z-Bot CoreXY Build | Thingiverse Profile

                        dkundefined 1 Reply Last reply Reply Quote 0
                        • dkundefined
                          dk @Phaedrux
                          last edited by

                          @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

                          dc42undefined 1 Reply Last reply Reply Quote 0
                          • Phaedruxundefined
                            Phaedrux Moderator
                            last edited by

                            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

                            Z-Bot CoreXY Build | Thingiverse Profile

                            dkundefined 1 Reply Last reply Reply Quote 0
                            • dkundefined
                              dk @Phaedrux
                              last edited by

                              @phaedrux
                              Config file

                              G90 ; 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

                              1 Reply Last reply Reply Quote 0
                              • Phaedruxundefined
                                Phaedrux Moderator
                                last edited by

                                @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 Z

                                So 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.

                                Z-Bot CoreXY Build | Thingiverse Profile

                                dkundefined 1 Reply Last reply Reply Quote 0
                                • dkundefined
                                  dk @Phaedrux
                                  last edited by

                                  @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)

                                  1 Reply Last reply Reply Quote 0
                                  • dc42undefined
                                    dc42 administrators @dk
                                    last edited by dc42

                                    @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 individually

                                    That'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:

                                    1. 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.

                                    2. 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).

                                    3. 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.

                                    Duet WiFi hardware designer and firmware engineer
                                    Please do not ask me for Duet support via PM or email, use the forum
                                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                                    dkundefined 1 Reply Last reply Reply Quote 1
                                    • dkundefined
                                      dk @dc42
                                      last edited by

                                      @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?

                                      1 Reply Last reply Reply Quote 0
                                      • First post
                                        Last post
                                      Unless otherwise noted, all forum content is licensed under CC-BY-SA