Probing issues
-
@medicusdkfz said in Probing issues:
@fcwilt I also do this. You can see it in my code snippets above...But sometimes you can see a trigger value of P=1000 in the web gui (with a red background) or on the display and sometimes not. And for my opinion it has to sense always - of course with a small difference, but it has to sense... That's my problem. I don't trust the hardware... And I've tried it with different z-values in the G31 from -0.1 up to 2 mm...
But using that G30 S-3 changes the Z trigger height setting in G31 meaning the result of the subsequent G30 will be wrong.
Also I'm not sure why you find you have to run have that conditional code in your bed.g file. My bed.g simply probes the bed near the locations of each of the three Z steppers and I invoke bed.g twice with two G32. That always obtains accurate leveling.
-
I suppose I still have a thinking error when calibrating the Z height in G31. So far I have followed the instructions in the wiki. I have done a homing of all axes, then a quad gantry levelling and a G28 Z again.
All this at 110 degrees bed temperature and heated the nozzle to 260 degrees. Then I moved the nozzle to the center of the bed and lowered it to the paper surface so that the paper could still be moved with some resistance. Then followed a G92 Z0 and several G1 Z5 and G30 S-1 commands.
The determined value was then entered in config.g as Z-value at G31.
But actually, after G92 Z0, I should have moved the inductive sensor over the former nozzle position in the middle of the bed, right? I have an offset Y-position from nozzle to sensor of 25 mm....
Of course, it would be best if the sensor position would match the nozzle position. This would mean that I get reliable values only from Y > 25, because I can drive with my nozzle only to Y=0 but not into the minus... -
... and now I get the error again and again: "Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh."
To fix the mesh bed levelling is getting me me mad...The papertest with G28 Z (z microswitch) is ok!
-
You seem to be on the right track.
Yes you want to probe the spot where you touched the nozzle to the bed.
I always use the center of the bed for both of those operations.
Of course after you determine the correct value for the Z trigger height parameter for the G31 you have to be sure that the G31 command gets executed.
The probe X and/or Y offsets will limit where you can move the probe to as you near the edges of the bed - that's perfectly normal.
Frederick
-
@medicusdkfz said in Probing issues:
... and now I get the error again and again: "Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh."
To fix the mesh bed levelling is getting me me mad...The papertest with G28 Z (z microswitch) is ok!
So you do the equivalent of...
- move to Z=5
- move the nozzle to the center of the bed
- jog Z so to just touch the nozzle to the bed
- execute G92 Z0 to establish the Z=0 position
- move to Z=5
- move the probe to the center of the bed
- execute G30 S-1 to determine the probe trigger height
- enter that value into G31 as the Z trigger height parameter
- execute the G31 command with the new parameter (however you do that)
Now at that point to verify that all is working as it should be I...
- move to Z=5
- execute G30 to set the Z=0 datum using the new G31 Z trigger height parameter
- move to Z=5
- move the nozzle to the center of the bed
- move to Z=1 and use a 1mm thickness gauge to verify the gap (or move to Z=0 and use paper)
All should be good.
Now to make all that easier I have created a few macros to save time and keystrokes.
Frederick
-
That all is logic and clear to me and is working right now. But when I perform the G30 and perform a mesh bed levelling (G29 S0) I get this warning...
-
@medicusdkfz said in Probing issues:
That all is logic and clear to me and is working right now. But when I perform the G30 and perform a mesh bed levelling (G29 S0) I get this warning...
You need to go back and do the G30 with G29 to create a new height map.
Then the G30 with G29 S0 should load the height map without issue.
Frederick
-
Sorry, that is exactly what I have done (line 32 in my mesh.g)... And than I get this warning!
But thank you for your help!
-
@medicusdkfz said in Probing issues:
Sorry, that is exactly what I have done (line 32 in my mesh.g)... And than I get this warning!
I cannot find where you execute G30 after leveling the gantry but before creating the height map.
In the bed.g file I see where you execute G28 Z but in the homez.g file I see that you are homing to an end stop switch but I don't see G30.
Frederick
-
In my mesh macro you will find in line 15 a G32 command and after that before the G29 S0 the G30...
-
@medicusdkfz said in Probing issues:
In my mesh macro you will find in line 15 a G32 command and after that before the G29 S0 the G30...
Yes I see that but you also have to do a G30 BEFORE creating the height map as well as before loading a height map.
Also remember that you don't need to load the height map after just creating it - the height map remains loaded after creation until something else unloads it.
Frederick
-
I have done all this, but this doesn't explain the warning... I go a step further and perform with every print a mesh. I know, that's an overkill, but I suppose, that the thermal expansion is not consistent. But again: I don't understand the warning...
@medicusdkfz said in Probing issues:
... and now I get the error again and again: "Warning: the height map has a substantial Z offset. Suggest use Z-probe to establish Z=0 datum, then re-probe the mesh."
To fix the mesh bed levelling is getting me me mad...The papertest with G28 Z (z microswitch) is ok!
-
Is there any perspective of help here? If it has a professional service, I would also pay for it... The issue is important to me and I would like to get it solved!
-
@medicusdkfz said in Probing issues:
Is there any perspective of help here? If it has a professional service, I would also pay for it... The issue is important to me and I would like to get it solved!
Can you show us where you perform the G30 before creating the height map?
Frederick
-
@medicusdkfz shall we start a fresh?
Post your latest files.
Your original comments around the value not always showing in DWC when probing, the DWC doesn't update quick enough to show the change in value, but don't worry, its being recorded at the correct trigger height -
Ok, thank you for your help... I will deliver this evening the necessary information.
-
Here are my actual files...
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_nozzle.g" ; Heat the bed to 100C M291 P"Heating up the bed..." R"Probing New Bed Mesh" T5 M190 S110 ; Set the hotend to 260C M291 P"Heating up the hotend..." R"Bed Mesh" T5 G10 P0 S260 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 ; already done in G32 (bed.g) M98 P"/macros/print_scripts/do_nozzle_wipe.g" M98 P"/macros/print_scripts/do_nozzle_wipe.g" ; Get the reference Z offset M291 P"Get reference Z offset..." R"Bed Mesh" T5 G28 Z ; first home z again before G30 ; Probe a new bed mesh! M291 P"Probing now!" R"Bed Mesh" T5 ;M98 P"/macros/Mesh/mesh_420_points.g" ;M98 P"/macros/Mesh/mesh_121_points.g" ;M98 P"/macros/Mesh/mesh_81_points.g" M98 P"/macros/Mesh/mesh_49_points.g" ;M98 P"/macros/Mesh/mesh_36_points.g" ;M98 P"/macros/Mesh/mesh_25_points.g" ;M98 P"/macros/Mesh/mesh_16_points.g" M98 P"/macros/print_scripts/goto_bed_center_probe.g" ; Probe is above center of the bed G1 Z5 G30 G1 Z5 G29 S0 ; create new mesh with xx points (uncomment one entry line 34 to 40) ; Done, move to center M98 P"/macros/print_scripts/goto_bed_center_nozzle.g" ;M291 P"Deactivate actual mesh?" R"Bed Mesh" S3 ;G29 S2
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 M564 S1 H1 ; Forbid axis movements when not homed ; Network M552 P10.0.0.2 S1 ; enable network and acquire dynamic address via DHCP M554 P10.0.0.1 ; 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 ; 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 E1000 ; 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-2 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 ## fulg ## M574 Z1 S1 P"io3.in" ; Z microswitch endstop ; Z-Probe ;M558 K0 P9 C"io4.in" H4 F70 R0.2 T12000 A5 B0 ; BLtouch ;M950 S0 C"io4.out" ; servo BLtouch ;G31 X0 Y23 Z2.600 P25 M558 K0 P5 C"io4.in" H3 F150 T18000 A5 S0.01 ; set Z probe type to switch and the dive height + speeds (S-1 -> nimmt die Anzahl des A-Parameters zum Testen), B1 (schaltet heaters aus) G31 P500 X0 Y25 Z0.845 ; (0.845 hot, black PEI-sheet) 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 F50 H2 A5 S-1 R0.2 ; ## fulg ## ;G31 K1 P500 X0 Y0 Z-0.700 ; ## fulg ## 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) - overwrite mesh settings in DOW after restart ; 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 S130 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 S135 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.6 ; 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" H-6 ; Thermistor H-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" ; 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) M575 P1 S1 B115200 ; enable support for PanelDue ; 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) 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
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 if !move.axes[0].homed || !move.axes[1].homed echo "Printer was not homed. Homing now." G28 ; Lower currents, speed & accel M98 P"/macros/print_scripts/speed_probing.g" M98 P"/macros/print_scripts/xy_current_low.g" ; Probe the bed at 4 points multiple times while true if iterations = 7 abort "Too many auto calibration attempts" G30 P0 X10 Y28 Z-99999 ; probe near front left belt if result != 0 continue G30 P1 X10 Y315 Z-99999 ; probe near back left belt if result != 0 continue G30 P2 X340 Y315 Z-99999 ; probe near back right belt if result != 0 continue G30 P3 X340 Y28 Z-99999 S4 ; probe near front right belt if result != 0 continue if move.calibration.initial.deviation <= 0.007 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)" ; end loop 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" G28 Z M98 P"/macros/print_scripts/goto_bed_center_nozzle.g" G1 Z5
homez.g:
; homez.g ; called to home the Z axis ; do nothing if XY is not homed yet if move.axes[0].homed && move.axes[1].homed G91 ; relative positioning G1 H2 Z10 F6000 ; lift Z relative to current position G90 ; absolute positioning M98 P"/macros/print_scripts/speed_probing.g"; Setup low speed & accel ; Home Z microswitch M98 P"/macros/print_scripts/goto_z_switch.g" G1 H1 Z-600 F360 ; move Z down until the endstop is triggered G1 Z4 F1800 ; go back a few mm G1 H1 Z-600 F80 ; move slowly to Z axis endstop once more (second pass) G92 Z-0.50 G1 Z10 M98 P"/macros/print_scripts/speed_printing.g"; Restore normal speed & accel M98 P"/macros/print_scripts/goto_bed_center_nozzle.g"
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/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" G1 H1 Z-600 F360 ; move Z down until the endstop is triggered G1 Z4 F1800 ; go back a few mm G1 H1 Z-600 F80 ; move slowly to Z axis endstop once more (second pass) G92 Z-0.50 G1 Z10 ; Restore high currents, speed & accel M98 P"/macros/print_scripts/xy_current_high.g" M98 P"/macros/print_scripts/speed_printing.g"
-
The main problem I see is that your homeall and homez are using the endstop switch for homing Z and you're using them to home Z in your bed.g for the leveling. Every time you call G28 or G28 Z you are using the endstop instead of the probe to set Z0.
In your bed.g add a single G30 before and after the 4 point leveling routine. You can still home with G28 at the start, but you need a G30 before the leveling passes. And then after those instead of using G28 Z, use a G30 at the center of the bed instead.
Then in your mesh.g don't use G28 Z at all after you've used G32. It's not needed. Once the leveling routine has been done, do not use G28 or G28 Z.
-
@Phaedrux G30 always with inductive probe in bed center? Thank you!!! That's a valuable hint. I'll try this and I'll get back to you with more information...
-
This ist my actual 420 points mesh:
I modified my homez.g and homeall.g and abandoned my z-microswitch...
homez.g:
; homez.g ; called to home the Z axis ; do nothing if XY is not homed yet if move.axes[0].homed && move.axes[1].homed G91 ; relative positioning G1 H2 Z10 F6000 ; lift Z relative to current position G90 ; absolute positioning M98 P"/macros/print_scripts/speed_probing.g"; Setup low speed & accel ; Home Z inductive probe M98 P"/macros/print_scripts/goto_bed_center_probe.g" G30 Z-9999 G1 Z5 M98 P"/macros/print_scripts/speed_printing.g"; Restore normal speed & accel M98 P"/macros/print_scripts/goto_bed_center_nozzle.g"
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 if !move.axes[0].homed || !move.axes[1].homed echo "Printer was not homed. Homing now." G28 ; Lower currents, speed & accel M98 P"/macros/print_scripts/speed_probing.g" M98 P"/macros/print_scripts/xy_current_low.g" M98 P"/macros/print_scripts/goto_bed_center_probe.g" G30 G1 Z5 M98 P"/macros/print_scripts/goto_bed_center_nozzle.g" ; Probe the bed at 4 points multiple times while true if iterations = 7 abort "Too many auto calibration attempts" G30 P0 X10 Y28 Z-99999 ; probe near front left belt if result != 0 continue G30 P1 X10 Y315 Z-99999 ; probe near back left belt if result != 0 continue G30 P2 X340 Y315 Z-99999 ; probe near back right belt if result != 0 continue G30 P3 X340 Y28 Z-99999 S4 ; probe near front right belt if result != 0 continue if move.calibration.initial.deviation <= 0.007 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)" ; end loop 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/goto_bed_center_probe.g" G28 Z ; G30 Z-9999 M98 P"/macros/print_scripts/goto_bed_center_nozzle.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 ; Heat the bed to 100C M291 P"Heating up the bed..." R"Probing New Bed Mesh" T5 M190 S110 ; Set the hotend to 260C M291 P"Heating up the hotend..." R"Bed Mesh" T5 G10 P0 S260 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 ; already done in G32 (bed.g) M98 P"/macros/print_scripts/do_nozzle_wipe.g" M98 P"/macros/print_scripts/do_nozzle_wipe.g" ; Get the reference Z offset M291 P"Get reference Z offset..." R"Bed Mesh" T5 ; Probe a new bed mesh! M291 P"Probing now!" R"Bed Mesh" T5 M98 P"/macros/Mesh/mesh_420_points.g" ;M98 P"/macros/Mesh/mesh_121_points.g" ;M98 P"/macros/Mesh/mesh_81_points.g" ;M98 P"/macros/Mesh/mesh_49_points.g" ;M98 P"/macros/Mesh/mesh_36_points.g" ;M98 P"/macros/Mesh/mesh_25_points.g" ;M98 P"/macros/Mesh/mesh_16_points.g" M98 P"/macros/print_scripts/goto_bed_center_probe.g" G30 G1 Z5 M98 P"/macros/print_scripts/goto_bed_center_nozzle.g" G29 S0 ; create new mesh with xx points (uncomment one entry line 34 to 40) ; Done, move to center M98 P"/macros/print_scripts/goto_bed_center_nozzle.g"
But I get the warning from a substantial z-offset again... The bed center is at the right height in the mesh.