Additional axis not homing after print finished
-
Hi
I have a delta printer with a Duet 3 Mini in a SBC setup together with a Raspberry Pi. There I have an additional axis for the extruder. Everything is configured correctly and moves as expected, for homing, printing and when moving manually. But when the print job is finished and I want to home the printer again, to bring the head out of the way, the additional axis doesn't move. The three main axis X, Y, Z home all as expected but the additional axis stays still, which is off course problematic as it will just rip off the cables and tubes. Good thing I added an emergency stopWhen i started testing this new setup, I was running Firmware 3.4.4, upgraded later to 3.4.5 and am currently running 3.5.0-beta.3. Same versions for Duet Web Control and DSF. The issue existed from the beginning and nothing changed with any version. I also don't get any error messages or anything. The motor is not hot and moves normally without any issue. And it's not a thing that happens from time to time but every time and only after a job is finished and I want to home the printer.
Here my config:
config.gHere are some pictures of my setup, not the most recent ones but the basic principle is the same:
Any ideas on why this is happening? Does anybody else experience this issue?
Many thanks,
Sevi -
@Sevimuelli What are you actually doing to "home the printer again, to bring the head out of the way", is this via one of the home buttons in dwc, a macro, some command line code? I think we would also need to see the various homing files (homeall.g, plus any others that it may call). It would also probably help if you posted a minimal print gcode file so that we can see the start/end gcode being used.
-
@gloomyandy Thank you for your response. I only press the "Home all" button in the Dashboard, as i always do when homing. No automatic homing or anything for now. This always works except after the print is finished. I also think it happens if i cancel the print in between and want to home the printer. I use Simplify3D for slicing if that makes a difference.
My homedelta.g file:
; homedelta.g ; called to home all towers on a delta printer ; ; generated by RepRapFirmware Configuration Tool v3.3.13 on Fri Sep 16 2022 22:17:44 GMT+0200 (Central European Summer Time) G91 ; relative positioning G1 H1 X685 Y685 Z685 U630 F2000 ; move all towers to the high end stopping at the endstops (first pass) G1 H2 X-5 Y-5 Z-5 U-5 F400 ; go down a few mm G1 H1 X10 Y10 Z10 U10 F100 ; move all towers up once more (second pass) G1 Z-5 U-5 F300 ; move down a few mm so that the nozzle can be centred ; ;G1 H1 U500 F200 ; move to the high end stopping at the endstops (first pass) ;G1 H2 U-5 F300 ; go down a few mm ;G1 H1 U10 F100 ; move up once more (second pass) ;G1 H2 U-5 F300 ; move down a few mm ; G90 ; absolute positioning G1 X0 Y0 F2000 ; move X+Y to the centre
Begin of gcode file:
G90 ; Set to absolute positioning M83 ; Set extruder to relative mode M106 S0 P0 ; Turn of fan M140 S50 ; Set bed temperature M190 S50 ; Wait for bed temperature M104 S210 T0 ; Set extruder temp M109 S210 T0 ; Wait for extruder temp ;G28 ; home all axes ; process Process 1 ; layer 1, Z = 0.1600 T0 G1 E-2.0000 F3000 ; feature skirt ; tool H0.1600 W0.504 G1 Z0.5000 F1200 G1 X90.031 Y61.756 F6000 G1 Z0.1600 F1200 G1 E2.0000 F3000 G1 X-90.031 Y61.756 E5.9160 F1200 G1 X-90.741 Y61.716 E0.0234
End of a gcode file:
G1 X94.734 Y55.497 E0.0197 G1 X94.703 Y55.692 E0.0077 G1 X94.703 Y-55.492 E4.3488 G1 X94.703 Y-55.692 F1782 G1 E-2.0000 F3000 ; layer end M104 S0 ; turn off extruder M140 S0 ; turn off bed ;M84 ; disable motors G91; Set to Relative Positioning G1 Z20; Move Head 20mm up ; Build Summary ; Build Time: 6 hours 48 minutes ; Material Length: 39990.7 mm (39.99 m) ; Material Volume: 96189.0 mm^3 (96.19 cc) ; Material Weight: 120.24 g (0.27 lb) ; Material Cost: 5.53
I don't think i have anything else special about homing in my printer. When this error occurs, I push the emergency stop, which powers off the 24V part and also resets the board via a trigger configured as emergency stop. After that everything works again.
-
@Sevimuelli I'm not really familiar with a delta, but it looks like your U axis needs to move to keep the extruder in a fixed position relative to the main print head, how do you achieve that? Is U being linked to Z in some way?
-
@gloomyandy Yes, it it linked.
First, you define the drive for the new axis like any other:
; Drives M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.3 S1 ; physical drive 0.3 goes forwards M569 P0.4 S1 ; physical drive 0.4 goes forwards M569 P0.0 S0 ; physical drive 0.0 goes forwards M569 P0.1 S1 ; physical drive 0.1 goes forwards M584 X0.2 Y0.3 Z0.4 E0.1 U0.0 ; set drive mapping M350 X16 Y16 Z16 E16 U16 I1 ; configure microstepping with interpolation M92 X160.00 Y160.00 Z160.00 E391.388 U250.0 ; set steps per mm M566 X500.00 Y500.00 Z500.00 E600.00 U500 ; set maximum instantaneous speed changes (mm/min) M203 X18500.00 Y18500.00 Z18500.00 E10000 U6000 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z5000.00 E5000.00 U2000 ; set accelerations (mm/s^2) M906 X1800 Y1800 Z1800 E1300 U1900 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout
Then, you have the delta configuration, but instead of only setting the three rod lengths for delta, you also set a fourth value in the "L" parameter, the distance between the extruder output and the filament entry point on the hot end. So roughly the distance between the center of the head and the extruder.
Then you set the X and Y offset of the extruder to the hotend. There isn't a correct value for this but rather a try and error between distance, offset, and homing height of the additional axis, until you found a satisfying solution. Then, the firmware will always keep the distance specified when moving around, all based on the head, No matter how you move the head around, manual, in print, the additional axis will always follow.; Delta config M665 R243.301 L440.45:440.45:440.45:400 B145 H405 ; Set delta radius, diagonal rod length, printable radius and homed height M666 X0 Y0 Z0 U0 ; Put your endstop adjustments here, or let auto calibration find them ;M669 K3 X0 Y-150 ;M669 X0 Y-150 ; Addidtional axis offset M669 X0 Y-50 ; Additional axis offset
Small side question, in the Gcode M669, there are two parameters:
Snnn Segments per second (RRF 3.3 and later)
Tnnn Minimum segment length (mm) (RRF 3.3 and later)
I'm not really sure how they work. I know that normally you don't need to use this. As far as I understand, they specify how fast and accurate the new axis follows, but I haven't found any explanation really. Do you happen to know what they are exactly? -
@Sevimuelli I'm now well beyond my knowledge of deltas at this point so you may want to wait and see if anyone with a better understanding of them comes along. The only odd thing I noticed in the gcode is that in your end code you set relative mode using M91, but you never set it back to absolute mode (which is the mode it is left in after homing from what I can see). I'm not sure if that has anything to do with this issue but it may cause other problems.
This document (https://docs.duet3d.com/User_manual/Machine_configuration/Configuration_linear_delta#adding-additional-towers-to-carry-flying-extruders) mentions that you can hide the extra axis, I'm not sure if that could be related to this problem or not. After a print are you able to jog the U axis using the jog controls in DWC (is U even visible)?
The only other reason I can think of as to why the U motor does not home is that the endstop is already triggered. You might want to check that by issuing M574 in the console before you attempt to home after a print, I think that should report the current status.
As to the segmentation options, they are typically used to allow long moves to be interrupted early (normally you will need to wait for a move to complete), but I'm not sure if they have any special usage for a delta.
Sorry I can't be of any further help, hopefully someone with more delta knowledge than me will be along shortly, good luck!
-
-
-
@gloomyandy Considering the relative mode, in the homedelta.g file, the mode is set to relative mode anyway, so it shouldn't make a difference. But I have to do some more testing on this. I'm actually not home now but will be back next week. I will write my findings here.
I don't think hiding the axis is a solution as this axis are always physically connected to each other and under normal conditions it works fine.
And no, the endstop can not be the problem. The endstop is on the top and the U axis is far down so it is not possible.
Anyway, I appreciate your help very much. Thank you. Hope I can figure this one out somehow.
-
@Sevimuelli As I said I don't think leaving it in relative mode is likely to be the cause of this issue, however, having your printer in a different state after a print to after homing does not seem like a good idea.
I wasn't suggesting that you should hide the axis, I was asking if there is any chance that the axis has become hidden and that might be causing the homing problem.
Again I was suggesting that you check the state of the endstop (just in case there is some firmware, electrical or mechanical problem with it - it may have become stuck) as that would result in the behaviour you are seeing.