Mixing hotend only driving first extruder
-
Hi, I am currently working on a printer with a mixing hotend (two extruders, one nozzle). To make this printer work, I need both extruders running at once. I have followed the documentation Duet provides as well as some other resources I have found, but one error remains consistent. When I define the extruders as "E0.3:0.4" with 0.3 and 0.4 being my respective extruders, only the first one is moved (If 0.3 is first, 0.3 moves, if 0.4 is first, 0.4 moves). They are configured to the same tool. I have tried linking these two motors to the A-axis and driving them as such synchronously, this works without issue. I have also tried re-numbering them to 0 and 1 in case the decimal was the issue, but this is not either. The mixing ratio is set to 1:1. When I try to call "G1 E10:10", I get an error saying that the maximum length of array expected was 1, making me believe there is some error. Does anyone have any knowledge on this?
-
Please share your full config.g as well as the results of sending M98 P"config.g" and M122 in the gcode console.
-
@Phaedrux said in Mixing hotend only driving first extruder:
M122
=== Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.4.4+1 (2022-11-15 17:36:33) running on Duet 3 MB6HC v1.02 or later (standalone mode) Board ID: 08DJM-9P63L-DJ3T0-6J1DL-3SD6L-KS0M9 Used output buffers: 1 of 40 (15 max) === RTOS === Static ram: 152740 Dynamic ram: 98148 of which 144 recycled Never used RAM 99640, free system stack 218 words Tasks: NETWORK(ready,29.8%,238) ETHERNET(notifyWait,0.1%,453) HEAT(notifyWait,0.0%,328) Move(notifyWait,0.0%,351) CanReceiv(notifyWait,0.0%,944) CanSender(notifyWait,0.0%,336) CanClock(delaying,0.0%,343) TMC(notifyWait,6.8%,91) MAIN(running,62.6%,925) IDLE(ready,0.7%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:00:14 ago, cause: software Last software reset at 2024-10-21 12:32, reason: User, GCodes spinning, available RAM 99640, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Step timer max interval 125 MCU temperature: min 44.5, current 44.7, max 45.1 Supply voltage: min 36.4, current 36.4, max 36.5, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.2, under voltage events: 0 Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min 0, mspos 8, reads 17579, writes 15 timeouts 0 Driver 1: standstill, SG min 0, mspos 8, reads 17579, writes 15 timeouts 0 Driver 2: standstill, SG min 0, mspos 8, reads 17579, writes 15 timeouts 0 Driver 3: standstill, SG min 0, mspos 8, reads 17579, writes 15 timeouts 0 Driver 4: standstill, SG min 0, mspos 8, reads 17579, writes 15 timeouts 0 Driver 5: standstill, SG min 0, mspos 8, reads 17580, writes 15 timeouts 0 Date/time: 2024-10-21 12:33:00 Slowest loop: 1.09ms; fastest: 0.06ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 0.9ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 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, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 1 is on, I-accum = 0.0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle 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 133, received 0, lost 0, boc 0 Longest wait 0ms for reply type 0, peak Tx sync delay 0, free buffers 50 (min 50), ts 75/0/0 Tx timeouts 0,0,74,0,0,57 last cancelled message type 30 dest 127 === Network === Slowest loop: 2.55ms; fastest: 0.03ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0) HTTP sessions: 1 of 8 = Ethernet = State: active Error counts: 0 0 0 1 0 0 Socket states: 5 2 2 2 2 0 0 0 = WiFi = Network state is disabled WiFi module is disabled Failed messages: pending 2779096485, notready 2779096485, noresp 2779096485 Socket states: 0 0 0 0 0 0 0 0 === Multicast handler === Responder is inactive, messages received 0, responses 0
config.g:
; Configuration file for RepRapFirmware on Duet 3 Main Board 6HC ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.5.4 on Fri Oct 11 2024 04:13:11 GMT+0000 (Greenwich Mean Time) ; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"name" ; set hostname ; Network M552 P192.168.0.66 S1 ; configure Ethernet adapter M553 P255.255.255.0 ; set netmask M554 P192.168.0.67 ; set gateway M586 P0 S1 ; configure HTTP ; Smart Drivers M569 P0.0 S0 D2 ; driver 0.0 goes forwards (Z axis) M569 P0.1 S1 D2 ; driver 0.1 goes forwards (A axis) M569 P0.2 S1 D2 ; driver 0.2 goes forwards (X axis) M569 P0.3 S1 D2 ; driver 0.3 goes forwards (extruder 0) M569 P0.4 S1 D2 ; driver 0.4 goes forwards (extruder 1) M569 P0.5 S1 D2 ; driver 0.5 goes forwards (Y axis) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes (Note: Y axis not functional) M584 X0.2 Y0.5 Z0.0 A0.1 E0.3:0.4 ; set axis mapping M350 X16 Y16 Z16 A16 I1 E16:16 I1 ; configure microstepping with interpolation M906 X1500 Y0 Z1500 A1500 E1000 ; set motor driver currents M92 X400 Y800 Z400 A800 E492.15:420 ; configure steps per mm M208 X0:200 Y0:200 Z0:200 A-360:720 ; set minimum and maximum axis limits M566 X900 Y900 Z12 A900 E1200:1200 ; set maximum instantaneous speed changes (mm/min) M203 X6000 Y6000 Z180 A20000 E3600:3600 ; set maximum speeds (mm/min) M201 X500 Y500 Z200 A1000 E250:250 ; set accelerations (mm/s^2) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Probes M558 K0 P1 C"io3.in" H5 F120 T6000 ; configure analog probe via slot #0 G31 P500 X0 Y0 Z0.7 ; set Z probe trigger value, offset and trigger height ; Endstops ;M574 X0 ; configure X axis endstop ;M574 Y0 ; configure Y axis endstop ;M574 Z0 ; configure Z axis endstop ;M574 A0 ; configure A axis endstop ; Sensors M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4725 C7.06e-8 ; configure sensor #0 M308 S1 P"temp1" Y"PT1000" A"Nozzle Thermistor 1" ; configure sensor #1 M308 S2 P"temp2" Y"PT1000" A"Nozzle Thermistor 2" ; configure sensor #2 ;M308 S1 P"temp1" Y"thermistor" A"Nozzle Thermistor 1" T100000 B4725 C7.06e-8 ; configure sensor #1 ;M308 S2 P"temp2" Y"thermistor" A"Nozzle Thermistor 2" T100000 B4725 C7.06e-8 ; configure sensor #2 ; Heaters M950 H0 C"out0" T0 ; create heater #0 M143 H0 P0 T0 C0 S140 A0 ; configure heater monitor #0 for heater #0 M307 H0 R2.43 D5.5 E1.35 K0.56 B1 ; configure model of heater #0 M950 H1 C"out1" T1 ; create heater #1 M143 H1 P0 T1 C0 S285 A0 ; configure heater monitor #0 for heater #1 M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1 M950 H2 C"out2" T1 ; create heater #2 M143 H2 P0 T1 C0 S285 A0 ; configure heater monitor #0 for heater #2 M307 H2 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #2 ; Heated beds M140 P0 H0 ; configure heated bed #0 ; Fans M950 F0 C"out6" ; create fan #0 M106 P0 S0 L0 X1 B0.1 ; configure fan #0 ; Tools ;T0__________________________________________________________ ;M563 P0 S"E0 Filament 1" D0.3 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 ;T1__________________________________________________________ ;M563 P1 S"E1 Filament 2" D0.4 H2 F1 ; Define tool 1 ;G10 P1 X0 Y0 Z0 ; Set tool 1 axis offsets ;G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C ;T2__________________________________________________________ M563 P2 S"E2 Both" D0.3:0.4 H1 ; Define tool 2 M567 P2 E1.00:1.00 ; 100% Mix Ratio for both tools G10 P2 X0 Y0 Z0 ; Set tool 2 axis offsets G10 P2 R0 S0 ; Set initial tool 2 active and standby temperatures to 0C ;M563 P0 D0 H1 F0 ; create tool #0 ;M563 P2 D0.3:0.4 H1 F0 ;create tool #2 M568 P2 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ; Miscellaneous T2 ; select first tool M302 P1 ;allow cold extrusion, DISABLE for printing
M302 is used just for my testing purposes, I will be disabling it for real printing usage. M98"config.g" crashes my machine, I am not sure why.
-
@NeelG said in Mixing hotend only driving first extruder:
Duet 3 MB6HC version 3.4.4+1 (
Please update to firmware 3.5.3.
@NeelG said in Mixing hotend only driving first extruder:
M98"config.g" crashes my machine
What exactly happens?
-
@Phaedrux I have updated the firmware to the latest version (3.5.3). For M98, the DWC interface disconnects and the printer does not reconnect after a while. What should I do next?
Update: Seems to be working after a restart. Output is:M98 P"config.g"
HTTP is enabled on port 80
Warning: Heater 0 predicted maximum temperature at full power is 321°C
Error: bad drive number
Error: in file macro line 93: M567: Invalid tool number
Error: in file macro line 94: G10: Invalid tool number
Error: in file macro line 95: G10: Invalid tool number
Error: in file macro line 100: M568: Invalid tool numberAll of these refer to an instance where I have specified the extruders in some form of 3:4, but per my understanding this should be a valid syntax? I used this syntax for axises and it worked without issue, and I have seen others do this.
-
@NeelG said in Mixing hotend only driving first extruder:
M98 P"config.g"
HTTP is enabled on port 80
Warning: Heater 0 predicted maximum temperature at full power is 321°C
Error: bad drive number
Error: in file macro line 93: M567: Invalid tool number
Error: in file macro line 94: G10: Invalid tool number
Error: in file macro line 95: G10: Invalid tool number
Error: in file macro line 100: M568: Invalid tool numberThis is exactly what I was looking for. M98 P"config.g" is running you config.g file as it would during startup, but some error messages can be missed during startup. so we're able to see them here.
As I suspected your tool definitions are a bit weird.
Tools start at 0 and count up, but you have tool 0 commented out.
@NeelG said in Mixing hotend only driving first extruder:
D0.3:0.4
This is incorrect way to map the extruder driver. In the tool definition you do not use the driver number, you use the extruder number, starting at 0 and counting up. So driver 0.3 would be extruder 0, etc.
Take a closer look at a config file generated by the config.g tool to see a valid config, then review the documentation for the gcodes referenced in your error messages.
-
@NeelG said in Mixing hotend only driving first extruder:
All of these refer to an instance where I have specified the extruders in some form of 3:4, but per my understanding this should be a valid syntax? I used this syntax for axises and it worked without issue, and I have seen others do this.
You define extruders with M584. Yours is:
M584 ... E0.3:0.4
The first E drive is D0, the second is D1. So the M563 tool should be:
M563 P2 S"E2 Both" D0:1 H1
Ian
-
@droftarts @Phaedrux thank you both so much. It is working properly now.
-
Not sure why, but it is not working anymore. I cannot control the extruders at all. Didn't change the config as far as I know of.
Config.g:; General G90 ; absolute coordinates M83 ; relative extruder moves M550 P"printername" ; set hostname ; Network M552 Pxxx.xxx.x.xxS1 ; configure Ethernet adapter (IP hidden, there is a real address in it) M553 P255.255.255.0 ; set netmask M554 Pxxx.xxx.x.xx ; set gateway M586 P0 S1 ; configure HTTP ; Smart Drivers M569 P0 S0 D2 ; driver 0.0 goes forwards (Z axis) M569 P1 S1 D2 ; driver 0.1 goes forwards (A axis) M569 P2 S1 D2 ; driver 0.2 goes forwards (X axis) M569 P3 S1 D2 ; driver 0.3 goes forwards (extruder 0) M569 P4 S1 D2 ; driver 0.4 goes forwards (extruder 1) M569 P5 S1 D2 ; driver 0.5 goes forwards (Y axis) ; Motor Idle Current Reduction M906 I30 ; set motor current idle factor M84 S30 ; set motor current idle timeout ; Axes (Note: Y axis not functional) M584 X2 Y4 Z0 A1 ; set axis mapping M350 X16 Y16 Z16 A16 I1 ;E16:16 I1 ; configure microstepping with interpolation M906 X1500 Y0 Z1500 A1500 ;E1000:1000 ; set motor driver currents M92 X400 Y800 Z400 A800 ;E492.15:420 ; configure steps per mm M208 X0:200 Y0:200 Z0:200 A-360:720 ; set minimum and maximum axis limits M566 X900 Y900 Z12 A900 ;E1200:1200 ; set maximum instantaneous speed changes (mm/min) M203 X6000 Y6000 Z180 A20000 ;E3600:3600 ; set maximum speeds (mm/min) M201 X500 Y500 Z200 A1000 ;E250:250 ; set accelerations (mm/s^2) ; Extruders M584 E3:5 ; set extruder mapping ;M350 E16:16 I1 ; configure microstepping with interpolation ; NOTE: See Smart Drivers section for motor currents M92 E1000:1000 ; configure steps per mm 492.15:420 M566 E1200:1200 ; set maximum instantaneous speed changes (mm/min) M203 E3600:3600 ; set maximum speeds (mm/min) M201 E250:250 ; set accelerations (mm/s^2) ; Kinematics M669 K0 ; configure Cartesian kinematics ; Probes M558 K0 P1 C"io3.in" H5 F120 T6000 ; configure analog probe via slot #0 G31 P500 X0 Y0 Z0.7 ; set Z probe trigger value, offset and trigger height ; Endstops ;M574 X0 ; configure X axis endstop ;M574 Y0 ; configure Y axis endstop ;M574 Z0 ; configure Z axis endstop ;M574 A0 ; configure A axis endstop ; Sensors M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4725 C7.06e-8 ; configure sensor #0 M308 S1 P"temp1" Y"PT1000" A"Nozzle Thermistor 1" ; configure sensor #1 M308 S2 P"temp2" Y"PT1000" A"Nozzle Thermistor 2" ; configure sensor #2 ;M308 S1 P"temp1" Y"thermistor" A"Nozzle Thermistor 1" T100000 B4725 C7.06e-8 ; configure sensor #1 ;M308 S2 P"temp2" Y"thermistor" A"Nozzle Thermistor 2" T100000 B4725 C7.06e-8 ; configure sensor #2 ; Heaters M950 H0 C"out0" T0 ; create heater #0 M143 H0 P0 T0 C0 S140 A0 ; configure heater monitor #0 for heater #0 M307 H0 R2.43 D5.5 E1.35 K0.56 B1 ; configure model of heater #0 M950 H1 C"out1" T1 ; create heater #1 M143 H1 P0 T1 C0 S285 A0 ; configure heater monitor #0 for heater #1 M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1 M950 H2 C"out2" T1 ; create heater #2 M143 H2 P0 T1 C0 S285 A0 ; configure heater monitor #0 for heater #2 M307 H2 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #2 ; Heated beds M140 P0 H0 ; configure heated bed #0 ; Fans M950 F0 C"out6" ; create fan #0 M106 P0 S0 L0 X1 B0.1 ; configure fan #0 ; Tools ;T0__________________________________________________________ M563 P0 S"E0 Filament" 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 ;T1__________________________________________________________ M563 P1 S"E1 CF" D1 H2 F1 ; Define tool 1 G10 P1 X0 Y0 Z0 ; Set tool 1 axis offsets G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C ;T2__________________________________________________________ M563 P2 S"E2 Both" D0:1 H1:2 F0:1 ; Define tool 2 M567 P2 E1.00:1.00 ; 100% Mix Ratio for both tools G10 P2 X0 Y0 Z0 ; Set tool 2 axis offsets G10 P2 R0 S0 ; Set initial tool 2 active and standby temperatures to 0C ;M563 P0 D0 H1 F0 ; create tool #0 M568 P2 R0 S0 ; set initial tool #0 active and standby temperatures to 0C ; Miscellaneous T2 ; select first tool
M98"config.g" reports no errors, the only output is 'HTTP is enabled on port 80'.
M112 reports the firmware is 3.5.3, which still is the latest release candidate. Switching the motors into the drivers for one of the motion axis reveals that the hardware is working fine. The interface seems to think it has two functional extruders, I see all the controls, but hitting extrude or using a command (ie G1 E100 or G1 E200:100) does nothing at all. I see no motor movement. Does anyone know why this might be happening? -
@NeelG you don’t appear to have M350 (commented out) or M906 (absent) set for your extruder drives. Are you sending
M302 P1
to enable cold extrudes? Or are you heating up the two heaters (H1 and H2) before extrusion? Otherwise the ‘extrude’ and ‘retract’ buttons will be greyed out. Also check and/or set the mixing ratio with M567 (see https://docs.duet3d.com/User_manual/Reference/Gcodes#m567-set-tool-mix-ratios). NoteThe default is for the first driver to be set to 1, and all others to be set to 0. (ie for 2 drivers the default is E1:0)
Ie only the first extruder will extrude by default with a G1 Ennn move. Though G1 Ennn:nnn should override this.
Maybe post a screen shot of the DWC Dashboard, showing extruder drive control.
Ian
-
@droftarts I am using an M302 P1 command, the buttons are not greyed out. I can press them and Duet accepts this, the DWC dashboard even shows the extruders moving, but the hardware does not move at all. I know it is not a hardware problem because I tested defining those extruder motors as axises and that allows them to move fine. I am testing with G1 Ennn:nnn already.
-
@NeelG What does it respond with if you send M906 without parameters? I suspect it will be
M906 Motor current (mA) - X:1500, Y:0, Z:1500, A:1500, E:0:0, idle factor 30%
Note E0:0, because you haven't set M906 for the extruders, like I said in my previous post.
Ian
-
@droftarts Thank you, setting M906 fixed the issue. It is working now. I wonder how it was working the first time without this, maybe I accidentally checked out an older version of the code
Thank you again for the help -
@NeelG I think you just missed M906 when you separated the extruder settings from the other axis settings. They are commented out here:
M906 X1500 Y0 Z1500 A1500 ;E1000:1000 ; set motor driver currents
Ian
-
-