Arduino Uno, AD595 thermocouple & 4-15VDC relay reflow oven project

Hi,
I'm just about ready to fire up my reflow oven project. Before I do I have a blind spot that needs clarification.

Do I set the temperature & timer knobs on the oven to FULL before running the Arduino code with a reset?

My thinking is yes, I need to do that, but confirmation would be appreciated.

Thanks for your help.

seems like two questions.

temperature should be set to the desired temperature
timer should not be set.

The oven will be at room temperature and when you energize the heater, the heating element will turn on and rise up to whatever temperature it can. as this unit heats, there will be radiant heat that will warm the surface of the internals of the oven. and there will be convection (heat to air) that will warm the top of the oven, on down.
there will be conduction heat, or the metal inside the oven heating the outside parts because they are connected.

after a few minutes, the heater element will begin to cycle. it will start to cycle on and off as the oven comes to equilibrium of temperature. the oven will radiate some heat, so the heater element will continue to operate.

as the oven starts to reach equilibrium of temperature, the heater will cycle. once it does reach temperature the heater will have a very rhythmic on/of cycle. it is at that point the unit is stabilized.

you could write a loop that looks at the coil cycle time. once it becomes repetitive, the coil is keeping temperature and not increasing temperature. you could have a beep or a light that signals the temperature is reached. if you have a temperature display, you will have visual confirmation.

now for your second half of the question.
the timer starts when you place your parts in the oven.

Do you mean the maximum temperature of the reflow cycles?

This is the arduino code that I intend to use;

/*

Toaster Oven SMT soldering control

Adrian Bowyer

2 November 2011

Licence: GPL

*/

const int heatPin = 13; // the number of the LED pin. This also controls the heater
int heatState = LOW; // heatState used to set the LED and heater
long previousMillis = 0; // will store last time LED/heater was updated
const long interval = 1000; // interval at which to sample temperature (milliseconds)
const int tempPin = 0; // Analogue pin for temperature reading
long time = 0; // Time since start in seconds
bool done=false; // Flag to indicate that the process has finished

// The temperature/time profile as {secs, temp}
// This profile is linearly interpolated to get the required temperature at any time.
// PLEN is the number of entries
#define PLEN 6
long profile[PLEN][2] = { {0, 15}, {120, 150}, {220, 183}, {280, 215}, {320, 183}, {350, 0} };

// Linearly interpolate the profile for the current time in secs, t

int target(long t)
{
if(t <= profile[0][0])
return profile[0][1];
if(t >= profile[PLEN-1][0])
{
done = true; // We are off the end of the time curve
return profile[PLEN-1][1];
}
for(int i = 1; i < PLEN-1; i++)
{
if(t <= profile*[0])*
_ return (int)(profile[i-1][1] + ((t - profile[i-1][0])(profile[1] - profile[i-1][1]))/_
_ (profile[0] - profile[i-1][0]));
}
return 0;
}
// Measure the actual temperature from the thermocouple*
int temperature()
{
return ( 5.0 * analogRead(tempPin) * 100.0) / 1024.0;
}
// Get the show on the road
void setup() {
* pinMode(heatPin, OUTPUT);
pinMode(tempPin, INPUT);
Serial.begin(9600);
Serial.println("\n\n\nTime, target, temp");
done = false;
}
// Go round and round*
void loop()
{
* int t;
unsigned long currentMillis = millis();*_

* if(currentMillis - previousMillis > interval)*
* {*
* previousMillis = currentMillis; // set next time*

* // Get the actual temperature*

* t = temperature();*

* // One second has passed*

* time++; *

* // Find the target temperature*

* int tg = target(time);*

* // Simple bang-bang temperature control*

* if (t < tg)*
* {*
* heatState = HIGH;*
* } else*
* {*
* heatState = LOW;*
* }*
* // Turn the heater on or off (and the LED)*
* digitalWrite(heatPin, heatState);*

* // Keep the user amused*
* if(done)*
* {*
* Serial.print((char)0x07); // Bell to wake the user up...*
* Serial.print((char)0x07);*
* Serial.print("FINISHED ");*
* }*
* Serial.print(time);*
* Serial.print(", ");*
* Serial.print(tg);*
* Serial.print(", ");*
* Serial.println(t);*
* }*
}
---------------------------------------------------------------------------------------------------------------
Thanks for your help
dalpets

dave-in-nj:
.........................timer should not be set............................etc

That turns out to not be correct, friend, at least on my oven. :slight_smile: . My sketch now works when manually setting the timer.

dalpets