Zeepro temperature PID values too conservative? Fan design is part of the problem

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

I had always suspected that having the cover off was causing problems…

As soon as I get my OctoPi running I’ll run the same test so see how consistent the results are with yours.

Near as I can tell, having that cover on could have caused some of the jamming problems I had with Zim in the early days. I pulled off that cover pretty early on, and my jamming problems went away, but that was also about the time I moved away from using cartridges and the lower feed as well though.

I spent about an hour looking for the same problem as the ZIM couldn’t gain temperature - the fan is simply too strong (or the direction it blows the air not optimal) so usually I print PLA at 200°C and 50% power (60% maximum at bridging).

At Simplify (and as far as I know at Kisslicer too) you can tick the option to set the fan to 100% at start as it won’t turn when starting at about 20% power…

I confirm the Fan is too powerfull and too noisy.
it is a ultra fast blower with 350mA consumption.

You should replace this blower by a regular 100mA blower that will be less noisy and will not over cool the Nozzles

I’ve been having a lot of success with this modification to the fan ducts. Just tape over the outer ones with high temperature kapton tape (they don’t stick down low enough anyway and blow air right on the sides of the heater blocks). Also tape up any large interior cracks you might see. Leave the front duct open. Then replace the cover to keep the nozzles insulated with the silicone insert. It reaches 190C and 200C fast with the fan on, and regulates perfectly. It does take about 5 minutes to get to 200C though from room temp, so you can run into the 5 minute timeout where it shuts the heater back off. Just preheat the nozzle a bit to avoid this. Usually this is not needed for me though because I print the first two layers with the fan off, then turn the fan on at layer 3.

1 Like

…or use “M84 S600” in your startup-script to set the timeout to 10 Minutes everytime you start the printer (so, you don´t have to manipulate the firmware).

BTW: If you want to use the fan for printing, you´ll have to activate it before the PID Auto-tuning. The fan always cools down the nozzles (more or less), and if you run the tuning with the fan on, the values will be adjusted to that.

Hey all, just wanted to update the thread here and say that if you have any temperature oscillation on your Zim, definitely run the PID Autotune!

My first machine was perfect with the factory settings, but the second machine had a horrible oscillation:

After starting with a cold right extruder, I ran the following command

M303 E0 S190 C8

The autotune process ended with

Recv:  bias: 104 d: 104 min: 188.05 max: 191.85
Recv:  Ku: 69.77 Tu: 52.76
Recv:  Clasic PID
Recv:  Kp: 41.86
Recv:  Ki: 1.59
Recv:  Kd: 276.05
Recv: PID Autotune finished ! Place the Kp, Ki and Kd constants in the configuration.h

And I set the PID values with

M301 P41.86 I1.59 D276.05

Then saved them to EEPROM with

M500

Look at the results!

1 Like