PID tuning - what fun!

some of you may have seen the reflow oven I'm working on
it's ok but not great
I'm trying to get to grips with PID tuning

there are basically 4 temperature ramps
each has different target temperatures (clearly)

I'm tinkering with the PID settings for each ramp
then had a thought (it happens once in a while)

as well as setting new Kp, Ki and Kd, should I also initialise the PID software
something like setting pidIterm to zero?
or will it all come out in the wash after a while?

cheers
Mike

I would be surprised that you need different PID tuning requirements for each of the target temperatures. The tuning is usually just to get a stable response for the system as a whole (heating element power, system heat loss, system heat dissipation rate when turned off, etc. One set of tuning rates is probably the best route to go and then issue setpoint changes gradually if you want to slow down the ramping rate from one value to the next. So setpoint change managment might be a better way to go then trying to build in the ramping timing rate for each 'step' via PID tuning values?

Lefty

ah fair cop guv
gave that a try finished up with this profile
doesn't look too shabby

opinions?

cheers
Mike

profile8.jpg

Looks pretty good.
How do the hold times compare? They are a little hard to read on my laptop.

Altera an353.pdf (258 KB)

Is Ki zero?

Is the green line output?

mmcp42:
gave that a try finished up with this profile
doesn't look too shabby

opinions?

Very nice profile control! It's matches my default profile that I set up at work for un-profiled boards. Works great for all but two of our boards. One is very thin and the other is a 16 layer board with mulitple ground planes. They require special profiles.

How do you profile your boards if you need to?

CrossRoads:
Looks pretty good.
How do the hold times compare? They are a little hard to read on my laptop.

time above solder melt point is about 60 seconds; target is 60-150 seconds
I'd like to improve preheat ramp time as it takes 80 seconds to get to 150 degrees
the target was 30 seconds!

Ki is 0.1; do you think I should increase it further?

yup!

mstanley:
...
Very nice profile control! It's matches my default profile that I set up at work for un-profiled boards. Works great for all but two of our boards. One is very thin and the other is a 16 layer board with mulitple ground planes. They require special profiles.

How do you profile your boards if you need to?

er - haven't hit that problem yet!
most of my boards are pretty small 1" by 1" up to 2" by 2"
I guess I would do a dry run with a spare board

what do you do?

cheers
Mike

It looks like you have too much thermal mass for your size of heater since there is substantial lag even with the heater fully on.. And you need a method of cooling that mass when ramping down - say a fan blowing ambient air.

jackrae:
It looks like you have too much thermal mass for your size of heater since there is substantial lag even with the heater fully on.. And you need a method of cooling that mass when ramping down - say a fan blowing ambient air.

guilty as charged!
fan for the cooling stage is next on the list
insulating the oven may help too

oven is 1kW, 9 litres
but I have blanked off the lower 2/3 so effective heated volume is around 3 litres
I also moved all the heating elements to the top as well

You also need a bit more integral action as evident by the "controlled" deviation at the high temperature. Integral action is designed to reduce off-set error based upon how long the error exists. It is evident that you are still applying heat even with the deviation existing.

CrossRoads:
Altera an353.pdf

just noticed the attachment in your post
thanks for that :slight_smile:

jackrae:
You also need a bit more integral action as evident by the "controlled" deviation at the high temperature. Integral action is designed to reduce off-set error based upon how long the error exists. It is evident that you are still applying heat even with the deviation existing.

yup I have upped the Ki value and it has improved
also using the same values thoughout now
simplifies the code - always a bonus

more pretty curves later
cheers
Mike