CoreXYU second extruder offset and stuttering



  • I am currently testing my new CoreXYU build.
    I got the first carriage (X) working and got pretty nice prints so far.
    Now that I wanted to add the second carriage (U) I got weird problems.
    To first test the second extruder alone I just edited some existing gcode files from T0 to T1 (Cura slicer).

    First Problem:
    I tried all day but I cant figure out how to set up a Z offset. My 2nd extruder nozzle sits 0.4mm higher. I tried to add "G10 P1 Y0 U0 Z0.4" to all sorts of places (config, tfree, tpost, tpre) but it never worked.
    I noticed that the Z value changes only when I type "T1" twice, same when I go back to T0.

    Second Problem:
    The second print head stutters heavily in curved perimeters. Speed, accel and jerk settings are the same for all 4 steppers. The cgode file must be fine also, since I printed the same file with the first extruder without problems...

    I would really appreciate your help, thanks!



  • config.g

    ; General preferences
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates...
    M83 ; ...but relative extruder moves

    M669 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 Ex2

    M350 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


  • administrators

    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


  • administrators

    @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.


Log in to reply