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

    I have found that G29 is NOT the same as G29 S0.

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    5
    34
    3.5k
    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.
    • Phaedruxundefined
      Phaedrux Moderator @Nuramori
      last edited by

      @nuramori said in I have found that S29 is NOT the same as S29 S0.:

      As a test, I also removed mesh.g to see what wouyld happen. Same thing - unless S0 is actually stated in the command, mesh compensation will not activate.

      Thanks. Either a bug or the documentation needs to be updated. Will check which.

      Z-Bot CoreXY Build | Thingiverse Profile

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

        @nuramori said in I have found that G29 is NOT the same as G29 S0.:

        Adding S0 to my M29 command has corrected the behavior, but I wanted to see if this was a real change somehow.

        Where was the command that you added the S0 to?

        Frederick

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

        Nuramoriundefined 1 Reply Last reply Reply Quote 0
        • Nuramoriundefined
          Nuramori @fcwilt
          last edited by

          @fcwilt in my bed.g file. included below in case it's asked for....

          ; bed.g
          
          M291 P"Probing mesh grid process started" R"Probing.." S1 T2
          M561                          ; clear any bed transform
          M557 X40:290 Y40:290 P6:6     ; Define mesh grid
          G90                           ; absolute positioning
          
          G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
          M400                          ; Wait for move to finish
          
          G30 P0 X40 Y186 Z-99999       ; probe near leadscrew one
          G30 P1 X300 Y290 Z-99999      ; probe near leadscrew two
          G30 P2 X300 Y60 Z-99999 S3    ; probe near leadscrew three and calibrate.
          G30 S-3                       ; Probe and set Z=0
          G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
          G29 S0                        ; Probe the bed and save height map to file
          M402                          ; Retract probe
          
          M291 P"Probing mesh grid process finished !" R"Probing.." S1 T2
          G1 X0 Y0 F10000
          
          fcwiltundefined 1 Reply Last reply Reply Quote 0
          • fcwiltundefined
            fcwilt @Nuramori
            last edited by

            @nuramori said in I have found that G29 is NOT the same as G29 S0.:

            @fcwilt in my bed.g file. included below in case it's asked for....

            ; bed.g
            
            M291 P"Probing mesh grid process started" R"Probing.." S1 T2
            M561                          ; clear any bed transform
            M557 X40:290 Y40:290 P6:6     ; Define mesh grid
            G90                           ; absolute positioning
            
            G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
            M400                          ; Wait for move to finish
            
            G30 P0 X40 Y186 Z-99999       ; probe near leadscrew one
            G30 P1 X300 Y290 Z-99999      ; probe near leadscrew two
            G30 P2 X300 Y60 Z-99999 S3    ; probe near leadscrew three and calibrate.
            G30 S-3                       ; Probe and set Z=0
            G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
            G29 S0                        ; Probe the bed and save height map to file
            M402                          ; Retract probe
            
            M291 P"Probing mesh grid process finished !" R"Probing.." S1 T2
            G1 X0 Y0 F10000
            

            Thanks.

            Was this the file where you added the S0 to the G29 command?

            Also you have a G30 S-3 which is not likely what you want - it does not set the Z=0 datum.

            Also you did not set the XY position before executing the G30. Given that you are auto-leveling the bed you should position the probe to the center of the bed before executing the G30.

            Just one other thing - the file mesh.g is intended to be used for mesh bed compensation (the G29 commands) - the file bed.g is intended to be used for bed leveling (auto or manual with the G30 commands).

            G32 executes the bed.g file - G29 executes the mesh.g file.

            If you want to stay consistent with the commands in the DWC you should stick with this convention.

            You said you have (or had) a file mesh.g - will you post that please.

            Frederick

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

            Nuramoriundefined A Former User? 2 Replies Last reply Reply Quote 0
            • Nuramoriundefined
              Nuramori @fcwilt
              last edited by Nuramori

              @fcwilt said in I have found that G29 is NOT the same as G29 S0.:

              @nuramori said in I have found that G29 is NOT the same as G29 S0.:

              @fcwilt in my bed.g file. included below in case it's asked for....

              ; bed.g
              
              M291 P"Probing mesh grid process started" R"Probing.." S1 T2
              M561                          ; clear any bed transform
              M557 X40:290 Y40:290 P6:6     ; Define mesh grid
              G90                           ; absolute positioning
              
              G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
              M400                          ; Wait for move to finish
              
              G30 P0 X40 Y186 Z-99999       ; probe near leadscrew one
              G30 P1 X300 Y290 Z-99999      ; probe near leadscrew two
              G30 P2 X300 Y60 Z-99999 S3    ; probe near leadscrew three and calibrate.
              G30 S-3                       ; Probe and set Z=0
              G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
              G29 S0                        ; Probe the bed and save height map to file
              M402                          ; Retract probe
              
              M291 P"Probing mesh grid process finished !" R"Probing.." S1 T2
              G1 X0 Y0 F10000
              

              Thanks.

              Was this the file where you added the S0 to the G29 command?

              Also you have a G30 S-3 which is not likely what you want - it does not set the Z=0 datum.

              Also you did not set the XY position before executing the G30. Given that you are auto-leveling the bed you should position the probe to the center of the bed before executing the G30.

              Just one other thing - the file mesh.g is intended to be used for mesh bed compensation (the G29 commands) - the file bed.g is intended to be used for bed leveling (auto or manual with the G30 commands).

              G32 executes the bed.g file - G29 executes the mesh.g file.

              If you want to stay consistent with the commands in the DWC you should stick with this convention.

              You said you have (or had) a file mesh.g - will you post that please.

              Frederick

              I'm aware - I also have a three independent z axis system I developed for the BLV cube, and implement the leveling here as well. The mesh.g file is a placeholder, as what I needed done I just put into the bed.g file (for now). To answer your first question, this is the place I have the G29 command (and the only place).

              The comment for the G30 s-3 is a misnomer - I just haven't edited the comment to reflect the correction - way too many other distractions to clean up some things I guess.
              Good point on the moving to the middle and probing. I do that for the z axis homing, and can repeat it so it stays in the same place.

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

                @nuramori said in I have found that G29 is NOT the same as G29 S0.:

                The mesh.g file is a placeholder

                If mesh.g does not have the G29 commands needed to create the height map it will prevent G29 from working as intended.

                If you only had G29 in your bed.g file then it would also not have done what you wanted which is why G29 S0 did work.

                The comment for the G30 s-3 is a misnomer

                If you wish to set the Z=0 datum, which is something you needed to do after bed leveling, you need to use just G30.

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

                Nuramoriundefined 1 Reply Last reply Reply Quote 0
                • Nuramoriundefined
                  Nuramori @fcwilt
                  last edited by Nuramori

                  @fcwilt thanks, that perhaps clears things up; though I would be wary of the semantics seeming to imply that not including S0 will result in a default behavior that is in fact not as expected. Could just be how I read it.

                  I corrected the comment to reflect what is happening with the G30 command (and used as intended)...

                  ; bed.g
                  
                  M291 P"Probing mesh grid process started" R"Probing.." S1 T2
                  M561                          ; clear any bed transform
                  M557 X40:290 Y40:290 P6:6     ; Define mesh grid
                  G90                           ; absolute positioning
                  
                  G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
                  M400                          ; Wait for move to finish
                  
                  G30 P0 X40 Y186 Z-99999       ; probe near leadscrew one
                  G30 P1 X300 Y290 Z-99999      ; probe near leadscrew two
                  G30 P2 X300 Y60 Z-99999 S3    ; probe near leadscrew three and calibrate.
                  
                  G1 X162.5 Y172.5 F16000       ; go to middle of the bed
                  G30 S-3                       ; Probe and set the trigger height
                  G1 H2 Z20 F1000               ; Making sure we're not going to hit the side of glass
                  G29 S0                        ; Probe the bed and save height map to file
                  M402                          ; Retract probe
                  
                  M291 P"Probing mesh grid process finished !" R"Probing.." S1 T2
                  G1 X0 Y0 F10000
                  

                  Thanks for the comments - they were helpful (as always).

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

                    @nuramori

                    Hi,

                    I see the G1 move to center which is good but I still see the G30 S-3 which is not what you want there.

                    Frederick

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

                    Nuramoriundefined 1 Reply Last reply Reply Quote 0
                    • Nuramoriundefined
                      Nuramori @fcwilt
                      last edited by

                      @fcwilt I’m not sure why you don’t think it belongs there. It’s setting the trigger height which works in conjunction with my offset that is used to define nozzle height in my config.g. Other than the active mesh, things are working perfectly.

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

                        @nuramori said in I have found that G29 is NOT the same as G29 S0.:

                        @fcwilt I’m not sure why you don’t think it belongs there. It’s setting the trigger height which works in conjunction with my offset that is used to define nozzle height in my config.g. Other than the active mesh, things are working perfectly.

                        Because you don't want to set the Z probe trigger height, that alters the value set by your G31 command.

                        You want to use the current trigger height setting to set the correct Z position at the moment the Z probe is triggered.

                        If you don't use G30 you are not setting the Z=0 datum which is what you want to do after leveling the bed.

                        Setting the Z=0 datum is something you also want to do that before creating or loading a height map.

                        Frederick

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

                        Nuramoriundefined 1 Reply Last reply Reply Quote 0
                        • Nuramoriundefined
                          Nuramori @fcwilt
                          last edited by Nuramori

                          @fcwilt But I DO want to set the trigger height, and effectively update the value of the G31 that's in the config.g. I don't have to worry about any discrepancies - I already calibrated z (https://duet3d.dozuki.com/Wiki/Test_and_calibrate_the_Z_probe), so any variation due to the bed being hotter than before is compensated for with a new trigger height value.

                          I've never had an issue with this process, and seems to be ideal to maintain the ideal trigger value.

                          for reference/edification -

                          ; Configuration file for Duet3 (firmware version 3.3 stable)
                          ; executed by the firmware on start-up
                          ; 
                          ; --------------- Pin/connection Mapping Legend -------------------
                          ; 0.out0      - Bed heater
                          ; 0.out1
                          ; 0.out2
                          ; 0.out3
                          ; 0.out4      - Radiator cooling fan - WC heatsink
                          ; 0.out5
                          ; 0.out6
                          ; 0.out7
                          ; 0.out8
                          ; 0.out9      - Duet board cooling fan
                          ; 0.out4.tach - Radiator cooling fan rpm wire - WC heatsink
                          ; 0.out5.tach
                          ; 0.out6.tach
                          ; 0.io0.in
                          ; 0.io1.in    - Emergency stop switch
                          ; 0.io2.in    - Y max active low endstop switch
                          ; 0.io3.in
                          ; 0.io4.in
                          ; 0.io5.in
                          ; 0.io6.in
                          ; 0.io7.in
                          ; 0.io8.in
                          ; 0.io0.out
                          ; 0.io1.out
                          ; 0.io2.out
                          ; 0.io3.out
                          ; 0.io4.out
                          ; 0.io5.out
                          ; 0.io6.out
                          ; 0.io7.out
                          ; 0.io8.out
                          ; 0.servo, out10 (only on v0.5, not on v0.6)
                          ; 0.pson
                          ; 0.spi.cs0
                          ; 0.spi.cs1
                          ; 0.spi.cs2
                          ; 0.spi.cs3
                          ; 0.temp0      - Bed Thermistor
                          ; 0.temp1
                          ; 0.temp2
                          ; 0.temp3      - Coolant Temp Sensor
                          ; 0.mcu-temp   - MCU sensor
                          ;
                          ;----------Toolboard 1 (CAN ID#20)
                          ; 20.0         - Accelerometer
                          ; 20.out0      - Hotend Heater
                          ; 20.out1      -
                          ; 20.out2      - Parts cooler on printhead
                          ; 20.out1.tach -
                          ; 20.out2.tach -
                          ; 20.io0.in    - Z probe type to bltouch current - Piezo future
                          ; 20.io1.in    - X min active low endstop switch
                          ; 20.io2.in    -
                          ; 20.io3.in    -
                          ; 20.io0.out   - GPIO port 0 on toolboard io0, servo mode - BLTouch Z-Probe
                          ; 20.temp0     - Extruder Thermistor
                          ; 20.temp1     -
                          ; 20.button0   -
                          ; 20.button1   -
                          ;
                          ; -----------------------------------------------------------------
                          ;
                          ; General preferences
                          M81                               ; Turn on the Power (inverted for Meanwell)
                          G4 P2000                          ; Hold your Horses.
                          G90                               ; send absolute coordinates...
                          M83                               ; ...but relative extruder moves
                          G21                               ; Set units to Millimeters
                          M550 P"DUET3"                     ; set printer name
                          M575 P1 S1 B57600                 ; Set things up for the PanelDue
                          
                          G4 S6                             ; Wait for toolboard to start
                          M584 X0.3 Y0.2 Z0.0:0.1:0.4 E20.0 ; set drive mapping to each axis
                          M669 K1                           ; Select CoreXY mode - New format
                          
                          ; Network
                          ; M552 S1                         ; enable network
                          ; M586 P0 S1                      ; enable HTTP
                          ; M586 P1 S0                      ; disable FTP
                          ; M586 P2 S0                      ; disable Telnet
                          
                          ; Drives
                          M569 P0.0 S0                    ; physical drive 0 goes backwards - Z Axis Left (1)
                          M569 P0.1 S0                    ; physical drive 1 goes backwards - Z Axis Right Back (2)
                          M569 P0.2 S0                    ; physical drive 2 goes backwards - Y Axis, activate Stealthchop
                          M569 P0.3 S0                    ; physical drive 3 goes backwards - X Axis, activate Stealthchop
                          M569 P0.4 S0                    ; physical drive 4 goes backwards - Z Axis Right Front (3)
                          M569 P20.0 S1                   ; physical drive 5 goes forwards - Extruder 1
                          
                          ; Set up three Z-axis location
                          M671 X-6:362:362 Y186:299:60 S5            ; Pivot Points at 1 - left, 2 - rear right and 3 - front right
                          
                          M92 X199 Y198 Z1585 E1299                  ; set steps per mm
                          M350 X16 Y16 Z16 E16 I1                    ; configure micro-stepping with interpolation
                          M566 X600.00 Y600.00 Z100.00 E240.00       ; set maximum instantaneous speed changes (mm/min)
                          M203 X16000.00 Y16000.00 Z400.00 E1200.00  ; set maximum speeds (mm/min)
                          M201 X4000.00 Y4000.00 Z400.00 E800.00     ; set accelerations (mm/s^2)
                          M906 X800 Y800 Z800 E800 I30               ; set motor currents (mA) and motor idle factor in percent*100
                          
                          ; Set up Stealthcop Parameters
                          ; M569 P0.0 V40 H5
                          ; M569 P0.1 V40 H5
                          ; M569 P0.2 V40 H5
                          ; M569 P0.3 V40 H5
                          ; M569 P0.4 V40 H5
                          ; M569 P20.0 V40 H5
                          ; M915 X Y Z E T1
                          
                          M84 S30                                    ; Set idle timeout
                          
                          ; Axis Limits
                          M208 X0 Y0 Z0 S1                           ; set axis minima
                          M208 X315 Y315 Z325 S0                     ; set axis maxima
                          
                          ; Endstops
                          
                          M574 X1 S1 P"20.io1.in"                    ; X min active high endstop switch
                          M574 Y2 S1 P"0.io2.in"                     ; Y max active high endstop switch
                          
                          ; Z-Probe - BLTouch - *CURRENT*
                          M574 Z1 S2                                 ; set endstops controlled by probe
                          M558 P9 C"^20.io0.in" H5 F2000 T12000      ; set Z probe type to bltouch and the dive height + speeds (bltouch NEEDS pullup)
                          G31 P100 X0 Y-20 Z3.85                     ; set Z probe trigger value, offset and trigger height - 0.40MM NOZZLE FIXED Kv1
                          G30                                        ; Probe Z
                          
                          ; Configure Heaters and Sensors
                          M308 S0 P"0.temp0" Y"thermistor" A"Bed Heat" T100000 B3950    ; Configure bed temperature sensor
                          M950 H0 C"0.out0" T0                                          ; Define heater 0 (bed heater) - bed_heat pin and Temp Sensor 0 
                          M143 H0 S120 A2                                               ; set temperature limit for heater 0 to 120c
                          M140 H0                                                       ; Map heated bed to heater 0
                          
                          M308 S1 P"20.temp0" Y"thermistor" A"Mosquito" T500000 B4723 C1.196220e-7  ; Configure extruder 1 temperature sensor - Mosquito
                          M950 H1 C"20.out0" T1                                                     ; Define heater 1 (hot-end E0) to use the "20.out0" pin and Temp Sensor 1
                          
                          M143 H1 S270 A2                                               ; set temperature limit for heater 1 to 270C
                          
                          M308 S2 P"mcu-temp" Y"mcu-temp" A"Duet Board"                 ; Configure MCU sensor
                          M308 S3 P"temp3" Y"thermistor" T10000 B3988 A"Coolant"        ; Configure coolant sensor
                          
                          ; Configure Fans
                          M950 F0 C"20.out2" Q100                 ; Define Fan_0 for use - Parts Cooler on Printhead - 5015 fan
                          M950 F1 C"0.out9" Q25000                ; Define Fan_1 for use - Duet board cooling fan
                          M950 F2 C"!0.out4+^0.out4.tach" Q25000  ; Define Fan_1 for use - Radiator cooling - WC heatsink. - PWM fan
                          M950 S0 C"20.io0.out"                   ; Define GPIO port 0 on IO0, servo mode - BLTouch Z-Probe - *CURRENT*
                          M950 J0 C"^!0.io1.in"                   ; Input 0 uses 0.io1.in pin, pullup enabled
                          
                          ; Fans
                          M106 P0 S0                          ; set fan 0. Parts Cooler on Printhead
                          M106 P1 T45:50 H2                   ; Set fan 1. Manages Duet board fan.
                          M106 P2 T20:40 H3                   ; Set fan 1. Manages Radiator fan for water-cooled loop.
                          
                          ;Set PID values             
                          M307 H0 B0 R0.720 C713.5 D2.13 S1.00               ; disable bang-bang mode for the bed heater and set PWM limit
                          M307 H1 B0 R2.487 C249.5:190.7 D5.51 S1.00 V23.1   ; disable bang-bang mode for the extruder heater and set PWM limit
                          
                          ; Pressure Advance
                          M572 D0 S0.05                             ; Set pressure advance to offset elasticity
                          
                          ; Dynamic Acceleration Adjustment and Non-linear
                          M592 D0 A0.015 B0.0012 L0.2
                          M593 P"daa" F21
                          
                          ; Set Movement Queue
                          M595 P100
                          
                          ; Set up Accelerometer
                          M955 P20.0 I12                      ; Accelerometer on toolboard, oriented counter clockwise 90 Enable for RRF 3.3 Stable
                          
                          ; Tools
                          M563 P0 S"Printhead" D0 H1 F0       ; define tool 0. Fan 0 operates with an active hot-end
                          G10 L1 P0 X0 Y0 Z0                  ; set tool 0 axis offsets - - - X15 Y18 - Bed 0,0
                          G10 P0 R0 S0                        ; set active and standby temperatures to 0C
                          
                          ; Emergency Stop
                          M574 S1 P"^!0.io1.in"               ; Define Emergency endstop - emergency stop switch condition
                          M581 P0 S1 T0                       ; Define action to be taken with activation of emergency stop switch
                          
                          ; Miscellaneous
                          T0                                  ; select first tool
                          
                          fcwiltundefined 1 Reply Last reply Reply Quote 0
                          • fcwiltundefined
                            fcwilt @Nuramori
                            last edited by

                            @nuramori

                            It doesn't work the way you think it does but I guess I'm not going to be able to convince you.

                            Having built 7 printers and now working on number 8 I thought I learned a thing or two along the way but perhaps not.

                            Good luck.

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

                            Nuramoriundefined 1 Reply Last reply Reply Quote 0
                            • Nuramoriundefined
                              Nuramori @fcwilt
                              last edited by Nuramori

                              @fcwilt you can certainly convince me, I'm looking for what change you'd suggest and test it to compare to what behavoir I have now (which prints as I am expecting). Just saying 'that's not correct" isn't going to help me understand your perspective on WHAT is wrong as you see it, so I can understand the reasoning behind your comment. I'm not a novice - I've designed my own extruder and several other elements to this printer that is used by others, but I am very open to comments and constructive feedback, with more explanation.

                              For instance, you said if I don't use g30 to set... if you look in the config.g, I in fact do use the command as part of the initial setup (line 128).

                              Also... nothing happens until all the axis are homed - meaning that leveling nor mesh compensation can be done until the z axis is homed. In my z axis homing, I have G30 occuring (yes probably doubled up now that I see it), but G30 is done before anything happens. There are layers to the process, and just because it's not in the bed.g file doesn't mean I didn't accommodate it. It's just done elsewhere, in an appropriate place.

                              ; homez.g
                              ; called to home the Z axis
                              ;
                              ; generated by RepRapFirmware Configuration Tool on Tue Oct 09 2018 13:27:56 GMT+0300
                              G91				            ; relative positioning
                              
                              ; Initiate tuning movement sequence for Stealthcop
                              ; G1 H2 Z0.02 F1000
                              ; G4 P50
                              
                              G1 H2 Z10 F1000	            ; Drop Z relative to current position
                              G90				            ; absolute positioning
                              G1 X162.5 Y172.5 F16000		; go to first probe point
                              G30				            ; home Z by probing the bed
                              
                              ; Uncomment the following lines to lift Z after probing
                              G91				            ; relative positioning
                              G1 H2 Z10 F1000	            ; lower Z a bit more
                              G90				            ; absolute positioning
                              
                              Phaedruxundefined fcwiltundefined 2 Replies Last reply Reply Quote 0
                              • Phaedruxundefined
                                Phaedrux Moderator @Nuramori
                                last edited by

                                @nuramori said in I have found that G29 is NOT the same as G29 S0.:

                                in an appropriate place.

                                The appropriateness of G30 in config.g is debatable. What happens if there is a reset mid print? Does probing in place with a print on the bed not cause problems?

                                But the main thing is that Z0 is determined with the probe before loading/creating a mesh.

                                I can't say I follow why you're re-setting the trigger height with G30 S-3 after the auto leveling instead of just resetting the Z0 position with a G30. The trigger height shouldn't have changed unless the distance between the nozzle and probe has changed. What does your resulting heightmap actually look like?

                                Z-Bot CoreXY Build | Thingiverse Profile

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

                                  @nuramori

                                  First let us clarify one thing.

                                  I tested this and on a Duet 3 Mini 5+ running firmware 3.3.0 executing a G29 with no mesh.g file present probes the bed, creates the height map and enables mesh compensation.


                                  Now let's try to clarify setting the Z=0 datum.

                                  The Z probe Z trigger height setting from G31 tells the firmware what the Z axis position will be when the Z probe triggers.

                                  So let's say the Z trigger height setting is 5mm.

                                  Executing a G30 causes the firmware to move the Z probe toward the bed until the Z probe triggers.

                                  Since Z position is always in relation to the surface of the bed at the instant the firmware knows the Z position is 5mm****undefined.

                                  Knowing that the firmware can move to any other Z position - including Z=0.

                                  Thus the Z=0 datum has been set.


                                  The calibration procedure for determining the Z probe Z trigger height setting for G31 only needs to be done once unless something changes the Z axis relationship between the nozzle and the Z probe.

                                  Bed expansion, due to heating of the bed, may change the relationship of the bed to the frame, for a given Z axis position, but it does not change the relationship between the nozzle and the Z probe.

                                  Executing a G30 S-3 may or may not change the Z probe Z trigger height setting as determined by the calibration procedure. However it serves no purpose to do that since the setting determined by calibration should be sufficient.

                                  Even if you did a G30 S-3 it doesn't result in the Z=0 datum being set and that is what must be done as discussed below.


                                  Now there are three instances when setting the Z=0 datum is required:

                                  • after auto-leveling of the bed.
                                  • before creating a height map
                                  • before loading the height map

                                  The XY position used when setting the Z=0 datum should always be the same. Based on my experience the best place is the center of the bed.

                                  Some folks use the first probe point from the grid used to create the height map but that point may change if you change the grid settings or use different grid settings for different purposes, as some folks do.

                                  The center of the bed, on the other hand, is always the same, barring some physical change in the printer, and is independent of the grid settings.

                                  Frederick

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

                                  Nuramoriundefined 1 Reply Last reply Reply Quote 1
                                  • Nuramoriundefined
                                    Nuramori @fcwilt
                                    last edited by Nuramori

                                    @fcwilt You keep mentioning z=0 datum, and I had stated repeatedly, that comment in the line item was a mistake (and I had fixed it so there's no misunderstanding), and it's NOT what I'm expecting, so if your narrative is still based on that, you're in error about my the intent of using G30 S-3, how I set things up, and why.

                                    With that said, I appreciate the rest, in that you took the time to be more illustrative of your review of my initial post (though this has gone a bit tangential to that), and parts of it were helpful.

                                    Your comments about G30 I understand. As I said, I initiate that in my homez.g file, so every time the printer is started up and made ready for printing, G30 is always run (with the probe at the center of the bed). I did delete the errant G30 in the config.g, and was an old oversight (@Phaedrux ).

                                    Not to be pedantic, but thermal coefficients affect all axis, so while perhaps minuscule, thermal expansion does happen on the Z axis as well, but that's a theoretical debate for another time. It's often suggested to not do certain things (even bed leveling) until the actual operative temperatures are reached.

                                    I'll note your last comment here, and you're right - probing the center is ideal, and that was where I had always probed for the z homing (with, again, G30) so it's done very early in the routine of getting the printer started. I do thank you for pointing out that in the bed.g file I didn't have it, and that was indeed helpful (I've since added it as you noted too).

                                    To the second to last section, are you suggesting performing a G30 three times? I am doing it twice, at the center of the bed (once at the beginning, when a required Z home is done, and then right after the autoleveling is done), but I do not do it for a third time after the entire bed is probed. I'm not clear what that would do for me.

                                    So that last item that seems to be where we are not exactly in agreement is the use of G30 S-3 and if it performs any benefit. I'll say it doesn't HURT, as I have never had to baby step to compensate, and the first layer of my prints have always been spot on, even after an accidental bed tilt when the printer was off, and it had to re-level the next time it was started. Perhaps redundant, but I feel that by performing a G30 S-3 removes any chance of a nozzle conflict with the bed for any reason, because it's reconfirmed at every print. (out of sight, out of mind). Call it a quality of life convenience, rather than a requirement.

                                    fcwiltundefined 1 Reply Last reply Reply Quote 0
                                    • Nuramoriundefined
                                      Nuramori @Phaedrux
                                      last edited by Nuramori

                                      @phaedrux I use a mosquito liquid, and often enough, change nozzles, from .25, to .4, to even 1.0mm. Each nozzle is actually different in height enough that it in fact matters. The G30 S-3 has removed my need to deal with z axis calibration every time I swap them, so after having the command work for me based on a lengthy experimentation period (eliminating having to deal with the nozzle height changes), led to me just leaving it in.

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

                                        @nuramori

                                        To repeat myself:

                                        Now there are three instances when setting the Z=0 datum is required:

                                        • after auto-leveling of the bed.
                                        • before creating a height map
                                        • before loading the height map

                                        As you pointed out heating/cooling can have effects. Those effects are why you need to do a G30 as stated above. So any expansion/contraction is compensated for by having the Z=0 datum reflect the current situation.

                                        Let's exaggerate things a bit - imagine that your bed, at printing temps, expands 1mm in thickness compared to being at room temp.

                                        Also imagine you set the Z=0 datum when it is at room temp but you never set it again. When the bed has stabilized to printing temp the distance from the nozzle to the bed is now less then the firmware thinks it is, based on the setting of the Z=0 datum done at room temp.


                                        As to G30 S-3:

                                        That will only do what you think it does if the Z=0 datum was correct at the moment of execution of the G30 S-3. But how can the Z=0 datum be correct if you haven't done a G30 when the Z probe Z trigger height setting was already correct?

                                        IF you had a way (perhaps you do) to set the Z=0 datum independent of the Z probe then you could use G30 S-3 to update the Z probe Z trigger height setting.


                                        Question: When you change a nozzle do you re-run the Z probe calibration routine?

                                        Frederick

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

                                        Nuramoriundefined 1 Reply Last reply Reply Quote 1
                                        • Nuramoriundefined
                                          Nuramori @fcwilt
                                          last edited by Nuramori

                                          @fcwilt no need to repeat yourself. It’s becoming a bit snarky. You also keep talking about the three times z=0 datum is required, yet I feel you’re not paying attention to the multitude of times I’ve said I’m doing that. You’re also contradicting yourself, relative to what I’ve already explained I do at each step from turning on my printer to starting to actually print. Specifically, you stated earlier on (which I agree with) that...

                                          “ The center of the bed, on the other hand, is always the same, barring some physical change in the printer, and is independent of the grid settings.”

                                          So probing at startup, as part of my z axis homing process in homez.g accomplishes that, before or after autoleveling, since as you point out, will remain the same geometrically. Sure it may be off from the central point by a bit, but it’s reasonable to say that variance is negligible at best. If the center is as you say, always the same short of some physical change to the printer geometry, then always probing at the middle more than once to set z=0 datum is redundant. Once would suffice to establish the baseline.

                                          As I’ve said, I have zero printing issues (particularly with my first layer) even when the compensation was not active. The initial post was an observation, not a detrimental issue. I feel like we will only circle the drain, so unless you’re telling me (again) I’m doing it wrong with no factual evidence the results are due to the defect you’re asserting, I will just move on from this topic.

                                          Just in case you missed it, I am performing a G30 in the course of the machine running and starting up. That isn’t and hasn’t been an issue, even though a large chunk of your responses are devoted to it (not even sure why you’ve fixated on that at all), even when discussing the use of G30 s-3 somehow became a major concern. This entire thread was initially about G29 and could have concluded much earlier on.

                                          Also to clarify (and go back to the original point), on my Duet3 v1.0 with toolboard v1.1, with and without mesh.g, initiating a G29 alone will not activate mesh compensation, but only when I stipulate G29 S0.

                                          fcwiltundefined chrishammundefined 2 Replies Last reply Reply Quote 0
                                          • fcwiltundefined
                                            fcwilt @Nuramori
                                            last edited by

                                            @nuramori

                                            Setting the Z=0 datum once may not be sufficient because it can change as things heat up/cool down.

                                            Thus it is best to do it at the times I have stated.

                                            As to G29 not working I don't understand how that is possible since the hardware being used should make no different, only the firmware.

                                            But that is assuming that the firmware builds are the same for each platform. That is not something I can determine.

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

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