Please Help with Sensorless homing of Z axis
-
So rather excited but was short on sleep last night.
Have my new CoreXY build up and moving great. I got stall homing setup for X and Y with huge thanks to the people posting their homing scripts up. My issues are coming from the Z axis homing with stall homing.
I have the homing engaged, but the bed does not stop at all when I apply pressure to the bed. Even when the motor starts skipping steps.
Is Fxxx speed to slow? Or am I missing something else? I also cannot go any lower on my Z-axis current which is shown below. Is this the issue?
Thanks!
Config.g
; Configuration file for Duet WiFi (firmware version 2.03) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.4 on Thu Jan 02 2020 22:58:29 GMT-0500 (Eastern Standard Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Fickert's CoreXY" ; set printer name M667 S1 ; 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 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X256 Y256 Z256 E128 I0 ; configure microstepping without interpolation M92 X800.00 Y800.00 Z12000.00 E420.00 ; set steps per mm M566 X900.00 Y900.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z20.00 E250.00 ; set accelerations (mm/s^2) M906 X600 Y600 Z750 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X390 Y390 Z420 S0 ; set axis maxima ; Endstops M574 X1 Y1 Z1 S3 ; set endstops controlled by motor stall detection ; Z-Probe M558 P10 H5 F4000 T6000 S3 R0 ; Stall Detection Z probe but set dive height, probe speed and travel speed M557 X15:390 Y15:390 S20 ; define mesh grid ; Heaters M305 P0 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C ; 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 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. 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 M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
Homeall.g
[[language]] ; homeall.g ; called to home all axes ; M400 ; make sure everything has stopped before we make changes M913 X50 Y50 Z63 ; drop motor currents to 50% M915 X Y S3 R0 ; set sensitivity to +3 unfiltered G91 ; use relative positioning G1 S1 X-400 F4000 ; move X all the way left and stop at end G1 X16 ; move to edge of glass G92 X0 ; set X0 at edge of glass G1 S1 Y-400 F4000 ; move Y all the way left and stop at end G1 Y42 ; move to edge of glass G92 Y0 ; set Y0 at edge of glass G1 X152 Y210 ; go to back center of bed for measurement ; probe bed to set z0 G30 Z ; probe bed G29 S1 ; load heightmap G90 ; back to absolute positioning M400 ; make sure everything has stopped before we reset the motor currents M913 X100 Y100 Z100 ; motor currents back to 100% M574 X1 S0 ; redefine active low and unused microswitches M574 Y1 S1 ; redefine active low and unused microswitches
-
Z axis stall detection is very tricky to implement, and even if you get it reliable when the machine is cold, the results will start to very when the motors warm up.
How is your Z axis implemented mechanically? Is it a single motor? Is there any gearing between the motor and lead screw? Etc.
As an aside, you microstepping is likely to cause you issues. X256 native microstepping on all axis is not recommended.
M350 X256 Y256 Z256 E128 I0
The Duet2 2660 drivers have the option of using x16 microstepping for the step generator, and letting the driver interpolate that up to x256 for the motors without the added overhead on the CPU. It's a much prefered option because it gives the best of both worlds.
Try
M350 X16 Y16 Z16 E16 I1
and reset your steps per mm accordingly.If you then wish to experiment with higher microstepping letters you can simply send a new M350 command AFTER the existing M350 and M92 commands and the firmware will automatically recalculate the steps per mm values for you as long as they are set first for x16 microstepping.
Example:
M350 X16 Y16 Z16 E16 I1 M92 X80 Y80 Z1600 E89 M350 E128
-
Here's what I had from back when I experimented with Stall guard on the Z axis. It worked, but as I said the behaviour would change with motor temp. Z axis was a single 1.8 degree motor, 1:1 ratio with 1mm lead/pitch single start lead screw.
Might have worked better with active cooling on the Z motor to reduce the temp issue. and using a 0.9 degree motor might have helped as well.
; 2_ZStallProbe.g ; ; Uses the Z axis StallGuard detection as a Z-Probe ; M291 P"Are you sure you want to proceed?" R"StallGuard Z-Probe" S3 M280 P3 S160 I1 ; Alarm Release and Push-Pin UP, inverted signal G28 G90 ; absolute positioning G1 X150 Y150 Z3 F4000 ; Always probe on the same spot M558 P9 Z0 ; Disable BLTouch M558 P10 X0 Y0 Z1 H3 F200 T6000 A10 R0.1 S0.005 ; Enable Stall Z probe G31 X0 Y0 Z0 P200 ; Set Z probe trigger value, offset and trigger offset (overshoot due to springs) M574 Z1 S3 ; set Z-min to use motor StallGuard M913 Z40 ; reduce motor current to 20% M201 Z20 ; Reduce acceleration mm/s2 M915 Z S4 F0 R0 ; Set StallGuard sensitivity for endstop homing M291 P"StallGuard Z-Probe Settings Loaded. Proceed with Probe?" R"Yes or No?" S3 M400 G30 S-1 ; Find the bed Z=0 reference G1 Z3 G30 S-1 ; do a couple of repeatability tests G1 Z3 G30 S-1 G1 Z3 G30 S-1 G1 Z3 G30 S-1 G1 Z3 G30 S-1 ; Find the bed Z=0 reference G1 Z3 G30 S-1 ; do a couple of repeatability tests G1 Z3 G30 S-1 G1 Z3 G30 S-1 G1 Z3 G30 S-1 G1 Z3 M400 M280 P3 S160 I1 ; Alarm Release and Push-Pin UP, inverted signal M291 P"Probing complete. Restoring settings." S3 M913 Z100 ; restore current to 100% M201 Z300 ; Restore acceleration M915 Z S63 F1 R0 ; Set StallGuard sensitivity for normal movement M574 Z1 S2 ; Use zprobe and home to Z Min. M558 P9 X0 Y0 Z1 H3 F100 T6000 A10 R0.5 S0.005 ; P9 for BLTouch, dive height 3mm, probe at 100mm/s, travel 6000mm/s, up to 10 probes, pause 0.5s G31 X-41.8 Y32.2 Z2.3 P25 ; probe offset from nozzle, p is trigger value, set low for bltouch, set Z=0 for testing