Probing issues
-
@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.
-
At what point do you get the warning about the offset?
What is your bed center point that you are probing? It's odd that there is a negative dip in the center. If that's where you are probing, that should be 0.
-
Hi,
In homez.g you have G30 Z-9999. That Z parameter may be causing problems.
In mesh.g you create the height map which leaves it "loaded" and then you issue G29 S0 to load it again.
I find the structure of your files rather confusing.
JOOC why do you change the speed, acceleration, currents?
Thanks.
Frederick
-
@Phaedrux I suppose, that the bed center is not the deepest point of the bed. I probe in the center of the bed. I get the warning at the end of G29 S0... Sometimes I wish, I have a gcode-log...
-
@fcwilt This is the phase of testing. I don't want to create a 420-point mesh with every print. Therefore I activate the actual one before printing. And I have to use mbl because my thermal warping is so big... Some Voron users struggle with RRF mbl too and don't use that feature. Duet hardware is not the standard with Voron 2.4. Most of the users >90% use SKR hardware with Klipper...
At some point, I have to set z=0. This is with G28 Z... Am I wrong? With my Voron I have two possibilities to set z=0 - with the microswitch or the inductive probe. To reduce problems with mesh bed levelling, I use right now the inductive sensor. It is accurate enough. But how is the best way, to zero my z-axis? G30 Z-9999 or G30 without any param?
-
@medicusdkfz said in Probing issues:
But how is the best way, to zero my z-axis? G30 Z-9999 or G30 without any param?
If you read the docs G30 Z-9999 is not valid.
As I mentioned I don't know if that is causing any problem - perhaps the Z-9999 is just ignored.
The only time you use a parameter of Z-9999 is when you have a P# parameter.
So just use G30 - I know that works.
Frederick
-
THANK YOU! I changed G30 Z-9999 to G30 and now it's working. First layer looks good and consistent - even at bigger areas. No need of a microswitch. The SuperPINDA is highly accurate. But I had to reduce my poll rate:
M558 K0 P5 C"io4.in" H5 F80 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.575 ; (0.475 mm 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 ; wenn die korrigierten Z-Babysteps positiv sind (z.B. 0.080 mm), dann werden sie vom Z-Parameter unter G31 aufsummiert!
For the sake of completeness:
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.70 ;G1 Z10 ;M98 P"/macros/print_scripts/speed_printing.g"; Restore normal speed & accel ;M98 P"/macros/print_scripts/goto_bed_center_nozzle.g" ; Home Z inductive probe M98 P"/macros/print_scripts/goto_bed_center_probe.g" G30 G1 Z5 M98 P"/macros/print_scripts/speed_printing.g"; Restore normal speed & accel M98 P"/macros/print_scripts/goto_bed_center_nozzle.g"