Bug: Unable to home U axis on 3HC
-
Hi!
Running Duet3 6HC +3HC and want to home the U axes. Both stepper and endstop are connected to 3HC.
Endstop consists of 2 microswitches connected in series.
It reads as triggered in the webinterface when pushed.Using 3.01-RC11 on 6HC and 3HC, DSF Version: 2.1.3 and connected to RPI.
The U axis shows up in the web interface and the stepper moves but does not stop on triggering the endstop.
The U axis is for locking/unlocking tools.Update:
Moving the stepper and edstop to main board fixed it.
Stepper from 1.1 to 0.2 and endstop from 1.3 to 0.2 fixed the problem.Here is the config.g
; Configuration file for Duet 3 (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Tue Mar 17 2020 22:56:04 GMT+0100 (centraleuropeisk normaltid) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"qTC" ; set printer name ; General Preferences M111 S0 ; Debug off M929 P"eventlog.txt" S1 ; start logging to file eventlog.txt ;M555 P2 ; Set Marlin-style output G21 ; Set dimensions to millimetres G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves M669 K1 ; select CoreXY mode ; Drives M569 P1.0 S1 F4 ; physical drive 1.0 goes forwards X M569 P1.2 S0 F4 ; physical drive 1.2 goes forwards Y M569 P1.1 S1 ; physical drive 1.2 goes forwards Toolchanger Actuator M569 P0.0 S1 ; physical drive 0.0 goes forwards Z M569 P0.1 S1 ; physical drive 0.1 goes forwards Z M569 P0.2 S1 ; physical drive 0.2 goes forwards Z M569 P0.3 S1 ; physical drive 0.3 goes forwards E M569 P0.4 S1 ; physical drive 0.4 goes forwards E M569 P0.5 S1 ; physical drive 0.5 goes forwards E M584 X1.0 Y1.2 Z0.0:0.1:0.2 E0.3:0.4:0.5 U1.1 ; set drive mapping M350 X8 Y8 Z16 E16 U4 I1 ; configure microstepping with interpolation ; Motor currents M906 X1300 Y1300 Z800 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M906 U900 I60 ; StepperOnline Toolchanger Elastic Lock Motor current and idle motor percentage ; Steps per mm M92 X160.00 Y160.00 Z4000.00 E420.00 S16 ; set steps per mm as defined for 16 microsteps M92 U11.515 ; Stepper-Online Toolchanger Elastic Lock Motor Steps/deg for U from (200 * 4 * 5.18181)/360 ; Motor speeds M203 X24000.00 Y24000.00 Z360.00 E3600.00 U9000 ; set maximum speeds (mm/min) M566 X900.00 Y900.00 Z12.00 E600 U50 ; set maximum instantaneous speed changes (mm/min) M201 X1000.00 Y1000.00 Z20.00 E2000.00 U800 ; set accelerations (mm/s^2) ; Kinematic bed ball locations. ; Locations are extracted from CAD model assuming lower left build plate corner is (0, 0) on a 305x305mm plate. ; M671 X297:2.5:150 Y313.5:313.5:-16.5 S10 ; Front Left: (297.5, 313.5) | Front Right: (2.5, 313.5) | Back: (150, -16.5) ; Axis Limits M208 X0 Y0 Z0 U0 S1 ; set axis minima M208 X600 Y500 Z200 U360 S0 ; set axis maxima ; Endstops M574 X1 S1 P"!1.io0.in" ; Endstop for X is on io0 on expansion 1 uses a reprap microswitch M574 Y1 S1 P"^1.io1.in" ; Endstop for Y is on io1 on expansion 1 uses a microswitch M574 Z0 ;M574 Z2 S1 P"^1.io2.in" ; Z uses a microswitch as the others M574 U1 S1 P"^1.io3.in" ; U uses two microswitches in series ; Z probing settings ;M557 X15:215 Y15:195 S20 ; define mesh grid ;M558 P8 C"^1.io2.in" H5 A1 T10000 S0.02 ; P8 --> probe type: Unfiltered switch ; C"^1.io2.in" --> endstop ; H5 --> dive height ; A1 --> max number of times to probe ; T100000 --> travel speed between probe points ; S0.02 --> tolerance when probing multiple times ; Emergency Button M950 J1 C"0.io0.in" ; Use the input pin on io0 on the main board M581 P1 T0 S0 ; Use above to trigger Emergency Reset. PowerCycle afterwards. ; Heaters M308 S0 P"1.temp0" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin 1.temp0 M950 H0 C"1.out0" T0 ; create bed heater output on 1.out0 and map it to sensor 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M308 S1 P"temp0" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin temp0 M950 H1 C"out0" T1 ; create nozzle heater output on out0 and map it to sensor 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"out3" Q500 ; create fan 0 on pin out3 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out4" Q500 ; create fan 1 on pin out4 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 ; Tool definitions M563 P0 S"Extruder 0" D0 H1 F0 ; Define tool 0 G10 P0 X-4.5 Y44.02 Z-2.25 ; Set tool 0 offset from the bed G10 P0 S190 R170 ; Set tool 0 operating and standby temperatures(-273 = "off") M572 D0 S0.1 ; Set pressure advance on Extruder Drive 0 M563 P1 S"Extruder 1" D1 H2 F2 ; Define tool 1 G10 P1 X-4.15 Y44.62 Z-2.45 ; Set tool 1 offset from the bed with tool-0 as a reference. G10 P1 S190 R170 ; Set tool 1 operating and standby temperatures(-273 = "off") M572 D1 S0.1 ; Set pressure advance on Extruder Drive 1 M563 P2 S"Extruder 2" D1 H2 F2 ; Define tool 1 G10 P1 X-4.15 Y44.62 Z-2.45 ; Set tool 1 offset from the bed with tool-0 as a reference. G10 P1 S190 R170 ; Set tool 1 operating and standby temperatures(-273 = "off") M572 D1 S0.1 ; Set pressure advance on Extruder Drive 1 ; Custom settings are not defined ; Miscellaneous M501 ; load saved parameters from non-volatile memory
And the homeu.g
; Home U Axis G91 ; relative positioning G1 H1 U-360 F100 ; move quickly to X or Y endstop and stop there (first pass) 9000 G1 U5 F600 ; go back a few mm G1 H1 U-10 F600 ; move slowly to X axis endstop once more (second pass) G90 ; absolute positioning
-
@TypQxQ I'm not exactly sure how you have your U axis or what it's intended use is but a few things leap out at me.
M667 is deprecated and you should use M669. Instead of M667 S1 you would normally use M669 K1 for CoreXY but if this is a true CoreXYU then you need to use M669 K5 to define the kinematics. https://duet3d.dozuki.com/Wiki/Gcode#Section_M669_Set_kinematics_type_and_kinematics_parameters
Not sure on this next bit but I think the default is to only show 3 axes. If so then you will need to use M584 P4 to make the U axis visible for homing.
-
Thanx Deckingman but that did not solve it. I changed to M669 K1.
The U axis shows up in the web interface and the stepper moves but does not stop on triggering the endstop.
The U axis is for locking/unlocking tools.I'll change original post to reflect this.
-
@TypQxQ Hmmm. That's odd. I could think of a few possibilities if the end stop didn't show triggered when you manually press it, but you say that part works OK. Your home U doesn't look fundamentally any different to mine (but mine is custom kinematics - CoreXYUVAB). Just out of interest, try adding M584 P4 to the start of your homeU even though the axis is visible. It's one of the few differences I can see between my working home U and your non-working one.
-
@deckingman That did not change anything.
-
Have narrowed it down to the homeu.g file.
Having it only read:G1 H1 U-360 F100
I now get an error when homing. Status flashes busy, then idle. Stepper continues to rotate untill I press the "Emergency Stop".
G28 U Error: Homing failed
Ruining the same command in the console works fine and homes the axis without problem.
-
Definitly a bug.
Changing name from U to A did not help.
Moving the stepper and edstop to main board fixed it.
Stepper from 1.1 to 0.2 and endstop from 1.3 to 0.2 fixed the problem. -
@TypQxQ It definitely looks like you might have a found a bug. I don't see anything that would explain your problem in the list of known limitations https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations
For info, my XY and Z motors are all on expansion board 3. UVA and B motors are all on the main board. Extruders are all on expansion boards 1 and 2 (3 on each board). End stops are scattered around various boards - the U axis end stop is on expansion board 1.
So from that it would seem that the main X, Y and Z axes can be on expansion boards but not additional axes (excluding extruders). But there is a caveat to that in that I use custom kinematics like so
M584 X3.2:0.0:0.2 Y3.1:0.1:0.3 Z3.0 U0.0 V0.1 A0.2 B0.3 E1.0:1.1:1.2:2.0:2.1:2.2 P7; XYZ on ex board 3, UVAB on main board, extruders 0 to 2 to ex board 1, extruders 3 to 5 on exp 2
M669 K8 A0:0:0:0:0:1:1 B0:0:0:0:0:1:-1;
It may be that for your U axis to work on an expansion board, you need to do something similar? Or use M669 K5 for CoreXYU? I'm just guessing at this point. Hopefully DC42 or one of the more knowledgeable mods will step in and advise soon.
-
It's a documented limitation of current Duet 3 firmware that an endstop connected to the main board cannot stop movement of an axis motor connected to an expansion board unless that axis also has a motor connected to the main board. See the Known Limitations section of the release notes, also https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations.
-
@dc42 said in Bug: Unable to home U axis on 3HC:
It's a documented limitation of current Duet 3 firmware that an endstop connected to the main board cannot stop movement of an axis motor connected to an expansion board unless that axis also has a motor connected to the main board. See the Known Limitations section of the release notes, also https://duet3d.dozuki.com/Wiki/Duet_3_firmware_configuration_limitations.
True. But the OP initially had his U axis motor and his U axis end stop on the same expansion board.
EDIT. He fixed the problem by moving both the motor and the end stop to the main board.
Edit 2. From his original config g.
M569 P1.1 S1
M574 U1 S1 P"^1.io3.in"