Underextrusion on low print speed

Basic Information:

Printer Model: Kingroon KP3S Pro V2
MCU / Printerboard: GD32F303/RP2040
Host / SBC: Armbian-unofficial 24.2.0-trunk Jammy
klippy.log klippy.log.zip (378.1 KB)

Hello.

I’m trying to print a part from transparent TPU. After a few layers, under-extrusion begins. The first thing I checked was the rotation_distance, and it corresponds to the printer manufacturer’s value.

I assumed that the printing speed was too low, the plastic wasn’t dried properly, it was boiling, and was being fed unevenly. I increased the speed, and on that part, I printed 2 mm with a 0.1 mm layer using 100% infill until the walls started printing. Again, under-extrusion occurred. I stopped the print and decided to check the extruder calibration as described in the Klipper documentation.

I ran the command G91 G1 E50 F60 and found that instead of 50 mm, about 32 mm was extruded. I repeated the test—again, under-extrusion of 24 mm. Then I tried G1 E50 F120 and this time it extruded approximately the expected amount, maybe slightly less (by about 1 mm), but not half as much.

I performed a klipper restart and a firmware restart through the Fluidd interface. I repeated the test, and the same behavior occurred, though the under-extrusion was slightly less. I then turned off the printer, turned it on again, and repeated the test—everything was fine.

I rolled everything back to version v0.12.0-93-g43a9685c5. I started printing the part again, but at lower speeds since the problem at low printing speeds occurred faster (just to save on plastic). On the second layer, the gaps started to appear. I interrupted the print, repeated the extrusion test, and again, at a speed of 60, there was under-extrusion of 3–4 mm. This doesn’t always happen, though. At a speed of 120 (`G1 E50 F120), I couldn’t reproduce the under-extrusion. At speeds of 30 and 10, it also sometimes occurs.

Please advise on how to troubleshoot this issue.

Do you print the TPU with retraction?

This is very unlikely to be caused by Klipper or its settings. TPU can be very tricky. Common issues:

  • TPU needs to be as dry as the Mojave desert. At least 6 hours or more at < 50 °C.
  • Printing slowly is a must for TPU. Settle somewhere around 30 mm/s printing speed for a start and then work up.
  • The extruder needs to be “TPU certified”. By far not all manage this, especially for shore grades below 90. Removing bulged-out TPU from the extruder is not exactly fun. Printing issues start way before.
  • I’d not use pressure advance or any other slicer-based extrusion shaping with TPU.

I tried printing both with and without inter-layer retraction. Retraction is continuously set at 0.8/20, but not during layer changes. In this case it is not working at all. After several unsuccessful attempts to print the bottom of this box, I increased the printing speed. The bottom turned out better—more transparent and uniform—but on the second layer, gaps started appearing right at the beginning. I enabled inter-layer retraction, and with these settings, I printed 20 layers without any serious defects.

I know all about that. This is the second TPU spool from the same manufacturer. The first one was a transparent purple. It seemed to be dry straight out of the package. I started printing with it immediately and achieved excellent quality. Similar issues did occur with it too, but I attributed them to inconsistent diameter. Indeed, toward the end of the spool, the diameter sometimes dropped to 1 mm instead of 1.75 mm. However, with that spool I printed a part for 25 hours using 0.2 mm layers, without defects. When I attempted to print with 0.1 mm layers – if I recall correctly – I got a similar effect. The speed was 35. I take all the points you mentioned into account. I use lower speeds, ranging from 20 up to a maximum of 35–40. For solid infill, it’s halved (slicer default settings). This printer doesn’t have an ideal extruder for TPU, but even in reviews, people print at 60 with TPU 95A. Yes, if you set the speed higher, the filament can slip into the gap between the hole and the gear, sometimes making it impossible to extract without disassembling the extruder.

I fully understand everything you’ve described. However, I don’t understand why, after printing, during the extrusion test I get 32 mm extruded instead of 50. This reproduces at a speed of 60, but at 120 I don’t see that effect.

By the way, there’s another observation related to speed. You can get a “Timer too close” error simply by sending the head to G1 X200000 when the bed mesh is loaded. It’s clear why that occurs. What’s interesting is something else. I experimented a lot trying different parameters under which “Timer too close” appears. For example, with X100000, the error appears at a lower speed. That is, at F4000 it doesn’t occur, but at F3000 it does. I also noticed that if you set a high speed like F6000, the head doesn’t start moving until about 1 second after sending the command, and then it moves and throws a “move out of range” error. Whereas at speeds of 3000–4000, the head starts moving immediately after the command is sent.

A similar phenomenon is observed with extrusion. I’m leaning towards it being a software issue. It’s very strange that with an extrusion speed of 60 there is under-extrusion, and then at 120 that disappears.

How can we localize this (determine if it’s a hardware or software issue)? For example, by dumping the low-level commands and comparing them, or trying to send the low-level commands directly if that’s possible. I know I can translate it with something like

python3 ./klippy/klippy.py my_printer/printer.cfg -i test.gcode -o test.serial -v -d "mcu.dict" -d "MKS_THR=mcu_thr.dict"; python3 ./klippy/parsedump.py mcu.dict test.serial > test.txt; python3 ./klippy/parsedump.py mcu_thr.dict test.serial-MKS_THR > test_MKS_THR.txt

But the result commands includes G28 and other.

This effect is known but considered an edge case that does not play a role in real-world 3D printing. It is essential that such a command halts the machine before something (very) unwanted happens, and this is fulfilled.

Take as many variables out of the equation:

  1. Use regular (stiff) filament
  2. Remove the nozzle
  3. Carefully calibrate your extruder’s rotation_distance, e.g., according to Rotation distance - Klipper documentation
  4. Perform your extrusion tests at various speeds and at a length (200mm or more) that allows you to precisely determine the actual extruded length.