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

    Dual Z - Weird compensation (G32) - Cartesian style printer

    Scheduled Pinned Locked Moved Solved
    Tuning and tweaking
    4
    9
    499
    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.
    • banana_wafflesundefined
      banana_waffles
      last edited by

      Hi,

      I recently commissioned a Cartesian style printer with two Z motors (drive 2 & drive 3) that use a Bltouch to home, but after the probe, the X-axis would not correct the tilt but would worsen it.

      The probe would yield two results back, and the majority of the time, its same number (or extremely close to it), but one would be positive, and the other would be the exact opposite of the first valve. I would manually move the lead screws to level the X-axis, and at the end of the G32 command, the printer would tilt axis.

      I'm not sure if I set up my config file correctly.

      Firmware: 2.03

      Here's my config.g file

      ; General preferences
      G90                                                    ; send absolute coordinates...
      M83                                                   ; ...but relative extruder moves
      M550 P"Big Bertha"                       ; set printer name
      M669 K0                                          ; select Cartesian
      ;M572 D0 S0.04                                               ; pressure advance
      ;M591 D0 P1 C3 S1				                     ; Filament run-out sensor.
      ;M556 S50 X-1.0 Y-1.0 Z0.00			                 ; Axis skew compensation
      
      ; Network
      M552 S1						                         ; Turn on wifi
      M552 P192.168.0.17				                     ; Set Static-IP address
      M586 P0 S1                                           ; Enable HTTP
      M586 P1 S0                                           ; Disable FTP
      M586 P2 S0                                           ; Disable Telnet
      
      ; Stepper Motor Direction
      M569 P0 S0                                           ; physical drive 0 goes backwards(X-AXIS)
      M569 P1 S1                                           ; physical drive 1 goes forwards (Y-AXIS)
      M569 P2 S1                                           ; physical drive 2 goes forwards (Z1-AXIS)
      M569 P3 S0                                           ; physical drive 3 goes backwards(E0 - Titan Aero)
      M569 P4 S1					                         ; physical drive 4 goes forwards (Z2-AXIS)
      
      ; Axis drive mapping
      M584 X0 Y1 Z2:4 U4 E3                                   ; Driver 0 = X, Driver 1 = Y, Driver 2 & 4 = Z, U=4 (second Z motor)
      M671 X50:350 Y110:110 S8                           ;leadscrews at left (connected to Z) and right (connected to E0) of X axis
      
      ; Axis Limits
      M208 S1 X0 Y0 Z0                               ; Set axis minima
      M208 S0 X400 Y400 Z475                         ; Set axis maxima
      
      
      ; All Axis
      M204 P500 T500					                         ; Print Acceleration and travel Accerlation
      M350 X16 Y16 Z16 U16 E16 I1                              ; configure microstepping with interpolation
      M92 X100.00 Y80.00 Z800.00 U800.00 E420.00               ; set steps per mm
      M906 X500 Y1200 Z1200 U1200 E500 I30                     ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                                  ; Set idle timeout
      
      ; Printer Acceleration/Speed/Jerk
      ; X-Axis
      M201 X1500                                          ; accleration (mm/s)
      M566 X1200                                           ; instantaneous speed change (jerk - mm/min)
      M203 X9000                                          ; maximum speed (mm/min)
      
      ; Y-Axis
      M201 Y500                                           ; accleration (mm/s)
      M566 Y600                                           ; instantaneous speed change (jerk - mm/min)
      M203 Y9000                                          ; maximum speed (mm/min)
      
      ; Z-Axis
      M201 Z100                                           ; accleration (mm/s)
      M566 Z24                                            ; instantaneous speed change (jerk - mm/min)
      M203 Z300                                           ; maximum speed (mm/min)
      
      ; U-Axis
      M201 Z100                                           ; accleration (mm/s)
      M566 Z24                                           ; instantaneous speed change (jerk - mm/min)
      M203 Z300                                          ; maximum speed (mm/min)
      
      ; Extruder
      M201 E10000.00                                      ; accleration (mm/s)
      M566 E7200                                          ; instantaneous speed change (jerk - mm/min)
      M203 E900000                                        ; maxium speed (mm/min)
      
      ; Endstops
      M574 X1 Y1 S3                                       ; set endstops controlled by motor stall detection
      
      ; Z-Probe
      M307 H3 A-1 C-1 D-1				                    ; Disable Heater 3 for BLTouch
      M574 Z1 U1 S2	     				                ; Set endstops controlled by probe                         
      M558 P9 H8 F100 R1.0 T6000 A8 B1 S0.02	            ; Set Z probe type to bltouch and the dive height + speeds
      G31 P25 X0.00 Y-30.0 Z3.49	                        ; Z offset (lower futher away from bed) and Z probe location (old P25) (P value, lower = more sensitive)
      M557 X30:300 Y0:300 S40                             ; Define mesh grid
      
      ; Heaters
      M140 H-1                                             ; disable heated bed
      M305 P1 T100000 B4725 C7.060000e-8 R4700             ; set thermistor + ADC parameters for heater 1
      M143 H1 S280                                         ; set temperature limit for heater 1 to 280C
      M570 H1 P30 T30	S5			                         ; Heater fault time out
      
      
      ; Fans
      
      ; Tools
      M563 P0 S"TitanAero" D0 H1 F0                        ; 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
      
      ; Miscellaneous
      M501                                                 ; load saved parameters from non-volatile memory
      M911 S23 R23.3 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
      T0                                                   ; select first tool
      
      
      
      1 Reply Last reply Reply Quote 0
      • Vetiundefined
        Veti
        last edited by

        @banana_waffles said in Dual Z - Weird compensation (G32) - Cartesian style printer:

        M584 X0 Y1 Z2:4 U4 E3 ; Driver 0 = X, Driver 1 = Y, Driver 2 & 4 = Z, U=4 (second Z motor)

        why do you have driver 4 assigned to u and z?

        this should not be required.

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

          Hi,

          After you level the bed manually run two G30 S-1 commands at the same locations that are being probed when executing G32.

          See what values are reported and let us know.

          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

          1 Reply Last reply Reply Quote 0
          • droftartsundefined
            droftarts administrators
            last edited by

            Are your motors plugged in the right way around? In the example here:
            https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors#Section_Example_for_2_motors
            the motors are defined by M671 in the order they are defined by M574, so the left motor plugs into Z, right into E1. If they’re swapped you get a correction the wrong way.

            Ian

            Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

            1 Reply Last reply Reply Quote 0
            • banana_wafflesundefined
              banana_waffles @Veti
              last edited by

              @Veti said in Dual Z - Weird compensation (G32) - Cartesian style printer:

              @banana_waffles said in Dual Z - Weird compensation (G32) - Cartesian style printer:

              M584 X0 Y1 Z2:4 U4 E3 ; Driver 0 = X, Driver 1 = Y, Driver 2 & 4 = Z, U=4 (second Z motor)

              why do you have driver 4 assigned to u and z?

              this should not be required.

              Driver 4 isn't assigned to U and Z, from what I've understand the Z axis is controlled by driver 2 and 4, and that U4 is assigning a letter to the axis?

              @droftarts said in Dual Z - Weird compensation (G32) - Cartesian style printer:

              Are your motors plugged in the right way around? In the example here:
              https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motors#Section_Example_for_2_motors
              the motors are defined by M671 in the order they are defined by M574, so the left motor plugs into Z, right into E1. If they’re swapped you get a correction the wrong way.

              Ian

              Yup, the motors goes up and down correctly and are leveled (if I manually level it) before G32.

              @fcwilt said in Dual Z - Weird compensation (G32) - Cartesian style printer:

              Hi,

              After you level the bed manually run two G30 S-1 commands at the same locations that are being probed when executing G32.

              See what values are reported and let us know.

              Frederick

              Will do!

              1 Reply Last reply Reply Quote 0
              • droftartsundefined
                droftarts administrators
                last edited by droftarts

                Something's wrong in these lines:

                ; Axis drive mapping
                M584 X0 Y1 Z2:4 U4 E3                                   ; Driver 0 = X, Driver 1 = Y, Driver 2 & 4 = Z, U=4 (second Z motor)
                M671 X50:350 Y110:110 S8                           ;leadscrews at left (connected to Z) and right (connected to E0) of X axis
                
                ; Axis Limits
                M208 S1 X0 Y0 Z0                               ; Set axis minima
                M208 S0 X400 Y400 Z475                         ; Set axis maxima
                
                

                You've got your leadscrew positions inside your bed. I'm guessing they are 50mm outside the bed, so should be

                M671 X-50:450 Y110:110 S8
                

                @banana_waffles said in Dual Z - Weird compensation (G32) - Cartesian style printer:

                Driver 4 isn't assigned to U and Z, from what I've understand the Z axis is controlled by driver 2 and 4, and that U4 is assigning a letter to the axis?

                You don't need to define the U axis unless you are specifically homing that axis independently of the Z axis. There's no other reason to define it. For example, you home the Z axis (both motors) with an endstop on the Z endstop connection, then home the U axis (i.e. one end of the Z axis) with another endstop connected to the E1 endstop. Or use motor stall to do the same thing. But you're not doing that, so no need to define U.

                Yup, the motors goes up and down correctly and are leveled (if I manually level it) before G32.

                Not what I said. I didn't mean that the motor directions are reversed, I mean that if the Z motor connections are swapped, it will apply correction in the wrong direction, which is pretty much exactly the symptom you describe:

                but after the probe, the X-axis would not correct the tilt but would worsen it.

                Try plugging motor from Z into E1, and vice versa.

                Posting the commands or macro you're running to actually do the levelling would be helpful.

                Ian

                Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                banana_wafflesundefined 1 Reply Last reply Reply Quote 0
                • banana_wafflesundefined
                  banana_waffles @droftarts
                  last edited by

                  @droftarts said in Dual Z - Weird compensation (G32) - Cartesian style printer:

                  Not what I said. I didn't mean that the motor directions are reversed, I mean that if the Z motor connections are swapped, it will apply correction in the wrong direction, which is pretty much exactly the symptom you describe:

                  Ah that makes a lot more sense! I'll see when I get home and will post the update.

                  You don't need to define the U axis unless you are specifically homing that axis independently of the Z axis. There's no other reason to define it. For example, you home the Z axis (both motors) with an endstop on the Z endstop connection, then home the U axis (i.e. one end of the Z axis) with another endstop connected to the E1 endstop. Or use motor stall to do the same thing. But you're not doing that, so no need to define U.

                  I see!

                  So it should only be:

                  M584 X0 Y1 Z2:4 E3   
                  

                  I just type G32 in the console. Here are my bed/homex/homey/homez.g code

                  ; bed.g
                  M561 ; clear any bed transform
                  G28									;home
                  G30 P0 X50 Y110 Z-99999                 ; probe near 1st leadscrew
                  G30 P1 X350 Y110 Z-99999 S2             ; probe near 2nd leadscrew and calibrate 2 motors
                  
                  

                  My homey is the same.

                  ; homex.g
                  
                  M400                      ; make sure everything has stopped before we make changes
                  
                  G91			  ; use relative positioning
                  G1 Z5 U5 F6000 S2	  ; lift Z and U axis up 5MM to clear bed
                  G90                       ; absolute positioning 
                  
                  M913 X50                  ; reduce motor current to 50% to prevent belts slipping
                  M201 X600                 ; reduce acceleration on X to stop false triggers
                  M915 P0 S3 R0 F0        ; Driver 0, Sensitivity 3, don’t take action, don’t filter
                  
                  G91                       ; use relative positioning
                  G1 S1 X-500 F4000         ; move to home position
                  
                  G90                       ; back to absolute positioning
                  M400
                  M913 X100     	          ; motor currents back to normal
                  M201 X1500                ; accel back to original
                  
                  ;homez 
                  G91			; relative positioning 
                  M584 Z2:4 		; (split axis into 2)
                  G1 Z8 U8 F6000 S2    	; lift Z relative to current position
                  G90               	; absolute positioning
                  G1 X200 Y110 F6000 		; go to first probe point
                  G30               	; home Z by probing the bed
                  M584 Z2:4 P3
                  
                  1 Reply Last reply Reply Quote 0
                  • Vetiundefined
                    Veti
                    last edited by

                    @banana_waffles said in Dual Z - Weird compensation (G32) - Cartesian style printer:

                    M584

                    remove these from the homez. they are not required as you do not have an independent u axis.
                    remove the u part from the G1 command.

                    1 Reply Last reply Reply Quote 1
                    • banana_wafflesundefined
                      banana_waffles
                      last edited by

                      @Veti Thanks for all the help! I got the printer sorted out and did what you've recommended!!

                      The motors cables were swapped, and I've edited my config and homing files. Works perfectly now!

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