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



  • 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
    
    
    


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



  • 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



  • 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



  • @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!



  • 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



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


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



  • @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!


Log in to reply