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

    Mesh bed Levelling with BLTouch. Am I doing something wrong?

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    14
    28
    5.8k
    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
      last edited by Phaedrux

      @okercho said in Mesh bed Levelling with BLTouch. Am I doing something wrong?:

      https://github.com/aimartin/duet3DConfig/tree/master/Hypercube

      It makes it a lot easier to troubleshoot if you post all the file contents directly into your post using the code blocks.

      bed.g
      ;G28 X ; home X
      ;G28 Y ; home Y
      G28 Z ; home Z
      G1 X5
      G30 P0 X25 Y165 Z-99999 ; probe near a leadscrew, half way along Y axis
      G30 P1 X290 Y160 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
      G28 Z ; home Z
      ;G29 ; Mesh Bed Levelling
      
      ; Configuration file for Duet WiFi
      ; executed by the firmware on start-up
      
      ; General preferences
      G90                                     							; send absolute coordinates...
      M83                                     							; ...but relative extruder moves
      M550 P"Hypercube"                       							; set printer name
      G21																	; Work in Millimetres
      M669 K1                                 							; select CoreXY mode
      M555 P2 															; set compatibility with Marlin
      
      ; Network
      M552 S1                                 							; enable network
      M586 P0 S1                              							; enable HTTP
      M586 P1 S1                              							; disable FTP
      M586 P2 S0                              							; disable Telnet
      
      ; Drives
      M569 P0 S1                              							; physical drive 0 goes forwards (X)
      M569 P1 S1                              							; physical drive 1 goes forwards (Y)
      
      M569 P3 S0                              							; physical drive 3 goes forwards (Extruder)
      
      M569 P2 S1                              							; physical drive 2 goes forwards (Z Right)
      M569 P4 S0                              							; physical drive 4 goes forwards (Z Left)
      
      M584 X0 Y1 Z4:2 E3                      							; set drive mapping ZLeft:4 ZRight:2
      M671 X-50:335 Y165:160
      M350 X256 Y256 I0                       							; configure microstepping without interpolation for X and Y
      M350 Z256 I0														; configure microstepping without interpolation for Z
      M350 E16 I1                             							; configure microstepping with interpolation for Extruder
      
      M92 X1280.00 Y1280.00 Z6400.00 E144.83  							; set steps per mm
      M566 X900.00 Y900.00 Z12.00 E120.00     							; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z200.00 E2500.00 							; set maximum speeds (mm/min)
      M201 X700.00 Y700.00 Z50.00 E250.00     							; set accelerations (mm/s^2)
      M906 X1400 Y1400 Z1000 E1300 I30          							; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                 							; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y-5 Z0 S1                       							; set axis minima
      M208 X275 Y300 Z260 S0                  							; set axis maxima
      
      ; Endstops
      M574 X1 S3 															; set endstops controlled by motor stall detection
      M574 Y1 S3                               							; set endstops controlled by motor stall detection
      
      
      ; Z-Probe
      M307 H3 A-1 C-1 D-1 												; DISABLE HEATER 3 for BLTouch
      M98 P/macros/Z_Config												; Execute macro for Z config
      
      
      ; Heaters
      M140 H0
      M308 S0 P"bed_temp" Y"thermistor" T100000 B4138 R4700  				; set thermistor + ADC parameters for Bed
      M950 H0 C"bedheat" T0												; create heater for Bed
      M307 H0 A194.6 C473.2 D1.4 S1.00 V24.2 B0							; heating parameters for Bed
      M143 H0 S80     													; set Temperature Limit for Bed to 80
               
      M308 S1 P"e0_temp" Y"thermistor" T100000 B4750 C7.060000e-8 R4700	; set thermistor + ADC parameters for heater 1
      M950 H1 C"e0_heat" T1												; create heater for Extruder 1
      M307 H1 A593.1 C230.0 D4.6 S1.00 V24.0 B0							; heating parameters for Extruder 1
      M143 H1 S245                            							; set temperature limit for Extruder to 245C
      
      ; Fans
      M950 F0 C"fan0"														; create Fan0 (Layer Fan)
      M106 P0 S0 I0 F500 H-1                  							; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
      
      M950 F1 C"fan1"														; create Fan1 (E3D Fan)
      M106 P1 S1 I0 F500 H1 T45               							; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
      
      
      ; Tools
      M563 P0 D0 H1 F0                        							; define tool 0
      G10 P0 X0 Y0 Z0                         							; set tool 0 axis offsets
      G10 P0 R0 S0                            							; set initial tool 0 active and standby temperatures to 0C
      
      ; Custom settings are not defined
      
      ; homeall.g
      ; called to home all axes
      ;
      M400                  ; make sure everything has stopped before we make changes
      M915 X Y S2 R0 F0     ; set X and Y to sensitivity 2, do nothing when stall, unfiltered
      M574 X1 Y1 S3         ; set endstops to use motor stall
      
      G91                   ; use relative positioning
      ;G1 Z10 F1200          ; lift Z
      
      G1 S1 X-325 Y-325 F3600 ; move right/back 325mm, stopping at the endstop
      G1 X5 Y5            ; move away from home
      ; X or Y is homed at this point, now home the other axis
      G1 S1 X-325 F3600      ; move towards axis minimum 
      G1 S1 Y-325 F3600      ; move towards axis minimum 
      G1 X5 Y5                      ; move away from home
      
      ;G1 Z-10 F1200           ; lower Z
      M400                  ; make sure everything has stopped before we reset the motor currents
      G90                   ; back to absolute positioning
      M574 X1 Y1 S1         ; define active low microswitches
      
      G92 Z0
      
      ; homex.g
      ; called to home the X axis
      ;
      M400                  	; make sure everything has stopped before we make changes
      M915 X S2 R0 F0     	; set X and Y to sensitivity 12, do nothing when stall, unfiltered
      M574 X1 S4         	; set endstops to use motor stall
      
      G91                   	; use relative positioning
      ;G1 Z10 F1200           ; lift Z
      
      G1 H1 X-325 F3600 	; move right/back 325mm, stopping at the endstop
      G1 X5                   ; move away from home
      
      M400                  ; make sure everything has stopped before we reset the motor currents
      G90                   ; back to absolute positioning
      
      ; homey.g
      ; called to home the Y axis
      ;
      M400                  	; make sure everything has stopped before we make changes
      M915 Y S4 R0 F0     	; set X and Y to sensitivity 2, do nothing when stall, unfiltered
      M574 Y1 S4         	; set endstops to use motor stall
      
      G91                   	; use relative positioning
      ;G1 Z10 F1200           ; lift Z
      
      G1 H1 Y-325 F3600 	; move right/back 325mm, stopping at the endstop
      G1 Y5            	; move away from home
      
      M400                  	; make sure everything has stopped before we reset the motor currents
      G90                   	; back to absolute positioning
      
      ; homez.g
      ; called to home the Z axis
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.3 on Tue Dec 03 2019 18:48:42 GMT+0100 (hora estándar de Europa central)
      
      ;*** Configure Z Probe -------------------------------------------------- THIS OVERRIDES THE CONFIGURATION OF CONFIG.G!
      M98 P/macros/Z_Config
      
      ;*** Home Z Axis --------------------------------------------------------
      M98 P/macros/Home_Z
      
      homez
      
      G1 X0 Y5 F5000				; Move X and Y to the Z Homing Point
      G30							; Single Z Probe
      G1 Z10						; Raise Z to 5 mm
      
      config z
      M561					; Delete actual mesh
      
      ; Numero + Alto = Mas pegado a la base
      ; Numero + Bajo = Mas despegado de la base
      
      ; PINDA ;
      ;M558 P5 C"^zprobe.in" F150 R0 T6000 H3 A5 S0.007 	; Tipo 5, Speed 150mm/m, Recovery 1, Altura 3, Velocidad Travel 3000mm/min, Max 3 Retries
      ;M557 X25:290 Y10:300 P3 ; PINDA
      ;G31 X25 Y0 Z1.600 ;PINDA Prusa - 1.551 - 0.15
      
      
      ; IRDA ;
      ;M558 P1 C"^zprobe.in" F70 R0 T6000 H4 A5 S0.007	; Sensor IR
      ;M557 X25:290 Y10:300 P7 ; IR
      ;G31 X25 Y0 P500 Z2.476
      
      
      ; BLTOUCH ;
      M558 P9 C"^zprobe.in" H3.2 F50 T8000 A10 R0.75 S0.005 ; B1
      M950 S0 C"exp.heater3"
      M557 X25:290 Y5:295 P4:5
      G31 X25 Y0 P25 Z3.875 ; Z3.720 (Buildtak) | Z3.880 (AzulMin)
      

      Z-Bot CoreXY Build | Thingiverse Profile

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

        Looking at how your gcode is linked together I think the issue is that in bed.g you have g28 Z, which calls homez, which calls 2 other macros, which is different than the behaviour of homeall. Also, homeall doesn't appear to home the Z axis at all.

        You need to go through your order of operations and follow along with what's being executed.

        I also see that you have some of your endstop configuration etc in your homing files. This is fine, but you need to be careful that when you change something it's not going to be overwritten later on by a different file.

        to track this down I would suggest executing all of your macros line by line manually in the order that you would normally. And if you notice you're sending the same gcode again later with different values you might find that you're changing something you shouldn't be.

        Z-Bot CoreXY Build | Thingiverse Profile

        1 Reply Last reply Reply Quote 0
        • okerchoundefined
          okercho
          last edited by

          Hi,

          Thanks, I'll try to make it more simple so I can debug it, although checking the compensation and calibration in the GUI, it seems that mesh is being used (I'm executing G29 S1 in my gcode):
          e4d838b5-a046-4bde-98a6-67878e83fd27-image.png

          Regarding the homeAll, I'm not using it... Im doing the homing "manually" (First homing X, then Y, and then Z, one by one), after that, I do the G32 and G29, and then if everything was successful, I launch the print... I got used to do it in that way when I was using a non-very-reliable probe some time ago...

          Regards

          Okercho
          Custom Prusa i3 Hephestos with Duet Wi-Fi
          E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
          Rebuilding Hypercube Evolution

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

            What do you have in your slicer start gcode?

            Z-Bot CoreXY Build | Thingiverse Profile

            1 Reply Last reply Reply Quote 0
            • Thaliosundefined
              Thalios
              last edited by

              Seems to be the exact same problem I have. My IR Probe scans the bed, reports properly, but when printing, it ignores it.

              Railcore II 300ZL with lots of upgrades (Duet 3 6HC)
              Heavily modified Ender 3 Pro (Duet 3 6HC)
              Heavily modified Tronxy X5SA-500 Pro with Chimera+ and dual bondtech (Duet 3 6HC)
              CR-10S Pro V2 (Duet 3 Mini 5+)
              and a bunch of SLA printers..

              1 Reply Last reply Reply Quote 0
              • OwenDundefined
                OwenD
                last edited by OwenD

                @okercho
                What happens if you add to the start fo bed.g ?

                M290 R0 S0 ; clear baby stepping
                M561 ; clear any bed transform
                
                okerchoundefined 1 Reply Last reply Reply Quote 0
                • piperswundefined
                  pipersw
                  last edited by

                  Same problem for me with bltouch.
                  I follow the post

                  1 Reply Last reply Reply Quote 0
                  • okerchoundefined
                    okercho
                    last edited by

                    Hi all,

                    At least I'm not the only one so... we're all doing something weird 😛

                    This is my start code, is based on the Prusa one (I'm using PrusaSlicer)

                    G90 ; use absolute coordinates
                    M83 ; extruder relative mode
                    ;G32 ; Bed Level
                    {if first_layer_bed_temperature[0] > 0}
                    M140 S[first_layer_bed_temperature] ; set bed temp
                    M190 S[first_layer_bed_temperature] ; wait for bed temp
                    {endif}
                    G29 S1; mesh bed leveling
                    M104 S[first_layer_temperature] ; set extruder temp
                    M109 S[first_layer_temperature] ; wait for extruder temp
                    G1 X40 Y100 F5000
                    G1 Y0 Z0.6 F3000.0 ; go outside print area
                    G92 E0.0
                    G1 Z0.2 X30.0 E9.0 F1000.0 ; intro line
                    G1 X100.0 E12.5 F1000.0 ; intro line
                    G92 E0.0
                    M221 S{if layer_height<0.075}100{else}95{endif}
                    

                    Regards

                    Okercho
                    Custom Prusa i3 Hephestos with Duet Wi-Fi
                    E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
                    Rebuilding Hypercube Evolution

                    1 Reply Last reply Reply Quote 0
                    • okerchoundefined
                      okercho @OwenD
                      last edited by

                      @OwenD said in Mesh bed Levelling with BLTouch. Am I doing something wrong?:

                      M290 R0 S0 ; clear baby stepping M561 ; clear any bed transform

                      I've changed my bed.g for this and report back, although as I'm using G32 right after starting the printer, I don't think this will apply

                      M290 R0 S0 ; clear baby stepping
                      M561 ; clear any bed transform
                      
                      ;G28 X ; home X
                      ;G28 Y ; home Y
                      G28 Z ; home Z
                      G1 X5
                      G30 P0 X25 Y165 Z-99999 ; probe near a leadscrew, half way along Y axis
                      G30 P1 X290 Y160 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
                      G28 Z ; home Z
                      G29 ; Mesh Bed Levelling
                      

                      Regards

                      Okercho
                      Custom Prusa i3 Hephestos with Duet Wi-Fi
                      E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
                      Rebuilding Hypercube Evolution

                      1 Reply Last reply Reply Quote 0
                      • gloomyandyundefined
                        gloomyandy
                        last edited by

                        Is there a reason why your probe points for the lead-screws do not share the same Y values? One is 165 the other 160.

                        Also looking at the two meshes that you provided there is something odd going off. The first (lower resolution) mesh shows part of the bed to be "above zero" with the rest below, the second (higher resolution) mesh shows pretty much all of the mesh "below zero". That does not seem correct to me.

                        okerchoundefined 1 Reply Last reply Reply Quote 0
                        • mwolterundefined
                          mwolter
                          last edited by

                          One possible issue is that you are doing g32 and g29 before the printer is up to temp. Recommend moving the g32 after the nozzle and bed heating commands.

                          Most likely your printer and bed dimensions are slightly changing due to probing before everything up to temp. Try to probe as close as possible to printing so things don’t change from where the printer thinks thing are to where they actually are now.

                          okerchoundefined 1 Reply Last reply Reply Quote 0
                          • okerchoundefined
                            okercho @gloomyandy
                            last edited by

                            @gloomyandy said in Mesh bed Levelling with BLTouch. Am I doing something wrong?:

                            Is there a reason why your probe points for the lead-screws do not share the same Y values? One is 165 the other 160.

                            Also looking at the two meshes that you provided there is something odd going off. The first (lower resolution) mesh shows part of the bed to be "above zero" with the rest below, the second (higher resolution) mesh shows pretty much all of the mesh "below zero". That does not seem correct to me.

                            Regarding the different Y, the printer is a CoreXY with 2 lead-screws. When I checked for the Y position for the G32, I discovered that the motors were not perfectly aligned, and that's reflected in the bed file.

                            About the image, the bed is magnetic, is an aluminum heated bed, with a glass on top that has the magnets on it (Buildtak) and the steel sheet on top. I'm assuming that even though I put the sheet always the same way, the measurements changes. I'm doing always a G32 and a G29 after removing and installing the sheet, and if I repeat the G29 (without removing the sheet), results are consistent.

                            Regards

                            Okercho
                            Custom Prusa i3 Hephestos with Duet Wi-Fi
                            E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
                            Rebuilding Hypercube Evolution

                            1 Reply Last reply Reply Quote 0
                            • okerchoundefined
                              okercho @mwolter
                              last edited by

                              @mwolter said in Mesh bed Levelling with BLTouch. Am I doing something wrong?:

                              One possible issue is that you are doing g32 and g29 before the printer is up to temp. Recommend moving the g32 after the nozzle and bed heating commands.

                              Most likely your printer and bed dimensions are slightly changing due to probing before everything up to temp. Try to probe as close as possible to printing so things don’t change from where the printer thinks thing are to where they actually are now.

                              I'm not always using the heated bed. When I do, I put the bed on, wait for it, and then home Z and perform the G29, as I´ve noticed, as you said, that bed expands (and as I've several "layers", it needs more time to reach the temp on top).
                              Regarding the nozzle temp, as I'm using a BLTouch, the nozzle temperature is not "important", I just have it into account for the G31 command.

                              The problem is that, checking the raft, it doesn't seems to be applying the compensation... even though as per the heightmap, the printer is aware of it :S.

                              Regards

                              Okercho
                              Custom Prusa i3 Hephestos with Duet Wi-Fi
                              E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
                              Rebuilding Hypercube Evolution

                              1 Reply Last reply Reply Quote 0
                              • mwolterundefined
                                mwolter
                                last edited by

                                An easy way to check if the mesh is applied is to watch the z steppers for the first layer. They should move slightly if mesh compensation is enabled.

                                okerchoundefined 1 Reply Last reply Reply Quote 0
                                • okerchoundefined
                                  okercho @mwolter
                                  last edited by

                                  @mwolter said in Mesh bed Levelling with BLTouch. Am I doing something wrong?:

                                  An easy way to check if the mesh is applied is to watch the z steppers for the first layer. They should move slightly if mesh compensation is enabled.

                                  I did... I can see the left side still more squashed and I cannot see the motor moving (I've put a bit of tape and I´ve been observing it, and I think it didn't move at all...)

                                  Okercho
                                  Custom Prusa i3 Hephestos with Duet Wi-Fi
                                  E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
                                  Rebuilding Hypercube Evolution

                                  1 Reply Last reply Reply Quote 0
                                  • PaulHewundefined
                                    PaulHew
                                    last edited by

                                    @okercho When you are printing, if you go to the 'Dashboard' and click the 'Compensation & Calibration' button, what does it say at the top of the dropdown?
                                    If mesh compensation is enabled it should look like this.
                                    f53e61fe-a6a8-4455-baec-eab383674f60-image.png
                                    Compensation in use: mesh

                                    P.

                                    RailCore II - Duet Mini + 1LC, Voron V0.1 - Duet Mini
                                    Voron 2.4 disassembled..... Waiting for the RailCore Mini....

                                    okerchoundefined 1 Reply Last reply Reply Quote 1
                                    • okerchoundefined
                                      okercho @PaulHew
                                      last edited by

                                      @PaulHew I posted before :), yes, it says "mesh" in use

                                      ![alt text](71bead44-5aad-4e96-8539-bfcaac8d9654-image.png image url)

                                      I'm thinking about doing the difference between left/right quite obvious on purpose, to see if it actually works or not, as I think mesh is applied even if you're not printing but moving the head around...

                                      Regards

                                      Okercho
                                      Custom Prusa i3 Hephestos with Duet Wi-Fi
                                      E3d V6 with Bondtech BMG DirectDrive and PrecisionPiezo Sensor
                                      Rebuilding Hypercube Evolution

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

                                        I find the best way to test the success of mesh compensation is to print a test file like this twice, once with it enabled and once without.

                                        bedlevel_nozzle_0.4_200x200-0.3-0.8.stl

                                        Also ensure that your taper height isn't set too low with M376

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

                                        Z-Bot CoreXY Build | Thingiverse Profile

                                        RyanPundefined 1 Reply Last reply Reply Quote 0
                                        • dc42undefined
                                          dc42 administrators @okercho
                                          last edited by

                                          @okercho said in Mesh bed Levelling with BLTouch. Am I doing something wrong?:

                                          I'm thinking about doing the difference between left/right quite obvious on purpose, to see if it actually works or not, as I think mesh is applied even if you're not printing but moving the head around...

                                          You height map is actually very flat, so it will be difficult to see the Z axis moving due to bed compensation being active.

                                          It's not uncommon for the height map not to match what you see when printing, which may be the case here. This happens when you use a Z probe with a large offset from the nozzle, and the print head doesn't stay in exactly the same plane as it moves over the bed. For example, some printers have an X carriage that moves on 2 smooth rods. If there is a slight twist between those rods, then the print head will rotate slightly about the X axis as it moves in X. If the Z probe is offset from the nozzle in the Y direction, that will cause the relative heights of the nozzle and the Z probe to change.

                                          Duet WiFi hardware designer and firmware engineer
                                          Please do not ask me for Duet support via PM or email, use the forum
                                          http://www.escher3d.com, https://miscsolutions.wordpress.com

                                          okerchoundefined 1 Reply Last reply Reply Quote 2
                                          • Torroundefined
                                            Torro
                                            last edited by

                                            I tried bed leveling with different probes, ir probe and bltouch.

                                            My Problem was different trigger heights at different locations on the bed with both probes.

                                            Check that. Trigger height should be the same, no matter where you probe on the bed.

                                            I think the printhead is somehow twisting.

                                            Good luck!

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