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.
    • dkundefined
      dk
      last edited by

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

      1 Reply Last reply Reply Quote 0
      • 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