dc42 firmware - nozzle heater PID April 29, 2015 07:26AM |
Registered: 10 years ago Posts: 300 |
Re: dc42 firmware - nozzle heater PID April 29, 2015 08:11AM |
Registered: 9 years ago Posts: 177 |
Quote
For manual adjustments:
if it overshoots a lot and oscillates, either the integral gain needs to be increased or all gains should be reduced
Too much overshoot? Increase D, decrease P.
Response too damped? Increase P.
Ramps up quickly to a value below target temperature (0-160 fast) and then slows down as it approaches target (160-170 slow, 170-180 really slow, etc) temperature? Try increasing the I constant.
Re: dc42 firmware - nozzle heater PID April 29, 2015 08:17AM |
Registered: 10 years ago Posts: 14,672 |
Re: dc42 firmware - nozzle heater PID April 29, 2015 11:01AM |
Registered: 9 years ago Posts: 177 |
Re: dc42 firmware - nozzle heater PID April 29, 2015 11:14AM |
Registered: 10 years ago Posts: 14,672 |
Re: dc42 firmware - nozzle heater PID April 30, 2015 02:58PM |
Registered: 9 years ago Posts: 19 |
Re: dc42 firmware - nozzle heater PID April 30, 2015 03:25PM |
Registered: 10 years ago Posts: 14,672 |
Quote
TH57
I too have a slow hotend.
Following advice from a previous post I think I need to do:
M301 P10 S1.1
And perhaps reduce the S value if it overshoots a bit?
My question:
Do I put this command into my config file?
Re: dc42 firmware - nozzle heater PID May 01, 2015 09:41AM |
Registered: 10 years ago Posts: 300 |
Re: dc42 firmware - nozzle heater PID May 21, 2015 12:50PM |
Registered: 13 years ago Posts: 1,611 |
SENDING:M301 Heater 1 P:10.00 I:0.100 D:100.00 T:0.40 S:1.00 W:180.0 B:30.0
SENDING:M301 H1 Heater 1 - P:20.000000 I:0.500000 D: 100.000000
Re: dc42 firmware - nozzle heater PID May 21, 2015 01:11PM |
Registered: 13 years ago Posts: 1,611 |
Connecting... Printer is now online. >>>M301 SENDING:M301 Heater 1 P:10.00 I:0.100 D:100.00 T:0.40 S:1.00 W:180.0 B:30.0 >>>M301 H1 P20 I0.5 D100 SENDING:M301 H1 P20 I0.5 D100 >>>M301 SENDING:M301 Heater 1 P:20.00 I:1.000 D:50.00 T:0.40 S:1.00 W:180.0 B:30.0Note I sent P=20 I=0.5 D=100, but it reports as if it has double 'I' and halved 'D'! It does this for any value I put in. To get the 1.04 PID values, I have to send:
>>>M301 H1 P20 I0.25 D200 SENDING:M301 H1 P20 I0.25 D200 >>>M301 SENDING:M301 Heater 1 P:20.00 I:0.500 D:100.00 T:0.40 S:1.00 W:180.0 B:30.0Is it reporting the wrong settings, or is it doing a different calculation?
Re: dc42 firmware - nozzle heater PID May 21, 2015 03:31PM |
Registered: 10 years ago Posts: 14,672 |
Quote
droftarts
I've had a couple of customers report heater timeout issues, since firmware 1.09. I think Christian rolled in dc42's PID changes with that firmware.
Quote
droftarts
The feedback I've had usually points to a heater cartridge that has a bit higher resistance than normal; one customer that was experiencing heater timeouts had a heater cartridge resistance of around 5 ohms.
The current default PID settings in v1.09 are:
SENDING:M301 Heater 1 P:10.00 I:0.100 D:100.00 T:0.40 S:1.00 W:180.0 B:30.0
The default PID settings in v1.04 were:
SENDING:M301 H1 Heater 1 - P:20.000000 I:0.500000 D: 100.000000
These seemed to work well for most people. Is there any problem setting the PID back to the 1.04 values? Do the other parameters - S (Scaling, I think), W (?) and B (?) matter?
Quote
droftarts
Also, something slightly odd...
Re: dc42 firmware - nozzle heater PID May 22, 2015 06:45AM |
Registered: 10 years ago Posts: 780 |
Re: dc42 firmware - nozzle heater PID May 22, 2015 08:27AM |
Registered: 10 years ago Posts: 665 |
Re: dc42 firmware - nozzle heater PID May 22, 2015 12:59PM |
Registered: 13 years ago Posts: 1,611 |
Quote
dc42
Nice of you to credit me with some of the code in 1.09, even if only in a negative context! I put a lot of work into RepRapFirnware, much of which made its way into 1.09 via zpl's fork (i.e. most of the changes listed at [github.com] that I don't attribute to zpl or RRP), but the 1.09 announcement at [reprappro.com] doesn't mention my contribution at all.
Quote
dc42
Let me explain the reasons for the changes I made...
Quote
dc42
RRP made a change several versions ago, which was to allow the PID sample/adjust frequency to be configured via an M code. This means that the I and D terms need to be adjusted according to the PID interval when the sample frequency is changed, and all getting and setting of the I and D terms done in terms of some normalised frequency. The RRP code failed to take account of this. I'm sure I tested the changes I made to allow for this at the time; however it looks like the adjustment is not being done correctly in 1.09 (and my fork of 1.09 shows the same problem).
if (gb->Seen('I')) { pp.kI = gb->GetFValue() / platform->HeatSampleTime(); seen = true; } if (gb->Seen('D')) { pp.kD = gb->GetFValue() * platform->HeatSampleTime(); seen = true; }and then
reply.printf("Heater %d P:%.2f I:%.3f D:%.2f T:%.2f S:%.2f W:%.1f B:%.1f\n", heater, pp.kP, pp.kI, pp.kD, pp.kT, pp.kS, pp.pidMax, pp.fullBand);the latter should be
reply.printf("Heater %d P:%.2f I:%.3f D:%.2f T:%.2f S:%.2f W:%.1f B:%.1f\n", heater, pp.kP, pp.kI*platform->HeatSampleTime(), pp.kD/platform->HeatSampleTime(), pp.kT, pp.kS, pp.pidMax, pp.fullBand);