Homing sensors not working correctly with RRF3.3.0 stable
-
Hello everyone, after installing the latest 3.3.0 stable release I am noticing that homing of limit switches present on the 3HC expansion card is not performed correctly.
The problem I have is that the axis is started until the limit switch is activated, it goes in the opposite direction for 5mm and stops, instead it should move slowly until the limit switch is activated. The last build I tried is the RRF3.3 RC6 and it worked fine.
I don't know if I missed any steps .....
I am attaching an example of a homing file hoping it will help.
Thank you; homeu.g ; called to home U axis ;M98 P"0:/macros/Utility/Change leds color" ; call "Change leds color" macro if !move.axes[2].homed abort "Unable to execute homing. First run homez" G91 ; relative positioning if move.axes[2].homed && sensors.endstops[2].triggered == false G1 Z1 F1000 ; lift Z relative to current position M584 P4 ; apply custom settings M913 U80 ; reduce motor current G1 H1 U-150 F2000 ; move U until the endstop is triggered G4 P100 ; delay 0.1 sec G1 U5 F1000 ; move U back 5mm G1 H1 U-15 F500 ; move U slowly towards the switch until it triggers G4 P500 ; delay 0.5 sec M913 U100 ; set motor current M584 P3 ; apply custom settings if move.axes[2].homed && sensors.endstops[2].triggered == false G1 Z-1 F1000 ; lift Z relative to current position G90 ; absolute positioning M42 P6 S120 ; change leds color to white M400 ; finish moves, clear buffer
-
Please also post your config.g and the results of M122 and M98 P"config.g"
-
@phaedrux , here is config file and report after running M98 "config.g"
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; General preferences G21 ; work in millimetres G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet 3" ; set printer name M575 P1 S1 B57600 ; set auxiliary serial port baud rate and require checksum (for PanelDue) ; Debugging M111 S0 ; debug (S0 is off; S1 is on) ; Axis configuration M584 X0.0 Y0.1 Z0.2:0.3 U1.0 V1.1 W0.3 E0.4:0.5 P3 ; set drive mapping M669 K1 S1 T3 ; select CoreXY mode ; Stepper configuration M569 P0.0 S1 D3 F4 B1 V200 H50 ; X/front - physical drive 0.0 goes forwards M569 P0.1 S0 D3 F4 B1 V200 H50 ; Y/rear - physical drive 0.1 goes backwards M569 P0.2 S1 D3 F4 B1 V15 H5 ; Z/left - physical drive 0.2 goes forwards M569 P0.3 S1 D3 F4 B1 V15 H5 ; W/right - physical drive 0.3 goes forwards M569 P0.4 S0 D3 ; E/front T0 - physical drive 0.4 goes backwards M569 P0.5 S1 D3 ; E/rear T1 - physical drive 0.5 goes forwards M569 P1.0 S0 ; physical drive 1.0 goes backwards M569 P1.1 S0 ; physical drive 1.1 goes backwards ... M915 X Y T1500 S15 H128 F1 R3 ; set CoolStep threshold super low ; Steppers Settings M350 X16 Y16 Z16 W16 U16 V16 E32:32 I1 ; configure microstepping with interpolation M906 X{2800 * 0.5} Y{2800 * 0.5} Z{2800 * 0.5} W{2800 * 0.5} ; set motor currents (mA) and motor idle factor in per cent M906 U1800 V1500 ; set motor currents (mA) and motor idle factor in per cent M906 E{700 * 0.8}:{700 * 0.8} I60 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M92 X{200 / (20 * 2) * 16} Y{200 / (20 * 2) * 16} ; set steps per mm M92 Z802.005 W802.005 ; set steps per mm M92 U37.67 V5245.9 ; set steps per mm M92 E813:813 ; set steps per mm M566 X1200 Y1200 Z240 W240 U200 V50 E3600:3600 P1 ; set maximum instantaneous speed changes (mm/min) M203 X15000 Y15000 Z1500 W1500 U15000 V100 E6000:6000 ; set maximum speeds (mm/min) M201 X3000 Y3000 Z480 W480 U1500 V200 E3600:3600 ; set accelerations (mm/s^2) ; Axis Limits M208 X-187.4 Y-167.45 Z0 U0 S1 ; set axis minima M208 X187.4 Y167.45 Z374 U150 S0 ; set axis maxima ; Endstops M574 X1 S1 P"!^0.io1.in" ; configure active-high endstop for low end on X via pin io0.in M574 Y1 S1 P"!^0.io2.in" ; configure active-high endstop for low end on Y via pin io1.in M574 Z2 S1 P"!^0.io3.in" ; configure active-high endstop for high end on Z via pin io2.in M574 U1 S1 P"!^1.io0.in" ; configure active-high endstop for low end on U via pin 1.io1.in M574 V1 S1 P"!^1.io1.in" ; configure active-high endstop for low end on V via pin 1.io1.in M574 W2 S1 P"!^0.io4.in" ; configure active-high endstop for high end on W via pin io3.in ; Thermistors M308 S0 P"0.temp0" Y"thermistor" T100000 B4130 C 1.739356e-7 ; configure sensor 0 as thermistor on pin temp0 M308 S1 P"0.spi.cs0" Y"rtd-max31865" ; configure sensor 1 as thermocouple via CS pin spi.cs0 M308 S2 P"0.spi.cs1" Y"rtd-max31865" ; configure sensor 2 as thermocouple via CS pin spi.cs1 M308 S3 P"1.temp0" Y"thermistor" T100000 B4130 C 1.739356e-7 ; configure sensor 3 as thermistor on pin 1.temp0 ; Humidity sensor ;M308 S10 P"0.spi.cs2" Y"dht22" A"Chamb Temp" ; define DHT22 temperature sensor ;M308 S11 P"S10.1" Y"dhthumidity" A"Chamb Humid[%]" ; Attach DHT22 humidity sensor to secondary output of temperature sensor ; Define Bed M950 H0 C"0.out0" T0 ; create bed heater output on out0 and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M140 H0 ; map heated bed to heater 0 M557 X-145.5:145.5 Y-145.5:145.5 S145.5 ; define mesh grid ; Define Heaters M950 H1 C"0.out1" T1 ; create nozzle heater output on out1 and map it to sensor 1 M950 H2 C"0.out2" T2 ; create nozzle heater output on out2 and map it to sensor 2 ; Define Heater chamber M950 H3 C"1.out0" T3 ; create chamber heater output on 1.out0 and map it to sensor 3 M141 H3 ; map chamber to heater 3 ; Heater Fault Parameters M143 H0 S120 ; set temperature limit for heater 0 to 120C M570 H1 P10 T15 S100 ; hotend 2 allows 10sec for anomaly, permits 15deg excursion, abandons print after 100s M143 H1 S320 ; set temperature limit for heater 1 to 320C M570 H2 P10 T15 S100 ; hotend 2 allows 10sec for anomaly, permits 15deg excursion, abandons print after 100s M143 H2 S320 ; set temperature limit for heater 2 to 320C ;M570 H3 P60 T5 S100 ; hotend 2 allows 10sec for anomaly, permits 15deg excursion, abandons print after 100s M143 H3 S60 ; set temperature limit for heater 3 to 60C ; Fans M950 F0 C"0.out5" Q500 ; create fan 0 on pin out3 and set its frequency M106 P0 S0 H1 T45 ; set fan 0 value. Thermostatic control is turned on M950 F1 C"0.out6" Q500 ; create fan 1 on pin out4 and set its frequency M106 P1 S1 H2 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"0.out7" Q500 ; create fan 2 on pin out5 and set its frequency M106 P2 S0 H-1 ; set fan 2 value. Thermostatic control is turned off M950 F3 C"0.out8" Q500 ; create fan 3 on pin out5 and set its frequency M106 P3 S0 H-1 ; set fan 3 value. Thermostatic control is turned off M950 F4 C"1.out7" Q500 ; create fan 4 on pin out5 and set its frequency M106 P4 S0 H-1 ; set fan 4 value. Thermostatic control is turned off M950 F5 C"1.out8" Q500 ; create fan 5 on pin out6 and set its frequency M106 P5 S0 H-1 ; set fan 5 value. Thermostatic control is turned off ; Tools M563 P0 S"T0" D0 H1 F0:4 ; define tool 0 G10 P0 X0 Y-24 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M207 P0 S2 F3000 T3000 Z0 R0.02 ; set tool 0 retraction M572 D0 S0.12 ; set tool 0 pressure advance to 0.12 seconds ;M592 D0 A0.007744239 B0004224643 ; set non linear extrusion parameters for tool 0 M563 P1 S"T1" D1 H2 F1:5 ; define tool 1 G10 P1 X0 Y24 Z-0.5 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M207 P1 S2 F3000 T3000 Z0 R0.02 ; set tool 1 retraction M572 D1 S0.12 ; set tool 1 pressure advance to 0.12 seconds ;M592 D1 A0.007744239 B0004224643 ; set non linear extrusion parameters for tool 1 ; Z-Probe M558 P9 C"io7.in" H2.5 F100 T11000 B1 ; set Z probe type to bltouch and the dive height + speeds M950 S0 C"io7.out" ; create servo pin 0 for BLTouch G31 P500 X17 Y0 Z1.25 ; set Z probe trigger value, offset and trigger height ; Bed leveling lead screw coordinates M671 X-291.5:291.5 Y0:0 S0.7 ; lead screw positions ; Duet3 Cooling M308 S4 Y"mcu-temp" A"MCU" ; configure sensor 4 as thermistor on pin e1temp for left stepper M308 S5 Y"drivers" A"TMC2660" ; configure sensor 5 as temperature warning and overheat flags on the TMC2660 ; reports 0C when there is no warning, ; 100C if any driver reports over-temperature!!! warning, ; 150C if any driver reports over-temperature shutdown ; Led Lighting Control M950 S6 C"0.out9" Q500 ; assign pin out2 (6HC, Main Board) to GPIO 0 ; Custom settings M204 P1500 T1500 ; set printing and travel accelerations M593 F35 ; cancel ringing at 35Hz M376 H3 ; set bed compensation taper ; Emergency Stop M950 J0 C"^0.io8.in" ; input 0 uses io8.in pin, pullup enabled M581 P0 R0 S1 T2 ;M582 T2 ; check levels of inputs that give rise to trigger #0 ; Miscellaneous M404 N1.75 D0.4 ; set nominal filament diameter to 1.75 and nozzle width to 0.4 T0 P0 ; select T0 M501 ; load saved parameters from non-volatile memory M911 S22 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss M80 ; ATX power on M42 P6 S40 ; turn on leds on rainbow color G4 S5 ; delay 5 sec. M42 P6 S120 ; turn on leds on white color M400 ; wait for current moves to finish M18 ; disable all stepper motors
m122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.3 (2021-06-15 21:45:47) running on Duet 3 MB6HC v0.6 or 1.0 (SBC mode) Board ID: 08DJM-956L2-G43S4-6JKF0-3S86T-9A5YD Used output buffers: 1 of 40 (25 max) === RTOS === Static ram: 150904 Dynamic ram: 63596 of which 44 recycled Never used RAM 139648, free system stack 200 words Tasks: SBC(ready,4.9%,298) HEAT(delaying,0.0%,331) Move(notifyWait,0.0%,352) CanReceiv(notifyWait,0.0%,774) CanSender(notifyWait,0.0%,374) CanClock(delaying,0.0%,339) TMC(notifyWait,7.5%,93) MAIN(running,87.6%,922) IDLE(ready,0.0%,29), total 100.0% Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:05:24 ago, cause: power up Last software reset at 2021-06-18 18:21, reason: User, none spinning, available RAM 136804, slot 0 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0044a000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Step timer max interval 136 MCU temperature: min 25.0, current 36.1, max 36.3 Supply voltage: min 24.1, current 24.1, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0 Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Driver 0: position 0, standstill, reads 33691, writes 29 timeouts 0, SG min/max 0/0 Driver 1: position 0, standstill, reads 33691, writes 29 timeouts 0, SG min/max 0/0 Driver 2: position 0, standstill, reads 33695, writes 25 timeouts 0, SG min/max 0/0 Driver 3: position 0, standstill, reads 33695, writes 25 timeouts 0, SG min/max 0/0 Driver 4: position 0, standstill, reads 33701, writes 19 timeouts 0, SG min/max 0/0 Driver 5: position 0, standstill, reads 33701, writes 19 timeouts 0, SG min/max 0/0 Date/time: 2021-06-18 19:32:35 Slowest loop: 54.99ms; fastest: 0.04ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 125, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed moves 0, 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 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = 3 -1 -1 -1 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP* is doing "M122" 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 2879, received 3674, lost 0, longest wait 1ms for reply type 6018, peak Tx sync delay 236, free buffers 49 (min 48), ts 1623/1622/0 Tx timeouts 0,0,0,0,0,0 === SBC interface === State: 4, failed transfers: 1, checksum errors: 0 Last transfer: 1ms ago RX/TX seq numbers: 10887/10887 SPI underruns 0, overruns 0 Disconnects: 0, timeouts: 0, IAP RAM available 0x2c810 Buffer RX/TX: 0/0-0 === Duet Control Server === Duet Control Server v3.3.0 Code buffer space: 4096 Configured SPI speed: 8000000Hz Full transfers per second: 3.17, max wait times: 6.0ms/0.0ms Codes per second: 0.07 Maximum length of RX/TX data transfers: 4020/1024
M122 B1 Diagnostics for board 1: Duet EXP3HC firmware version 3.3 (2021-06-15 16:12:41) Bootloader ID: not available Never used RAM 158632, free system stack 4400 words Tasks: Move(notifyWait,0.0%,160) HEAT(delaying,0.0%,104) CanAsync(notifyWait,0.0%,69) CanRecv(notifyWait,0.0%,82) CanClock(notifyWait,0.0%,71) TMC(notifyWait,7.3%,63) MAIN(running,91.4%,304) IDLE(ready,0.0%,39) AIN(delaying,1.3%,263), total 100.0% Last reset 00:06:15 ago, cause: power up Last software reset at 2021-06-13 11:09, reason: deliberate HardFault zeroDiv, available RAM 159104, slot 0 Software reset code 0x8060 HFSR 0x40000000 CFSR 0x02000000 ICSR 0x00430803 BFAR 0xe000ed38 SP 0x20003700 Task MAIN Freestk 804 ok Stack: 00000001 00000000 00000000 00000004 20000a80 0001dd33 0001f220 41000000 b5ddea01 388ab355 bb360b61 3e2aaaab 00000000 11a80100 0000002c 43000000 20003bc8 00000000 00000000 00000000 20003bc8 0000b2c8 20003bc8 0000b2c8 0000010c 0001da41 3a36d584 Driver 0: position 0, 37.7 steps/mm, standstill, reads 8175, writes 21 timeouts 0, SG min/max 0/0, steps req 0 done 0 Driver 1: position 0, 5245.9 steps/mm, standstill, reads 8175, writes 21 timeouts 0, SG min/max 0/0, steps req 0 done 0 Driver 2: position 0, 80.0 steps/mm, standstill, reads 8186, writes 11 timeouts 0, SG min/max 0/0, steps req 0 done 0 Moves scheduled 0, completed 0, in progress 0, hiccups 0, step errors 0, maxPrep 0, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0 Peak sync jitter -2/10, peak Rx sync delay 177, resyncs 0/0, no step interrupt scheduled VIN: 24.2V, V12: 12.2V MCU temperature: min 33.1C, current 36.4C, max 36.6C Ticks since heat task active 131, ADC conversions started 375650, completed 375649, timed out 0, errs 0 Last sensors broadcast 0x00000008 found 1 136 ticks ago, loop time 0 CAN messages queued 4317, send timeouts 0, received 3345, lost 0, free buffers 37, min 37, error reg 110000 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 0
-
Did M98 P"config.g" report any errors?
-
@Phaedrux, No, it does not report any errors, there are only the warnings of the overheating of the extruders
-
M350 X16 Y16 Z16 W16 U16 V16 E32:32 I1 ; configure microstepping with interpolation M906 X{2800 * 0.5} Y{2800 * 0.5} Z{2800 * 0.5} W{2800 * 0.5} ; set motor currents (mA) and motor idle factor in per cent M906 U1800 V1500 ; set motor currents (mA) and motor idle factor in per cent M906 E{700 * 0.8}:{700 * 0.8} I60 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M92 X{200 / (20 * 2) * 16} Y{200 / (20 * 2) * 16} ; set steps per mm
Can you send M92, M350, M906 by themselves in the console and see if they report the expected evaluated values?
-
Can you also send M584 and see what it reports?
M584 X0.0 Y0.1 Z0.2:0.3 U1.0 V1.1 W0.3 E0.4:0.5 P3
I notice you're trying to use driver 0.3 twice for Z and W. -
@phaedrux ,everything is correct
m584 Driver assignments: X0.0 Y0.1 Z0.2:0.3 U1.0 V1.1 W0.3 E0.4:0.5, 3 axes visible m92 Steps/mm: X: 80.000, Y: 80.000, Z: 802.005, U: 37.670, V: 5245.900, W: 802.005, E: 813.000:813.000 m350 Microstepping - X:16(on), Y:16(on), Z:16(on), U:16(on), V:16(on), W:16(on), E:32(on):32(on) m906 Motor current (mA) - X:1400, Y:1400, Z:1400, U:1800, V:1500, W:1400, E:560:560, idle factor 60%
-
@phaedrux , Z axis has 2 motors, it has been like this for about a year and has never given any problems. I know of no alternatives to configuration
-
@marco-bona add G4 S5 in your config.g before any reference to the expansion board is made (so before M569)
-
@jay_s_uk, with delay before M569 I do not get anything different, same problem
-
@marco-bona said in Homing sensors not working correctly with RRF3.3.0 stable:
it goes in the opposite direction for 5mm and stops, instead it should move slowly until the limit switch is activated.
@marco-bona said in Homing sensors not working correctly with RRF3.3.0 stable:
G1 H1 U-150 F2000 ; move U until the endstop is triggered G4 P100 ; delay 0.1 sec G1 U5 F1000 ; move U back 5mm G1 H1 U-15 F500 ; move U slowly towards the switch until it triggers
that makes it sound like the endstop is triggered when it is not. What is the status of the endstop in M119 both when the switch is depressed and not depressed?
-
@phaedrux, The states of limit switches are correct, strange thing is that code runs correctly up to G1 H1 U-15 F500, then continues with the code as if the limit switch is active. I have another limit switch on the expansion card that has same problem. On DWC initial screen, axis states are reset after performing the reset. This behavior only affects sensors on expansion board
-
Just to verify, can you go back to the last 3.3 RC you tried to see if the behaviour is resolved?
-
@phaedrux, I can try, but I need a procedure having SBC connected, otherwise it is enough to replace files in system folder? Until before update it worked fine
-
This tool may be the easiest way to switch back to a specific version.
https://github.com/DanalEstes/DuetVersions
DuetRegress.
Though it likely hasn't been tested with 3.3 etc as Danal is unfortunately no longer with us.
-
@phaedrux, sorry but procedure is not very clear, I may have some commands to insert in the SBC otherwise I cannot give you feedback.
-
@phaedrux it still works. I use it to generate the scripts used by the LPC/STM port
-
@marco-bona said in Homing sensors not working correctly with RRF3.3.0 stable:
@phaedrux, sorry but procedure is not very clear, I may have some commands to insert in the SBC otherwise I cannot give you feedback.
To install it, you run this on your Pi console
git clone https://github.com/DanalEstes/DuetVersions
Then follow these instructions to install a older version
https://github.com/DanalEstes/DuetVersions#run-duetregressshEx:
./DuetRegress.sh 3.2.2
-
@phaedrux, i tried but i was unsuccessful. Yesterday I forgot to tell you that with the latest update I also reinstalled latest version of DuetPi but I don't think it is related to problem.
If I remember correctly I had a similar problem with RRF3.3 RC3 + 7, but then I had not deepened as stable version was released. With RRF3.3RC3 + 6 I'm sure everything was correct