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

    Need help with mesh bed levelling

    Scheduled Pinned Locked Moved Solved
    Tuning and tweaking
    4
    22
    2.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.
    • medicusdkfzundefined
      medicusdkfz
      last edited by

      This post is deleted!
      1 Reply Last reply Reply Quote 0
      • medicusdkfzundefined
        medicusdkfz
        last edited by medicusdkfz

        A happy new year to you all!

        Sorry, I still have trouble. In a first attempt it looked good. But yesterday I did a print over the whole bed with a lot of trouble. After homing and qgl, I go to the middle of the bed and do a G30. Then I do a very fine mesh bed levelling with 420 points. Before printing I do again a G30 and activate the mesh with G29 S1. But then I have a bad first layer. When I activate my mesh without printing after a G30 in the middle of the bed, I have inconsistent Z-heights in the paper test. I guess, that I should have at every point inside the mesh coordinates the same heights under the nozzle. But it isn't! Any suggestions?

        Thank you very much,
        Pierre

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

          @medicusdkfz

          After doing a G30 at the center of the bed have you verified that the Z position is correct?

          If you move to Z=0 is the tip of the nozzle touching (or almost touching) the bed?

          Frederick

          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
          • Phaedruxundefined
            Phaedrux Moderator
            last edited by

            Can you show us your gcode commands being executed?
            What is in your slicer start gcode and any of the files called from there. homeall.g, bed.g, etc

            Z-Bot CoreXY Build | Thingiverse Profile

            1 Reply Last reply Reply Quote 0
            • medicusdkfzundefined
              medicusdkfz
              last edited by medicusdkfz

              I solved my problem... First layer with 0.2mm height...

              image0.JPG

              1 Reply Last reply Reply Quote 0
              • medicusdkfzundefined
                medicusdkfz
                last edited by

                Based on the configuration of Fulg (Voron Discord) - many thanks to you...

                config.g:

                ; Configuration file for Duet 3 (firmware version 3)
                ; executed by the firmware on start-up
                
                ; General preferences
                M111 S0                 							; Debugging off
                G21                     							; Work in millimetres
                G90                     							; Send absolute coordinates...
                M83                     							; ...but relative extruder moves
                M555 P2                 							; Set firmware compatibility to look like Marlin
                M575 P1 B57600 S1       							; Comms parameters for PanelDue
                M564 S1 H1              							; Forbid axis movements when not homed
                
                ; Network
                M552 P0.0.0.0 S1                           			; enable network and acquire dynamic address via DHCP
                M554 P0.0.0.0										; gateway
                M553 P255.255.255.0									; subnet mask
                M586 P0 S1                                          ; enable HTTP
                M586 P1 S1                                         	; enable FTP (for remote backups)
                M586 P2 S0                                         	; disable Telnet
                
                ; General setup
                M669 K1                 							; Select CoreXY mode (2.03 and up)
                M550 PVoron 2.4 350mm^3                           	; set printer name
                
                ; Drives for XY
                M569 P0.4 S1                                       	; A motor (X)
                M569 P0.5 S0                                       	; B motor (Y)
                
                ; Drives for Z
                M569 P0.0 S1                                       	; Front left 
                M569 P0.1 S0                                       	; Back left
                M569 P0.2 S1                                       	; Back right
                M569 P0.3 S0                                       	; Front right
                
                ; Drive for extruder 
                M569 P1.0 S1                                       	; physical drive 1.0 goes forwards
                M572 D0 S0.025										; pressure advance
                
                ; Motor mapping and steps per mm
                M584 X0.4 Y0.5 Z0.0:0.1:0.2:0.3 E1.0				; set drive mapping
                M350 X16 Y16 Z16 E16 I1         					; Use 1/16 microstepping with interpolation everywhere
                M92 X160 Y160 Z800              					; Set XYZ steps per mm (0.9deg motors)
                M92 E410                        					; Set Extruder steps per mm
                
                ; Drive currents
                M906 X1200 Y1200 Z1200 E600     					; XYZ and E current
                M906 I30                        					; Idle current percentage
                M84 S120                        					; Idle timeout
                
                ; Accelerations and speed
                M98 P"/macros/print_scripts/speed_printing.g"
                
                ; Axis travel limits
                M208 X0 Y1 Z-4 S1                                	; set axis minima
                M208 X346 Y355 Z320 S0                             	; set axis maxima
                
                ; Endstops
                M574 X2 S1 P"!io1.in"                               ; X Hall effect endstop
                M574 Y2 S1 P"!io2.in"                               ; Y Hall effect endstop
                M574 Z0 P"nil"										; no Z endstop
                
                ; Z-Probe
                M558 K0 P8 C"^io4.in" I1 H3 F200 T18000 A5 S0.01 B0 R0.2 	; set Z probe type to switch and the dive height + speeds
                G31 P1000 X0 Y23.5 Z2.000                            	; set Z probe trigger value, inductive probe offset and trigger height (Papiertest, G92 Z0 setzen und anschliessend G30 S-1/G1 Z5 mehrfach wiederholen -> Höhe = Offset
                
                M558 K1 P8 C"io3.in" T18000 F60 H2 A10 S0.005 R0.2
                G31 K1 P500 X0 Y0 Z-0.489            					; Z switch offset (if positive, greater value = lower nozzle. if negative, more negative = higher nozzle)
                
                M671 X-62:-62:407.5:407.5 Y-1:429:429:-1 S20        	; Define Z belts locations (Front_Left, Back_Left, Back_Right, Front_Right)
                
                M557 X10:340 Y30:320 S33:29                         	; Anfahrtpunkte für Sonde!!! define mesh grid (for G29) - überschreibt Grideinstellungen in DOW nach Neustart
                
                ; Hotbed (dual thermistor setup)
                M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Keenovo"    				; configure sensor 0 as thermistor on pin temp0 (heater sensor)
                M308 S2 P"temp2" Y"thermistor" T100000 B3950 A"Heizbett direkt"      	; configure sensor 2 as thermistor on pin temp2
                M950 H0 C"out0" T2 Q10                                					; Heater --> SSD-Steuerung
                M307 H0 A261.9 C549.2 D0.7 V24.0 B0			   							; Heater 0 model: gain 261.9, time constant 549.2, dead time 0.7, max PWM 1.00, calibration voltage 24.0, mode PID
                M140 P0 H0                                            						; Map heated bed to heater 0 - Keenovo 220V, 750W
                M143 H0 P1 T0 A2 S125 C0                                    ; Regulate (A2) bed heater (H0) to have pad sensor (T0) below 115°C. Use Heater monitor 1 for it
                M143 H0 P2 T0 A1 S130 C0                                    ; Shut off (A1) bed heater (H0) if pad sensor (T0) exceeds 125°C. Use Heater monitor 2 for it
                M143 H0 S120                                                ; Set bed heater max temperature to 120°C, use implict monitor 0 which is implicitly configured for heater fault
                M307 H0 B1 S0.9                                             ; Enable Bang Bang mode and set PWM to 60% to avoid warping
                
                ; Hotend
                M308 S1 P"temp1" Y"thermistor" T500000 B4723 C1.196220e-7 A"Mosquito"      	; Thermistor R-Wert eicht die Temp R3950
                M950 H1 C"out1" T1                                 							; Heater
                M307 H1 A593.7 C180.4 D7.6 V24.0 B0				   							; Heater 1 model: gain 593.7, time constant 180.4, dead time 7.6, max PWM 1.00, calibration voltage 24.0, mode PID
                M143 H1 S350																; Sets temperature limit for extruder - Mosquito
                
                ; DHT22 sensor
                ;M308 S10 P"0.spi.cs0" Y"dht22"       A"Chamber Temp"    ; Temperature (connected to cs0 port on the temp daughterboard slot
                ;M308 S11 P"S10.1"     Y"dhthumidity" A"Chamber Hum[%]"  ; Humidity
                
                ; MCU sensors
                M308 S3 Y"mcu-temp" A"MCU"
                M308 S4 Y"drivers" A"Duet Drivers"
                
                ; Main fans
                M950 F0 C"1.out6" Q500                             	; Part cooling fan
                M106 P0 S0 B0.1 H-1                                	; Default off; booststart for 0.1s (B0.1); thermostatic control off 
                M950 F1 C"out7" Q500                           	   	; Hotend cooling fan
                M106 P1 S255 H1 T50                                	; Default on; thermistatic control on above 50C
                
                ; Aux fans (option to control daughter board fans based on main board temp sensor coming in RRF3.3, for now has to be manual)
                M950 F2 C"1.out7" Q500                              ; Electronics compartment fan 1
                M106 P2 S1.0 H-1                                    ; Default on; thermostatic control off 
                M950 F3 C"1.out8" Q500                              ; Electronics compartment fan 2
                M106 P3 S1.0 H-1									; Default on; thermostatic control off 
                
                M950 F6 C"out8" Q500								; Noctua exhaust filter fan
                M106 P6 S0 H-1										; Default off 
                
                ; LED-Stripes
                ;M950 F5 C"out9" Q500								; LED-Streifen rechts --> derzeit nicht installiert
                ;M106 P5 S1.0 H-1                                   ; Default on; thermostatic control off
                
                ; Misc
                M912 P0 S-4                         				; MCU temperature calibration (yours will be different)
                M572 D0 S0.01                       				; Pressure Advance
                M592 D0 A0.015 B0.0012 L0.2         				; Non-linear extrusion
                M376 H10                            				; Fade mesh out compensation over 10mm Z
                
                ; Tools
                M563 P0 D0 H1 F0                    				; Define tool 0 using fan 0 for M106
                G10 P0 X0 Y0 Z0                     				; Set tool 0 axis offsets
                G10 P0 R0 S0                        				; Set initial tool 0 active and standby temperatures to 0C
                
                ; DAA tuning (you will need to change this for your slicer)
                ;M593 F26.6                          				; Cura 4.5 stock profile @ 40mm/s outer printing speed
                M593 F42.5                          				; PrusaSlicer @ 40mm/s outer perimeter
                M80                                 				; turn on PSU & mains voltage
                M501                                				; load config-override.g
                T0                                  				; select tool 0
                
                ; workaround for bug in 3.2beta3, M143 needs to be done after all M950, M307, M140 and M141. https://forum.duet3d.com/topic/19031/m143-issue/25?_=1605986986974
                M143 H0 S115
                M143 H1 S350
                

                homeall.g:

                ; homeall.g
                ; called to home all axes
                
                ; Relative positioning
                G91
                
                ; Lower currents, speed & accel
                M98 P"/macros/print_scripts/xy_current_low.g"
                ;M98 P"/macros/print_scripts/z_current_low.g"
                M98 P"/macros/print_scripts/speed_probing.g"
                
                ; Lift Z relative to current position if needed
                if !move.axes[2].homed
                  G1 Z10 F9000 H1
                elif move.axes[2].userPosition < 10
                  G1 Z10 F9000
                
                ; Coarse home X or Y
                G1 X600 Y600 F2400 H1
                
                ; Coarse home X
                G1 X600 H1
                
                ; Coarse home Y
                G1 Y600 H1
                
                ; Move away from the endstops
                G1 X-5 Y-5 F9000
                
                ; Fine home X
                G1 X600 F360 H1
                
                ; Fine home Y
                G1 Y600 H1
                
                ; Absolute positioning
                G90
                
                ; Home Z microswitch
                M98 P"/macros/print_scripts/goto_z_switch.g"
                G30 K1 Z-9999
                if move.axes[2].userPosition < 5
                	G1 Z5
                
                ; Restore high currents, speed & accel
                M98 P"/macros/print_scripts/xy_current_high.g"
                ;M98 P"/macros/print_scripts/z_current_high.g"
                M98 P"/macros/print_scripts/speed_printing.g"
                

                mesh.g:

                ; give one last chance to cancel...
                M291 P"This will replace the existing bed mesh. Are you sure?" R"Bed Mesh" S3
                
                ; Level the gantry so we can park the carriage in the middle of the bed
                G32
                M98 P"/macros/print_scripts/goto_bed_center.g"
                
                ; Heat the bed to 100C
                M291 P"Heating up the bed..." R"Probing New Bed Mesh" T5
                M190 S100
                
                ; Set the hotend to 250C
                M291 P"Heating up the hotend..." R"Bed Mesh" T5
                G10 P0 S250
                M116
                
                ; Level the gantry again while everything is hot
                M291 P"QGL while everything is hot..." R"Bed Mesh" T5
                G32
                
                ; ignore current heightmap
                M561
                
                ; Establish final Z ref
                M291 P"Final Z ref..." R"Bed Mesh" T5
                M98 P"/macros/print_scripts/do_nozzle_wipe.g"
                M98 P"/macros/print_scripts/do_nozzle_wipe.g"
                G28 Z
                
                ; Get the reference Z offset
                M291 P"Get reference Z offset..." R"Bed Mesh" T5
                M98 P"/macros/print_scripts/goto_bed_center.g"
                if move.axes[2].userPosition < 5
                	G1 Z5
                G30 K0 S-1
                G1 Z5
                G30 K0 S-1
                G1 Z5
                G30 K0 S-1
                G1 Z5
                G30 K0 S-3
                G1 Z5
                
                ; Probe a new bed mesh!
                M291 P"Probing now!" R"Bed Mesh" T5
                M557 X10:340 Y30:320 S41.25:36.25; 81 Anfahrtpunkte für Sonde!!! define mesh grid (for G29) - überschreibt Grideinstellungen in DOW nach Neustart
                G29 S0
                
                ; Done, move to center and turn off heat
                M98 P"/macros/print_scripts/goto_bed_center.g"
                if move.axes[2].userPosition < 5
                	G1 Z5
                G10 P0 S0
                M140 S0
                
                M291 P"Done!" R"Bed Mesh" T5
                

                bed_probe_points.g:

                ;###### Pierre ######
                ;G30 K0 P0 X10 Y26 Z-99999; probe near front left belt
                ;G30 K0 P1 X10 Y315 Z-99999; probe near back left belt
                ;G30 K0 P2 X340 Y315 Z-99999; probe near back right belt 
                ;G30 K0 P3 X340 Y26 Z-99999 S4; probe near front right belt
                ;####################
                
                ;####### fulg #######
                G30 K0 P0 X340 Y315 Z-99999
                G30 K0 P1 X340 Y26 Z-99999
                G30 K0 P2 X10 Y26 Z-99999
                G30 K0 P3 X10 Y315 Z-99999 S4
                ;####################
                

                bed.g:

                ; bed.g
                ; Called to align the gantry to the bed plane via G32
                
                ; Clear any bed transform
                M561
                
                ; Turn off noisy Extruder motor
                M84 E
                
                ; Home all axes
                G28
                
                ; Lower currents, speed & accel
                M98 P"/macros/print_scripts/speed_probing.g"
                ;M98 P"/macros/print_scripts/z_current_low.g"
                M98 P"/macros/print_scripts/xy_current_low.g"
                
                ; Probe the bed at 4 points, x3 for more precision
                M558 K0 H5 F240   ; reduce depth range, probe slower for better repeatability
                M98 P"/sys/bed_probe_points.g"
                M558 K0 H4 F240   ; reduce depth range, probe slower for better repeatability
                M98 P"/sys/bed_probe_points.g"
                
                while true
                  if iterations = 5
                    abort "Too many auto calibration attempts"
                  
                  	M558 K0 H1 F60    ; reduce depth range, probe slower for better repeatability
                	M98 P"/sys/bed_probe_points.g"
                  if result != 0
                    continue
                  
                  if move.calibration.initial.deviation <= 0.005
                    break
                
                ; If there were too many errors or the deviation is too high - abort and notify user  
                  echo "Repeating calibration because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)"
                
                echo "Auto calibration successful, deviation", move.calibration.initial.deviation ^ "mm"
                
                ; Restore high currents, speed & accel
                M98 P"/macros/print_scripts/speed_printing.g"
                M98 P"/macros/print_scripts/xy_current_high.g"
                ;M98 P"/macros/print_scripts/z_current_high.g"
                if move.axes[2].userPosition < 5
                	G1 Z5
                G28 Z
                
                1 Reply Last reply Reply Quote 0
                • medicusdkfzundefined
                  medicusdkfz
                  last edited by medicusdkfz

                  Is it possible to define the number of probing attempts with the inductive probe while mesh bed leveling or a G30 at the probing point to increase the accuracy? Sometimes the first value is bad. But 3 or 4 are better...

                  Vetiundefined fcwiltundefined 2 Replies Last reply Reply Quote 0
                  • Vetiundefined
                    Veti @medicusdkfz
                    last edited by

                    @medicusdkfz said in Need help with mesh bed levelling:

                    Is it possible to define the number of probing attempts with the inductive probe while mesh bed leveling or a G30 at the probing point to increase the accuracy? Sometimes the first value is bad. But 3 or 4 are better...

                    yes

                    https://duet3d.dozuki.com/Wiki/Gcode#Section_M558_Set_Z_probe_type
                    the A parameter.

                    but you already have it at 5

                    you could also try reducing the F parameter

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

                      @medicusdkfz said in Need help with mesh bed levelling:

                      Is it possible to define the number of probing attempts with the inductive probe while mesh bed leveling or a G30 at the probing point to increase the accuracy? Sometimes the first value is bad. But 3 or 4 are better...

                      You can force the averaging of a fixed number of readings by setting the M558 S parameter to -1 and setting the A parameter to the desired number of readings - see the M558 command docs.

                      Frederick

                      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
                      • medicusdkfzundefined
                        medicusdkfz
                        last edited by

                        Thank you for your help!

                        1 Reply Last reply Reply Quote 0
                        • medicusdkfzundefined
                          medicusdkfz
                          last edited by medicusdkfz

                          @Veti When do I need a G30 and when a G30 S-2 with mesh bed levelling? My first probe is a Z microswitch at the Voron 2.4. This is my reference also for temperature issues with the inductive probe. After homing and levelling the quad gantry, I want to do my mesh. At the process of creating a mesh I have to do what, before I perform a G29 S0?

                          At the process of using an existing mesh I have to do what, before I perform a G29 S0?

                          Today I had the warning again with the z datum...

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

                            @medicusdkfz said in Need help with mesh bed levelling:

                            G30 S-2

                            you only need that if you are calibrating your probe initially

                            G29 S0 is the same as G29

                            you load an existing mesh with G29 S1

                            Today I had the warning again with the z datum...

                            you need to run a G30 (normally part of the homing) before executing G29 S1

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

                              @Veti said in Need help with mesh bed levelling:

                              G30 S-2

                              you only need that if you are calibrating your probe initially

                              That's G30 S-1

                              @medicusdkfz I don't think you'd usually ever need G30 S-2

                              https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_G30_Single_Z_Probe

                              G30 ; Probe the bed at the current XY position. When the probe is triggered, set the Z coordinate to the probe trigger height.
                              G30 S-1 ; Probe the bed at the current XY position. When the probe is triggered, do not adjust the Z coordinate, just report the machine height at which the probe was triggered.
                              G30 S-2 ; Probe the bed at the current XY position. When the probe is triggered, adjust the Z offset of the current tool to make the current position Z=0.
                              G30 S-3 ; Probe the bed and set the Z probe trigger height to the height it stopped at (supported in RRF 2.03 and later)

                              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