Welcome! Log In Create A New Profile

Advanced

Hotend overshoots

Posted by drmaestro 
Hotend overshoots
June 14, 2014 01:08PM
Hi,

Today, while talking to another reprapper I've learned an interesting fact that I have never paid attention to. When I raise the temperature of the hotend , it always overshoots (by 20-30 degrees Celsius) then arrives at the desired value. .I've always thought that this was normal. However my friend told me that it was an abnormal behaviour, the hotend shouldn't go past a few degrees more than the intended goal. I've been told that this was a configuration problem which can be auto-tuned by the M303 E0 S200 C8 command on Marlin firmware (PID autotune). However I have a problem: If I run this command, in the initial cycle the temperature overshoots and I recieve an error ("PID Autotune failed! Temperature too high") so I am unable to tune it? How can I correct this problem?
A2
Re: Hotend overshoots
June 14, 2014 02:19PM
If your thermistor is making poor, or intermittent contact, you can also try potting your thermistor with high temp automotive silicone, or automotive muffler sealer.
Re: Hotend overshoots
June 14, 2014 02:35PM
I am not sure if this is a thermistor problem. I have tried to manually change the P, I and D values (arbitrarily), but it always behaves in a similar manner. The temperature increases by 3-5 degree steps, overshoots by 25-30 degrees, cools down to the required temperature and stabilizes. If it was a thermistor problem, would it stabilize in the end?
A2
Re: Hotend overshoots
June 14, 2014 04:05PM
I've welded, and twisted up a lot of thermocouples, and if it's not stabilized, (i.e. anchored), temperature swings are wild. This is just one possibility that should be on your check list of possibilities, it could very well be some thing else.
Re: Hotend overshoots
June 16, 2014 03:11AM
I have ordered high temperature silicone to check your suggestion. As my thermistor was already installed in the hotend, I don't know where I have to apply it. Am I going to use it to cover the thermistor or just the part where the thermistor is joined by the electrical cable?
Re: Hotend overshoots
June 16, 2014 10:22PM
You using Marlin? And a heater cartridge?

If you are using a cartridge and you are heating by 3-5C/sec near the operating point, which might be too much for the autotune. You also could reduce the maximum power by (ETAsmiling smiley reducing BANG_MAX or PID_MAX from 255 (see around [github.com] ) depending on whether you want to limit the behavior on the way up into PID_FUNCTIONAL_RANGE or within the PID controller.

I think this overshoot could be because of a too-small PID_FUNCTIONAL_RANGE in Configuration.h The default is +/-10C per [github.com] -- If you are overshooting by 35C, then I'd think the range should be at least 35C, and your kP term should be a maximum of 255/35=7 or so.

If it is set too tight, then it is BANG-BANG until it hits setpoint-PID_FUNCTIONAL_RANGE, then resets and tries to start the up the PID from zero, and you get odd PID behavior.

If you are heating fast compared to the range, the PID doesn't have time to work, and when you could overshoot SETPOINT+ID_FUNCTIONAL_RANGE and switch into BANG_BANG off mode until it cools off back into range, where it resets the PID internal variables to zero, and then cools further to below setpoint where it the PID starts accumulating some I-term errors. It probably settles from above because cooling is slower than heating and the PID has enough time to begin to work.

I'd suggest using less aggressive PID values (guessing Kp<7, Ki < 4, Kd<0.5 ) values and make sure PID_FUNCTIONAL_RANGE is set to at least 255/kP so that the PID can transition smoothly from BANG_BANG into PID controllable operation.

On the other hand, if your PID_FUNCTIONAL_RANGE is too wide, overshoot could be cause by integral windup, which could be reduced by reducing the Ki term.

Edited 1 time(s). Last edit at 06/17/2014 01:25PM by DaveX.
Re: Hotend overshoots
June 17, 2014 07:35AM
Quote
DaveX
You using Marlin? And a heater cartridge?

If you are using a cartridge and you are heating by 3-5C/sec near the operating point, which might be too much for the autotune. You also could reduce the maximum power by

I think this overshoot could be because of a too-small PID_FUNCTIONAL_RANGE in Configuration.h The default is +/-10C per [github.com] -- If you are overshooting by 35C, then I'd think the range should be at least 35C, and your kP term should be a maximum of 255/35=7 or so.

If it is set too tight, then it is BANG-BANG until it hits setpoint-PID_FUNCTIONAL_RANGE, then resets and tries to start the up the PID from zero, and you get odd PID behavior.

If you are heating fast compared to the range, the PID doesn't have time to work, and when you could overshoot SETPOINT+ID_FUNCTIONAL_RANGE and switch into BANG_BANG off mode until it cools off back into range, where it resets the PID internal variables to zero, and then cools further to below setpoint where it the PID starts accumulating some I-term errors. It probably settles from above because cooling is slower than heating and the PID has enough time to begin to work.

I'd suggest using less aggressive PID values (guessing Kp<7, Ki < 4, Kd<0.5 ) values and make sure PID_FUNCTIONAL_RANGE is set to at least 255/kP so that the PID can transition smoothly from BANG_BANG into PID controllable operation.

On the other hand, if your PID_FUNCTIONAL_RANGE is too wide, overshoot could be cause by integral windup, which could be reduced by reducing the Ki term.

Thanks for the answers.

1) I use Marlin and also I use a heater cartridge (I don't know the voltage or watt values of the heater cartridge). You have mentioned about reducing the maximum power but your sentence seems to be incomplete. Should I reduce the PID_MAX value to reduce maximum power? Is there an inconveniance in reducing this value?

2) Right now I am away from the computer with access to the firmware so I am unable to check the PID_FUNCTIONAL_RANGE. I'll check the value. I want to be sure that I understand correctly what it means. Your definitions are very helpful and and I think I can grasp the meaning of this function now: So, if this value is set to 10 and I want to reach a temperature of 220 degrees on the nozzle, the heater cartridge will opereate at full power until it reaches 210 degrees, then it will go to PID mode, which has more control. So, it is like operating in bang-bang mode until you reach the functional range limit, where it reverts to PID. So, if my cartridge is heating very fast, 10 degrees doesn't provide enough time for cooling down and it overshoots. So, setting this value to the amount of overshoot will help me reaching the desired target. Did I understand this function correctly?

3) Do you have a link explaining (in simple terms if possible) what are Kp, Ki and Kd values used for?
Re: Hotend overshoots
June 17, 2014 01:20PM
Here's an update on what I did:

I've checked PID_FUNCTIONAL_RANGE and it was set at 10 as DaveX mentioned. I've set it at 35. Tried to run the autotune which failed again (overshot by 35 degrees). So, I've tried to lower PID_MAX and BANG_MAX values to half of their original settings (original=255, set value=128). This helped a lot, as I have been able to run the autotune. It only overshot by 4-5 degrees while autotuning and gave me PID values.I wrote these values to EPROM and gave a command to set the hotend at 220 degrees to be sure that it was working as intended. I was quite surprised to see that it was still going past the desired temperature point by 20 degrees. At that point I was quite disappointed, as in theory I couldn't understand why it didn't work. I decided to use lower PID_MAX and BANG_MAX values (65). Autotune was sucessful (2-3 degrees overshot). I've inserted the suggested PID values and gave the command to set the hotend at 220. This time, it overshot by only 3-4 degrees and stabilized. So, I am happy to announce that it is working as intended right now.However these very low PID_MAX and BANG_MAX values suggest that I might have a wrong type of heater cartridge. Is it overpowered?
Re: Hotend overshoots
June 17, 2014 02:58PM
I edited my text above to add: "You also could reduce the maximum power by (ETAsmiling smiley reducing BANG_MAX or PID_MAX from 255 (see around [github.com] ) depending on whether you want to limit the behavior on the way up into PID_FUNCTIONAL_RANGE or within the PID controller."

Quote
drmaestro
Here's an update on what I did:

I've checked PID_FUNCTIONAL_RANGE and it was set at 10 as DaveX mentioned. I've set it at 35. Tried to run the autotune which failed again (overshot by 35 degrees). So, I've tried to lower PID_MAX and BANG_MAX values to half of their original settings (original=255, set value=128). This helped a lot, as I have been able to run the autotune. It only overshot by 4-5 degrees while autotuning and gave me PID values.I wrote these values to EPROM and gave a command to set the hotend at 220 degrees to be sure that it was working as intended. I was quite surprised to see that it was still going past the desired temperature point by 20 degrees. At that point I was quite disappointed, as in theory I couldn't understand why it didn't work. I decided to use lower PID_MAX and BANG_MAX values (65). Autotune was sucessful (2-3 degrees overshot). I've inserted the suggested PID values and gave the command to set the hotend at 220. This time, it overshot by only 3-4 degrees and stabilized. So, I am happy to announce that it is working as intended right now.However these very low PID_MAX and BANG_MAX values suggest that I might have a wrong type of heater cartridge. Is it overpowered?

Autotune bypasses PID_FUNCTIONAL_RANGE so changing it won't fix Autotune overshooting, but the lowering of PID_MAX slowed the heating enough for autotune to notice it. (See around [github.com] for the code)

The remaining overshoot is likely due to some level of "integral windup", which could be reduced by lowering your kI term some.

There is [reprap.org] , but for simple I think the PID parameters are easiest to understand if you can think about them with proper units: they just convert the proportional, integral and derivative error measurements into output units, and the output units are in n/255 fractional units of full scale output.

Practically, if you have a 40W cartridge heater, each 'count' of output is worth 1/255*40W, or 0.15W of power. With a PID_MAX==65, this limits your cartridge to about 10W maximum.

The Kp term is in units of counts/degreesC of error, so the at setpoint-35C, the error is 32C, so with Kp==7counts/C , then 35C*7counts/C=245 counts, or 245/255*40W=38W, but the sum of the various terms is limited to your PID_MAX=65. Maybe you should limit the PID_FUNCTIONAL_RANGE to PID_MAX/Kp instead of the 255/Kp I told you above, because having a too-wide range can cause "integral windup" form the Ki term....

The Ki term is in units of counts/(C*s) and converts the area under the temperature curve from when the PID initializes, into counts. If you were rising by about 4C/s at 40W, then you might be rising by about 1C/s with 10W, and the area of the triangle from SP-35 to SP might be an integrated error of 35seconds * 35C / 2 = or 612.5 degreeC-seconds, which is then converted into counts by Ki (I assumed Ki=4 above) so 4*612=2450 counts (or 384Watts), which gets clamped to INTEGRAL_DRIVE_MAX/Ki = 255/4=63C*s or 63Cs/255*4counts/Cs*40W=40W within the PID routine (see [github.com]) and further by PID_MAX in the summing part of the routine. The integral cannot start reducing itself until you overshoot, so this contribution is maxxing out against the 10W limit until the process overshoots.

The Kd term is in units of counts/(C/s) which projects the slope of the curve into the future and converts it into a penalty in counts to take away from the output, anticipating future rise. With the low Kd=0.5 I guessed, times the 1C/s rise I am also guessing, 0.5*1=0.5 counts, which is effectively a zero watt penalty. if Kd were bigger than 0.5, it could project the slope further in the future and reduce the output accordingly. Kd=63counts/(C/s) would be too much-- a 1C/s slope would reduce the output by 63 counts or 63/255*40W=10W, completely offsetting the proportional term and shutting down the power at the beginning.

With my guessed numbers, the system seems destined to produce overshoot like you see. I think I'd advise resetting your PID_FUNCTIONAL_RANGE to your chosen PID_MAX/Kp, so you get a smooth transition at SetPoint-PID_FUNCTIONAL_RANGE, and the integrator can start from zero at the time the proportional term begins to taper off from full power. You could try adjusting INTEGRAL_DRIVE_MAX down some, but that could make the system 'droop' if if you actually need more than INTEGRAL_DRIVE_MAX/255*40W to maintain temperature. I think it is better to use something like [github.com] but I haven't tested it much.

Balancing the Config file parameters against the Kp, Ki, and Kd parameters to get textbook behavior is overly confusing.

As for overpowered? A properly-tuned PID should be able to handle a 40W heater just fine, but it needs a wide enough range and small enough parameters to do it properly. Maybe the autotune would work fine with a fast heater by using a higher upper temperature limit at [github.com] but a 35C+ or more overshoot during the autotune process could be dangerous.

What values did the autotune end up giving you?

Edited 3 time(s). Last edit at 06/17/2014 04:01PM by DaveX.
Re: Hotend overshoots
June 17, 2014 03:45PM
Quote
DaveX
I edited my text above to add: "You also could reduce the maximum power by (ETAsmiling smiley reducing BANG_MAX or PID_MAX from 255 (see around [github.com] ) depending on whether you want to limit the behavior on the way up into PID_FUNCTIONAL_RANGE or within the PID controller."

Quote
drmaestro
Here's an update on what I did:

I've checked PID_FUNCTIONAL_RANGE and it was set at 10 as DaveX mentioned. I've set it at 35. Tried to run the autotune which failed again (overshot by 35 degrees). So, I've tried to lower PID_MAX and BANG_MAX values to half of their original settings (original=255, set value=128). This helped a lot, as I have been able to run the autotune. It only overshot by 4-5 degrees while autotuning and gave me PID values.I wrote these values to EPROM and gave a command to set the hotend at 220 degrees to be sure that it was working as intended. I was quite surprised to see that it was still going past the desired temperature point by 20 degrees. At that point I was quite disappointed, as in theory I couldn't understand why it didn't work. I decided to use lower PID_MAX and BANG_MAX values (65). Autotune was sucessful (2-3 degrees overshot). I've inserted the suggested PID values and gave the command to set the hotend at 220. This time, it overshot by only 3-4 degrees and stabilized. So, I am happy to announce that it is working as intended right now.However these very low PID_MAX and BANG_MAX values suggest that I might have a wrong type of heater cartridge. Is it overpowered?

Autotune bypasses PID_FUNCTIONAL_RANGE so changing it won't fix Autotune overshooting, but the lowering of PID_MAX slowed the heating enough for autotune to notice it. (See around [github.com] for the code)

The remaining overshoot is likely due to some level of "integral windup", which could be reduced by lowering your kI term some.

There is [reprap.org] , but for simple I think the PID parameters are easiest to understand if you can think about them with proper units: they just convert the proportional, integral and derivative error measurements into output units, and the output units are in n/255 fractional units of full scale output.

Practically, if you have a 40W cartridge heater, each 'count' of output is worth 1/255*40W, or 0.15W of power. With a PID_MAX==65, this limits your cartridge to about 10W maximum.

The Kp term is in units of counts/degreesC of error, so the at setpoint-35C, the error is 32C, so with Ki==7counts/C , then 35C*7counts/C=245 counts, or 245/255*40W=38W, but the sum of the various terms is limited to your PID_MAX=65. Maybe you should limit the PID_FUNCTIONAL_RANGE to PID_MAX/Kp instead of the 255/Kp I told you above, because having a too-wide range can cause "integral windup" form the Ki term....

The Ki term is in units of counts/(C*s) and converts the area under the temperature curve from when the PID initializes, into counts. If you were rising by about 4C/s at 40W, then you might be rising by about 1C/s with 10W, and the area of the triangle from SP-35 to SP might be an integrated error of 35seconds * 35C / 2 = or 612.5 degreeC-seconds, which is then converted into counts by Ki (I assumed Ki=4 above) so 4*612=2450 counts (or 384Watts), which gets clamped to INTEGRAL_DRIVE_MAX/Ki = 255/4=63C*s or 63Cs/255*4counts/Cs*40W=40W within the PID routine (see [github.com]) and further by PID_MAX in the summing part of the routine. The integral cannot start reducing itself until you overshoot, so this contribution is maxxing out against the 10W limit until the process overshoots.

The Kd term is in units of counts/(C/s) which projects the slope of the curve into the future and converts it into a penalty in counts to take away from the output, anticipating future rise. With the low Kd=0.5 I guessed, times the 1C/s rise I am also guessing, 0.5*1=0.5 counts, which is effectively a zero watt penalty. if Kd were bigger than 0.5, it could project the slope further in the future and reduce the output accordingly. Kd=63counts/(C/s) would be too much-- a 1C/s slope would reduce the output by 63 counts or 63/255*40W=10W, completely offsetting the proportional term and shutting down the power at the beginning.

With my guessed numbers, the system seems destined to produce overshoot like you see. I think I'd advise resetting your PID_FUNCTIONAL_RANGE to your chosen PID_MAX/Kp, so you get a smooth transition at SetPoint-PID_FUNCTIONAL_RANGE, and the integrator can start from zero at the time the proportional term begins to taper off from full power. You could try adjusting INTEGRAL_DRIVE_MAX down some, but that could make the system 'droop' if if you actually need more than INTEGRAL_DRIVE_MAX/255*40W to maintain temperature. I think it is better to use something like [github.com] but I haven't tested it much.

Balancing the Config file parameters against the Kp, Ki, and Kd parameters to get textbook behavior is overly confusing.

As for overpowered? A properly-tuned PID should be able to handle a 40W heater just fine, but it needs a wide enough range and small enough parameters to do it properly. Maybe the autotune would work fine with a fast heater by using a higher upper temperature limit at [github.com] but a 35C+ or more overshoot during the autotune process could be dangerous.

What values did the autotune end up giving you?

Thank you very much sir, this was the best explanation of the PID concept I have ever seen. I'll need some time to digest it as I don't have a professional background in mathematics or physics. The PID values suggested by autotune are as follows:
P:8.66 I:0.29 and D:65.44
Re: Hotend overshoots
June 17, 2014 04:53PM
Thanks.

Another thing that is essential to understanding PID controllers is that once you finally reach steady state, all of the output power is coming from the kI term times the integrated error. At steady state, the MeasuredValue = SetPoint, so error=MeasuredValue-SetPoint=0C, and the error isn't changing, so the slope is 0C/s.

If you need 8W to maintain temperature at the SetPoint, then it is all coming from the kI*IntegratedError term, so 8W*255counts/40W=51 counts, and by 51counts= 0.29counts/(C*s)*integratedError, the IntegratedError=51/0.29=175 C*s. If you are increasing at about 1C/s, the bulk of the area under the curve, ignoring curves and corners, could come from the last 18 seconds when it rises 18 degrees. (ETA: If you were more than 18C away, and rising at 1C/s, the integratedError*Ki would be more than 51counts, or 8W, and you'd need a little overshoot to trim the integratedError back down.

Edited 1 time(s). Last edit at 06/17/2014 07:02PM by DaveX.
Re: Hotend overshoots
July 05, 2014 04:17AM
Hi,

I have a new problem on the subject. I have added PWM fans for printing with PLA. When I use them, my hot end cannot maintain its temperature. I print at 185 degrees and when I use the fan, even at 20%, the temperature drops below 180 degrees in 40-50 seconds and triggers cold extrusion prevention, which practically halts the extrusion of the plastic. AI assume this happens because I have limited PID-MAX values and the hotend cannot react fast enough to preserve its temperature. If I restore original values, I won't be able to run the PID autotune. It is also possible that running with max values and fans on, the temperature will fluctuate wildly as it tries to stabilize. What should I do? Should I change the heater catridge with a 30 watt version?
Re: Hotend overshoots
July 07, 2014 02:14AM
Does it get back up to temperature with the current PID_MAX, or does running the fans max out the heater at PID_MAX and then then temp fades to some lower than setpoint steady-state? If the former, maybe try coming to temperature with the fans on. If the latter, rather than the PID not reacting fast enough, it may be more that the power in is less than the power required to hold temperature and you would need to up your PID_MAX.

I think you could record your working PID values and re-use them with a larger PID-MAX. The PID values are not scaled by PID_MAX, but are in counts/C, counts/(C*s) and counts/(C/s), with the PID_MAX constraint imposed afterwards.

If you are still using a PID_MAX=65, your 40W heater is limited to 10W max, so changing to a 30W with the same PID_MAX 65 would do a 3/4scaling and deliver only 7.6 W and be even slower, or you could scale up PID_MAX bu 4/3 to 86 to get the same 10.6W with a 30W (and you have to multiply your PID values by 40/30) to get the same behavior. It would also give you 4/3 more resolution: (0 to 85/255) >>2=43 settings rather than to 65/255)>>2=32 settings currently, but that isn't a big deal.

If you are doing PLA at 185, and are only going to safely autotune far from the temperature limits of your hotend, you could increase the 20C guard value at [github.com]

You could also try tuning with the fans on, since they have such a big effect on the heat transfer away from the system,
Re: Hotend overshoots
July 08, 2014 01:14PM
Quote
DaveX
Does it get back up to temperature with the current PID_MAX, or does running the fans max out the heater at PID_MAX and then then temp fades to some lower than setpoint steady-state? If the former, maybe try coming to temperature with the fans on. If the latter, rather than the PID not reacting fast enough, it may be more that the power in is less than the power required to hold temperature and you would need to up your PID_MAX.

I think you could record your working PID values and re-use them with a larger PID-MAX. The PID values are not scaled by PID_MAX, but are in counts/C, counts/(C*s) and counts/(C/s), with the PID_MAX constraint imposed afterwards.

If you are still using a PID_MAX=65, your 40W heater is limited to 10W max, so changing to a 30W with the same PID_MAX 65 would do a 3/4scaling and deliver only 7.6 W and be even slower, or you could scale up PID_MAX bu 4/3 to 86 to get the same 10.6W with a 30W (and you have to multiply your PID values by 40/30) to get the same behavior. It would also give you 4/3 more resolution: (0 to 85/255) >>2=43 settings rather than to 65/255)>>2=32 settings currently, but that isn't a big deal.

If you are doing PLA at 185, and are only going to safely autotune far from the temperature limits of your hotend, you could increase the 20C guard value at [github.com]

You could also try tuning with the fans on, since they have such a big effect on the heat transfer away from the system,

Thanks for all the info DaveX. I increased the PID-MAX values to their original value (255). I also increased the 20C guard value to 35C. I ran the PID autotune without the fans to see if it would be able to perform the test. It overshot by 34 degrees in the first cycle but as the guard was 35 degrees it didn't stop. The following cycles don't operate the heater at its max value so it has been able to complete the test (the following cycles overshot by 4-5 degrees). The PID values were very similar to the ones I got with PID-MAX at 65, so you are absolutely right about not needing to change PID values when changing PID_MAX value. Then I've turned on the fan at 100% and set the hotend at 200 degrees. It overshot by 15 degrees, then decreased to minus 10-15 degrees, overshot again by 4-5 degrees and then minus 2-3 degrees then it was held constant at 200 degrees. So, the hotend requires 3-4 temperature swings before it can stabilize. This is quite problematic for me as my printing temperature seems to be very low (185 degrees) and it is very close to cold extrusion limit (180 degrees). I have tried printing a small object, with the fan maximum set at 70%. I was able to print the object but in the first layer the print stopped momentarily due to cold extrusion prevention but was able to continue later as the hotend stabilized. The hotend can maintain its temperature but it needs a few swings. I still don't understand what is the problem here. Also, I was wondering if I can change the cold extrusion limit to a lower value. It seems to me that the values recorded are too low (I am printing with ColorFabb PLA filament and the suggested temperature is between 210-230 degrees, while I can print at 185 degrees, so I was wondering if there is a problem with the thermistor).
Re: Hotend overshoots
July 08, 2014 01:19PM
Also, I have another question/idea: The print qulity with the fan on is better than without the fan so I'd realy like to be able to use it. But I need the printer to start printing whenever it is stabilized. So, can I modify th G code to allow this? I need the printer to wait a few cycles before it starts printing (instead of starting immediately when it hits the target value for the first time), so the temperature will have enough time to stablize.
Re: Hotend overshoots
July 08, 2014 05:11PM
What disturbance is initiating the cold-extrusion-prevention-triggering swings? Is it the fans coming on or is it the extrusion starting? Or reading again, does it only swing excessively on the initial stabilization after the M104/M109 S185 ? For the first, I'd add a G4 dwell after the fans to let the system accommodate the change in airflow. For the second, I'd experiment with the AUTOTEMP (https://github.com/ErikZalm/Marlin/blob/Marlin_v1/Marlin/Configuration_adv.h#L31 ) (I haven't used it).

If it is the third, I might try a couple things: tuning manually with more conservative values than the autotune recommends (1/2 or 1/3 of the Kp, 1/2 of the Ki, etc... See [github.com] for some suggestions); making the settling detection more strict with TEMP_RESIDENCY_TIME or TEMP_HYSTERESIS ( see [github.com] )

If you print well at 185 as measured by your thermistor, moving the cold extrusion limit down below 180 makes sense. I'd set it very low, and then experiment to figure out what temperature of extrusion stalls your extruder & set it accordingly. You might want to think of the cold extrusion prevention as a protection against operator error (i.e. don't run the engaged extruder with the heaters off) rather than a print-interrupting headache.

Maybe the easiest thing to try would be to insert a G4 dwell to allow the temperature to stabilize a bit more after the M109 or M104/M116 completes.

Edited 1 time(s). Last edit at 07/09/2014 09:49AM by DaveX.
Re: Hotend overshoots
July 08, 2014 11:01PM
You could also try insulating the heat block with ceramic wrap. That would help keep the heat in and should help stablize you heating curve.
Re: Hotend overshoots
July 15, 2014 02:29PM
I have partially resolved my problem. One of my fans was mounted with a wrong angle and it was blowing directly to the aluminium block instead of the printed object. It really had a lot of impact on the temperature. Now that I have corrected it, the temperature drops only a few degrees when the fans turn on and returns promptly to its set value (the hotend still overshoots and swings in the beginning but I guess I'll have to learn to live with it).

Edited 2 time(s). Last edit at 07/15/2014 02:30PM by drmaestro.
Re: Hotend overshoots
July 19, 2014 11:22AM
Hi all,

It is a perfect technical staff above. But I go through your discussion, I think you are all ignore the most important thing is: what's the formula meaning?

I can brief explain here for your reference:

1. Kp (counts/C): means the heating process control, e.g. increase temp from 25C to 220C for hotend, you need more power (current, or PID_MAX etc... but the same meaning).

2. Ki (counts/C/sec): means the variation base on past time period, e.g. you can measure the temp, measure the time consumption, it is past data you can measure.
in Marlin files Ultimaker setting: Kp = 22.2, Ki = 1.08, so in brief: time = Kp / Ki = 22.2 (counts/C) / 1.08 (counts/C/sec) = 20.5 sec
in physics explanation you heat hotend in 20.5 sec and reach your target setting temp, your previous predict is correct.

3. Kd (counts/C*sec): means the future predict base on past measured data.
in Marlin files Ultimaker setting: Kp = 22.2, Kd = 114, so in brief: time = Kd / Kp = 114 (counts/C*sec) / 22.2 (counts/C) = 5.1 sec
in physics explanation you will heat hotend in 5.1 sec to meet target setting temp in future, it is a predict time base on past measurement.

so PID look like this cycle:

P I D
fix and do something --> time consume and measure --> pridict future time consume and future measure

heating cycle looks like this : 25C --> 50C --> 80C -- 135C > ... --> 220C +/-5C

don't worry how many times to complete the whole cycle, machine can do it.

That's all... correct me if I'm wrong.

Henry
Sorry, only registered users may post in this forum.

Click here to login