Bed mesh compensation



  • My Core-XY has a bed of 330 x 330 mm driven by two independent Z leadscrews. These are set up so I can compensate the two screws to align the bed in the horizontal plane. This part works as expected. When I run the bed mesh compensation I get a topology map indicating a pretty uneven surface. So far so good. When I start a print it seems the Z screws doesn't move when the nozzle passes over the beds different zones where I know there are bumps and valleys resulting in mostly nozzle dragging too close over the surface and filament grinds as a result. I touch the coupling with my fingers to try to sense any movement but nope. Still as a brick.

    Am I missing something here?

    Bed.g (used for the levelling of the 2 z screws):

    [[language]]
    ; bed.g
    ; called to perform automatic bed compensation via G32
    ;
    ; generated by RepRapFirmware Configuration Tool on Thu Dec 14 2017 23:00:02 GMT+0100 (Västeuropa, normaltid)
    
    ; Clear any bed transform
    M561
    
    ; Home all axes
    G28
    G1 Z15 F6500		; Move platform down to ensure probe rod don't strike anything
    G1 X0 Y162		; Move to the approximate middle
    
    ; Probe the bed at 2 points
    G30 P0 X0 Y162 H0 Z-99999
    G30 P1 X305 Y162 H0 Z-99999 S
    
    ; MOve back home fast 
    G1 X0 Y0 Z5 F6500
    G28 			; Do homing 
    
    

    Config.g:

    [[language]]
    ; Configuration file for Duet WiFi (firmware version 1.17 to 1.19)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool on Thu Dec 14 2017 23:00:02 GMT+0100 (Västeuropa, normaltid)
    
    ; 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
    
    ; Mode and axis travel
    M667 S1 				; Select CoreXY mode
    M208 X0 Y0 Z-0.6 S1 			; Set axis minima
    M208 X325 Y325 Z380 S0 			; Set axis maxima
    
    ; Endstops, Z-probe and bed mesh grid
    M574 X1 Y1 Z1 S0 			; Set active low endstops
    M558 P1 X0 Y0 Z1 H5 F140 T8000		; Set Z probe type to switch, the axes for which it is used and the dive height + speeds
    G31 P500 X0 Y0 Z2.15 			; Set Z probe trigger value, offset and trigger height
    ; M307 H3 A-1 C-1 D-1			; Decomission H3 and use it as a GPIO with Z-probe servo control
    ; M280 P3 S2050 I1			; Make sure Z-probe is up and out of the way -move up
    ; G4 P500
    ; M280 P3 S2000 I1			; Make sure Z-probe is up and out of the way -go back a little to avoid servo buzz
    M557 X15:323 Y15:312 S40 		; Define mesh grid
    
    ; Drives
    M569 P0 S0 				; Drive 0 goes backwards (X)
    M569 P1 S0 				; Drive 1 goes backwards (Y)
    M569 P2 S1 				; Drive 2 goes forwards  (Z1)
    M569 P3 S0				; Drive 3 goes backwards (E0)
    M569 P4 S1				; Drive 4 goes forwards  (Z2)
    M584 X0 Y1 Z2:4 E3			; Two Z motors connected to driver outputs 2 and 4
    M671 X421:-111.5 Y162:162 S5		; leadscrews at mid left, and mid right
    M350 X32 Y32 Z32 E32 I1 		; Configure microstepping with interpolation
    M92 X160 Y160 Z800 E1946.472		; Set steps per mm
    M566 X500 Y500 Z10 E1800 		; Set maximum instantaneous speed changes (mm/min)
    M203 X9000 Y9000 Z700 E6000	 	; Set maximum speeds (mm/min)
    M201 X2000 Y2000 Z50 E2400 		; Set accelerations (mm/s^2)
    M906 X1000 Y1000 Z650 E400 I30 		; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 				; Set idle timeout
    
    ; Heaters
    ; M304 H0 P649.2 I2.550 D1569.0 	; Use PID on bed heater using these process parameters
    ; M301 H1 P11.6 I0.124 D41.4		; Use PID on hotend using these process parameters
    M305 P0 T100000 B3950 C0 R4700 		; Set thermistor + ADC parameters for heater 0
    M143 H0 S120 				; Set temperature limit for heater 0 to 120C
    M305 P1 T100000 B3950 C0 R4700 		; Set thermistor + ADC parameters for heater 1
    M143 H1 S270 				; Set temperature limit for heater 1 to 270C
    
    ; Tools
    M563 P0 D0 H1 				; 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
    
    ; Network
    M550 PX5S 				; Set machine name
    ;M587 S"SSID" P"passwd" 		; Configure access point. You can delete this line once connected
    M552 S1 				; Enable network
    M586 P0 S1 				; Enable HTTP
    M586 P1 S1 				; Enable FTP
    M586 P2 S0 				; Disable Telnet
    
    ; Fans
    M106 P0 S0 I0 F500 H-1 			; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    ;M106 P1 S1 I0 F500 H-1 			; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned off
    ;M106 P2 S1 I0 F500 H-1 			; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off
    
    ; Read in bed compensation, override etc.
    M501				; Read in EEPROM Parameters
    G29 S1				; Read in the bed compensation table
    
    T0				; Select default tool
    
    


  • Can you accentuate the effect by placing a piece of card on the bed, then grid probing it, then trying again? Or print a full bed test spiral. Sometimes the amount of movement is too small to see.


  • administrators

    Run M122 to check that mesh bed compensation is actually in use, in case there is an incompatibility between the saved height map that you are loading and the current machine parameters.



  • @dc42:

    Run M122 to check that mesh bed compensation is actually in use, in case there is an incompatibility between the saved height map that you are loading and the current machine parameters.

    This is what I found

    [[language]]
    === Move ===
    MaxReps: 15, StepErrors: 0, FreeDm: 240, MinFreeDm 141, MaxWait: 4288295883ms, Underruns: 0, 0
    Scheduled moves: 0, completed moves: 0
    Bed compensation in use: none
    Bed probe heights: 0.100 0.246 0.000 0.000 0.000
    
    

    No bed compensation. I think I found the cause. If I run the levelling (G32) script after startup the mesh compensation is gone because of

    [[language]]
    ; Clear any bed transform
    M561
    
    ```in the bed.g macro, right?
    
    Appending G29 S1 as the last command in the bed.g file should probably fix it.

  • administrators

    @Captain_sq:

    @dc42:

    Run M122 to check that mesh bed compensation is actually in use, in case there is an incompatibility between the saved height map that you are loading and the current machine parameters.

    This is what I found

    [[language]]
    === Move ===
    MaxReps: 15, StepErrors: 0, FreeDm: 240, MinFreeDm 141, MaxWait: 4288295883ms, Underruns: 0, 0
    Scheduled moves: 0, completed moves: 0
    Bed compensation in use: none
    Bed probe heights: 0.100 0.246 0.000 0.000 0.000
    
    

    No bed compensation. I think I found the cause. If I run the levelling (G32) script after startup the mesh compensation is gone because of

    [[language]]
    ; Clear any bed transform
    M561
    
    ```in the bed.g macro, right?
    
    Appending G29 S1 as the last command in the bed.g file should probably fix it.
    

    Yes, that should fix it.



  • Yes, fixed.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.