I’ve had a problem with both of my Zims where temperature doesn’t seem to lock in to temperature critically damped at the setpoint. When running with the fan, it doesn’t even maintain temperature. There really should be no oscillation if the PID gains are correct. Worse, if the temperature varies by more than 10 degrees, the extruder will shutoff automatically based upon the Marlin configuration.
I decided to run the PID autotune on one of my Zims, and came up with wildly different gains than Zeepro has in their firmware. For instance, Zeepro values in Configuration.h are (looks like they just ballparked these?):
#define DEFAULT_Kp 40
#define DEFAULT_Ki 4
#define DEFAULT_Kd 95
And on mine Marlin autotune (M303 E0 S200 C8) came up with:
No fan (M107)
Recv: Kp: 51.22
Recv: Ki: 2.10
Recv: Kd: 312.60
AutoTune actually fails with S200 (Temperature 200 C) and the fan at 100% (M106 S255). It takes too long to reach 200C and bails out. In fact, it doesn’t even appear to be capable of reaching above 200C with the fan enabled full, as it asymptotically approaches 200C. This is with the black outer shroud off (exposed heater blocks).
I thought that perhaps having the black heater block cover off contributed to the heat loss, in that the fan shroud is meant to blow underneath the cover and it was blowing on the heater block itself with the cover off. I re-installed this cover and the results were even worse. The extruder was incapable of reaching anything over 170C before failing the Autotune.
Moral of the story is to at least pull off your cover to reach higher temperature (if anyone still uses it), and do not use full fan speed if you want to reach 200C. Certainly the fan shroud design is the problem as it sort of blows on the heater block itself, but I wonder if it is worth revisiting Zeepro gain selection as well. It may at least help the extruder maintain temperature with the fan on. It may also help those seeing extruder heat shutoff mid-print. If you want to perform this experiment on your printer and see if you get similar results, send the ‘M303 E0 S200 C8’ command with cold extruders and wait for the autotune to complete. It prints out the learned gain values after a few minutes. Try with the fan off and on to see if they vary much. If you want to try out the new values until the next restart, you can send the new values via the M301 command (e.g. M301 P[Kp value] I[Ki value] D[Kd value]. This will set them temporarily, and revert them on a reboot. Note the M500 command doesn’t work on stock Zeepro firmware to save these off the EEPROM, you can modify Configuration.h if you want to use the new values permanently. I’ve modified the Marlin branch with my other changes to add M500 EEPROM storage of these parameters: version JPod - 1.1.0.18