Under extruding after firmware update
-
I have a Wanhoa duplicator i3 that I retrofitted with a duet wifi 2. I has been running and working well for the past several years on firmware version 1.19. I decided to add a BLTouch to the system, but in order to use the sensor to its fullest without workarounds I needed to update the firmware to the current version. After this update I found that my extruder is under extruding and by a factor of 10. Doing an extruder calibration and trying to feed 100 mm of filament, the extruder only extrudes 10. The nozzle is not clogged and it does this regardless of how I change my Steps per mm for the extruder motor. Yesterday I set my steps to 1000 instead of 100 in the below code and it still only extruded 10 mm instead of 100. I am beginning to question my own sanity. These parameters worked for years but suddenly don't now. Can someone please help me with this? The code below is from my config file.
; General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"PowerSpec" ; set printer name; Network
M551 P"Password" ; set password
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet; Drives
M569 P0 S1 ; physical drive 0 goes forwards
M569 P1 S1 ; physical drive 1 goes forwards
M569 P2 S0 ; physical drive 2 goes backwards
M569 P3 S1 ; physical drive 3 goes forwards
M584 X0 Y1 Z2 E3 ; set drive mapping
M350 X256 Y256 Z64 I1 ; configure microstepping without interpolation
M92 X1280.00 Y1280.00 Z1600.00 E100 ; set steps per mm
M566 X600.00 Y500.00 Z18.00 E20.00 ; set maximum instantaneous speed changes (mm/min)
M203 X12000.00 Y12000.00 Z350.00 E3000.00 ; set maximum speeds (mm/min)
M201 X1000.00 Y700.00 Z100.00 E5000.00 ; set accelerations (mm/s^2)
M906 X855 Y855 Z1080 E855 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X200 Y200 Z170 S0 ; set axis maxima; Endstops
M574 X1 S1 P"!xstop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop
M574 Y1 S1 P"!ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop
M574 Z1 S1 P"!zstop" ; configure switch-type (e.g. microswitch) endstop for low end on Z via pin zstop; Z-Probe
M950 S0 C"exp.heater7" ; create servo pin 0 for BLTouch
M558 P9 C"^zprobe.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
G31 P500 X0 Y-39 Z3.15 ; set Z probe trigger value, offset and trigger height
M557 X10:190 Y00:160 S10 ; define mesh grid; Heaters
M308 S0 P"bedtemp" Y"thermistor" T100000 B3988 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M307 H0 A90.0 C700.0 D10.0 ; Set model parameters for H0 for Bang-bang
;M307 H0 B0 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M308 S1 P"e0temp" Y"thermistor" T100000 B3988 ; configure sensor 1 as thermistor on pin e0temp
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit
M143 H1 S280 ; set temperature limit for heater 1 to 280C
M307 H1 R2.018 K0.418:0.000 D8.41 E1.35 S1.00 B0 V11.9 ; set PID for Hot end; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency
M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on
M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency
M106 P2 S1 H1 T45 ; set fan 2 value. Thermostatic control is turned on; Tools
M563 P0 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; Custom settings are not defined
; Miscellaneous
T0 ; select first toolCurrent config.g This one results in underextrusion (10 percent extrusion of what it called)
1.19 config.g This one has consistently worked for the past 5 years. -
@Wunderboy You are not setting any microstepping value for your E drive, is that correct? What value did you have in your old configuration? You also have pretty high microstepping values for the other motors, most folks seem to recommend 16 microsteps with interpolation (Though the Klipper folks seem to like 64 microsteps with interpolation turned off). A high number of steps puts additional load on the system and does typically not provide any greater accuracy. Oh and your comment indicates that you wished to disable interpolation, but I1 turns it on...
-
@gloomyandy That is correct, no microstepping for the E drive. In the original code from the 1.19 firmware it was microstepped. I removed it during troubleshooting and found that I got the same under extrusion result.
Here is what it used to be:
M350 X256 Y256 Z64 E64 I1 ; Configure microstepping without interpolation
M92 X1280 Y1280 Z1600 E392 ; Set steps per mmI understand that the I1 does the opposite of the comment but at the time of writing the original code I did not. It worked and didn't feel like changing it lol. As for the high microstepping, the machine runs much quieter this way which is far more important to me then the small amount of detail gained from a lower microstep.
-
@Wunderboy
The Duet Wifi can only generate an interpolation at 16x microsteps.
256x microstepping does not allow high speeds of the stepper motors, at least that was the case for me when I was experimenting with the settings at the time.Converting your old settings gives 16x microsteps for the extruder Z98 steps per mm in the M92 command line.
This is how it should look like with 16x microsteps:
M350 X256 Y256 Z64 E16 I0 ; configure microstepping without interpolation
M92 X1280.00 Y1280.00 Z1600.00 E98.00 ; set steps per mmP.S.:
Maybe the 855mA is not enough for the extruder?
Most stepper motors for the extruder are listed with 1000mA to 1200mA.
Check the specifications of your stepper motor if you can increase the value.If your HotEnd has a PTFE tube that runs into the heatbreak, check that it hasn't deformed due to the heat.
Google Translate
-- Original Text --Das Duet Wifi kann nur bei 16x Microschritten eine Interpolation erzeugen.
256x Microschritte erlaubt keine hohen Geschwindigkeiten der Stepper Motoren, zumindest war es bei mir der Fall als ich damals mit den Einstellungen herum experimentiert habe.Rechnet man Deine alten Einstellungen um, dann ergibt 16x Microstepps für den Extruder Z98 Stepps pro mm in der M92 Befehlszeile.
So sollte es aussehen bei 16x Microstepps:
M350 X256 Y256 Z64 E16 I0 ; configure microstepping without interpolation
M92 X1280.00 Y1280.00 Z1600.00 E98.00 ; set steps per mmP.S.:
Vielleicht sind die 855mA für den Extruder zu wenig ?
Die allermeisten Stepper-Motoren für den Extruder sind mit 1000mA bis 1200mA eingetragen.
Überprüfe die Spezifikationen Deines Stepper-Motors ob Du den Wert erhöhen kannst.Wenn in Deinem HotEnd ein PTFE Schlauch bis in den Heat-Break verlegt ist, prüfe ob dieser sich nicht durch die Hitze verformt hat.
-
@Norder The below is the config.g file that has been running on my machine under the 1.19 firmware since 2017. On that file I was using 64 microsteps and E392 steps per mm. Additionally when I tuned my motors those are the currents I came up with. The hotend does not have a PTFE tube in it, I swapped it out for a micro swiss all metal hotend. I have cleaned this out several times, I can easily push plastic out of it. All extruder commands to extrude filament result in 10 percent output of what the command originally called for. Call for 100 mm, get 10mm or call for 25mm and get 2.5mm.
The only thing that is not original on this file are lines related to heater 7 and probe settings. Everything else has been working for the last five years and only stopped after the firmware update. Is there something else that this could be?
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves; Network
M550 PPowerSpec ; Set machine name
M551 PPassword ; Set password
M552 S1 ; Enable network
M586 P0 S1 ; Enable HTTP
M586 P1 S0 ; Disable FTP
M586 P2 S0 ; Disable Telnet; Drives
M569 P0 S1 ; Drive 0 goes forwards
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S0 ; Drive 2 goes backwards
M569 P3 S1 ; Drive 3 goes forwards
M350 X256 Y256 Z64 E64 I1 ; Configure microstepping without interpolation
M92 X1280 Y1280 Z1600 E392 ; Set steps per mm (Was E96 180808)
M566 X600 Y500 Z18 E20 ; Set maximum instantaneous speed changes (mm/min)
M203 X12000 Y12000 Z350 E3000 ; Set maximum speeds (mm/min)
M201 X1000 Y700 Z100 E5000 ; Set accelerations (mm/s^2)
M906 X855 Y855 Z1080 E855 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X0 Y0 Z0 S1 ; Set axis minima
M208 X200 Y200 Z170 S0 ; Set axis maxima; Endstops/Probe
M574 X1 Y1 Z1 S0 ; Set active low endstops
M307 H7 A-1 C-1 D-1 ; Disable Heater to free op PMW channel for BLTouch
M558 P5 H5 F100 T2000 ; Set Z Probe to type Switch or Digital output where Z probe connector is used. Used for z only.;
G31 X0 Y-39 Z-2.15 P25 ; Set Z probe trigger value, offset and trigger height
M557 X10:190 Y40:180 S20 ; probe from X=10 to 190, Y=40 to 180mm with a mesh spacing of 20mm; Heaters
M305 P0 T100000 B3988 C0 R4700 ; Set thermistor + ADC parameters for heater 0
M143 H0 S120 ; Set temperature limit for heater 0 to 120C
M307 H0 A90.0 C700.0 D10.0 ; Set model parameters for H0 for Bang-bang
M305 P1 T100000 B4725 C0 R4700 ; Set thermistor + ADC parameters for heater 1
M143 H1 S280 ; Set temperature limit for heater 1 to 280C
M307 H1 A195.4 C132.4 D4.5 B0 ; Set model parameters for H1 for PID; Fans
M106 P0 S0 I0 F15 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off (Hotend Fan)
M106 P1 T25 H1 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on (Control Box Fan)
M106 P2 S0 T30 H1:1 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned off (HeatSink Fan); 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; Custom settings are not configured
; Miscellaneous
T0 ; Select first tool -
Can you send M122 and M98 P"config.g" in the gcode console and report the results?
-
@Phaedrux
M122
=== Diagnostics ===
RepRapFirmware for Duet 2 WiFi/Ethernet version 3.4.3 (2022-10-05 09:01:07) running on Duet WiFi 1.02 or later
Board ID: 08DGM-95BLL-N6PSS-6J1F6-3SS6N-K0VRK
Used output buffers: 1 of 26 (16 max)
=== RTOS ===
Static ram: 23860
Dynamic ram: 75232 of which 12 recycled
Never used RAM 12976, free system stack 184 words
Tasks: NETWORK(notifyWait,17.9%,242) HEAT(notifyWait,0.0%,317) Move(notifyWait,0.0%,363) MAIN(running,81.9%,438) IDLE(ready,0.1%,30), total 100.0%
Owned mutexes: WiFi(NETWORK)
=== Platform ===
Last reset 00:13:22 ago, cause: power up
Last software reset at 2022-10-30 19:16, reason: User, GCodes spinning, available RAM 12832, slot 0
Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a
Error status: 0x00
Step timer max interval 0
MCU temperature: min 14.8, current 27.4, max 27.9
Supply voltage: min 12.1, current 12.2, max 12.3, under voltage events: 0, over voltage events: 0, power good: yes
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 n/a
Driver 1: standstill, SG min n/a
Driver 2: standstill, SG min n/a
Driver 3: standstill, SG min n/a
Driver 4: standstill, SG min n/a
Driver 5:
Driver 6:
Driver 7:
Driver 8:
Driver 9:
Driver 10:
Driver 11:
Date/time: 2022-11-04 19:19:00
Cache data hit count 4294967295
Slowest loop: 17.33ms; fastest: 0.19ms
I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
=== Storage ===
Free file entries: 10
SD card 0 detected, interface speed: 20.0MBytes/sec
SD card longest read time 1.5ms, write time 0.0ms, max retries 0
=== Move ===
DMs created 83, 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, 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
Daemon is idle in state(s) 0
Autopause is idle in state(s) 0
Code queue is empty
=== Network ===
Slowest loop: 14.29ms; fastest: 0.00ms
Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
HTTP sessions: 1 of 8
= WiFi =
Network state is active
WiFi module is connected to access point
Failed messages: pending 0, notready 0, noresp 0
WiFi firmware version 1.27
WiFi MAC address 2c:3a:e8:0b:26:07
WiFi Vcc 3.40, reset reason Turned on by main processor
WiFi flash size 4194304, free heap 24144
WiFi IP address 192.168.1.112
WiFi signal strength -67dBm, mode 802.11n, reconnections 0, sleep mode modem
Clock register 00002002
Socket states: 0 0 0 0 0 0 0 0M98 P"config.g"
HTTP is enabled on port 80
FTP is disabled
TELNET is disabled -
This is now resolved. One of the extruder stepper wires on the board was loose. When I tugged on it, it came right out of the connector. Additionally, I found the extruder drive gear to be very worn and seemed to be slipping. I fixed the connection for the extruder and replaced the drive gear with a newer and more aggressive one. That seems to have resolved this issue.
Thank you everyone for your help. -
-