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

    unable to get BLTouch mesh compensation to work properly.

    Scheduled Pinned Locked Moved
    General Discussion
    3
    11
    373
    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.
    • dlc60undefined
      dlc60
      last edited by dlc60

      Essentials
      Duet 2 Maestro ver. 3.1.1
      Custom CoreXY
      Genuine BLTouch ver. 3
      Wired and working with all the gcode commands, deployprobe.g, retractprobe.g files.
      My offset for the BLTouch: X0, Y-21, Z4.1

      (edit 1)
      More details:
      I have a Z-min limit switch as well as a BLTouch. I set that limit to 0.05mm at the center of my build plate.
      I do all steps with both the bed and the hot end at temperature, not cold.

      I have repeatedly done the on-line suggested steps
      M561
      M564 H0
      G92 Z0
      G30 S-1
      Edit config.g to change the G31 settings with the last result
      G29 Do the matrix probe, which banged along fine. Here are the console results.

      4/14/2024, 10:39:49 PM G29 S0
      Warning: Skipping grid point (190.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (170.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (150.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (130.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (110.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (90.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (70.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (50.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (30.0, 190.0) because Z probe cannot reach it
      Warning: Skipping grid point (10.0, 190.0) because Z probe cannot reach it
      Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh.
      90 points probed, min error -2.367, max error -2.046, mean -2.219, deviation 0.082
      Height map saved to file 0:/sys/heightmap.csv
      4/14/2024, 10:28:28 PM Upload of config.g successful after 0s (Did not reboot after the save)
      4/14/2024, 10:27:52 PM G30 S-1
      Stopped at height 1.846 mm
      4/14/2024, 10:26:58 PM G92 Z0
      4/14/2024, 10:24:46 PM G0 X100 Y 100
      4/14/2024, 10:24:26 PM M564 H0

      This one turned out especially bad. Every time I run the sequence it seems to get worse.
      I have attached my config.g file, I think.
      config.g
      heightmap.csv

      I have two questions:
      All the instructions I have seen have you add the G31 Z offset as you measure it. The start the sequence. After the G30 S-1 step, then modify the G31 Z offset in config. I originally did this and told the software to restart after the save, then ran G29 S0 to get the height table. That did not work well, I got a bad first layer the nozzle clearly too high up.
      Using baby steps got the nozzle where I wanted it, but changing the G31 offset by that change accomplished nothing that I could see - I tried arbitrary adjustments, still nothing.
      Then I started doing the G29 S0 mesh probe without restarting after the config.g save. Still nozzle too high off the bed, and adjusting the G31 Z value did nothing.

      My two questions:
      What am I doing wrong? What step am I missing.
      After changing the config.g G31 Z offset to the G30 S-1 value, do I need to restart the Duet before running the G29 S0 mesh probe?

      Any help appreciated. I am scratching my head. All the steps seem to work as indicated, and I do see the mesh Z adjustments happening, but it the nozzle is just too far off the plate.
      I Set my Z endstop and adjust screws at each corner, which gets kinda close before I do any of the above.

      Thank you and be well,
      DLC

      paralepsisundefined 1 Reply Last reply Reply Quote 0
      • paralepsisundefined
        paralepsis @dlc60
        last edited by

        @dlc60 I'm not sure I'll be able to answer all your questions, but here are a couple of things:

        • The range you've selected in M557 (start, spacing of 20 in X and Y) has mesh points at Y=190, which is not reachable according to the combination of Ymax (210) and probe Y offset (-21) that you've chosen. You could get rid of those warnings by tweaking the M557 parameters (e.g., Y4:189).
        • The height map looks like it would be decent if not for a ~2mm discrepancy in offset. Sounds like you're probing separately to figure out what the Z offset should be, but you then need to account for that in the G31 Z parameter. A larger Z parameter will bring the nozzle closer to the bed.
        • I would suggest concentrating on getting Z=0 to be in the right place first, and then worry about the height map.

        Hope this helps.

        Railcore II 300XL w/ Duet 3 & RRF 3.5rc4, Makerbot R2X w/ Duet 2 WiFi & RRF 3.4

        dlc60undefined 1 Reply Last reply Reply Quote 0
        • dlc60undefined
          dlc60 @paralepsis
          last edited by

          @paralepsis said in unable to get BLTouch mesh compensation to work properly.:

          @dlc60 I'm not sure I'll be able to answer all your questions, but here are a couple of things:

          • The range you've selected in M557 (start, spacing of 20 in X and Y) has mesh points at Y=190, which is not reachable according to the combination of Ymax (210) and probe Y offset (-21) that you've chosen. You could get rid of those warnings by tweaking the M557 parameters (e.g., Y4:189).
          • The height map looks like it would be decent if not for a ~2mm discrepancy in offset. Sounds like you're probing separately to figure out what the Z offset should be, but you then need to account for that in the G31 Z parameter. A larger Z parameter will bring the nozzle closer to the bed.
          • I would suggest concentrating on getting Z=0 to be in the right place first, and then worry about the height map.

          Hope this helps.

          Thanks for replying - I understand the unreachable points, since that isn't much of a problem, I've back-burnered tweaking that setting.

          I agree about the height map. As noted, I do a Z=0 set everytime I run the sequence. That has been pretty repeatable. I also tried to adjust the Z offset by baby stepping and add that tweak to the Z offset, but it did not appear to change anything. I know what the issue is, I just seem to be doing something wrong when following the setup procedure.

          be well,

          paralepsisundefined 1 Reply Last reply Reply Quote 0
          • paralepsisundefined
            paralepsis @dlc60
            last edited by

            @dlc60 So if you just boot up, home X and Y, home Z, and then move to Z=0, how far is the nozzle from the bed, in reality? Couple of mm away?

            Railcore II 300XL w/ Duet 3 & RRF 3.5rc4, Makerbot R2X w/ Duet 2 WiFi & RRF 3.4

            dlc60undefined 1 Reply Last reply Reply Quote 0
            • dlc60undefined
              dlc60 @paralepsis
              last edited by

              @paralepsis said in unable to get BLTouch mesh compensation to work properly.:

              @dlc60 So if you just boot up, home X and Y, home Z, and then move to Z=0, how far is the nozzle from the bed, in reality? Couple of mm away?

              Nope, about 0.05 mm according to my gap gauge.

              be well,
              DLC

              paralepsisundefined 1 Reply Last reply Reply Quote 0
              • paralepsisundefined
                paralepsis @dlc60
                last edited by

                @dlc60 Ok. I'm not sure if this will help, but here's precisely what I do to set up my height map.

                G1 X102 Y60 F2400 ; move to a consistent spot for probing
                G29 S2                ; clear mesh
                G30                   ; probe once
                
                G91  ; relative positioning
                G1 Z5
                G90  ; absolute positioning
                
                M557 X6.75:288 Y40:298.75 P10:10 
                G29 S4 P"/sys/probePoints10x10all.csv"; load probePoints10x10all.csv to skip points
                
                G29 S0 ; probe and enable mesh
                M376 H5 ; taper over first 5mm (ought to be more than enough)
                

                Obviously X and Y must be homed prior to this. You can ignore the G29 S4; that's for working around magnets. I won't say this is the "right" way to do things, but it certainly works consistently for me, and I get very small discrepancies in height map (as one would hope!).

                Rob

                Railcore II 300XL w/ Duet 3 & RRF 3.5rc4, Makerbot R2X w/ Duet 2 WiFi & RRF 3.4

                dlc60undefined 2 Replies Last reply Reply Quote 0
                • dlc60undefined
                  dlc60 @paralepsis
                  last edited by

                  @paralepsis said in unable to get BLTouch mesh compensation to work properly.:

                  @dlc60 Ok. I'm not sure if this will help, but here's precisely what I do to set up my height map.

                  G1 X102 Y60 F2400 ; move to a consistent spot for probing
                  G29 S2                ; clear mesh
                  G30                   ; probe once
                  
                  G91  ; relative positioning
                  G1 Z5
                  G90  ; absolute positioning
                  
                  M557 X6.75:288 Y40:298.75 P10:10 
                  G29 S4 P"/sys/probePoints10x10all.csv"; load probePoints10x10all.csv to skip points
                  
                  G29 S0 ; probe and enable mesh
                  M376 H5 ; taper over first 5mm (ought to be more than enough)
                  

                  Obviously X and Y must be homed prior to this. You can ignore the G29 S4; that's for working around magnets. I won't say this is the "right" way to do things, but it certainly works consistently for me, and I get very small discrepancies in height map (as one would hope!).

                  Rob

                  Rob,

                  All the instructions that I have say to do G30 S-1 to find the Z probe offset to update the G31 in the config.g file. What does your Line 3 above do? What is your G31 probe offset look like when you start this? Are you working always with a previously set G31 in config.g? You are not setting the G92 Z0 either, are you using whatever you currently have?

                  be well,
                  DLC

                  1 Reply Last reply Reply Quote 0
                  • dlc60undefined
                    dlc60 @paralepsis
                    last edited by

                    @paralepsis said in unable to get BLTouch mesh compensation to work properly.:

                    @dlc60 Ok. I'm not sure if this will help, but here's precisely what I do to set up my height map.

                    G1 X102 Y60 F2400 ; move to a consistent spot for probing
                    G29 S2                ; clear mesh
                    G30                   ; probe once
                    
                    G91  ; relative positioning
                    G1 Z5
                    G90  ; absolute positioning
                    
                    M557 X6.75:288 Y40:298.75 P10:10 
                    G29 S4 P"/sys/probePoints10x10all.csv"; load probePoints10x10all.csv to skip points
                    
                    G29 S0 ; probe and enable mesh
                    M376 H5 ; taper over first 5mm (ought to be more than enough)
                    

                    Obviously X and Y must be homed prior to this. You can ignore the G29 S4; that's for working around magnets. I won't say this is the "right" way to do things, but it certainly works consistently for me, and I get very small discrepancies in height map (as one would hope!).

                    Rob

                    Rob,

                    I did these steps first:
                    M561 to clear any mesh.
                    homed all
                    moved to center of bed and up 5mm
                    G30 S-1 to find offset.
                    Modified config.g G31 probe offset.
                    Restarted.
                    Then this
                    Homed all, moved to center 5mm up
                    M561 to clear any mesh
                    Ran your sequence but didn't do the G30 single probe - and ran my M557 pattern.
                    I am now getting what I expect to see, a well laid down first layer. and a reasonable height map, which could be better, but isn't too bad.

                    I have no idea where I may have gone wrong - Maybe should not have stayed up so late?

                    be well,
                    DLC

                    paralepsisundefined stuartofmtundefined 2 Replies Last reply Reply Quote 0
                    • paralepsisundefined
                      paralepsis @dlc60
                      last edited by paralepsis

                      @dlc60 Hey! Glad you got something working.

                      Re: G30, that does a single probe and sets Z coordinate to probe trigger height -- it's the equivalent of homing Z using that XY coordinate as the point at which to home.

                      I don't have a separate Z axis endstop, so this is how I "home" prior to doing the mesh probe. I guess you do have a separate Z axis endstop, otherwise I'm not sure that G30 S-1 is meaningful?

                      Railcore II 300XL w/ Duet 3 & RRF 3.5rc4, Makerbot R2X w/ Duet 2 WiFi & RRF 3.4

                      1 Reply Last reply Reply Quote 0
                      • stuartofmtundefined
                        stuartofmt @dlc60
                        last edited by stuartofmt

                        @dlc60

                        This macro may be overkill, but may help. It will calculate the probe points for you. I use it for quick calibrations (small number of probe points) t0 get the bed more-or-less level then a more comprehensive calibration.

                        To use you would likely need to have global zprobe_index = 0 at the start (I use a couple of different zprobes hence the variable)

                        ; Creates a mesh calibration
                        ; Assumes the bed limits (actual area reachable by the nozzle)
                        ; have been set with M208
                        ; Assumes the probe offset has been set with G31
                        ;
                        ;--- Prerequisites --------------
                        ; global.zprobe_index MUST  be defined.  The probe number to use.
                        ;
                        ; --- CHANGE THESE SETTINGS TO YOUR REQUIREMENTS ---
                        ;
                        ; Heat Bed and Nozzle ?
                        var set_temp = false
                        ;
                        ;  Set bed and nozzle temp -- Note that this is not too critical
                        var bed_temp = 50.0       ; set at an reasonable temp (e.g. 50 should be good enough for PLA and PETG
                        var nozzle_temp = 150.0   ; set high enough to allow for some expansion but not enough to ooze
                        ;
                        ; Set margin to limit area of bed to be probed should be >= 1.0
                        var X_margin = 1.0 
                        var Y_margin = 1.0
                        ;
                        ; Set the number of probe points in X and Y axis
                        var P_X_points = 0
                        var P_Y_points = 0
                        ;
                        ; ------------------------------------------
                        ; --- SHOULD NOT CHANGE BELOW THIS POINT ---
                        ;-------------------------------------------
                        ;
                        ;Ensure a tool is selected
                        ;
                        if state.currentTool < 0   ; no tool selected
                        	var msg = "Cannot run if no tool is selected"
                        	M117 {var.msg}
                        	abort {var.msg}
                        
                        M291 R"How Many Probe points" P"Select a number" K{"9","16","64","100","Cancel"} S4
                        if input = 0
                            set var.P_X_points = 3
                            set var.P_Y_points = 3
                        
                        elif input = 1
                            set var.P_X_points = 4
                            set var.P_Y_points = 4
                        
                        elif input = 2
                            set var.P_X_points = 8
                            set var.P_Y_points = 8
                        
                        elif input = 3
                            set var.P_X_points = 10
                            set var.P_Y_points = 10
                        else
                            abort "Selection cancelled"
                        
                        M291 R"Hot or Cold Calibration" P"Turn on Heaters" K{"YES","NO","Cancel"} S4
                        if input = 0
                            set var.set_temp = true
                        
                        elif input = 1
                            set var.set_temp = false
                        
                        else
                            abort "Selection cancelled"
                        ;
                        ;initialize local variables
                        var X_grid_min = 0.0
                        var X_grid_max = 0.0
                        var Y_grid_min = 0.0
                        var Y_grid_max = 0.0
                        ; Get the limits for accessible parts of the bed i.e. where nozzle can reach
                        var X_min = move.axes[0].min
                        var X_max = move.axes[0].max
                        var Y_min = move.axes[1].min
                        var Y_max = move.axes[1].max
                        ;  Set the probe offset
                        var X_offset = sensors.probes[{global.zprobe_index}].offsets[0]
                        var Y_offset = sensors.probes[{global.zprobe_index}].offsets[1]
                        ;
                        ;   ------------  MACRO STARTS HERE-----------------
                        ;
                        G90 			; use absolute coordinates
                        M83 			; extruder relative mode
                        ;
                        if var.set_temp
                            echo "Wait for Calibration Temperatures to be reached"
                            M104 S{var.nozzle_temp} 		
                            M140 S{var.bed_temp}    		; set bed temp a compromise between PLA and PETG
                            M116			; wait for temperatures to be reached
                            ;G1 E-4 F3600	; retract filament quickly so no ooze
                        
                        
                        M290 R0 S0		;remove any babysteps
                        M561            ; reset any bed compensation
                        
                        
                        ;
                        ; Calculate X max and min probe points
                        if var.X_offset >= 0.0   ; right hand probe point is limited
                            set var.X_grid_min = {var.X_min + var.X_margin + var.X_offset}
                            set var.X_grid_max = {var.X_max - var.X_margin}
                        else
                            set var.X_grid_min = {var.X_min + min(var.X_margin, -var.X_offset)} 
                            set var.X_grid_max = {var.X_max - var.X_margin + var.X_offset} ; X offset is negative so we add
                        
                        echo "X offset " ^ var.X_offset ^ " (" ^ var.X_grid_min ^ ":" ^ var.X_grid_max ^ ")"  
                        ;
                        ;  Calculate Y max and min probe points
                        if var.Y_offset >= 0.0
                            set var.Y_grid_min = {var.Y_min + var.Y_margin + var.Y_offset}
                            set var.Y_grid_max = {var.Y_max - var.Y_margin}  
                        else
                            set var.Y_grid_min = {var.Y_min + min(var.Y_margin, -var.Y_offset)}   
                            set var.Y_grid_max = {var.Y_max - var.Y_margin + var.Y_offset} ; Y offset is negative so we add
                        
                        echo "Y offset " ^ var.Y_offset ^ " (" ^ var.Y_grid_min ^ ":" ^ var.Y_grid_max ^ ")" 
                        ;
                        ; Set the grid probe points
                        M557 X{var.X_grid_min,var.X_grid_max} Y{var.Y_grid_min,var.Y_grid_max} P{var.P_X_points,var.P_Y_points}
                        M557            ;report the settings
                        ;
                        echo "Performing Mesh Calibration"
                        G28             ; must be homed first
                        G30	K{global.zprobe_index}			; Perform a single probe to establish Z=0 (should already be at center because of home)
                        G29 K{global.zprobe_index} S0			; perform mesh calibration save and load
                        G0 Z50 F3000 	; lower bed
                        
                        echo "Calibration Complete"
                        if var.set_temp
                            G1 E4 F300 	    ; put filament back
                            ; Turn off heaters
                            M568  S0 R0 A0           ; Reset temps and turn off hotend
                            M140 S0 R0               ; Reset bed temps
                            M140 S-273               ; Turn of bed heater
                        
                        
                        dlc60undefined 1 Reply Last reply Reply Quote 0
                        • dlc60undefined
                          dlc60 @stuartofmt
                          last edited by

                          @stuartofmt said in unable to get BLTouch mesh compensation to work properly.:

                          @dlc60

                          This macro may be overkill, but may help. It will calculate the probe points for you. I use it for quick calibrations (small number of probe points) t0 get the bed more-or-less level then a more comprehensive calibration.

                          To use you would likely need to have global zprobe_index = 0 at the start (I use a couple of different zprobes hence the variable)

                          ; Creates a mesh calibration
                          ; Assumes the bed limits (actual area reachable by the nozzle)
                          ; have been set with M208
                          ; Assumes the probe offset has been set with G31
                          ;
                          ;--- Prerequisites --------------
                          ; global.zprobe_index MUST  be defined.  The probe number to use.
                          ;
                          ; --- CHANGE THESE SETTINGS TO YOUR REQUIREMENTS ---
                          ;
                          ; Heat Bed and Nozzle ?
                          var set_temp = false
                          ;
                          ;  Set bed and nozzle temp -- Note that this is not too critical
                          var bed_temp = 50.0       ; set at an reasonable temp (e.g. 50 should be good enough for PLA and PETG
                          var nozzle_temp = 150.0   ; set high enough to allow for some expansion but not enough to ooze
                          ;
                          ; Set margin to limit area of bed to be probed should be >= 1.0
                          var X_margin = 1.0 
                          var Y_margin = 1.0
                          ;
                          ; Set the number of probe points in X and Y axis
                          var P_X_points = 0
                          var P_Y_points = 0
                          ;
                          ; ------------------------------------------
                          ; --- SHOULD NOT CHANGE BELOW THIS POINT ---
                          ;-------------------------------------------
                          ;
                          ;Ensure a tool is selected
                          ;
                          if state.currentTool < 0   ; no tool selected
                          	var msg = "Cannot run if no tool is selected"
                          	M117 {var.msg}
                          	abort {var.msg}
                          
                          M291 R"How Many Probe points" P"Select a number" K{"9","16","64","100","Cancel"} S4
                          if input = 0
                              set var.P_X_points = 3
                              set var.P_Y_points = 3
                          
                          elif input = 1
                              set var.P_X_points = 4
                              set var.P_Y_points = 4
                          
                          elif input = 2
                              set var.P_X_points = 8
                              set var.P_Y_points = 8
                          
                          elif input = 3
                              set var.P_X_points = 10
                              set var.P_Y_points = 10
                          else
                              abort "Selection cancelled"
                          
                          M291 R"Hot or Cold Calibration" P"Turn on Heaters" K{"YES","NO","Cancel"} S4
                          if input = 0
                              set var.set_temp = true
                          
                          elif input = 1
                              set var.set_temp = false
                          
                          else
                              abort "Selection cancelled"
                          ;
                          ;initialize local variables
                          var X_grid_min = 0.0
                          var X_grid_max = 0.0
                          var Y_grid_min = 0.0
                          var Y_grid_max = 0.0
                          ; Get the limits for accessible parts of the bed i.e. where nozzle can reach
                          var X_min = move.axes[0].min
                          var X_max = move.axes[0].max
                          var Y_min = move.axes[1].min
                          var Y_max = move.axes[1].max
                          ;  Set the probe offset
                          var X_offset = sensors.probes[{global.zprobe_index}].offsets[0]
                          var Y_offset = sensors.probes[{global.zprobe_index}].offsets[1]
                          ;
                          ;   ------------  MACRO STARTS HERE-----------------
                          ;
                          G90 			; use absolute coordinates
                          M83 			; extruder relative mode
                          ;
                          if var.set_temp
                              echo "Wait for Calibration Temperatures to be reached"
                              M104 S{var.nozzle_temp} 		
                              M140 S{var.bed_temp}    		; set bed temp a compromise between PLA and PETG
                              M116			; wait for temperatures to be reached
                              ;G1 E-4 F3600	; retract filament quickly so no ooze
                          
                          
                          M290 R0 S0		;remove any babysteps
                          M561            ; reset any bed compensation
                          
                          
                          ;
                          ; Calculate X max and min probe points
                          if var.X_offset >= 0.0   ; right hand probe point is limited
                              set var.X_grid_min = {var.X_min + var.X_margin + var.X_offset}
                              set var.X_grid_max = {var.X_max - var.X_margin}
                          else
                              set var.X_grid_min = {var.X_min + min(var.X_margin, -var.X_offset)} 
                              set var.X_grid_max = {var.X_max - var.X_margin + var.X_offset} ; X offset is negative so we add
                          
                          echo "X offset " ^ var.X_offset ^ " (" ^ var.X_grid_min ^ ":" ^ var.X_grid_max ^ ")"  
                          ;
                          ;  Calculate Y max and min probe points
                          if var.Y_offset >= 0.0
                              set var.Y_grid_min = {var.Y_min + var.Y_margin + var.Y_offset}
                              set var.Y_grid_max = {var.Y_max - var.Y_margin}  
                          else
                              set var.Y_grid_min = {var.Y_min + min(var.Y_margin, -var.Y_offset)}   
                              set var.Y_grid_max = {var.Y_max - var.Y_margin + var.Y_offset} ; Y offset is negative so we add
                          
                          echo "Y offset " ^ var.Y_offset ^ " (" ^ var.Y_grid_min ^ ":" ^ var.Y_grid_max ^ ")" 
                          ;
                          ; Set the grid probe points
                          M557 X{var.X_grid_min,var.X_grid_max} Y{var.Y_grid_min,var.Y_grid_max} P{var.P_X_points,var.P_Y_points}
                          M557            ;report the settings
                          ;
                          echo "Performing Mesh Calibration"
                          G28             ; must be homed first
                          G30	K{global.zprobe_index}			; Perform a single probe to establish Z=0 (should already be at center because of home)
                          G29 K{global.zprobe_index} S0			; perform mesh calibration save and load
                          G0 Z50 F3000 	; lower bed
                          
                          echo "Calibration Complete"
                          if var.set_temp
                              G1 E4 F300 	    ; put filament back
                              ; Turn off heaters
                              M568  S0 R0 A0           ; Reset temps and turn off hotend
                              M140 S0 R0               ; Reset bed temps
                              M140 S-273               ; Turn of bed heater
                          ob 
                          

                          I created a simpler macro that does most of what you do here, Kind of a combination of yours and Rob's.
                          Mine handles homing, bed and nozzle heating, and compensation. As Rob mentioned, the G92 Z0 is not very useful for me since I have a Z end stop that I set to 0.05 mm at the center of the bed. That is my reference point. Then I get a G30 S-1 at that point to find the offset there, set my config.g G31 probe offsets. This is my starting point. Then I fire off the compensation macro.

                          This has proven itself to work reasonably well. Certainly better than trying to manually tram the bed to any great precision. Metal plates and biosilicate glass have proven to be not very flat.

                          Thank you everyone!

                          be well,
                          DLC

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