Home › Forums › PID Control / Tuning › Setpoint Profiles (for Reflow et al)
-
AuthorPosts
-
OK – sorry – it was on manual, not automatic. A case of RTFM 🙂
@Maddox wrote:
OK – sorry – it was on manual, not automatic. A case of RTFM 🙂
thank you for posting this! you will not be the last person to do this. that is, until I put some logic in the firmware that flips the mode automatically when the profile is started.
so that I don’t forget, I’ve added it as an issue on github.
I loaded the reflow profile you had posted earlier, sent it to the osPID, and ran it:
[profile name, 7 chars max]
3, 100, 0 //step (3) setpoint to (100) and immediately go so the next step
2, 0, 0 //we have no idea where the oven temperature was at the start, so wait (2) until it crosses the setpoint from the previous command (100)
1, 217, 100 //ramp (1) the setpoint to 217 over the next 100 seconds
2,0,0 //because the oven temperature is likely lagging behind the setpoint ramp from the previous step, wait (2) until it actually GETS to 217 before proceeding the next step
1, 245, 20 //ramp (1) the setpoint to 245 over the next 20 seconds
3, 255, 30 //step (3) setpoint to 255 and wait 30 seconds
1, 210, 20 //ramp (1) the setpoint to 210 over the next 20 seconds
3, 75, 30 //step (3) setpoint to 75 and immediately go so the next step
2, 5, 3 //wait (2) for input to be within (5) degrees of the of the last setpoint (75) for (3) seconds before proceeding to the next step (END)http://www.flickr.com/photos/77705680@N06/7118700487/
I haven’t run autotune yet, but I thought I’d get feedback from the more experienced on how this profile looks and any suggestions for tuning and or operation?
I haven’t run autotune yet, but I thought I’d get feedback from the more experienced on how this profile looks and any suggestions for tuning and or operation?
it’s hard to get an idea for how well the tuning parameters are working, since the output is pegged at 100% or 0% for a large portion of the profile. the toaster is giving all it can at it still can’t achieve that heat rate. if you slow down the ramp rates (increase the 3rd number in the rows that begin with “1”,) you’ll be more likely to a) actually achieve the requested setpoint, and b) see the pid moving the output.
it’s hard to get an idea for how well the tuning parameters are working, since the output is pegged at 100% or 0% for a large portion of the profile. the toaster is giving all it can at it still can’t achieve that heat rate. if you slow down the ramp rates (increase the 3rd number in the rows that begin with “1”,) you’ll be more likely to a) actually achieve the requested setpoint, and b) see the pid moving the output.
I’ll try the longer ramp times. On the ramp down (like going from 255 to 210 in 20 seconds, and then to 75), it seems to take a long time for the oven to cool off – I assume a little assist by opening the door is the the common way to address this? When I get everything figured out, I’ll post the details on which oven I used and how I wired it up.
Thanks!!!
3,110,0 //Step (3) setpoint to (110) and Immediately go to next step
1,175,30 //Ramp (1) setpoint to (175) over the next 30 seconds
3,175,10 //Step (3) setpoint to (175) and wait 10 seconds
1,200,30 //Ramp (1) setpoint to (200) over the next 30 seconds
3,200,30 //Step (3) setpoint to (200) and wait 30 seconds
1,230,30 //Ramp (1) setpoint to (230) over the next 30 seconds
3,230,30 //Step (3) setpoint to (230) and wait 30 seconds
3,75,30 //Step (3) setpoint to (75) and wait 30 seconds
I have this profile set up and these were the results
Time Ospid temp TC temp
30 seconds 127 141
1 min 164 172
1.30 min 199 200
2 min 225 219
2.30 min 237 228
3 min 219 214
3.30 min 201 196
4 min 183 186
4.30 171 168
When preheater got motherboard to temp 110 I ran this profile
I got this reading with TC around 3mm from chip i was practising on
One thing I am having issues with is when I select a profile from list in osPID front end and select my com port and then connect I then click send profile but nothing happens. The only way I can get the profile to send and run is to disconnect and connect straight away this then runs 100% without fail. Maybe error in software.One thing I am having issues with is when I select a profile from list in osPID front end and select my com port and then connect I then click send profile but nothing happens. The only way I can get the profile to send and run is to disconnect and connect straight away this then runs 100% without fail. Maybe error in software.
I have seen the same behavior.
http://img826.imageshack.us/i/imagexil.jpg/
http://www.flickr.com/photos/danstrother/5354723924/
I have two pictures one for leaded solder reflow and other lead free
I want to start both from 100oC but coding wouldn’t be one of my strong points any help is appreciatedI have two pictures one for leaded solder reflow and other lead free
What are your PID tuning parameters for the run?
I’ve updated the Setpoint Profile Code for both the firmware and the front-end. 2 things:
-bundled with the front-end I’ve included some useful (*gasp*) profiles: Leaded and RoHS. included out of the box
-the osPID buzzer can now be triggered at any point in the profile. in the default profiles this happens at the end, but you should put the command anywhere.as always, the code can be found http://github.com/ospid
Wanted to add to this thread … not sure if I am doing anything wrong, but I wanted to create a very simple profile for curing special paint for sublimation printing onto metal plate. It’s a simple process – cure in the oven for 20 minutes at 160 deg. C.
So I used this:
Curing // first row is Profile Name
3, 160, 0 // Step Setpoint to 160, wait 0 seconds
2, 0, 0 // Wait for PID Input to cross setpoint
127, 0, 5 // buzz for 5 seconds
3, 160, 1200 // Step setpoint to 160 and wait 20 minutes
3,30,0 // Step setpoing back to 30 and cool down
127, 0, 5 //buzz for 5 seconds
2, 0, 0 //Wait for PID Input to cross setpointSo I uploaded the profile to the unit and put the plates into the oven for curing.
It believe it worked fine for the 20 minutes (I was out of the room at the time) but after the allotted time instead of staying at low temperature, the oven just turned on and stayed on a full power (to 250 deg. C), which was a bit of a disaster for my plate.Is this normal behaviour? Is my file missing something? Is there any command that can be placed into this file that stops the pid and switches everything off? That’s what I need!
What would really really help is some good documentation. I read in other places that you are looking for the right wiki. Why not just put the docs into a pdf and post it on your web site? Keep it simple!
thanks Dominic
Ah I think I have found the answer to my own question.
I hadn’t realized I could select the profile at the bottom of the main menu list. I found that info buried in this thread (it would REALLY help to have a manual!)
My I suggest that on the next release, you move these menus around a bit? I’d suggest placing the menus used most near the top so they are accessed quickly.
Also, is there any room for multiple profiles in EEPROM?
Now that leaves one other thing. I must have been running in manual mode as it had been maintaining the temperature for a while. It just stopped doing so and left the relays on all the time with the temperature soaring from 160 to 250 C. It was quite happy doing so.
Could you add a safety protocol, such that if the controller has lost loop control (say temperature reaches a upper set point or doesn’t change direction after X seconds) then the relays shut off and sound an alarm?
Dom
Dominic
Brett, I’ve used your profile settings below on a project to set an oven to 160C for 20 minutes. At the end of the process the PID stopped controlling and the oven stayed on, baking up to 280C! This fried my work 🙁 I may have done something wrong, and I’ll post the code when I’m at my development machine. However, it got me thinking. Could I suggest to you a new command?
4,<relay state>,<max temp> // stop.
where
elay state> = 0 is with relays held OFF, and 1 is with relays held ON. This would give you flexibility for how people have configured heating, cooling, etc.
<max temp> = 0 | <value. If pid crosses max temp then the device will shut off.You could use this in two ways. if max temp is specified as a real number (e.g. -50.6 or 0.0 or 160) and this command is placed at the beginning of the file, it sets a safety ceiling, i.e., if the PID loses control or some other logic is wrong, the controlled device will shut down safely. If max temp is set to 0 (no decimal points) then it’s used as a stop command at the end of the file.
You may have ways of doing this with existing commands, but without a little more documentation (hint, hint 🙂 ) it’s hard to tell.
A suggestion for the profile file is that you also consider using command words rather than numbers, e.g. step, wait, ramp, stop?
kind regards
Dominic
Dominic, I’m sorry to hear you had profile issues. you’re right. the documentation there is pretty bad. if you attach your profile code, I might be able to spot something.
as far as your suggestions, I think they’re excellent. I’ve gone ahead and added them as an issue on the github
-
AuthorPosts
- You must be logged in to reply to this topic.