Duet tool board extruder weak
-
On a duet tool board, is there anything that could cause the extruder stepper to partially loose power?
So here is the situation - I run a Duet6HC to tool boards that are located on the extruder. I have had a lot of issues with clogging of hot ends lately. I thought I had it localized to a weak extruder motor which subsequently turned out to be (or so I thought) the cable between the tool board and the extruder motor.
Well it now appears that the tool boards have some kind of protection mechanism, call it 'limp home mode' that allows the extruder to turn but at a greatly reduced power output.
Could someone fill me in what gets the extruder motor into this failure/protection motor? Is this a situation where the drivers overheat? Can I query the status of the tool board drivers somehow? I have spent way too much time chasing shadows here.
How does this protection mechanism get tripped? If I have a hot end blockage of some kind, will this affect things? I have set the drive current for the extruder motor at 70 or 80% of the motor maximum rated current (1A *1.414) but this doesn't take into account the driver heat dissipation. Will the driver always generate the same amount of heat or is that a function of the load on the motor rather than just the extruder motor current? What do I need to do to avoid running into this sort of situation?
I do not know if my hot end blocks because the driver shuts down or the blockage is causing the driver to shut down - in any case, I need to sort that out. -
@jens55
Usually the steppers produce the same power, even if it's not needed. But the recent TMC drivers have a "smart current" feature, whatever that means...-will follow this thread with great interest-
-
@jens55 said in Duet tool board extruder weak:
Is this a situation where the drivers overheat? Can I query the status of the tool board drivers somehow?
Please send
M122 Bnn
where nn is the address of the tool board, while the problem is occuring that should give us some more information.
-
@jens55 Can you post your config.g file so we can see how you have things set up?
-
@gloomyandy said in Duet tool board extruder weak:
@jens55 Can you post your config.g file so we can see how you have things set up?
See below ....
Unfortunately I managed to break the core on one of my dragon hotends. I am somewhat bent out of shape over the destroyed core. I can't believe the cost of new hot ends these days. I have ordered a replacement core but it will take 3 to 4 weeks to get here. In the meantime, I think I will take a break from the frustrations that is 3D printers lest I do something else stupid.
@T3P3Tony, I will post M122 Bnn results once I return to the printer after the break. Currently the extruder motors are all working and I will have to try recreating the conditions that resulted in the low power extruder situation.; Jubilee CoreXY ToolChanging Printer - Config File
; This file intended for Duet 3 hardware, main board plus expansion boards; Name and network
; This is configured from the connected Raspberry Pi or here if in stand alone
; mode
;-------------------------------------------------------------------------------
; Networking
M550 P"Blue" ; Name used in ui and for mDNS http://Jubilee.local
M552 P0.0.0.0 S1 ; Use Ethernet with a static IP, 0.0.0.0 for dhcp
;M553 P255.255.255.0 ; Netmask
;M554 192.168.1.1 ; Gateway
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet; General setup
;-------------------------------------------------------------------------------
M111 S0 ; Debug off
;M929 P"eventlog.txt" S1 ; Start logging to file eventlog.txt
G4 S4 ; wait for expansion boards to start
; General Preferences
;M555 P2 ; Set Marlin-style output
G21 ; Set dimensions to millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves; Stepper mapping
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; Connected to the MB6HC as the table below.
; Note: first row is numbered left to right and second row right to left
; _________________________________
; | X(Right) | Y(Left) | U(lock) |
; | Z(Back) | Z(Right) | Z(Left) |
; all drives on the main board are prefaced with '0.'
M584 X0 Y2 ; X and Y for CoreXY
M584 U1 ; U for toolchanger lock
M584 Z3:4:5 ; Z has three drivers for kinematic bed suspension.
M584 E21.0:22.0:23.0:24.0 ; There are 4 extruder drivers
M569 P0.0 S0 ; Drive 0 | X stepper ... goes backwards
M569 P0.1 S0 ; Drive 1 | Y Stepper --- goes backwards
M906 X{0.9*sqrt(2)2500} I30; LDO XY 2500mA RMS the TMC5160 driver on duet3 Current reduced to 30% after idle timeout
M906 Y{0.9sqrt(2)*2500} I30; generates a sinusoidal coil current so we can
; multply by sqrt(2) to get peak used for M906
; Do not exceed 90% without heatsinking the XY
; steppers. Current reduced to 30% after idle timeoutM569 P0.2 S0 ; Drive 2 | U Tool Changer Lock 670mA .... goes backwards
M906 U{0.7*sqrt(2)*670} I30 ; 70% of 670mA RMS idle 30%
; Note that the idle will be shared for all driversM569 P0.3 S0 ; Drive 3 | Front Left Z .... goes backward
M569 P0.4 S0 ; Drive 4 | Front Right Z .... goes backward
M569 P0.5 S0 ; Drive 5 | Back Z .... goes backward
M906 Z{0.7*sqrt(2)*1680} I30; 70% of 1680mA RMS Current reduced to 30% after idle timeout; Stepper mapping for individual tools
M569 P21.0 S0 ; Drive 0 on tool board address 21 ... goes forward
M569 P22.0 S0 ; Drive 0 on tool board address 22 ... goes forward
M569 P23.0 S0 ; Drive 0 on tool board address 23 ... goes forward
M569 P24.0 S0 ; Drive 0 on tool board address 24 ... goes forward
M906 E{0.7*sqrt(2)1000}:1000{0.7sqrt(2)1000}:1000{0.7sqrt(2)1000}:1000{0.7sqrt(2)*1000} I30 ; set drive current for extruders to 1000 ma Current reduced to 30% after idle timeoutM84 S30 ; Set idle timeout for all axis
; Kinematics
;-------------------------------------------------------------------------------
M669 K1 ; CoreXY mode; Kinematic bed ball locations.
; Locations are extracted from CAD model assuming lower left build plate corner
; is (0, 0) on a 305x305mm plate.
M671 X297.5:2.5:150 Y313.5:313.5:-16.5 S10 ; Front Left: (297.5, 313.5)
; Front Right: (2.5, 313.5)
; Back: (150, -16.5)
; Up to 10mm correction; Axis and motor configuration
;-------------------------------------------------------------------------------
;M92 X80.00 Y80.00 Z400.00 E420.00:420.00:420.00:420.00 ; set steps per mmM350 X1 Y1 Z1 U1 E1 ; Disable microstepping to simplify calculations
M92 X{1/(1.816/180)} ; step angle * tooth count / 180 NOTE: 2504 LDO motors have an angle of 1.8 degrees per step 2.5A !
; original motors were 0.9 degrees per step. 2A
M92 Y{1/(1.816/180)} ; The 2mm tooth spacing cancel out with diam to radius
M92 Z{360/0.9/2} ; 0.9 deg stepper / lead (2mm) of screw
M92 U{13.76/1.8} ; gear ration / step angle for tool lock geared motor.
M92 E51.875 ; Extruder - BMG 0.9 deg/step; Enable microstepping all step per unit will be multiplied by the new step def
M350 X16 Y16 I1 ; 16x microstepping for CoreXY axes. Use interpolation.
M350 U4 I1 ; 4x for toolchanger lock. Use interpolation.
M350 Z16 I1 ; 16x microstepping for Z axes. Use interpolation.
M350 E16:16:16:16 I1 ; 16x microstepping for Extruder axes. Use interpolation.; Speed and acceleration
; Multiple motors on one axis can not be defined seperately
;-------------------------------------------------------------------------------
M201 X10000 Y10000 ; Accelerations (mm/s^2)
M201 Z800 ; LDO ZZZ Acceleration
M201 U800 ; LDO U Accelerations (mm/s^2)
M201 E2000 ; ExtruderM203 X40000 Y40000 Z800 E8000 U9000 ; Maximum axis speeds (mm/min)
M566 X500 Y500 Z500 E500 U50 ; Maximum jerk speeds (mm/min)post character limit reached - to be continued ....
-
Continuation of config.g from previous post ....
; Endstops and probes
;-------------------------------------------------------------------------------
; Connected to the MB6HC as the table below.
; | U | Z |
; | X |
; | Y |M574 U1 S1 P"^io0.in" ; homing position U1 = low-end, type S1 = switch
M574 X1 S1 P"^io2.in" ; homing position X1 = low-end, type S1 = switch
M574 Y1 S1 P"^io3.in" ; homing position Y1 = low-end, type S1 = switchM574 Z0 ; we will use the switch as a Z probe not endstop
M558 P8 C"io1.in" H3 F360 T6000 ; H = dive height F probe speed T travel speed
;M557 x15:300 y15:300 s20 ;define mesh grid, probe 20 points in both x and y (S20)
G31 K0 X0 Y0 Z-2 ; Set the limit switch position as the "Control Point."
; Note: the switch free (unclicked) position is 7.2mm,
; but the operating position (clicked) is 6.4 +/- 0.2mm.
; A 1mm offset (i.e: 7.2-6.2 = 1mm) would be the
; Z to worst-case free position, but we add an extra 1mm
; such that XY travel moves across the bed when z=0
; do not scrape or shear the limit switch.; Set axis software limits and min/max switch-triggering positions.
; Adjusted such that (0,0) lies at the lower left corner of a 300x300mm square
; in the 305mmx305mm build plate.
;-------------------------------------------------------------------------------
M208 X-13.75:313.75 Y-44:341 Z-0.5:295 ; set axis maximum travel
M208 U0:200 ; Set Elastic Lock (U axis) max rotation angle; Heaters and temperature sensors
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------; Bed
;-------------------------------------------------------------------------------M308 S0 P"temp0" Y"thermistor" T100000 B3950 A"Bed"
M950 H0 C"out0" T0 ; H = Heater 0
; C is output for heater itself
; T = Temperature sensor
M143 H0 S130 ; Set maximum temperature for bed to 130C
M307 H0 A589.8 C589.8 D2.2 V24.1 B0 ; Keenovo 750w 230v built in thermistor
M307 H0 B0 S1.00 ; heater 0 , bed heater, disable bang-bang mode (B0), maximum PWM is 100% (S1.0)
; mandala rose bed
M140 H0 ; Assign H0 to the bed
M143 H0 S120 ; set temperature limit for heater 0 to 120C; Tool heaters and sensors
;-------------------------------------------------------------------------------
M308 S1 P"21.temp0" Y"thermistor" A"Hot End 0" T100000 B4200
; create sensor 1 on temp0 pin of expansion board 21 (21.temp0), use a thermistor for measuring (Y"thermistor")
; Name the sensor "Hot End 0" (A"Hot End 0")
; set sensor parameters to T100000 and B4200
M950 H1 C"21.out0" T1 ; create heater 1 (H1) on pin out0 of expansion board 21 (21.out0)and assign temperature sensor T1 (T1) to it's control
M143 H1 S300 ; Set maximum temperature for heater 1(H1) to 300C (S300)
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit;M307 H1 ; set heating parameters as determined by a tuning run - possibly in confi.g.overwrite
M308 S2 P"22.temp0" Y"thermistor" A"Hot End 1" T100000 B4200
; create sensor 2 on temp0 pin of expansion board 22 (22.temp0), use a thermistor for measuring (Y"thermistor")
; Name the sensor "Hot End 1" (A"Hot End 1")
; set sensor parameters to T100000 and B4200
M950 H2 C"22.out0" T2 ; create heater 2 (H2) on pin out0 of expansion board 22 (22.out0)and assign temperature sensor T2 (T2) to it's control
M143 H2 S300 ; Set maximum temperature for heater 2 (H2) to 300C (S300)
M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit;M307 H2 ; set heating parameters as determined by a tuning run - possibly in confi.g.overwrite
M308 S3 P"23.temp0" Y"thermistor" A"Hot End 2" T100000 B4200
; create sensor 3 on temp0 pin of expansion board 23 (23.temp0), use a thermistor for measuring (Y"thermistor")
; Name the sensor "Hot End 2" (A"Hot End 2")
; set sensor parameters to T100000 and B4200
M950 H3 C"23.out0" T3 ; create heater 3 (H3) on pin out0 of expansion board 23 (23.out0)and assign temperature sensor T3 (T3) to it's control
M143 H3 S300 ; Set maximum temperature for heater 3 (H3) to 300C (S300)
M307 H3 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit;M307 H3 ; set heating parameters as determined by a tuning run - possibly in confi.g.overwrite
M308 S4 P"24.temp0" Y"thermistor" A"Hot End 3" T100000 B4200
; create sensor 4 on temp0 pin of expansion board 24 (24.temp0), use a thermistor for measuring (Y"thermistor")
; Name the sensor "Hot End 3" (A"Hot End 3")
; set sensor parameters to T100000 and B4200
M950 H4 C"24.out0" T4 ; create heater 4 (H4) on pin out0 of expansion board 24 (24.out0)and assign temperature sensor T4 (T4) to it's control
M143 H4 S300 ; Set maximum temperature for heater 4 (H4) to 300C (S300)
M307 H4 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit;M307 H4 ; set heating parameters as determined by a tuning run - possibly in confi.g.overwrite
;M308 S1 P"spi.cs1" Y"rtd-max31865" A"Heater0" ; PT100 on main board
;M950 H1 C"0.out3" T1 ; Heater for extruder out tool 0
; M307 H1 A1252.3 C361.3 D5.3 V24.0 B0 ; from pid tuning without sock
;M307 H1 A811.4 C309.4 D4.7 V24.0 B0 ; With sock
;M143 H1 S300 ; Maximum temp for hotend to 300C; Fans
;-------------------------------------------------------------------------------
M950 F0 C"21.out1" Q500 ; create fan 0 on pin out1 on expansion board 21 and set its frequency
M106 P0 C"Print Cool 0" ; set custom name of "Print Cool 0" for this fan
M950 F1 C"21.out2" Q500 ; create fan 1 on pin out2 on expansion board 21 and set it's frequency
M106 P1 C"Hot End 0" S1 H1 T45 ; set fan 1 (P1) to full speed (S1) when on. Thermostatic control (H) controlled by heater 1 (1) at trigger temp of 45 degrees (T45)
; set custom name of "Hot End 0" for this fanM950 F2 C"22.out1" Q500 ; create fan 2 on pin out1 on expansion board 22 and set its frequency
M106 P2 C"Print Cool 1" ; set custom name of "Print Cool 1" for this fan
M950 F3 C"22.out2" Q500 ; create fan 3 on pin out2 on expansion board 22 and set it's frequency
M106 P3 C"Hot End 1" S1 H2 T45 ; set fan 3 (P3) to full speed (S1) when on. Thermostatic control (H) controlled by heater 2 (2) at trigger temp of 45 degrees (T45)
; set custom name of "Hot End 1" for this fanM950 F4 C"23.out1" Q500 ; create fan 4 on pin out1 on expansion board 23 and set its frequency
M106 P4 C"Print Cool 2" ; set custom name of "Print Cool 2" for this fan
M950 F5 C"23.out2" Q500 ; create fan 5 on pin out2 on expansion board 23 and set it's frequency
M106 P5 C"Hot End 2" S1 H3 T45 ; set fan 5 (P5) to full speed (S1) when on. Thermostatic control (H) controlled by heater 3 (3) at trigger temp of 45 degrees (T45)
; set custom name of "Hot End 2" for this fanM950 F6 C"24.out1" Q500 ; create fan 6 on pin out1 on expansion board 24 and set its frequency
M106 P6 C"Print Cool 3" ; set custom name of "Print Cool 3" for this fan
M950 F7 C"24.out2" Q500 ; create fan 7 on pin out2 on expansion board 24 and set it's frequency
M106 P7 C"Hot End 3" S1 H4 T45 ; set fan 7 (P7) to full speed (S1) when on. Thermostatic control (H) controlled by heater 4 (4) at trigger temp of 45 degrees (T45)
; set custom name of "Hot End 3" for this fan;M950 F1 C"0.out8"
;M106 P1 S255 H1 T45 C"HeatBreakCool0" ; S = Speed of fan Px
; Hxx = heater for thermo mode
; T = temps for thermo mode.
;M950 F5 C"0.out7"
;M106 P5 C"PrintCool0"; Tool definitions
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
M563 P0 S"Tool 0" D0 H1 F0 ; Px = Tool number
; Dx = Drive Number
; H1 = Heater Number
; Fx = Fan number print cooling fan
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 S0 R0 ; Set tool 0 operating and standby temperatures
; (-273 = "off")
M572 D0 S0.03 ; Set pressure advance for tool 0 (D0)M563 P1 S"Tool 1" D1 H2 F2 ; Px = Tool number
; Dx = Drive Number
; H1 = Heater Number
; Fx = Fan number print cooling fan
G10 P1 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P1 S0 R0 ; Set tool 0 operating and standby temperatures
; (-273 = "off")
M572 D1 S0.03 ; Set pressure advance for tool 1 (D1)M563 P2 S"Tool 2" D2 H3 F4 ; Px = Tool number
; Dx = Drive Number
; H1 = Heater Number
; Fx = Fan number print cooling fan
G10 P2 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P2 S0 R0 ; Set tool 0 operating and standby temperatures
; (-273 = "off")
M572 D2 S0.03 ; Set pressure advance for tool 2 (D2)M563 P3 S"Tool 3" D3 H4 F6 ; Px = Tool number
; Dx = Drive Number
; H1 = Heater Number
; Fx = Fan number print cooling fan
G10 P3 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P3 S0 R0 ; Set tool 0 operating and standby temperatures
; (-273 = "off")
M572 D3 S0.03 ; Set pressure advance for tool 3 (D3); new setup:
; on startup (config.g) disable all filament sensors
; in tfree disable the appropriat filament sensor
; in tpost enable the appropriate filament sensor
; the concept is to enable the filament sensor only for the currently active tool so I can print without having filaments mounted in tools not being used.; disable all filament sensors
M591 D0 P1 C"21.io1.in" S0 ; disable (S0) filament sensor (normal switch) (P1) on Extruder 0 , connected to input io1.in on CAN port 21
M591 D1 P1 C"22.io1.in" S0 ; disable (S0) filament sensor (normal switch) (P1) on Extruder 1 , connected to input io1.in on CAN port 22
M591 D2 P1 C"23.io1.in" S0 ; disable (S0) filament sensor (normal switch) (P1) on Extruder 2 , connected to input io1.in on CAN port 23
M591 D3 P1 C"24.io1.in" S0 ; disable (S0) filament sensor (normal switch) (P1) on Extruder 3 , connected to input io1.in on CAN port 24; set up filament sensors for all the tool boards
;M591 D0 P1 C"21.io1.in" S1 ; enable (S1) filament sensor (normal switch) (P1) on Extruder 0 , connected to input io1.in on CAN port 21
;M591 D1 P1 C"22.io1.in" S1 ; enable (S1) filament sensor (normal switch) (P1) on Extruder 1 , connected to input io1.in on CAN port 22
;M591 D2 P1 C"23.io1.in" S1 ; enable (S1) filament sensor (normal switch) (P1) on Extruder 2 , connected to input io1.in on CAN port 23
;M591 D3 P1 C"24.io1.in" S1 ; enable (S1) filament sensor (normal switch) (P1) on Extruder 3 , connected to input io1.in on CAN port 24M98 P"/sys/Toffsets.g" ; Set tool offsets from the bed
M501 ; Load saved parameters from non-volatile memory
; set up a fan output based on the hotend temperatures. Fan output is used to drive a relay to power bed lights
;------------------------------------------------------------------------------------------------------------------
; Just create the "fan" using M950 as usual, and when configuring it with M106 give a list of sensor numbers in the H parameter, for example:
; M106 P5 S1 T45 H1:2
;-----------------------------------------------------------------------------------------------------------------
;M950 F9 C"out8" ; create fan 9 on pin out8 on main duet board
;M106 P9 C"Lights" S1 T40 H0:1:2:3:4 ; set custom name of "Lights" for this fan, set to run full speed (S1), Thermostatic mode at 45C (T45) for heaters 1 through 4
M950 F9 C"!io6.out" ; create fan 9 on header IO_6 on main duet board, output needs to be inverted (!)
M106 P9 C"Lights" S1 T40 H0:1:2:3:4 ; set custom name of "Lights" for this fan, set to run full speed (S1), Thermostatic mode at 45C (T45) for heaters 1 through 4 -
@jens55 Sorry to hear about the damage. When you get chance could you check your config.g by running M98 p"config.g" to see if any errors are reported. This 906 line looks a little odd to me:
M906 E{0.7*sqrt(2)1000}:1000{0.7sqrt(2)1000}:1000{0.7sqrt(2)1000}:1000{0.7sqrt(2)*1000} I30 ; set drive current for extruders to 1000 ma Current reduced to 30% after idle timeout
-
@gloomyandy, see output below:
2022-11-05, 1:25:29 p.m. FTP is disabled
TELNET is disabled
Warning: Heater 0 predicted maximum temperature at full power is 614°C
Warning: Heater 0 predicted maximum temperature at full power is 614°C
Warning: Heater 0 predicted maximum temperature at full power is 271°C
2022-11-05, 1:25:23 p.m. M98 P"config.g"
FTP is disabled
TELNET is disabled -
... and there goes the nice spacing ....
-
The motor is rated for 1000 ma rms,
M906 works with peak current,
peak is rms * sqrt(2),
0.7 is for 70% (I was running this as high as 90% at times)
There are 4 extruder motors so 4 entries -
@jens55 said in Duet tool board extruder weak:
M906 E{0.7*sqrt(2)1000}:1000{0.7sqrt(2)1000}:1000{0.7sqrt(2)1000}:1000{0.7sqrt(2)*1000}
Has the forum mangled that line? Perhaps you could repost it using the code tag? I'd have expected "*" between many of those parts of the expression?
Also why for the first extruder do you have:
{0.7*sqrt(2)1000}
But the second you have:
1000{0.7sqrt(2)1000}
Why does one have an extra "1000"?
-
@gloomyandy, the extra ' 1000' is there to see what happens when you ask the tool board to deliver 987 Amps to each of the stepper coils of a tiny pancake stepper motor. I haven't got a clue where that came from but yes, that is what is in my config.g file. <sigh> .... old fart moment .... having way too many of these .....
The only weird part is that I started out with 800 ma with
M906 E800:800:800:800
That was the line that was in effect when the first extruder jammed which I then misdiagnosed as a bad cable/connection between the tool board and stepper motor. That is when I first ran into the weak stepper issue. That is also when I decided to go fancyGood eyes !!!! I couldn't see the forest for the trees
Anyway, the tool board is rated at 1600 mA peak output so I am assuming that some kind of safety kicked in an reduced the current by,like, a LOT Odd thing is, when I tested the stepper with my patented two finger method, I got full power after the printer was off for a while. I am assuming that the protection mechanism is temperature based as that would explain it working after the printer was off for a while and then throttling after things heated up.
It will be interesting to see if, with the changed M906 line, the weak stepper situation will reoccur.
In any case T H A N K S !!!!!!! -
Wow, what a ride ..... I am happy (more like ecstatic) to report that after correcting my config.g (thanks again @gloomyandy ) the printer completed both a pressure advance test and a temperature tower without any complications whatsoever !
I did an M122 Bnn and nothing seemed out of the ordinary ... but then the prints came out just fine so there shouldn't have been anything odd to report. -
-