Bad mesh compensation
-
Hello guys,
I'm having some troubles with the mesh bed compensation (G29).
As you can see in photo, the compensation is reverse than what it should be.
Could anyone help me to understand what could be the problem?
Thank you.config.g:
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Wed Jun 02 2021 09:10:31 GMT+0200 (CEST) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Hypercube Evolution" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S1 D3 V100 ; physical drive 0 goes forwards M569 P1 S1 D3 V100 ; physical drive 1 goes forwards M569 P2 S0 ; physical drive 2 goes forwards M569 P3 S0 D3 V100 ; physical drive 3 goes forwards M569 P4 S0 ; physical drive 3 goes forwards M584 X0 Y1 Z2:4 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z800.00 E700.00 ; set steps per mm M566 X900.00 Y900.00 Z80.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X30000.00 Y30000.00 Z600.00 E3600.00 ; set maximum speeds (mm/min) M201 X4000.00 Y4000.00 Z120.00 E250.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z1200 E350 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M915 P0:1 S0 F1 R1 ; Sensorless Homing ; Axis Limits M208 X-10 Y0 Z0 S1 ; set axis minima M208 X300 Y300 Z280 S0 ; set axis maxima M671 X-15:290 Y114:114 S6 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis ; Endstops M574 X1 S3 ; configure sensorless endstop for low end on X M574 Y1 S3 ; configure sensorless endstop for low end on Y M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M558 P5 C"^!zprobe.in" H5 F400 T6000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X37 Y72 Z-1.044 ; set Z probe trigger value, offset and trigger height M557 X50:260 Y10:280 S30 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C ;Duet 2 ;M308 S1 P"spi.cs2" Y"rtd-max31865" ; create sensor number 1 as a PT100 sensor in the first position on the Duet 2 daughter board connector M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; 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 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H1 S290 ; set temperature limit for heater 1 to 290C ; 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 T45 ; set fan 1 value. 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 ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue M501 ; load saved parameters from non-volatile memory M911 S10 R11 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
-
-
@tecno said in Bad mesh compensation:
@ducati87 said in Bad mesh compensation:
M584 X0 Y1 Z2:4 E3
Is the mapping of Z motors correct?
yes because the G32 works as well.
-
another strange thing is that when I launch the G29, the probing starts on the opposite side of point X0Y0
-
@ducati87 said in Bad mesh compensation:
another strange thing is that when I launch the G29, the probing starts on the opposite side of point X0Y0
This probably means your coordinate system doesn't match the expectation of a right handed coordinate system.
0,0 is expected to be the front left corner of the build plate.
-x moves to the left, +x moves to the right
-y moved to the front, +y moves to the backDoes this match what you have? If not, you may need to adjust your motor rotation directions and homing directions and possibly the endstop config.
For a corexy the easiest way to determine the proper config is to use this guide: https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter#Section_Testing_motor_movement
And see this post: https://forum.duet3d.com/topic/14971/vcore-pro-core-xy-the-x-and-y-axis-home-issue/4?_=1623696301478
Please also post your homeall.g and bed.g files.
The results of M122 and M98 P"config.g" can be helpful as well. -
bed.g:
M561 ;M671 X47:270 Y190:190 S3 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis G28 ; level the bed ;while iterations <=3 && move.calibration.initial.deviation >= 0.1 G30 P0 X47 Y190 Z-99999 ; probe near ball stud #1 G30 P1 X270 Y190 Z-99999 S2 ; probe near ball stud #2 ;second stage G30 P0 X47 Y190 Z-99999 ; probe near ball stud #1 G30 P1 X270 Y190 Z-99999 S2 ; probe near ball stud #2 ;third stage G30 P0 X47 Y190 Z-99999 ; probe near ball stud #1 G30 P1 X270 Y190 Z-99999 S2 ; probe near ball stud #2 ;fourth stage G30 P0 X47 Y190 Z-99999 ; probe near ball stud #1 G30 P1 X270 Y190 Z-99999 S2 ; probe near ball stud #2 ;fifth stage G30 P0 X47 Y190 Z-99999 ; probe near ball stud #1 G30 P1 X270 Y190 Z-99999 S2 ; probe near ball stud #2 ;sixth stage G30 P0 X47 Y190 Z-99999 ; probe near ball stud #1 G30 P1 X270 Y190 Z-99999 S2 ; probe near ball stud #2 M400 echo "Gantry deviation of " ^ move.calibration.initial.deviation ^ "mm obtained." G1 H1 Z8
homeall.g:
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Jul 27 2020 14:28:18 GMT+0200 (Ora legale dell’Europa centrale) ;M400 ;M913 X50 Y50 ;M915 X F0 H400 S3 R0 ;M915 Y F0 H400 S2 R0 ;G91 ; relative positioning ;G1 H2 Z5 F7200 ; lift Z relative to current position ;G1 H1 X5 F5000 ;G1 H1 X-305 F5000 S1 ; move quickly to X or Y endstop and stop there (first pass) ;G1 H1 X10 M98 P"homex.g" ;G1 H1 Y5 F5000 ;G1 H1 Y-305 F5000 S1 ; move quickly to X or Y endstop and stop there (first pass) ;M913 X100 Y100 ; X motors to 100% current ;G90 ;G1 X120 Y170 F7000 ; go to first bed probe point and home Z ;G91 ; relative positioning ;G1 H2 Z5 F7200 ; lift Z relative to current position ;G90 ; absolute positioning ;G1 X110 Y210 F7000 ; go to first bed probe point and home Z ;G4 P750 ; pause ;G91 M98 P"homey.g" ;BLTouch Z ;G30 ;G90 ;G1 Z10 F500 M98 P"homez.g"
-
@phaedrux said in Bad mesh compensation:
M98 P"config.g"
M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled Error: Driver 0 does not support mode 'stealthChop' Error: Driver 1 does not support mode 'stealthChop' Error: Driver 3 does not support mode 'stealthChop' Warning: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 267C
M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.2.2 running on Duet WiFi 1.02 or later Board ID: 08DLM-996RU-N85S4-7JTDJ-3SN6T-9S93Q Used output buffers: 3 of 24 (24 max) === RTOS === Static ram: 23460 Dynamic ram: 73840 of which 104 recycled Never used RAM 14676, free system stack 93 words Tasks: NETWORK(ready,177) HEAT(blocked,308) MAIN(running,378) IDLE(ready,20) Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:14:30 ago, cause: power up Last software reset at 2021-06-14 18:07, reason: User, GCodes spinning, available RAM 14960, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x0c Aux0 errors 0,0,0 MCU temperature: min 21.3, current 31.4, max 31.7 Supply voltage: min 24.1, current 24.2, max 24.3, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: position 35360, standstill, SG min/max 0/171 Driver 1: position -31200, standstill, SG min/max 0/166 Driver 2: position 3165, standstill, SG min/max 0/147 Driver 3: position 0, standstill, SG min/max not available Driver 4: position 0, standstill, SG min/max 0/139 Driver 5: position 0 Driver 6: position 0 Driver 7: position 0 Driver 8: position 0 Driver 9: position 0 Driver 10: position 0 Driver 11: position 0 Date/time: 2021-06-15 15:16:45 Cache data hit count 1029472552 Slowest loop: 65.57ms; fastest: 0.17ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 1.7ms, write time 2.6ms, max retries 0 === Move === DMs created 83, maxWait 186021ms, bed compensation in use: mesh, comp offset 0.000 === MainDDARing === Scheduled moves 309, completed moves 309, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 39.64ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.25 WiFi MAC address 98:f4:ab:d1:e5:99 WiFi Vcc 3.36, reset reason Turned on by main processor WiFi flash size 4194304, free heap 23872 WiFi IP address 192.168.178.7 WiFi signal strength -62dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
-
@ducati87 said in Bad mesh compensation:
M671 X-15:290 Y114:114 S6
why are you setting the Y screw location at Y114 but then you're probing at Y190?
-
Y114 is the right probe position in front of the lead screw.
-
your homeall just calls the individual homing files, can you post those?
0,0 is expected to be the front left corner of the build plate.
-x moves to the left, +x moves to the right
-y moved to the front, +y moves to the backDoes this match what you have?
-
@phaedrux said in Bad mesh compensation:
your homeall just calls the individual homing files, can you post those?
0,0 is expected to be the front left corner of the build plate.
-x moves to the left, +x moves to the right
-y moved to the front, +y moves to the backDoes this match what you have?
yes they are matched.
homex:
; homex.g ; called to home the X axis ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Jul 27 2020 14:28:18 GMT+0200 (Ora legale dell’Europa centrale) M400 M913 X50 M400 M201 X200 M915 X F0 H400 S1 R0 G91 ; relative positioning ;G1 H2 Z5 F7200 ; lift Z relative to current position G1 H2 Z10 F7000 G1 H1 X-305 F5000 ; move quickly to X axis endstop and stop there (first pass) G1 H2 X10 F7200 ; go back a few mm G1 H1 X-305 F3000 ; move slowly to X axis endstop once more (second pass) G1 H2 X15 F7200 ; lower Z again G90 ; absolute positioning M400 M201 X4000 M913 X100 M400
homey:
; homey.g ; called to home the Y axis ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Jul 27 2020 14:28:19 GMT+0200 (Ora legale dell’Europa centrale) G91 ; relative positioning M913 Y50 M201 Y100 M915 Y F0 H400 S1 R0 ;G1 H2 Z5 F7200 ; lift Z relative to current position G1 H1 Y-305 F5000 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 Y10 ;G1 H1 Y-100 F5000 ; home Y axis M913 Y100 M201 Y4000 G90 ; absolute positioning
homez:
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Jul 27 2020 14:28:19 GMT+0200 (Ora legale dell’Europa centrale) G91 ; relative positioning ;G1 H2 Z5 F7200 ; lift Z relative to current position ;G90 ; absolute positioning G1 H1 Z10 F800 G1 X140 Y174 F7000 ; go to first bed probe point and home Z G4 P750 ; pause G91 ;Probe Z G30 G90 ;G1 Z10 F500
-
@ducati87 said in Bad mesh compensation:
G1 H1 Y-305 F5000 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 Y10
This is not correct. The second move G1 H1 Y10 should not have H1 if it's a back off move it should just be G1 Y10
@ducati87 said in Bad mesh compensation:
G1 H2 Z10 F7000 G1 H1 X-305 F5000 ; move quickly to X axis endstop and stop there (first pass) G1 H2 X10 F7200 ; go back a few mm G1 H1 X-305 F3000 ; move slowly to X axis endstop once more (second pass) G1 H2 X15 F7200 ; lower Z again
H2 should only be used on Z moves to allow the Z axis to move before being homed. It should not be used on XY moves. There is also an error in the block above where the Z axis is lifted, but then the X axis is moved when the comment says to lower the Z axis.
M671 X-15:290 Y114:114 S6
Does driver 2 match the motor at the first XY position?
Does driver 4 match the motor at the second XY position?G31 P500 X37 Y72 Z-1.044
You have a rather large offset on Y axis. If there is some tilt it can produce different trigger heights depending on XY position.Your Z trigger height is negative. Is that correct? That would mean the nozzle is pushing a full 1mm into the surface of the bed when the probe triggers? Depending on the probe type this may be the case. What type of probe is it?
-
@phaedrux said in Bad mesh compensation:
@ducati87 said in Bad mesh compensation:
G1 H1 Y-305 F5000 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 Y10
This is not correct. The second move G1 H1 Y10 should not have H1 if it's a back off move it should just be G1 Y10
@ducati87 said in Bad mesh compensation:
G1 H2 Z10 F7000 G1 H1 X-305 F5000 ; move quickly to X axis endstop and stop there (first pass) G1 H2 X10 F7200 ; go back a few mm G1 H1 X-305 F3000 ; move slowly to X axis endstop once more (second pass) G1 H2 X15 F7200 ; lower Z again
H2 should only be used on Z moves to allow the Z axis to move before being homed. It should not be used on XY moves. There is also an error in the block above where the Z axis is lifted, but then the X axis is moved when the comment says to lower the Z axis.
M671 X-15:290 Y114:114 S6
Does driver 2 match the motor at the first XY position?
Does driver 4 match the motor at the second XY position?G31 P500 X37 Y72 Z-1.044
You have a rather large offset on Y axis. If there is some tilt it can produce different trigger heights depending on XY position.Your Z trigger height is negative. Is that correct? That would mean the nozzle is pushing a full 1mm into the surface of the bed when the probe triggers? Depending on the probe type this may be the case. What type of probe is it?
thank you for your reply.
M671 X-15:290 Y114:114 S6
Does driver 2 match the motor at the first XY position?
Does driver 4 match the motor at the second XY position?yes both of them.
G31 P500 X37 Y72 Z-1.044
You have a rather large offset on Y axis. If there is some tilt it can produce different trigger heights depending on XY position.I reduced the gap between the probe and the bed and now the right value is 0.750.
The problem between the left and right side is a bit better than before but the compensation is not perfect.
The right side is still a bit upper than the left side but the compensation doesn't work as well.
Maybe I should to change the probe or install a bltouch in order to improve the accuracy. -
What is the probe? Reducing the distance between nozzle and probe may help.
Can you post a photo of your heightmap image?
-
@phaedrux said in Bad mesh compensation:
What is the probe? Reducing the distance between nozzle and probe may help.
it's a normal inductive probe NPN.
-
Have you leveled the bed manually to get it more or less even to the nozzle tip first?
-
@phaedrux said in Bad mesh compensation:
Have you leveled the bed manually to get it more or less even to the nozzle tip first?
do you mean the z offset?
-
No i mean manually leveling the bed to try and eliminate as much tilt as possible.
-
@phaedrux said in Bad mesh compensation:
No i mean manually leveling the bed to try and eliminate as much tilt as possible.
No I'm not. Yes but why there is this problem with automatic leveling?
-
@ducati87 you only have two z lead screws, at the max and min of the x axis (left/right), so the G32 levelling can only level along the x axis. From you heightmap image, it looks like your heightmap is very level in X as expected
You should probably try mechanically levelling your bed a bit better from front to back. From your first image, it seems that's the direction the issue is in?