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

    G32 Dual Z axis constant 0.6mm off-level difference

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    4
    21
    753
    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.
    • rudenickundefined
      rudenick
      last edited by

      I'm trying to get dual axis leveling to work. It seems I'm doing everything right according to the duet wiki but I constantly get 0.6mm difference between sides. I tried various alternative x and y inputs with no meaningful difference to the result.
      I tried to get this to work past 3 months, please help.

      RRF3, Cartesian Ender3

      config.g

      M584 X0 Y1 Z2:4 E3                                                   ; set drive mapping
      M350 X32 Y32 Z32 E32 I1                                         ; configure microstepping with interpolation 
      M92 X160.00 Y160.00 Z800 E194.68                      ; set steps per mm 210.00 without m350
      M566 X1200.00 Y1200.00 Z24.00 E300.00            ; set maximum instantaneous speed changes (mm/min)
      M203 X9000.00 Y9000.00 Z180.00 E6000.00        ; set maximum speeds (mm/min)
      M201 X500.00 Y500.00 Z100.00 E5000.00            ; set accelerations (mm/s^2)
      M906 X800 Y800 Z800 E1000 I30                           ; set motor currents (mA)
      M572 D0 S0.42                                                          ; set pressure advance for direct drive
      M84 S30                                                                     ; Set idle timeout
      
      ;dual z axis limits                          
      M671 X-30:260 Y115:115 S0.5                                ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
      M208 X45:195 Y30:185                                            ; X carriage moves from -5 to 205, Y bed goes from 0 to 200
      

      bed.g

      G30 P0 X18 Y115 Z-99999 ; probe near a leadscrew, half way along Y axis
      G30 P1 X210 Y115 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
      G28 Z
      

      As I probe the bed after G32 I get the result:
      G32

      Leadscrew adjustments made: -0.077 0.164, points used 2, (mean, deviation) before (0.043, 0.054) after (-0.000, 0.000)
      Stopped at height 0.484 mm
      Stopped at height 0.426 mm
      17/09/2020, 13:04:45
      
      1 Reply Last reply Reply Quote 0
      • Vetiundefined
        Veti
        last edited by

        can you output the result of multible g32 straight after one another

        1 Reply Last reply Reply Quote 0
        • peter247undefined
          peter247
          last edited by

          This is my 3 checks 1 after another and they are never right , but easier than levelling manually.

          17/09/2020, 14:16:01	Leadscrew adjustments made: -0.008 -0.005, points used 2, (mean, deviation) before (-0.007, 0.001) after (0.000, 0.000)
          17/09/2020, 14:15:30	G32
          Leadscrew adjustments made: -0.010 -0.003, points used 2, (mean, deviation) before (-0.007, 0.002) after (-0.000, 0.000)
          17/09/2020, 14:14:54	G32
          Leadscrew adjustments made: -0.026 0.022, points used 2, (mean, deviation) before (-0.001, 0.014) after (0.000, 0.000)
          

          Ender 5 plus linear rail and hemera powered by duet 2 wifi , CR10s pro v1 with bltouch mostly stock , BLV mgn Cube slowly being built powered by duet 3 mini 5+

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

            (-0.007, 0.001)
            (-0.007, 0.002)
            (-0.001, 0.014)

            from those measurements they are pretty level.

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

              I have to wonder why you'd want to add a second z axis to such a small printer with a well designed cantilevered single Z axis setup already.

              As it is, I think you're bouncing around in the noise floor of the probe. Post your probe type and settings, you may be able to improve it's reliability a bit.

              Z-Bot CoreXY Build | Thingiverse Profile

              1 Reply Last reply Reply Quote 0
              • rudenickundefined
                rudenick
                last edited by Phaedrux

                TL;DR I found one of the the culprits, It's the Z offset in the G31 command but I don't know what to do - I need this offset.

                G31 P100 X-35 Y-4 ;Z0.540
                

                @Phaedrux I print 19cm wide things along x axis - Sag causes 1mm difference unless I adjust the bed. But I need the parts to be accurate. The first layer prints well on one side and on the other not.

                Results I got are actually false and it was my mechanical fault. Here are the new results. @Veti @peter247

                Here is a result with Z offset:

                G32
                Stopped at height 0.533 mm
                Stopped at height 0.598 mm
                Leadscrew adjustments made: -0.018 -0.240, points used 2, (mean, deviation) before (-0.121, 0.065) after (0.000, 0.000)
                Stopped at height 0.502 mm
                Stopped at height 0.647 mm
                

                And here without Z offset:

                G28
                Stopped at height 0.842 mm
                Stopped at height 0.642 mm
                Leadscrew adjustments made: 0.180 -0.393, points used 2, (mean, deviation) before (-0.087, 0.168) after (-0.000, 0.000)
                Stopped at height 0.783 mm
                Stopped at height 0.755 mm
                

                The second issue is that consecutive G32's unlevel the bed but I'm sure I have correctly configured and wired which axis is left and which is right (I also tried switching them but that did not work):

                24/09/2020, 20:23:13	G32
                Stopped at height 0.632 mm
                Stopped at height 0.837 mm
                Leadscrew adjustments made: -0.096 -0.164, points used 2, (mean, deviation) before (-0.127, 0.020) after (0.000, 0.000)
                Stopped at height 0.632 mm
                Stopped at height 0.865 mm
                24/09/2020, 20:21:28	G32
                Stopped at height 0.665 mm
                Stopped at height 0.815 mm
                Leadscrew adjustments made: -0.054 -0.177, points used 2, (mean, deviation) before (-0.111, 0.036) after (0.000, 0.000)
                Stopped at height 0.632 mm
                Stopped at height 0.837 mm
                24/09/2020, 20:19:11	G32
                Stopped at height 0.712 mm
                Stopped at height 0.798 mm
                Leadscrew adjustments made: 0.006 -0.188, points used 2, (mean, deviation) before (-0.084, 0.057) after (0.000, 0.000)
                Stopped at height 0.658 mm
                Stopped at height 0.815 mm
                24/09/2020, 20:14:54	G32
                Stopped at height 0.752 mm
                Stopped at height 0.725 mm
                Leadscrew adjustments made: 0.070 -0.286, points used 2, (mean, deviation) before (-0.096, 0.104) after (0.000, 0.000)
                Stopped at height 0.690 mm
                Stopped at height 0.772 mm
                

                Maybe G28 does it well, Ill test it.
                I added G31 Z0.540 to the homeall.g from config.g maybe that will help.

                What do you think?

                EDIT: Fixed formatting.

                1 Reply Last reply Reply Quote 0
                • rudenickundefined
                  rudenick
                  last edited by rudenick

                  After I push emergency stop and run homeall.g

                  G91                     ; relative positioning
                  G1 H2 Z5 F6000          ; lift Z relative to current position
                  M190 S60           ; set temp to 60
                  G1 H1 X-240 Y-240 F3000 ; move quickly to X and Y axis endstops and stop there (first pass)
                  G1 H2 X5 Y5 F6000       ; go back a few mm
                  G1 H1 X-240 Y-240 F240  ; move slowly to X and Y axis endstops once more (second pass)
                  G1 H2 Z5 F6000          ; lift Z relative to current position
                  G1 X160 Y115 F3000      ; put head over the centre of the bed, or wherever you want to probe
                  G30 F240                ; lower head, stop when probe triggered and set Z to trigger height
                  G90                     ; back to absolute mode
                  G1 H2 X0 Y0 Z20 F6000   ; Go to home position
                  G32
                  G31 Z0.540
                  G29 S1
                  G28 Z
                  

                  I get fine results:

                  G28
                  Stopped at height 0.815 mm
                  Stopped at height 0.690 mm
                  Leadscrew adjustments made: 0.139 -0.349, points used 2, (mean, deviation) before (-0.088, 0.143) after (-0.000, 0.000)
                  Stopped at height 0.730 mm
                  Stopped at height 0.770 mm
                  

                  But it is ridiculous. Limiting use.

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

                    Post your full config.

                    What probe are you using?

                    1mm of sag seems pretty extreme, even the stock cantilever setup isn't that bad. There shouldn't be any sag on such a short span. What is going on mechanically to create so much of a difference side to side?

                    @rudenick said in G32 Dual Z axis constant 0.6mm off-level difference:

                    G30 F240 ; lower head, stop when probe triggered and set Z to trigger height G90 ; back to absolute mode G1 H2 X0 Y0 Z20 F6000 ; Go to home position G32 G31 Z0.540 G29 S1 G28 Z

                    There are a few problems here. G30 F240 is not a valid command. If you want to set the dive speed you need to specify it with M558 F240 on the line before the G30.

                    Your homeall calls G28 Z so please post homez.g

                    In your homeall you call G32, which is bed.g which has a g28 Z in it to home the z axis, but then you also change the trigger height with G31 Z0.540 and then load a heightmap, and then home z again.

                    You should set the trigger height in config.g and leave it there. You haven't posted your config so I don't know what your trigger height is set there, but if it's different than 0.540 then you're going to have some problems.

                    What trigger height was used to create the heightmap?

                    You should only load the heightmap after the Z axis has been homed with the probe.

                    Without your config.g I can't say more, but it sounds like you have the Z motor drivers defined in a different order than you are using to probe, so double check that the left motor is connected to driver 2 and the right to driver 4.

                    Z-Bot CoreXY Build | Thingiverse Profile

                    1 Reply Last reply Reply Quote 0
                    • rudenickundefined
                      rudenick
                      last edited by

                      @Phaedrux said in G32 Dual Z axis constant 0.6mm off-level difference:

                      You should set the trigger height in config.g and leave it there. You haven't posted your config so I don't know what your trigger height is set there, but if it's different than 0.540 then you're going to have some problems.

                      I started getting fine leveling results precisely because I moved it from config.g so G32 works without it. How do I get better measurements with Z offset in there? (they were scattered and inconsistent. I got the motors in the right order.

                      At least now they get more even but still I need to home it few times

                      25/09/2020, 07:54:49	G28
                      Leadscrew adjustments made: 0.052 -0.048, points used 2, (mean, deviation) before (0.005, 0.029) after (0.000, 0.000)
                      Stopped at height 0.590 mm
                      Stopped at height 0.540 mm
                      
                      Error: Homing failed
                      25/09/2020, 07:47:56	G28
                      Leadscrew adjustments made: 0.096 -0.089, points used 2, (mean, deviation) before (0.010, 0.054) after (0.000, 0.000)
                      Stopped at height 0.595 mm
                      Stopped at height 0.515 mm
                      
                      Error: Homing failed
                      25/09/2020, 07:45:14	G28
                      Leadscrew adjustments made: 0.164 -0.158, points used 2, (mean, deviation) before (0.014, 0.094) after (0.000, 0.000)
                      Stopped at height 0.647 mm
                      Stopped at height 0.505 mm
                      
                      Error: Homing failed
                      
                      1 Reply Last reply Reply Quote 0
                      • rudenickundefined
                        rudenick
                        last edited by

                        Full config.g

                        ; General preferences
                        G90                                            ; send absolute coordinates...
                        M83                                            ; ...but relative extruder moves
                        M550 P"Ender1"                                 ; set printer name
                        
                        ; Network
                        ;M552 S0                                        ; disable network
                        
                        ; Drives
                        M569 P0 S0 D3 ;T0.1:0.1:0.02:0.02                  ; physical drive 0 goes backwards using TMC220x driver timings
                        M569 P1 S0 D3 ;T0.1:0.1:0.02:0.02                  ; physical drive 1 goes backwards using TMC220x driver timings
                        M569 P2 S1 D3 ;T0.1:0.1:0.02:0.02                  ; physical drive 2 goes forwards using TMC220x driver timings
                        M569 P3 S0 ;T0.1:0.1:0.02:0.02                  ; physical drive 3 goes backwards using TMC220x driver timings
                        M569 P4 S1 D3 ;T0.1:0.1:0.02:0.02                  ; physical drive 3 goes backwards using TMC220x driver timings
                        ;M569 P0 S0                                     ; physical drive 0 goes forwards using default driver timings
                        ;M569 P1 S0                                     ; physical drive 1 goes forwards using default driver timings
                        ;M569 P2 S1                                     ; physical drive 2 goes forwards using default driver timings
                        ;M569 P3 S0                                     ; physical drive 3 goes forwards using default driver timings
                        
                        M584 X0 Y1 Z2:4 E3                               ; set drive mapping
                        M350 X16 Y16 Z16 E32 I1 					   ; configure microstepping with interpolation 
                        M92 X80.00 Y80.00 Z400 E194.68                   ; set steps per mm 210.00 without m350
                        M566 X1200.00 Y1200.00 Z24.00 E300.00            ; set maximum instantaneous speed changes (mm/min)
                        M203 X9000.00 Y9000.00 Z180.00 E6000.00        ; set maximum speeds (mm/min)
                        M201 X500.00 Y500.00 Z100.00 E5000.00            ; set accelerations (mm/s^2)
                        M906 X800 Y800 Z800 E1000 I30                   ; set motor currents (mA)
                        M572 D0 S0.42                                 ; set pressure advance for direct drive
                        M84 S30                                        ; Set idle timeout
                        
                        ;dual z axis limits                             ;TO BE CORRECTED
                        M671 X-30:260 Y115:115 S1                        ; leadscrews at left (connected to Z) and right (connected to E1) of X axis
                        ;M208 X45:195 Y30:185                            ; X carriage moves from -5 to 205, Y bed goes from 0 to 200
                        
                        ; Axis Limits
                        M208 X0 Y0 Z0 S1                               ; set axis minima
                        M208 X252 Y230 Z230 S0                         ; set axis maxima
                        
                        ; Endstops
                        M574 X1 S1 P"xstop"                            ; configure active-high endstop for low end on X via pin xstop
                        M574 Y1 S1 P"ystop"                            ; configure active-high endstop for low end on Y via pin ystop
                        M574 Z1 S1 P"zstop"                            ; configure active-high endstop for low end on Z via pin zstop
                        
                        ; Z-Probe PINDA
                        M558 P5 C"probe" H3 F120 T6000 A20 S0.005     ; PINDA
                        ;M308 S2 P"e1temp" A"PINDA" Y"thermistor" T100000 B3950 ; PINDA TEMP OK
                        G31 P100 X-35 Y-4 ;Z0.540
                        M557 Y20:220 X19:215 P9                        ; define mesh grid OK
                        
                        
                        
                        ; Heaters
                        M140 H0                                        ; remap heated bed to heater 0
                        M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin bedtemp
                        M950 H0 C"bed" T0                              ; create bed heater output on bed and map it toensor 0
                        M143 H0 S110                                    ; set temperature limit for heater 0 to 150C
                        M307 H0 A149.8 C505.7 D0.3 S1.0 V0.0 B0      ; disable bang-bang mode for the nozzle heater and set PWM limit, update auto bed tuning M303 H0 S90
                        
                        M308 S1 P"e0temp" Y"thermistor" T100000 B4092  ; 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 S265                                   ; set temperature limit for heater 1 to 275C
                        M307 H1 A348.1 C142.2 D5.1 S1.0 V0.0 B0        ; disable bang-bang mode for the nozzle heater and set PWM limit, update auto bed tuning M303 H1 S260
                        
                        
                        ; 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"e1heat" Q500                         ; create fan 1 on pin e1heat and set its frequency
                        M106 P1 H1 T40 S255                           ; set fan 1 value. Speed is set to 255. Thermostatic control is off
                        
                        
                        
                        
                        ; Tools
                        M563 P0 D0 H1 F0                               ; define tool 0
                        ;G10 P0 X0 Y-13 Z-0.80                                ; set tool 0 axis offsets
                        G10 P0 X0 Y-13 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
                        T0                                             ; select first tool
                        
                        

                        full homeall.g

                        G91                     ; relative positioning
                        G1 H2 Z5 F6000          ; lift Z relative to current position
                        M190 S60           ; set temp to 60
                        G1 H1 X-240 Y-240 F3000 ; move quickly to X and Y axis endstops and stop there (first pass)
                        G1 H2 X5 Y5 F6000       ; go back a few mm
                        G1 H1 X-240 Y-240 F240  ; move slowly to X and Y axis endstops once more (second pass)
                        G1 H2 Z5 F6000          ; lift Z relative to current position
                        G1 X160 Y115 F3000      ; put head over the centre of the bed, or wherever you want to probe
                        G30 F240                ; lower head, stop when probe triggered and set Z to trigger height
                        G90                     ; back to absolute mode
                        G1 H2 X0 Y0 Z20 F6000   ; Go to home position
                        G32
                        G31 Z0.498 ;Z0.540
                        ;G29 S1
                        G28 Z
                        

                        full bed.g

                        G30 P0 X20 Y115 Z-99999 ; probe near a leadscrew, half way along Y axis
                        G30 P1 X190 Y115 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
                        G28 Z
                        
                        
                        G90 ; absolute mode
                        G1 Z5
                        G1 X40 Y115 F6000 ; put head over the mid left corner
                        G1 Z0
                        G91 ; relative mode
                        G1 H2 Z5 F6000 ; raise head 4mm to ensure it is above the Z probe trigger height
                        G90 ; back to absolute mode
                        G30 S-1; lower head, stop when probe triggered and report the value
                        
                        G90 ; absolute mode
                        G1 Z5
                        M564 S0
                        G1 X250 Y115 F6000 ; put head over the mid right corner
                        M564 S1
                        G91 ; relative mode
                        G1 H2 Z5 F6000 ; raise head 4mm to ensure it is above the Z probe trigger height
                        G90 ; back to absolute mode
                        G30 S-1; lower head, stop when probe triggered and report the value
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • rudenickundefined
                          rudenick
                          last edited by rudenick

                          I also have a trouble with changing Z offset, one week it's 2mm lower and after few prints it goes 2mm up while I'm consistent with the procedure and it is persistent on restarts.

                          Phaedruxundefined 1 Reply Last reply Reply Quote 0
                          • rudenickundefined
                            rudenick
                            last edited by

                            If at least I could home onice:

                            25/09/2020, 07:54:49	G28
                            Leadscrew adjustments made: 0.052 -0.048, points used 2, (mean, deviation) before (0.005, 0.029) after (0.000, 0.000)
                            Stopped at height 0.590 mm
                            Stopped at height 0.540 mm
                            
                            Error: Homing failed
                            25/09/2020, 07:47:56	G28
                            Leadscrew adjustments made: 0.096 -0.089, points used 2, (mean, deviation) before (0.010, 0.054) after (0.000, 0.000)
                            Stopped at height 0.595 mm
                            Stopped at height 0.515 mm
                            
                            Error: Homing failed
                            25/09/2020, 07:45:14	G28
                            Leadscrew adjustments made: 0.164 -0.158, points used 2, (mean, deviation) before (0.014, 0.094) after (0.000, 0.000)
                            Stopped at height 0.647 mm
                            Stopped at height 0.505 mm
                            
                            Error: Homing failed
                            25/09/2020, 07:42:46	G28
                            Leadscrew adjustments made: 0.379 -0.333, points used 2, (mean, deviation) before (0.048, 0.209) after (0.000, 0.000)
                            Stopped at height 0.908 mm
                            Stopped at height 0.675 mm
                            
                            1 Reply Last reply Reply Quote 0
                            • Phaedruxundefined
                              Phaedrux Moderator @rudenick
                              last edited by

                              @rudenick said in G32 Dual Z axis constant 0.6mm off-level difference:

                              I also have a trouble with changing Z offset, one week it's 2mm lower and after few prints it goes 2mm up while I'm consistent with the procedure and it is persistent on restarts.

                              Are the springs on your Ender3 bed really loose? Is the magnetic bed moving around a lot?

                              Ah I see you are using the Pinda probe which I think it quite sensitive to temp changes. I see you also had the pinda temp sensor configured but is now commented out. Have you tried using the temp correction with it yet? I think this is probably your biggest problem for consistency.

                              Z-Bot CoreXY Build | Thingiverse Profile

                              1 Reply Last reply Reply Quote 0
                              • rudenickundefined
                                rudenick
                                last edited by rudenick

                                @Phaedrux I printed a 2cm washers in PCABS and replaced the springs with them. Magnetic bed holds to the bed.

                                At first it worked but I started to have hardware/connection issues with temperature sensor in pinda probe. I never used temp corretion, I thought it is not available.

                                I always use 60C temp for homing and printing unless I use PCABS but that's not in the equation/files right now.

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

                                  You might find this thread interesting.

                                  https://forum.duet3d.com/topic/17383/polynomial-temp-compensation-for-probes?_=1601047729960

                                  I think it would be worthwhile to try out the temperature compensation again.

                                  https://duet3d.dozuki.com/Wiki/Gcode#Section_G31_Set_or_Report_Current_Probe_status

                                  Z-Bot CoreXY Build | Thingiverse Profile

                                  1 Reply Last reply Reply Quote 0
                                  • rudenickundefined
                                    rudenick
                                    last edited by

                                    Yes but as I use 60C always - It's safe dependable value. Using temperature offsets would just add another fail point and would not impact anything that is failing currently

                                    1 Reply Last reply Reply Quote 0
                                    • rudenickundefined
                                      rudenick
                                      last edited by

                                      Duet software turns out to be very difficult to be made to work despite doing everything like the guides said.

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

                                        It's not the temperature of the bed, it's the temperature of the probe. You've chosen a probe that is sensitive to temperature variance. It has a thermistor to help correct for that, but you're not using it.

                                        You also seem to have some mechanical problems if there is that much sag.

                                        Z-Bot CoreXY Build | Thingiverse Profile

                                        1 Reply Last reply Reply Quote 0
                                        • rudenickundefined
                                          rudenick
                                          last edited by

                                          @dc42 Hope it is a worthwhile bother. I'm at the wits end with configuring duet for my ender 3 and pinda probe since May.

                                          The Z offset is inconsistent and two Z axis true leveling is inconsistent as well.

                                          • I have replaced the springs with PCABS washers.
                                          • Probe measures at static 60C
                                          • Z rod distances, bed size, probe to nozzle distances are correct.
                                          • Z motor order and cabling is correct.

                                          Please, please help

                                          1 Reply Last reply Reply Quote 0
                                          • rudenickundefined
                                            rudenick
                                            last edited by

                                            But if the probe always meets the same bed temperature - the variance is constant right?
                                            Thermistor is there to correct the non-constant bed temperatures to keep the same offset between 60 and 90C but I'm using only one

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