I hope this is the correct place to post this.
I am using the PID Beta6 library to control a reflow oven.
The Sensor will be a type K Thermo couple with Maxim MAX 6675 digitiser.
I have copied the PID Sample2. I still need to make more changes. The following is a shell of my code
Init Variable
Init IO
Setup PID
Loop for ever
If (start) Preheat = 1
While (Preheat){
//Set Point Ramp
if(millis()-RampStartTime<90000)
{
Setpoint = ((double)(millis()-RampStartTime))/(90000.0)*150.0;
}
else {Setpoint = 150;
preheat =0;
Soak = 1; }
//Set Tuning Parameters based on how close we are to setpoint
if(abs(Setpoint-Input)>100)pid.SetTunings(6,4,1); //aggressive
else pid.SetTunings(3,4,1); //comparatively moderate
//give the PID the opportunity to compute if needed
Input = analogRead(0);
pid.Compute();
//turn the output pin on/off based on pid output
if(millis()-windowStartTime>4000) windowStartTime+=4000;
if(Output > millis()-windowStartTime) digitalWrite(0,HIGH);
else digitalWrite(0,LOW);
}
While (Soak){
//do soak (150 to 235 in 90 seconds)
//Drop out soak
While (Reflow)
//Hold temp at Reflow ( 235degree)
//Drop out of reflow
While (Cool)
//Turn exhaust fan on
// drop out when cool
Start will be instigated using a PB on an interrupt. Emergency Stop, another interrupt will kill the oven.
This project is at the ideas stage and will develop as I have time to put in it. My oven is quite capable of meet the needs as I simply do control it manually by flicking the top elements on & off for the ramps and temp holding. Actual built story will be posted on my website when that gets up.