sensorless homing with S4 option behaves same as S3 in 3.4 b7
-
The last post in that thread the user says they have it working.
-
@phaedrux Hi they are using S3 where im using S4 for multiple motors,
-
@moth4017 Hi I have got to a point where i can get the stall feature to work using S3 but S4 behaves the same as S3 .
3 Z stepper motors
S3 = as the fist stepper drive stalls the other 2 stepper motors stop.
S4 =as the fist stepper drive stalls the other 2 stepper motors stop.
using P 4:5:6 for Z drive
P4 = Front left
P5 = front Right
P6 =Center Backit can be any of the stepper motors P4,5,6, stalling first but the other 2 will stop
-
Can you share the settings you're using right now and I can ask DC42 to take a look at the S4 option. I don't think it's been used for multiple Z axis motor stall homing before. Would be pretty rare I think.
Also can you confirm your firmware version?
Can you share the results of M122 after you've homed with S4?
-
@phaedrux
config.g
; Configuration file for Duet WiFi (firmware version 3.3)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.3.10 on Thu Dec 30 2021 11:07:38 GMT+1300 (New Zealand Daylight Time); General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"3030 V001" ; set printer name
M669 K1 ; core xy
G29 S1 ; Set Units to Millimeters; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet; Drives
M569 P0.0 S1 ; physical drive 0 goes forwardsM569 P0.1 S1
M569 P0.1 S1 ; physical drive 1 goes forwardsM569 P0.1 S1
M569 P0.2 S1 ; physical drive 2 goes forwards
M569 P0.3 S1 ; physical drive 3 goes forwards
M569 P0.4 S1 D3 V30 ; physical drive 4 goes forwards D3=stealthchop
M569 P0.5 S0 D3 V30 ; physical drive 5 goes backwards
M569 P0.6 S1 D3 V30 ; physical drive 6 goes forwardsM584 X1 Y0 E3 Z0.4:0.5:0.6 ; set drive mapping FL,FR,RC
M350 X16 Y16 I1 ; configure microstepping with interpolation
M350 Z16 E16 I0
M92 X80.00 Y80.00 Z400.00 E100.00 ; set steps per m
M566 X400.00 Y400.00 Z60.00 E900.00 P1 ; set maximum instantaneous speed changes (mm/min)
M203 X6000.00 Y6000.00 Z600.00 E1200.00 ; set maximum speeds (mm/min)
M201 X1000.00 Y1000.00 Z60.00 E250.00 ; set accelerations (mm/s^2)
M906 X800 Y800 Z800 E600 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 X300 Y300 Z400 S0 ; set axis maxima; Endstops
M574 X1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in
M574 Y1 S1 P"io1.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in
;M574 Z2 S2 P"!io4.in" ; != invert signal
M574 Z2 S4 ; configure sensorless endstop for high end on Z, 1 = low end, 2 = high end. S4 multipule motors
M671 X-10:320:155 Y-10:-10:320 S25 ; leadscrews at front left,front right, rear Center s= max correction factor must be in same order as M584; Sensorless config
M915 P0.4:0.5:0.6 S10 R0 F0 H200 ; Lower values less sensitive S3, F filter, R =Action; Z-Probe
M558 P1 C"io3.in" H5 F300 T6000 ; set Z probe type to unmodulated and the dive height + speeds
G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height
M557 X15:215 Y15:195 S20 ; define mesh grid; Heaters
M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; 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 B1 S1.00 ; enable 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
M308 S1 P"e0temp" Y"thermistor" T100000 B4138 ; 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 S280 ; set temperature limit for heater 1 to 280C; 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
3zhome.g
M400
M569 P0.4:0.5:0.6 V10
G4 P100
;M574 Z2 S4
M906 Z100
G91 ; relative positioning
G1 H2 Z0.2 F3000 ; power up motors to ensure they are not stalled
G4 P100 ; wait 100ms
M400 ; wait for current moves to finishG4 P200
M915 P0.4:0.5:0.6 S27 H10 F0 R0 ; Configure Z-Axis Stall DetectionG4 P200
G91 ; relative positioning
G1 F4000
G1 H1 Z350 ; Home Z-Axis actuators independently
M400 ; make sure everything has stopped before we make changes
M906 Z600 ; Reset motor current
G90 ; absolute positioning
G92 Z301 ; set position
G91 ; relative positoningM122
M122
=== Diagnostics ===
RepRapFirmware for Duet 3 Mini 5+ version 3.3 (2021-06-15 21:46:11) running on Duet 3 Mini5plus WiFi (standalone mode)
Board ID: 3R9YY-6T9RL-D65J0-40KMN-2UW2Z-RHYT0
Used output buffers: 3 of 40 (26 max)
=== RTOS ===
Static ram: 102724
Dynamic ram: 105348 of which 680 recycled
Never used RAM 34952, free system stack 144 words
Tasks: NETWORK(ready,16.4%,240) HEAT(delaying,0.0%,406) Move(notifyWait,0.1%,305) CanReceiv(notifyWait,0.0%,941) CanSender(notifyWait,0.0%,371) CanClock(delaying,0.0%,340) TMC(notifyWait,1.1%,115) MAIN(running,81.6%,426) IDLE(ready,0.0%,29) AIN(delaying,0.8%,264), total 100.0%
Owned mutexes: WiFi(NETWORK)
=== Platform ===
Last reset 00:01:42 ago, cause: software
Last software reset at 2022-01-22 16:56, reason: User, GCodes spinning, available RAM 34952, slot 2
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
Error status: 0x00
MCU revision 3, ADC conversions started 102604, completed 102604, timed out 0, errs 0
Step timer max interval 752
MCU temperature: min 31.4, current 32.4, max 32.7
Supply voltage: min 23.8, current 24.0, max 24.0, under voltage events: 0, over voltage events: 0, power good: yes
Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0
Driver 0: position 0, standstill, SG min/max 4/4, read errors 0, write errors 0, ifcnt 189, reads 4816, writes 0, timeouts 0, DMA errors 0
Driver 1: position 0, standstill, SG min/max 4/4, read errors 0, write errors 0, ifcnt 189, reads 4815, writes 0, timeouts 0, DMA errors 0
Driver 2: position 120400, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 183, reads 4815, writes 0, timeouts 0, DMA errors 0
Driver 3: position 0, standstill, SG min/max 0/0, read errors 0, write errors 0, ifcnt 183, reads 4815, writes 0, timeouts 0, DMA errors 0
Driver 4: position 0, standstill, SG min/max 14/334, read errors 0, write errors 0, ifcnt 133, reads 4808, writes 7, timeouts 0, DMA errors 0
Driver 5: position 0, standstill, SG min/max 46/304, read errors 0, write errors 0, ifcnt 106, reads 4809, writes 6, timeouts 0, DMA errors 0
Driver 6: position 0, standstill, SG min/max 48/334, read errors 0, write errors 0, ifcnt 105, reads 4809, writes 6, timeouts 0, DMA errors 0
Date/time: 2022-01-22 16:57:44
Cache data hit count 200337735
Slowest loop: 3.77ms; fastest: 0.11ms
=== Storage ===
Free file entries: 10
SD card 0 detected, interface speed: 22.5MBytes/sec
SD card longest read time 0.6ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 83, maxWait 89890ms, bed compensation in use: none, comp offset 0.000
=== MainDDARing ===
Scheduled moves 4, completed moves 4, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 1], 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, chamberHeaters = -1 -1
=== 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
SBC is idle in state(s) 0
Daemon is idle in state(s) 0
Aux2 is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty.
=== CAN ===
Messages queued 266, received 0, lost 0, longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 17 (min 17), ts 265/0/0
Tx timeouts 0,0,265,0,0,0 last cancelled message type 30 dest 127=== Network ===
Slowest loop: 199.51ms; fastest: 0.08ms
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 1
WiFi firmware version 1.25
WiFi MAC address f0:08:d1:02:a1:0b
WiFi Vcc 3.34, reset reason Power up
WiFi flash size 2097152, free heap 26544
WiFi IP address 192.168.0.19
WiFi signal strength -50dBm, mode 802.11n, reconnections 0, sleep mode modem
Clock register 00002002
Socket states: 0 0 0 0 0 0 0 0
- WiFi -
-
I strongly recommend that you remove the belt from pulleys before tuning.
I run this program and changing parameters while excecuting:
global counter=0 M569 P0 D3 V20 ; tpwmthrs 40 (117.2 mm/sec) M569 P1 D3 V20 ; tpwmthrs 40 (117.2 mm/sec) M906 X1000 Y1000 ; Current mA M913 X35 Y35 ; Current % M566 X1 Y1 ; Jerk mm/min M201 X300 Y300 ; Accelerations mm/sec^2 M220 S20 ; Set speed factor override percentage M915 X Y S0 H95 F0 R1 ;G28 G92 X0 Y0 G0 X20 Y20 while true if global.counter=10 echo "10 pass" set global.counter=0 G4 S3 G1 X145 F6000 G1 X10 F6000 M400 set global.counter=global.counter+1
You must be sure that using StealChop mode for TMC2209. Check speed for switch between StealthChop to SpreadCycle mode.
Decrease motor current to 30-35%. But not too less or you will get errors "Error: short-to-ground reported by driver(s) 0"
Use speed 20-30 mm/sec. Less is better but if you set too low speed stall will not detect.Theoretical Hnn = <speed> / <length perimeter pulley > x <motor steps per one rotate> x 0.95
For speed 20 mm/sec, motor 1.8, pulley GT2-20
H = 20 / 40 x 200 x 0.95 = 95
You will get false signals if set too low Hnn or not get signals at all if set Hnn to high.While excecuting change parameters Snn in command M915.
Look to the console. Increase S if you get false messages.
Or decrease S if you touch the pulley but do not get message to console.Toch the rotating pulley on the motor and find minimum Snn.
-
@demonlibra Hi thank you for the reply the issue i have at the moment is that S4 function behaves the same as S3.
-
@phaedrux Hi has DC42 had any thourghts on this?
cheers
Mark -
It's on his list to investigate I believe.
-
Can you test S4 homing in 3.4 beta found here?
https://www.dropbox.com/sh/i5vox3xmkd55gaz/AAC19mI0WEC5GmEjLOBRbKs-a?dl=0 -
Hi Loaded up the beta version 3.4 beta S4 is still acting like S3
-
Thanks for testing.
-
-
@moth4017 thanks, this is now on my list to look into.
-
@dc42 Thank you very much
-
@moth4017 I have now fixed this in the source code and tested it. The fix will be included in RRF 3.4.0rc1. Thanks for your help in getting this fixed.