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

    Mesh Bed Compensation NOT compensating enough

    Scheduled Pinned Locked Moved
    Duet Hardware and wiring
    4
    11
    1.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.
    • Tryptamineundefined
      Tryptamine
      last edited by

      I use a 6mm Plain milled aluminium sheet as a hotbed.
      I expected this to be good, but I have deviations of -0.389 up to 0.362 mm. (Why so? are there any better options?)

      Anyway. Using mesh bed compensation this should be little of a problem.
      So I got myself a cheap duet clone and made my first heightmap. I fastly realized my sensor is crap, like 1 in 3 measures is completely off.

      So I wrote some fancy code which takes 12 heightmaps as input, pointwise kicks the 4 highest and 4 lowest measures out and averages over the middle 4. The result was a nice, even heightmap.

      I used the heightmap and realized, the compensation was not working as intended.
      I checked my code multiple times and did not spot an issue. I gave up and got myself the original BLTouch.

      Recorded the first heightmap and those measure errors were completely gone. The heightmap looked just like the one that came out of my code.
      AND ALSO BEHAVED LIKE THIS ONE.

      I still have insufficient bed compensation.

      When I print a level test (X with multiple O using the complete buildplate) at the temp the heightmap was recorded, I see the compensation working.
      It is working in the right direction, but still where my buildplate is at the highest point my nozzle is crashing the bed and at the lowest point the layers do not stick. It is compensating 1/3 of what it actually should.

      I already Set the Z-Axis Minimum to -.8 which should be easily enough to support the Uppermost deviation of 0.362. But it does not.
      I really do not know what to do. My last option would be to scale the heightmap Values all by a factor of 3, but this would be a dirty solution.

      Here my config:

      ; Configuration file for Duet WiFi (firmware version 3)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v2.1.8 on Wed May 06 2020 00:49:52 GMT+0200 (Mitteleuropäische Sommerzeit)
      
      ; General preferences
      G90                                                ; send absolute coordinates...
      M83                                                ; ...but relative extruder moves
      M550 P"Hypercube"                                  ; set printer name
      
      M667 S1                                            ; select CoreXY mode
      
      ; Network
      M551 P"Dreierpack1!"                               ; set password
      M552 S1                                            ; enable network
      M586 P0 S1                                         ; enable HTTP
      M586 P1 S0                                         ; disable FTP
      M586 P2 S0                                         ; disable Telnet
      
      ; Drives
      M569 P0 S1                                         ; physical drive 0 goes forwards
      M569 P1 S1                                         ; physical drive 1 goes forwards
      M569 P2 S1                                         ; physical drive 2 goes forwards
      M569 P3 S0                                         ; physical drive 3 goes backwards
      M584 X0 Y1 Z2:4 E3                                   ; set drive mapping
      M350 X16 Y16 Z16 E16 I1                            ; configure microstepping with interpolation
      M92 X80.00 Y80.00 Z800.00 E410.00                  ; set steps per mm
      M566 X600.00 Y600.00 Z12.00 E4000.00              ; set maximum instantaneous speed changes (mm/min)
      M203 X36000.00 Y36000.00 Z6000.00 E18000.00        ; set maximum speeds (mm/min)
      M201 X2000.00 Y2000.00 Z100.00 E6000.00           ; set accelerations (mm/s^2)
      M906 X950 Y950 Z950 E950 I30                       ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                            ; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y0 Z-.8 S1                                   ; set axis minima
      M208 X342 Y308 Z275 S0                             ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"xstop"                                ; configure active-high endstop for low end on X via pin xstop
      M574 Y1 S1 P"ystop"                                ; configure active-high endstop for low end on Y via pin ystop
      M574 Z1 S1 P"zstop"                                ; configure active-high endstop for low end on Z via pin zstop
      
      ; Z-Probe
      M950 S0 C"exp.heater3"                             ; create servo pin 0 for BLTouch
      M558 P9 C"^zprobe.in" H1.5 F60 T18000               ; set Z probe type to bltouch and the dive height + speeds
      G31 P10 X27 Y11 Z0.86                               ; set Z probe trigger value, offset and trigger height
      M557 X30:330 Y11:308 S30                           ; define mesh grid
      
      ; Heaters
      M308 S2 P"e1temp" Y"thermistor" T105526 B4138     ; configure sensor 0 as thermistor on pin bedtemp
      M950 H0 C"bedheat" T2                              ; create bed heater output on bedheat and map it to sensor 0
      M143 H0 S120                                       ; set temperature limit for heater 0 to 120C
      M301 H0 P131.9 I1.423 D566.0                       ; disable bang-bang mode for the bed heater and set PWM limit
      M140 H0                                            ; map heated bed to heater 0
      M308 S1 P"e0temp" Y"thermistor" T103901 B4138      ; configure sensor 1 as thermistor on pin e0temp
      M950 H1 C"e0heat" T1                               ; create nozzle heater output on e0heat and map it to sensor 1
      M143 H1 S280                                       ; set temperature limit for heater 1 to 280C
      M307 H1 A1123.6 C133.0 D3.5 S0.60 V23.9 B0         ; disable bang-bang mode for heater  and set PWM limit
      
      ; Fans
      M950 F0 C"fan0" Q500                               ; create fan 0 on pin fan0 and set its frequency
      M106 P0 S0 H-1                                     ; set fan 0 value. Thermostatic control is turned off
      M950 F1 C"fan1" Q500                               ; create fan 1 on pin fan1 and set its frequency
      M106 P1 S1 H1 T120                                 ; set fan 1 value. Thermostatic control is turned on
      
      ; Tools
      M563 P0 S"Hotend" 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
      ;M572 D0 S0.3                                       ; PRESSURE ADVANCE
      M593 F44.3                                         ; Dynamic Acceleration Adjustment (13mm, 9 Vibrationen)
      ;M592 D0 A0.0536 B0.0036                            ; Nonlinear Extrusion
      
      
      
      
      ; Miscellaneous
      M501                                               ; load saved parameters from non-volatile memory
      M911 S22 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
      T0                                                 ; select first tool
      
      G29 S1 "heightmap.csv"
      
      
      

      Here your help:
      (Many thanks in advance)

      Phaedruxundefined 1 Reply Last reply Reply Quote 0
      • FelixHundefined
        FelixH
        last edited by

        how does your initial Gcode look like? Are you telling the printer to use the compensation? also, are you homing Z before you start the print?. The printer needs to know where your bed is and it does so with a G30 command. Depending of the printer's kinematics a G28 Z also suffices, I believe.

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

          @Tryptamine said in Mesh Bed Compensation NOT compensating enough:

          G29 S1 "heightmap.csv"

          Do not load the heightmap in config.g, you must only load it after Z0 has been established with the probe.

          Please post your homing files and your slicer start gcode.

          An image of your heightmap may also help.

          Z-Bot CoreXY Build | Thingiverse Profile

          1 Reply Last reply Reply Quote 3
          • Tryptamineundefined
            Tryptamine
            last edited by

            @FelixH said in Mesh Bed Compensation NOT compensating enough:

            Are you telling the printer to use the compensation?

            @Tryptamine said in Mesh Bed Compensation NOT compensating enough:

            I see the compensation working.

            The comp is working. The Z-Spindles are turning when I move in x-y- direction.

            @Phaedrux said in Mesh Bed Compensation NOT compensating enough:

            @Tryptamine said in Mesh Bed Compensation NOT compensating enough:

            G29 S1 "heightmap.csv"

            Do not load the heightmap in config.g, you must only load it after Z0 has been established with the probe.

            Please post your homing files and your slicer start gcode.

            An image of your heightmap may also help.

            Really? I added that line later, the comp does also work just as bad when I uncomment this.

            The reason I already load it in the config is to prevent the nozzle from moving into the bed.
            I could otherwise move it into the bed, because My z axis minimum is -1 (which is necessary to allow height correction in negative z direction)

            Unbenannt.PNG

            homeall.g:

            ; homeall.g
            ; called to home all axes
            ;
            ; generated by RepRapFirmware Configuration Tool v2.1.8 on Wed May 06 2020 00:49:52 GMT+0200 (Mitteleuropäische Sommerzeit)
            G91                     ; relative positioning
            
            G1 H2 Z3 F18000
            
            G1 H1 X-350 F12000
            G1 X5 F12000
            G1 H1 X-350 F360            ; home X axis
            G1 X5 F12000
            
            G1 H1 Y-330 F12000
            G1 Y5 F18000
            G1 H1 Y-330 F360
            
            
            G90 
            
            G1 X145 Y139 F18000
            
            G30
            G1 X342 F18000
            
            
            

            Slicer Start GCode:

            M561
            G28 ;Home
            G29 S1 P"heightmap.csv"
            
            
            G1 X350 Y20 F18000
            G1 Z0
            
            G1 X332 Y20 F18000
            G1 Z0.2
            G1 X330
            
            G1 X315 Z0.25 F120 E50
            ;G91
            ;G1 E-5 F1000
            ;G90
            G1 X330 Z0.2 F400
            G4 P3000
            G1 Z0.1 F9000
            G1 X300 Z0.35 F18000
            
            G1 X150 Y150 F18000
            ;G91
            ;G1 E5 F1000
            ;G90
            
            1 Reply Last reply Reply Quote 0
            • Tryptamineundefined
              Tryptamine
              last edited by

              https://forum.duet3d.com/topic/16185/mesh-bed-leveling-not-moving-bed/2

              Is from where I got the idea of changing the Z-Minimum to a negative value and adding the heightmap in the config to prevent bed crashes.

              I thought this would solve the issue, which it did not.

              Phaedruxundefined 1 Reply Last reply Reply Quote 0
              • FelixHundefined
                FelixH
                last edited by

                I can gladly share my config and initial gcodes, but I'm still running RRF2

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

                  @Tryptamine said in Mesh Bed Compensation NOT compensating enough:

                  Z-Minimum to a negative value

                  This will help allow you to move down lower with baby stepping, but the mesh compensation should be able to adjust to follow the bed regardless because it's not going down below 0, it's adjusting to keep 0 at the surface of the bed. Provided of course that the probe has provided an accurate map of the surface of the bed.

                  Your homing files look alright. Loading the heightmap at startup without first establishing the bed surface can cause an offset in height. Loading it in the slier start gcode like you are doing is the correct way to do it.

                  Usually if the compensation isn't accurate to the bed surface it's because the probe offsets are incorrect, or the points measured aren't accurate either due to the probe itself not being consistent or due to effector tilt or other geometry problems twisting the probe/nozzle relation depending on XY position.

                  Z-Bot CoreXY Build | Thingiverse Profile

                  1 Reply Last reply Reply Quote 0
                  • Peletorundefined
                    Peletor
                    last edited by

                    Sorry to resurrect the dead, but did you ever figure out what was causing your issue?

                    I'm having the exact same problem (even running a hypercube) and I've been racking my brain on how to fix it. I've also recently moved over to a genuine BLTouch from a clone and it hasn't seemed to make a huge difference.

                    Any help would be appreciated!

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

                      @Peletor slop in the Z axis eating up some of the compensation movement?

                      Z-Bot CoreXY Build | Thingiverse Profile

                      Peletorundefined 1 Reply Last reply Reply Quote 0
                      • Peletorundefined
                        Peletor @Phaedrux
                        last edited by

                        @Phaedrux What do you mean slop? With the coupler between the stepper and the screw?

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

                          @Peletor That's a possibility. Basically any stepper movement that doesn't directly translate into vertical movement. Mechanical mushiness.

                          Z-Bot CoreXY Build | Thingiverse Profile

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