Hotend heating issue : Taz4 + e3d V6

I’ve been noticing recently that my hot end (e3dv6) on my taz 4 is having a really hard time keeping the temp up. Things like fast extrusion and fan turning on literally sap the heat away, and while printing I’ll watch the temp slowly drop down.

This is strange because it will heat up to target temps, and if I slow things down or turn off fan it starts climbing back up to target temp.
It’s almost like the heater is not strong enough to overcome heat dissipation in normal use…

The funny thing is, when I run PID autotune the reported temp shoots up 2-3 times faster, just like it did when I first installed it. However once I set PID and try a normal warmup, it’s back to it’s slow, lethargic warm up speeds and performance.

What gives?
It CAN heat up fast enough, but something seems to be limiting it during normal use? Any ideas?

Things I’ve tried:

  • Setting PID to various things, running autotune
  • setting thermistor to 5 in firmware
  • setting max PID to 255 in firmware for higher current

I’m using this thermistor:

and the hotend heating cartridge is 24v


Another piece of information to add to the pile:

When I run PID autotune, voltage readout going to extruder heater block is 24v solid.
During regular heatup it rapidly fluctuates between 4-9 volts?

Is this significant?

I ended up sorting this out - ended up being a firmware fix entirely.

I had been setting PID_MAX to a higher number
but I had not been setting BANG_MAX to a higher value as well.
Apparently these are used in conjunction somehow, but BANG_MAX did the trick.

For reference, in case anyone else is looking to setup the taz4 with the e3d v6 hot end here’s a condensed list of changes and settings to be aware of:

Hardware changes:

I picked up the higher wattage elements because I thought mine was bad, but as it turns out they are stronger elements anyways.
The color of the cloth wire covering will tell you if you have the higher wattage, or lower wattage heating element.
Blue = lower, red = higher.

Firmware changes:
#define TEMP_SENSOR_0 1 // normally set this to 5 if using the included thermistor, I used the screw on so I set to 1
#define TEMP_SENSOR_1 1// normally set this to 5 if using the included thermistor, I used the screw on so I set to 1
#define BANG_MAX 245 //(max of 255 for 24v elements)
#define PID_MAX 245 //(max of 255 for 24v elements)

PID changes:
I ran autotune and got these values, course you probably want to run it yourself but these could potentially get you started
M301 P15.21 I0.98 D58.82

Just for reference the values I used the following values
#define BANG_MAX 150
#define PID_MAX 155

Great thanks for the suggestions I’ll try these out.

My last post fixed the heating power but for some reason my heating temp likes to sit 4 degrees below target consistently during prints.

Also, what’s PID_INTEGRAL_DRIVE_MAX 220 affect?
Mine is currently set to the taz4 defaulf of 70

About the temperature… what temperatures are you trying to reach? do you have an air duct blowing air to the end of the nozzle? If you are still using the default duct that TAZ 4 came with then that’s probably the reason… because the air goes on the nozzle and not on the extruded plastic.
About the PID_INTEGRAL_DRIVE_MAX I can not say for certain… this is from :
"In Marlin, the parameters that control and limit the PID controller can have more significant effects than the popular PID parameters. For example, PID_MAX and PID_FUNCTIONAL_RANGE, and PID_INTEGRAL_DRIVE_MAX can each have dramatic, unexpected effects on PID behavior. For instance, a too-large PID_MAX on a high-power heater can make autotuning impossible; a too-small PID_FUNCTIONAL_RANGE can cause odd reset behavior; a too large PID_FUNCTIONAL_RANGE can guarantee overshoot; and a too-small PID_INTEGRAL_DRIVE_MAX can cause droop. "

Some great info there, thanks!

I do have the taz4 fan duct still attached, but the temperature disparity is happening with the fan off.
The funny thing is it has no problems reaching the temp, if I set the heater manually in pronterface to +5 degrees of whatever I want it reaches the lesser temp in no time.

I have a feeling this is related to the gradual voltage falloff as the heater reaches it’s target. perhaps the setting you mentioned may help this, I’ll try this out later today, have a big 12 hour print going atm that hopefully doesn’t fail

I’ll need to check the code for exact behavior, but max power is applied until the temp gets close to the target value, then the PID controller starts controlling and things slow down.

I took a peek, pid_error is target_temp - current_temp\

if pid_error > pid_functional_range the power is set to BANG_MAX
if pid_error < functional range output is 0
if pid_error is within the range do all the PID math to get an output temp.

here is the code section:

#ifdef PIDTEMP
pid_input = current_temperature[e];

pid_error[e] = target_temperature[e] - pid_input;
if(pid_error[e] > PID_FUNCTIONAL_RANGE) {
pid_output = BANG_MAX;
pid_reset[e] = true;
else if(pid_error[e] < -PID_FUNCTIONAL_RANGE || target_temperature[e] == 0) {
pid_output = 0;
pid_reset[e] = true;
else {
if(pid_reset[e] == true) {
temp_iState[e] = 0.0;
pid_reset[e] = false;
pTerm[e] = Kp * pid_error[e];
temp_iState[e] += pid_error[e];
temp_iState[e] = constrain(temp_iState[e], temp_iState_min[e], temp_iState_max[e]);
iTerm[e] = Ki * temp_iState[e];

//K1 defined in Configuration.h in the PID settings
#define K2 (1.0-K1)
dTerm[e] = (Kd * (pid_input - temp_dState[e]))*K2 + (K1 * dTerm[e]);
pid_output = constrain(pTerm[e] + iTerm[e] - dTerm[e], 0, PID_MAX);
temp_dState[e] = pid_input;
pid_output = constrain(target_temperature[e], 0, PID_MAX);

I think playing with the K1 term , and/or changing the functional range could get your heating speed up a little. If I read this correctly lower K1. If you set K1 above 1 you’ll never reach the target temp. Ask me how I know that.

Just posting back here to update :
dkoukoul your advice about setting PID_INTEGRAL_DRIVE_MAX 220 worked perfectly.

Now not only does my not end heat up fast but it plateaus correctly and settles right at the intended temperature +/-.1 degrees.

Another problem my setup has provided for me now that I have a big fat 1mm nozzle on my e3d. Due to this certain speeds that are actually quite low, are too fast for the filament to heat and melt adequately. I get blobs and even jams if slic3r is set to too high a speed for any section of the print.

I ordered the e3d volcano which has a vertical heat block and more room to preheat filament as it feeds so I should be able to increase speeds closer to normal after that.

Something to beware of if you switch to a larger diameter nozzle : Just because your thermistor is reading a certain temp doesn’t mean the filament coming out is getting that hot if it is moving through too fast!

Thanks again!