Trouble setting up a second extruder
-
Hi,
I have a machine set up with an extruder driven from an external driver, using the 1XD board.
I would like to add a second extruder motor to create a mixing extruder. The second extruder motor is currently driven from the Duet 3 board (Driver 0.4).I can't seem to get the second extruder to move (when I define it as an extruder, but when I defined as a regular drive it did move).
I tried creating two tools - T1 is the mixing extruder, T2 is just the new extruder motor for testing.
When I select T1 and send a G1 E command - the external driven extruder turns, but the new extruder doesnt.
I tried selecting T2, but this doens't make the new extruder move either.I'm guessing it has something to do with the configuration of an external drive together with an internal drive?
Config.g :
; Configuration file for Duet 3 MB 6HC ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.3.12 on Fri Aug 05 2022 12:05:46 GMT+0300 (Israel Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"K6" ; set printer name G4 S2 ; wait for expansion boards to start ; Network M552 P192.168.2.3 S1 ; enable network and acquire dynamic address via DHCP M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0.2 S1 ; physical drive 0.2 goes forwards M569 P0.0 S0 ; physical drive 0.0 goes forwards M569 P0.1 S1 M569 P0.3 S0 ; physical drive 0.3 goes forwards M569 P40.0 S0 R0 ; physical drive 0.4 goes forwards M569 P40.0 T20:20:20:20 M569 P0.4 S0 M584 X0.2 Y0.0:0.1 Z0.3 E40.0:0.4 ; Sand extruder M350 X8 Y16 Z8 E1:1 I1 M92 X320.00 Y132.84 Z320.00 E74:200 ; Sand set steps per mm Round 5mm nozzle M566 X30 Y100 Z30 E5:5 ; Sand set maximum instantaneous speed changes (mm/min) M203 X800 Y6000 Z300 E1000:50 ; Sand set maximum speeds (mm/min) M201 X80.00 Y120.00 Z20.00 U1 E80 ; Roller set accelerations (mm/s^2) M201 X80.00 Y120.00 Z20.00 E80:5 ; Sand set accelerations (mm/s^2) M906 X2800 Y4000 Z2500 I30 ; Sand set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout M569.7 P0.3 C"out1" S500 ; Axis Limits M208 X0 Y0 Z0 S1 ; Sand set axis minima M208 X380 Y1000 Z350 S0 ; Sand set axis maxima ; Endstops M574 X2 S1 P"io3.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in M574 Y1 S1 P"io0.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io2.in M574 Z2 S1 P"io4.in" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin io3.in ;M574 U1 S1 P"io5.in" ; Z-Probe M950 S0 C"io7.out" ; M558 P9 C"io7.in" H8 F180 T3000 ; G31 X65 Y0 Z6 P25 M557 X105:280 Y270:550 S75 ; Heaters M308 S0 P"temp0" Y"thermistor" T100000 B4725 C7.06e-8 A"Block" ; M950 H0 C"out7" T0 M307 H0 B0 S1.00 M143 H0 S240 M308 S1 P"temp1" Y"thermistor" T100000 B4725 C7.06e-8 A"PE-Upper"; M950 H1 C"out8" T1 M307 H1 B0 S0.75 M143 H1 S240 ; Flat Nozzle ;M308 S2 P"temp2" Y"thermistor" T100000 B4725 C7.06e-8 A"PE-Lower"; ;M950 H2 C"out9" T2 ;M307 H2 B0 S1.00 ;M143 H2 S240 ;M308 S3 P"temp3" Y"thermistor" T100000 B4725 C7.06e-8 A"Nozzle"; ;M950 H3 C"out6" T3 ;M307 H3 B0 S1.00 ;M143 H3 S240 ;5 MM Round Nozzle M308 S3 P"temp3" Y"thermistor" T100000 B4956 C1.587780e-7 A"Nozzle"; M950 H3 C"out9" T3 M307 H3 B1 S0.5 M143 H3 S240 M570 H0 P3600 T15 M570 H1 P3600 T15 M570 H2 P3600 T15 M570 H3 P3600 T15 ; Fans M950 F0 C"out4" ; create fan 0 on pin out4 and set its frequency M106 P0 S0.3 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"out5" ; create fan 1 on pin out5 and set its frequency M106 P1 S0.3 H-1 ; set fan 1 value. Thermostatic control is turned on ; Tools ;M563 P0 D0 H0:1:2:3 ; 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 D0:1 H0:1:3 ; define tool 0 M567 P1 E1:0.5 G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets G10 P1 R0 S200 ; set initial tool 0 active and standby temperatures to 0C M563 P2 D1 H0:1:3 ; define tool 0 G10 P2 X0 Y0 Z0 ; set tool 0 axis offsets G10 P2 R0 S200 ; set initial tool 0 active and standby temperatures to 0C ;T0 T1 ;M17 ; Custom settings are not defined Thanks a lot!
-
Any ideas? I'm guessing something in the configuration is wrong with the first extruder being driven by an external driver and the second extruder being driven by the on-board driver - but I can't seem to figure it out..
-
@dsela Can you check the firmware versions? Send
M122
to show the mainboard info, andM122 B40
to show the 1XD info. Also check your config.g withM98 P"config.g"
. RRF does support having tools with extruders on more than one board.Ian
-
@droftarts I'm running 3.4.4
When I send a G1 Ex command the main extruder turns, the 2nd does not. DWC shows that both extruders have turnedPlease find below the outputs:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.4.4 (2022-10-20 16:19:01) running on Duet 3 MB6HC v1.01 (standalone mode) Board ID: 08DJM-956BA-NA3TJ-6J9D8-3S86R-1U9QT Used output buffers: 3 of 40 (14 max) === RTOS === Static ram: 152824 Dynamic ram: 98156 of which 0 recycled Never used RAM 99620, free system stack 192 words Tasks: NETWORK(ready,28.1%,210) ETHERNET(notifyWait,0.1%,443) HEAT(notifyWait,0.0%,322) Move(notifyWait,0.0%,256) CanReceiv(notifyWait,0.0%,798) CanSender(notifyWait,0.0%,335) CanClock(delaying,0.0%,352) TMC(notifyWait,8.2%,57) MAIN(running,63.3%,1199) IDLE(ready,0.3%,30), total 100.0% Owned mutexes: === Platform === Last reset 00:00:41 ago, cause: software Last software reset at 2023-02-15 15:33, reason: User, GCodes spinning, available RAM 99440, 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 27.1, current 27.6, max 27.7 Supply voltage: min 26.0, current 26.1, max 26.2, 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 296, reads 32680, writes 14 timeouts 0 Driver 1: standstill, SG min 0, mspos 744, reads 32680, writes 14 timeouts 0 Driver 2: standstill, SG min 0, mspos 16, reads 32680, writes 14 timeouts 0 Driver 3: standstill, SG min 0, mspos 16, reads 32680, writes 14 timeouts 0 Driver 4: standstill, SG min 0, mspos 128, reads 32680, writes 15 timeouts 0 Driver 5: standstill, SG min 0, mspos 8, reads 32684, writes 11 timeouts 0 Date/time: 2023-02-15 15:33:59 Slowest loop: 8.64ms; fastest: 0.05ms === Storage === Free file entries: 10 SD card 0 detected, interface speed: 25.0MBytes/sec SD card longest read time 2.2ms, write time 0.0ms, max retries 0 === Move === DMs created 125, segments created 3, maxWait 18332ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 4, completed 4, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 4], 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 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 Heater 0 is on, I-accum = 0.0 Heater 1 is on, I-accum = 0.3 Heater 2 is on, I-accum = 0.0 Heater 3 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 375, received 335, lost 0, boc 0 Longest wait 1ms for reply type 6018, peak Tx sync delay 200, free buffers 50 (min 48), ts 207/206/0 Tx timeouts 0,0,0,0,0,0 === Network === Slowest loop: 14.92ms; 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 === Multicast handler === Responder is inactive, messages received 0, responses 0
M122 B40 Diagnostics for board 40: Duet EXP1XD firmware version 3.4.4 (2022-10-14 11:45:39) Bootloader ID: SAMC21 bootloader version 2.4 (2021-12-10) All averaging filters OK Never used RAM 5556, free system stack 53 words Tasks: Move(notifyWait,0.0%,127) HEAT(notifyWait,0.1%,115) CanAsync(notifyWait,0.0%,64) CanRecv(notifyWait,0.0%,75) CanClock(notifyWait,0.0%,64) MAIN(running,96.5%,448) IDLE(ready,0.0%,40) AIN(delaying,3.4%,142), total 100.0% Last reset 00:03:03 ago, cause: software Last software reset time unknown, reason: HardFault, available RAM 14244, slot 1 Software reset code 0x0060 ICSR 0x00000003 SP 0x20002b48 Task MAIN Freestk 821 ok Stack: 20003664 000000a5 20003984 2000363c 20003664 00016fc9 00016fe2 01000000 20000eb0 00000054 a5a5a5a5 a5a5a5a5 a5a5a5a5 20003608 00000000 a5a5a5a5 a5a5a5a5 00007b85 00000002 20003664 20003608 a5a5a5a5 a5a5a5a5 a5a5a5a5 a5a5a5a5 0001096b a5a5a5a5 Driver 0: pos 296, 74.0 steps/mm, steps req 296 done 296 Moves scheduled 4, completed 4, in progress 0, hiccups 0, step errors 0, maxPrep 401, maxOverdue 0, maxInc 0, mcErrs 0, gcmErrs 0 Peak sync jitter 0/4, peak Rx sync delay 204, resyncs 0/0, no step interrupt scheduled VIN voltage: min 26.4, current 26.5, max 26.5 MCU temperature: min 11.4C, current 11.7C, max 11.8C Last sensors broadcast 0x00000000 found 0 176 ticks ago, 0 ordering errs, loop time 0 CAN messages queued 1504, send timeouts 0, received 1671, lost 0, free buffers 37, min 37, error reg 0 dup 0, oos 0/0/0/0, bm 0, wbm 0, rxMotionDelay 309, adv 37059/37157
M98 P"config.g" HTTP is enabled on port 80 FTP is disabled TELNET is disabled
-
@dsela Ah, right, the second extruder is connected to the mainboard! Misread your first post. I think this is because you haven't configured all the parameters for the second extruder. These are all the settings that relate to Driver 0.4:
; Drives M569 P0.4 S0 M584 X0.2 Y0.0:0.1 Z0.3 E40.0:0.4 ; Sand extruder M350 X8 Y16 Z8 E1:1 I1 M92 X320.00 Y132.84 Z320.00 E74:200 ; Sand set steps per mm Round 5mm nozzle M566 X30 Y100 Z30 E5:5 ; Sand set maximum instantaneous speed changes (mm/min) M203 X800 Y6000 Z300 E1000:50 ; Sand set maximum speeds (mm/min) M201 X80.00 Y120.00 Z20.00 U1 E80 ; Roller set accelerations (mm/s^2) M201 X80.00 Y120.00 Z20.00 E80:5 ; Sand set accelerations (mm/s^2) M906 X2800 Y4000 Z2500 I30 ; Sand set motor currents (mA) and motor idle factor in per cent
You have two M201 lines. You are also setting acceleration for a U axis which doesn't seem to exist? I think just delete the first M201 line.
Your M906 line doesn't specify the motor current for the extruder axes. You don't need to for the external drivers (so you can set this as anything), but you do need to set it for the internal driver, or it will use the default (though I can't remember what this actually is - send M906 on it's own to check). This may mean you motor is not receiving enough current to move. Add E[ext_driver_current]:E[internal_driver_current] to the M906 line.Ian
-
@droftarts Thanks! It was the M906 motor current (question, if I have two extruders and I only want to set one, what is the correct syntax?)
I now have problems with ethernet connection, it started when I was working on this issue with constant restarting of the board..please see my latest post
https://forum.duet3d.com/topic/31533/duet-3-can-t-connect-over-ethernet-anymore -
@dsela said in Trouble setting up a second extruder:
question, if I have two extruders and I only want to set one, what is the correct syntax?
There's this note on the M584 Gcode dictionary entry:
Every driver that is assigned must have its current set using M906. Not setting a current will default a low current (approx 1/32 of the driver max current), however M906 will report 0 until a current is assigned. Disable the driver explicitly if you do not want any current sent to a driver that is assigned.
Though this applies mainly to internal drivers (and explains why your second extruder wasn't working), it means that external drivers have the current set to 0 in the firmware. Realistically, this doesn't matter, as that setting is not sent to the external driver anyway.
So you can set the external driver current to any value you want; it doesn't matter, as the setting isn't applied to external drivers. But you do need to set the current of the second driver, and to index that, you need to set the current of the first driver (despite it being external) to something, so it knows that the second value relates to the second driver. You can use
M906 E0:1000
, or set one M906 value to apply to all extruders, egM906 E1000
. While the firmware will report the current setting for each extruder drive, the current for the external driver is irrelevant.Ian