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

    Independently leveled Z axis Issue

    Scheduled Pinned Locked Moved
    General Discussion
    7
    113
    6.8k
    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.
    • 3DPrintingWorldundefined
      3DPrintingWorld
      last edited by

      I have having an issue with my three motor independently leveled Z axis on my Wifi and duex5 now with RRF 3.1.1. I previously installed 3.2 but that firmware has been erased and replaced with 3.1.1. Leveling worked great for about six months but then it started to level incorrectly. Not inconsistent but very repeatable, just not level. Back left corner always low, front right always high about .3-.5mm off level.

      Actions taken so far but has no effect on the leveling.
      • Complete mechanical rebuild the extruder carriage
      • Complete mechanical rebuild of the entire Z axis assemblies
      • Moved the three Z-axis motors off the Duex5 and onto the Wifi. (have since moved them back to the duex5)
      • Tried a spare BL touch
      • Confirmed the configuration with other members of this printers community.
      • Weighted the end of the extruder carriage down to verify it was not tipping during probing.
      • Removed the nylon cable support, reverse bowden tube, and held the remaining cables by hand while its homed to verify cable strain was not causing incorrect probing.
      • Physically swapped left motor with right motor. Swapped back motor with front motor. (this should have large impact as it should be making incorrect adjustments)
      • Changed Bed.g so the probe points were close to the center of the bed, instead of out at edges near the screw locations.
      • Exaggerated the screw locations in the M671 so one point was 300mm out further than it actually is. (this should have large impact)
      • Created a trigger macro that measures the trigger height, moves 200mm in two directions then moves back to the same point and measures the trigger height again and it repeats less than .005mm.
      • Created a trigger macro that measures the trigger height of each point that it just used to level and it displays a deviation of only .01mm even though if I move the head around and measure the deviation physically with a shim under the nozzle its .3-.5mm off level.

      Config.g

      G90                                             ; send absolute coordinates...
      M83                                             ; ...but relative extruder moves
      M550 P"Muldex"                                  ; set printer name
      
      
      ; Network
      M552 S1                                         ; enable network
      M586 P0 S1                                      ; enable HTTP
      M586 P1 S0                                      ; disable FTP
      M586 P2 S0                                      ; disable Telnet
      
      ; Drives
      ;M569 P0 S0                                      ; X physical drive 0 goes backwards
      ;M569 P5 S1                                      ; Y right physical drive 1 goes forwards
      ;M569 P6 S0                                      ; Y left physical drive 8 goes backwards
      ;M569 P2 S1                                      ; U physical drive 2 goes backwards
      ;M569 P4 S0                                      ; E1 physical drive 3 goes forwards
      ;M569 P3 S0                                      ; Z left physical drive 5 goes backwards 0
      ;M569 P1 S0                                      ; Z center physical drive 6 goes backwards
      ;M569 P4 S1                                      ; Z right physical drive 7 goes forwards 1
      ;M569 P8 S0                                      ; E2 physical drive 4 goes forwards
      
      ; Drives
      M569 P0 S0                                      ; X physical drive 0 goes backwards
      M569 P1 S1                                      ; Y right physical drive 1 goes forwards
      M569 P2 S0                                      ; Y left physical drive 8 goes backwards
      M569 P3 S1                                      ; U physical drive 2 goes backwards
      M569 P4 S0                                      ; E1 physical drive 3 goes forwards
      M569 P5 S0                                      ; Z left physical drive 5 goes backwards 0
      M569 P6 S0                                      ; Z center physical drive 6 goes backwards
      M569 P7 S1                                      ; Z right physical drive 7 goes forwards 1
      M569 P8 S0                                      ; E2 physical drive 4 goes forwards
      
      M584 X0 Y1:2 U3 Z5:6:7 E4:8                     ; set drive mapping
      
      M350 X16 U16 Y16 Z16 E16:16 I1                                                        ; configure microstepping with interpolation
      M92 X100.00 U100.00 Y100.00:100.00 Z1096 E415.00:655.00                               ; set steps per mm (1760nimble)
      M566 X1000.00 U1000.00 Y1000.00:1000.00 Z100.00 E100.00:300.00                        ; set maximum instantaneous speed changes (mm/min)(Nimble 40)
      M203 X12000.00 U12000.00 Y12000.00:12000.00 Z2000.00 E4200.00:4200.00         ; set maximum speeds (mm/min)
      M201 X800.00 U800.00 Y800.00:800.00 Z100.00 E600.00:600.00                ; set accelerations (mm/s^2)(500)(Nimble 120)
      M906 X700 U700 Y700:700 Z200:200:200 E600:600 I30                                     ; set motor currents (mA) and motor idle factor in per cent(Nimble 500)
      M84 S30                                                                               ; Set idle timeout
      
      ; Axis Limits
      M208 X-21.4 Y0 U33 Z0 S1                        ; set axis min was (-18 BMG)16.7_X-14.4 Y0 U40 Z0 S1
      M208 X344 U414.75 Y334 Z300 S0                     ; set axis max Y WAS 339_X350 U422.7 Y334 Z300 S0(u415.7)
      
      M669 K0 Y1:1:0:1				                ; select Markforged Kinematics Y to react with X and U
      
      ; Endstops new
      M574 X1 S1 P"xstop"                             ;X axis active high endstop switch
      M574 Y2 S1 P"ystop+zstop"                       ; Y Double max active high endstop switch
      M574 U2 S1 P"e0stop"                            ;U axis active high endstop switch
      M574 Z1 S2 						; Define Z to use Probe. Home to Min.
      
      ; Filament Sensor
      ;M591 D0 P3 C"e0stop" S0 R70:130 L24.8 E3.0 ; Duet3D rotating magnet sensor for extruder drive 0 is connected to E0 endstop input, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length
      ;M591 D1 P3 C"e1stop" S0 R70:130 L24.8 E3.0 ; Duet3D rotating magnet sensor for extruder drive 0 is connected to E0 endstop input, enabled, sensitivity 24.8mm.rev, 70% to 130% tolerance, 3mm detection length
      
      ;M591 D0 ; display filament sensor parameters for extruder drive 0
      ;M591 D1 ; display filament sensor parameters for extruder drive 0
      
      ; Z-Probe
      M671 X-20.6:200:420.6 Y14.3:333.3:14.3 S5       ; Locations left, center, right 
      
      M950 S0 C"duex.e6heat"                          ; create servo pin 0 for BLTouch
      M558 P9 C"^zprobe.in" H5 F120 T5000   ; set Z probe type to bltouch and the dive height + speeds (WAS 9000)
      G31 P25 X-29 Y0 Z1.55                             ; set Z probe trigger value, offset and trigger height(lower number farther away)1.54build 1.37glass 
      M557 X10:360 Y10:290 S20                        ; probe from X=10 to 390, Y=10 to 290mm with a mesh spacing of 20mm
      
      ; Heaters
      M308 S0 P"bedtemp" Y"thermistor" T100000 B4534 C9.565227e-8      ; configure sensor 0 as thermistor on pin bedtemp
      M950 H0 C"bedheat" T0                                            ; create bed heater output on bedheat and map it to sensor 0
      M143 H0 S120                                                     ; set temperature limit for heater 0 to 120C
      M307 H0 B0 S1.00                                                 ; disable bang-bang mode for the bed heater and set PWM limit
      M140 H0                                                          ; map heated bed to heater 0
      M308 S1 P"e0temp" Y"thermistor" T500000 B4723 C1.196220e-7 R4700 ; configure sensor 1 as thermistor on pin e0temp
      M950 H1 C"e0heat" T1                                             ; create nozzle heater output on e0heat and map it to sensor 1
      M143 H1 S280                                                     ; set temperature limit for heater 1 to 280C
      M307 H1 B0 S1.00                                                 ; disable bang-bang mode for heater  and set PWM limit
      M308 S2 P"e1temp" Y"thermistor" T500000 B4723 C1.196220e-7 R4700 ; configure sensor 2 as thermistor on pin e1temp
      M950 H2 C"e1heat" T2                                             ; create nozzle heater output on e1heat and map it to sensor 2
      M143 H2 S280                                                     ; set temperature limit for heater 2 to 280C
      M307 H2 B0 S1.01                                                 ; disable bang-bang mode for heater  and set PWM limit
      
      ; Fans
      M950 F0 C"fan0" Q500                             ; create fan 0 on pin fan0 and set its frequency
      M106 P0 S0 H-1                                   ; set fan 0 value. Thermostatic control is turned off
      M950 F1 C"fan1" Q500                             ; create fan 1 on pin fan1 and set its frequency
      M106 P1 S1 H1 T45                                ; set fan 1 value. Thermostatic control is turned on
      M950 F2 C"duex.fan4" Q500                             ; create fan 2 on pin fan2 and set its frequency
      M106 P2 S0 H-1                                   ; set fan 2 value. Thermostatic control is turned off
      M950 F3 C"duex.fan8" Q500                        ; create fan 3 on pin duex.fan8 and set its frequency
      M106 P3 S1 H2 T45                                ; set fan 3 value. Thermostatic control is turned on
      
      ; LEDs
      M950 F4 C"duex.fan6" ;Q500                       ; create LED 4 on pin duex.fan6 and set its frequency
      M106 P4 S255 H-1                                 ; set LED 4 value. Thermostatic control is turned OFF
      M950 F5 C"duex.fan7" ;Q500                       ; create LED 5 on pin duex.fan7 and set its frequency
      M106 P5 S255 H-1                                 ; set LED 5 value. Thermostatic control is turned OFF
      
      ; Tools
      M563 P0 D0 H1 F0 S"Left"                      ; define tool 0 Left 
      G10 P0 X0 Y0 Z0                               ; set tool 0 axis offsets y was .45
      G10 P0 R0 S0                                     ; set initial tool 0 active and standby temperatures to 0C
      
      M563 P1 D1 H2 X3 F2 S"Right"                        ; define tool 1 Right
      G10 P1 X0 Y-1.45 Z0                                  ; set tool 1 axis offsets (.5BMG) (-1.45)
      G10 P1 R0 S0                                     ; set initial tool 1 active and standby temperatures to 0C
      
      M563 P2 D0:1 H1:2 X0:3 F0:2 S"Copy"              ; define tool 2 Copy
      G10 P2 X95 Y0 U-95 S0 R0                         ; set tool 2 axis offsets (WAS 105)
      M567 P2 E1:1         
      M568 P2 S1 ; turn on mixing for tool 2           ; set mix ratio 100% on both extruders
      
      M501                                             ; Record
      
      M575 P1 S1 B57600                                ;Panel due 
      
      ; homeall.g
      
      ; X,U,Y Homing
      T0 P0
      G91                         ; relative positioning
      G1 H2 Z5 F2000              ; lift Z relative to current position
      G1 H1 X-475 U475 F7500      ;Rough home X and U axis
      G1 H1 X-475                  ; home X axis
      G1 H1 U475                 ; home U axis
      G1 H2 X5 U-10 F7500           ; go back a few mm
      G1 H1 Y500 F6000            ; move quickly to Y axis endstop and stop there (first pass)
      G1 Y-5  F6000               ; go back a few mm
      M584 Y1                     ; Y-axis right side 
      M574 Y2 S1 P"ystop"         ; Y-axis right side endstop Active
      G1 H1 Y15 F360              ; move slowly to Y axis endstop once more (second pass)
      M584 Y2                     ; Y-axis Left side
      M574 Y2 S1 P"zstop"        ; Y-axis left side endstop Active
      G1 H1 Y15 F360              ; move slowly to Y axis endstop once more (second pass)
      M584 Y1:2                   ; Combine Y-Axis
      M574 Y2 S1 P"ystop+zstop"  ; Y Double max active high endstop switch
      G1 Y-5  F6000               ; go back a few mm
      G1 H1 X-25 F360              ; move slowly to X axis(second pass)
      G1 H1 U25                  ; move slowly to U axis(second pass)
      G1 H2 X2 U-2 F7500              ; go back a few mm
      
      ; Z Homing
      T0 P0
      G90 G1 X219 Y150 F6000      ; Move to the center of the bed
      M558 F500                    ; Fast probing speed
      G30                          ; First probe
      M558 F50                     ; Slow probing speed
      G30                          ; Second probe
      G32                          ; Level the bed
      G90 G1 X219 Y150 F7500      ; Move to the center of the bed
      G30                          ; Bed Deviation probe
      G90 G1 X-16                  ; Park x-axis
      
      
      1 Reply Last reply Reply Quote 0
      • fcwiltundefined
        fcwilt
        last edited by

        Hi,

        Your Z motor currents are rather low.

        Have you tried increasing them?

        I am running firmware 3.2.2 (not 3.2.0 which had issued with endstops).

        I have 3 Z steppers running at 1000 ma and have never had a problem but the steppers have integral 5-to-1 planetary gearboxes.

        Frederick

        Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

        3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
        • 3DPrintingWorldundefined
          3DPrintingWorld @fcwilt
          last edited by

          @fcwilt Yes, my current is low but that is because like you I am using planetary reducers. Mine are around 13:1. I keep it low to save my hotend should the probe fail and it crash for some reason. I have tried increasing the voltage previously but it did not make a difference.

          fcwiltundefined 1 Reply Last reply Reply Quote 0
          • fcwiltundefined
            fcwilt @3DPrintingWorld
            last edited by

            @3DPrintingWorld said in Independently leveled Z axis Issue:

            @fcwilt Yes, my current is low but that is because like you I am using planetary reducers. Mine are around 13:1. I keep it low to save my hotend should the probe fail and it crash for some reason. I have tried increasing the voltage previously but it did not make a difference.

            13-to-1? That is high. How did you pick that ratio?

            Just the same I suggest you up the current setting and see if it makes a difference.

            Frederick

            Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

            3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
            • Vetiundefined
              Veti
              last edited by

              whats the rated current of those motors?

              3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
              • 3DPrintingWorldundefined
                3DPrintingWorld @fcwilt
                last edited by

                @fcwilt Like I said, I tried increasing the voltage previously and I just tired it again but no difference.

                I selected 13:1 because I wanted more holding force with the motors off since more reduction magnifies the detent torque of the stepper.

                1 Reply Last reply Reply Quote 0
                • 3DPrintingWorldundefined
                  3DPrintingWorld @Veti
                  last edited by

                  @Veti said in Independently leveled Z axis Issue:

                  whats the rated current of those motors?

                  1A max. Nema 17.

                  Vetiundefined 1 Reply Last reply Reply Quote 0
                  • Vetiundefined
                    Veti @3DPrintingWorld
                    last edited by

                    @3DPrintingWorld

                    i think 200 is to low to run 1A motors, even if they are 13:1

                    you should at least use 50%

                    3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
                    • 3DPrintingWorldundefined
                      3DPrintingWorld @Veti
                      last edited by

                      @Veti said in Independently leveled Z axis Issue:

                      i think 200 is to low to run 1A motors, even if they are 13:1

                      Ok, great however I have tested and confirmed that the low voltage is not the issue.

                      Regardless, not sure how you came up with 50% because the minimum voltage is going to be determined by the pulley size, efficiency of the gear reducer, load and acceleration. When a stepper is put on a reducer it can actually run faster at a lower current as its not fighting decay in the pulses caused by too much current.

                      fcwiltundefined 1 Reply Last reply Reply Quote 0
                      • fcwiltundefined
                        fcwilt @3DPrintingWorld
                        last edited by

                        @3DPrintingWorld said in Independently leveled Z axis Issue:

                        Ok, great however I have tested and confirmed that the low voltage is not the issue.

                        What do you mean by "low voltage" - there is no voltage setting command, only current.

                        Thanks.

                        Frederick

                        Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                        3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
                        • 3DPrintingWorldundefined
                          3DPrintingWorld @fcwilt
                          last edited by

                          @fcwilt Sorry, I should have said low current.

                          1 Reply Last reply Reply Quote 1
                          • Vetiundefined
                            Veti
                            last edited by

                            at 20% current you will be at 14% holding torque.
                            pair the 14% holding torque with microstepping and you there is little chance of holding a specific position accurately.

                            3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
                            • 3DPrintingWorldundefined
                              3DPrintingWorld @Veti
                              last edited by

                              @Veti Holding torque is not required, detent torque and inefficiently of the gears will keep the axis from moving.

                              Feel free to review this calculator I made in reference to these regards.
                              https://github.com/3dprintingworld/MULDEX/blob/master/Resources/STEPPER HOLDING POWER CALCULATOR.xlsx

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

                                Just out of curiosity what you are changing the motor assignment in your homeall routine?

                                Frederick

                                Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                                3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
                                • 3DPrintingWorldundefined
                                  3DPrintingWorld @fcwilt
                                  last edited by

                                  @fcwilt Two motors for Y axis, one belt at each end of the gantry. I split the axis up so I can home to each endstop independently. This is so I can square the gantry up to the frame.

                                  My original plan was to run the y axis into the frame, then run it back to a single switch but I was having a hard time getting the senseless homing to work reliably. Another user has sensorless homing working good so I plan on switching to that.

                                  fcwiltundefined 1 Reply Last reply Reply Quote 0
                                  • fcwiltundefined
                                    fcwilt @3DPrintingWorld
                                    last edited by

                                    @3DPrintingWorld 3.2.2 will home both at same time stopping each at the end stop. There should be no need to do it as you are. At least it works for me.

                                    Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                                    3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
                                    • 3DPrintingWorldundefined
                                      3DPrintingWorld @fcwilt
                                      last edited by

                                      @fcwilt Ok, I'll look into it.

                                      Phaedruxundefined fcwiltundefined 2 Replies Last reply Reply Quote 1
                                      • Phaedruxundefined
                                        Phaedrux Moderator @3DPrintingWorld
                                        last edited by

                                        @3DPrintingWorld It's the same as described here, except instead of Z, it's X or Y.

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

                                        Z-Bot CoreXY Build | Thingiverse Profile

                                        1 Reply Last reply Reply Quote 1
                                        • fcwiltundefined
                                          fcwilt @3DPrintingWorld
                                          last edited by

                                          @3DPrintingWorld said in Independently leveled Z axis Issue:

                                          @fcwilt Ok, I'll look into it.

                                          He is a quick and dirty video I made showing homing of my three Z steppers - I pushed them way out of level first to clearly show the independent axis homing.

                                          My Three Z Steppers Homing Independently

                                          Frederick

                                          Printers: a E3D MS/TC setup and a RatRig Hybrid. Using Duet 3 hardware running 3.4.6

                                          3DPrintingWorldundefined 1 Reply Last reply Reply Quote 0
                                          • 3DPrintingWorldundefined
                                            3DPrintingWorld
                                            last edited by

                                            @fcwilt & @Phaedrux, sorry I forgot that I already tried this but it did not work. Here was the explication from DC.

                                            "On a CoreXY printer, if either the X or the Y endstop switch triggers, all motors must be stopped. Your printer isn't CoreXY, but it has a matrix for which some motors affect more than one axis. If I remember correctly, on MarkForged kinematics, movement of the Y motor causes X (and U) movement too. So when one Y endstop switch triggers, if the other Y motor were to continue moving, it's not clear whether the X and U motors should continue to move if the firmware moves just the other one. That's why the firmware stops all motors when an endstop switch is triggered."

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