CoreXYU second extruder offset and stuttering
-
config.g
; General preferences
G21 ; Work in millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder movesM669 K5 ; Select CoreXYU mode
; Network
M550 P"My Printer" ; Set machine name
M552 S1 ; Enable network
;*** Access point is configured manually via M587
M586 P0 S1 ; Enable HTTP
M586 P1 S0 ; Disable FTP
M586 P2 S0 ; Disable Telnet; Axis, endstop and motor configuration
M584 X0 Y1 Z2 U3 V4 E5:6 ; Set up steppers for x, y, u, v, z and e
M574 X2 Y1 Z1 U1 S1 ; set endstop configuration. X endstop at max, Y and U and Z at min, all NO active low (S0); Core xyu + axis limits
M669 K5 ; Select CoreXYU mode
M208 X0 Y0 U-89 V0 Z-0.5 S1 ; Set axis minima
M208 X389 Y300 U300 V389 Z300 S0 ; Set axis maxima; Drives
M569 P0 S0 ; Physical drive 0 goes forwards X
M569 P1 S1 ; Physical drive 1 goes forwards Y
M569 P2 S0 ; Physical drive 2 goes forwards Z
M569 P3 S1 ; Physical drive 3 goes forwards E1 aka U
M569 P4 S0 ; Physical drive 4 goes forwards E2 aka V
M569 P5 S1 ; Physical drive 5 goes forwards E3 aka Ex1
M569 P6 S1 ; Physical drive 6 goes forwards E4 aka Ex2M350 X16 Y16 U16 V16 Z16 E16:16 I1 ; Configure microstepping with interpolation
M92 X66.67 Y66.67 U66.67 V66.67 Z1600 E678:678 ; Set steps per mm
M566 X20 Y20 U20 V20 Z15 E120:120 ; Set maximum instantaneous speed changes (mm/min)
M203 X12000 Y12000 U12000 V12000 Z350 E2100:2100 ; Set maximum speeds (mm/min)
M201 X3000 Y3000 U3000 V3000 Z75 E250:250 ; Set accelerations (mm/s^2)
M906 X2200 Y2200 U2200 V2200 Z2200 E650:650 I30 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Z-Probe
M558 P0 H5 F120 T6000 ; Disable Z probe but set dive height, probe speed and travel speed
M557 X15:290 Y15:290 S25 ; Define mesh grid; Heaters
; Chamber
M141 H3 ; Assign chamber heater to heater 3
M305 P3 T100000 B4138 R4700 ; Set thermistor + ADC parameters for heater 3
M143 H3 S180 ; Set temperature limit for heater 3 to 180C
; Bed
M307 H0 B0 S1.00 ; Disable bang-bang mode for the bed heater and set PWM limit
M305 P0 T100000 B4138 R4700 ; Set bed thermistor + ADC parameters for heater 0
M143 H0 S200 ; Set bed temperature limit for heater 0 to 200C
; E0
M307 H1 B0 S1.00 ; Disable bang-bang mode for the E0 heater and set PWM limit
M305 P1 X200 ; Configure PT100 for heater 1
M143 H1 S500 ; Set temperature limit for heater 1 to 500C
; E1
M307 H2 B0 S1.00 ; Disable bang-bang mode for the E1 heater and set PWM limit
M305 P2 X201 ; Configure PT100 for heater 2
M143 H2 S500 ; Set temperature limit for heater 2 to 500C; Fans
M106 P0 S0.0 I0 F1000 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
M106 P1 S0 I0 F500 H-1 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned off; Tools
M563 P0 D0 H1 ; 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
M563 P1 D1 H2 X3 ; Define tool 1 and bind it to U-axis (X3)
G10 P1 X0 Y0 Z0 ; Set tool 1 axis offsets
G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C; Automatic power saving
M911 S16 R25 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss; Custom settings are not configured
; Miscellaneous
M501 ; Load saved parameters from non-volatile memory
T0 ; Select first tool -
I finally found the cause for the stuttering:
When controlling jerk by Cura (eg 12mm/s) it adds a "M566 X720 Y720" command.
However for it to work on a the second carriage of a CoreXYU it has to be "M566 X720 Y720 U720 V720".At the same time I noticed that in Cura you set jerk in mm/s while the M566 needs a mm/min value, or so I think. So my jerk setting in config.g was totally wrong all the time...
-
Be sure to set Cura to reprap flavour gcode.
-
Yes, I had it set to reprap flavor, however Cura does not know about any U or V axes of the machine. I add the correct jerk settings for U and V manually when a print starts, but maybe there is a better solution? (but I assume this has to be dealt with on the Cura side...)
Tool offset:
After further testing I noticed that the tool offset does not work, when the print starts with the second extruder (T1). I can see it immediately from the Z offset.
Prints that start with the first extruder (T0) work fine, first layer sticks to bed perfectly and when the second extruder (T1) comes into play next, it also has the correct position.
However when a print starts with the second extruder (T1) the first layer is too high and does not stick to the bed. (Maybe I can work around by babystepping down the Z offset, but thats not a real solution)These are my current tool settings in config:
M563 P0 D0 H1 ; Define tool 0
G10 P0 X0.10 Y0 Z0 ; Set tool 0 axis offsets
M563 P1 D1 H2 X3 ; Define tool 1 and bind it to U-axis (X3)
G10 P1 X0 Y-0.40 Z0.4 ; Set tool 1 axis offsets
In the homing files for first layer height:
G1 S1 Z-310 F100 ; move slowly to Z axis endstop once more (second pass)
G92 Z0.7 ; set Z to axis minimum -
You would normally set the M566 jerk settings in config.g, not in the slicer.
-
@dc42 Yes I set the max jerk in cofig. But I can't get the benefit of slicer jerk control (eg for different materials, detail grades, travel vs drive moves, etc)
I find it curious that XY speed and XY accelleration applies to a UV tool, but XY jerk does not
-
@sharctic said in CoreXYU second extruder offset and stuttering:
But I can't get the benefit of slicer jerk control (eg for different materials, detail grades, travel vs drive moves, etc)
Do you really think there is any benefit in that?
-
@dc42 said in CoreXYU second extruder offset and stuttering:
@sharctic said in CoreXYU second extruder offset and stuttering:
But I can't get the benefit of slicer jerk control (eg for different materials, detail grades, travel vs drive moves, etc)
Do you really think there is any benefit in that?
I have to admit I was writing this as I was having a hard time getting PVA to stick on PLA, especially line ends and corners, thinking that smoother movement might be the key. So being able to go fast with PLA while going buttersmooth with PVA is definitely an application for this kind of thing, or so I think
Now after some testing and tweaking rather than jerk I found low accelleration to be the better solution, which is something I can control via Cura.On the tool offset:
For prints that start with Tool1 I found out that at least the Z height works when I add the Z offset to the homing file. You would think that T0 then bumps into the bed, as it should now sit double the offset lower, but actually both tools are level, the offset flipped?!.....I dont even know what happens to XY offset on those prints. When I get a print that starts with T0 I have to modify the homing file back again. This cant be the right way?
Do you know anything about this offset matter? Or do you at least know that it SHOULD work firmware-wise and that the error is somewhere else? -
@sharctic Just out of curiosity, does Cura add U and V values to the M201 commands? It just seems odd that you can control accelerations for all axes via Cura but not the instantaneous speed threshold (jerk).
-
@deckingman said in CoreXYU second extruder offset and stuttering:
@sharctic Just out of curiosity, does Cura add U and V values to the M201 commands? It just seems odd that you can control accelerations for all axes via Cura but not the instantaneous speed threshold (jerk).
No, it does not use M201 at all, but M204 which works independently from axis names. AFAIK, since T1 (U&V) is mapped to X and Y, the M204 command applies to T1 movement in that moment
Apparently , the M566 command works differently. Cura spits out M566 commands but only for Y and X axis. For Cura jerk control to work on my machine it would have to generate something like M566 X720 Y720 U600 V600 for example. However Cura does not even know what axis I'm using, there is no setting to enter the axis setup. I guess Cura just expects a single carriage with 2 nozzles, like the Ultimaker
-
@sharctic Ahh OK. Make sure you set the values for M201 high enough in your config.g because M204 will still respect those limits.