This is a very easy job for an Arduino. It is nice you have a 328 but a 168 could easily do the job as well.
Here's a simple sketch I wrote that is the start of a differential temperature controller:
I implemented a lookup table using an array based on the AD595 datasheet values and do a linear interpolation between the points - there's lots of other ways to do it.
You'll just need to change up the main loop. Use the millis() function and fire off your Serial.print statements after 60101000 = 600000 milliseconds have elapsed, that's what long integers are for!
BTW lcd.print(223) will give you a degree character on your display.
Have fun.
/* AD595 thermocouple temperature display */
#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2); // 2 lines on the display
#define AD595_PIN 1 // analog pin 1
//Function for Temp(C) depending on Voltage (milliamp)
#define SIZE_FTV_TBL 32
int ftv[32][2] = {
{-20,-189},
{-10,-94},
{0,3},
{10,101},
{20,200},
{25,250},
{30,300},
{40,401},
{50,503},
{60,605},
{80,810},
{100,1015},
{120,1219},
{140,1420},
{160,1620},
{180,1817},
{200,2015},
{220,2213},
{240,2413},
{260,2614},
{280,2817},
{300,3022},
{320,3227},
{340,3434},
{360,3641},
{380,3849},
{400,4057},
{420,4266},
{440,4476},
{460,4686},
{480,4896},
{500,5107}
};
float tCel;
void CelsiusToFarenheit(float const tCel, float &tFar)
{
tFar = tCel * 1.8 + 32;
}
void readThermocouple(float &tCel)
{
byte thermoADval = analogRead(AD595_PIN);
int mV = (thermoADval/1023.0) * 5000;
// Serial.print("mV = ");
// Serial.print(mV,DEC);
int i=1;
int C1=0;
int C2=0;
int V1,V2;
for( i=1; (i<32) && C2==0; i++)
{
if (ftv[i][1]>mV)
{
C2 = ftv[i][0];
C1 = ftv[i-1][0];
V1 = ftv[i-1][1];
V2 = ftv[i][1];
}
}
// Serial.print(", ");
if (i==SIZE_FTV_TBL)
tCel = 9999;
else
{
tCel = float(mV-V1)/(V2-V1);
tCel = tCel * (C2-C1) + C1;
}
}
void displayTemp()
{
float tFar;
CelsiusToFarenheit(tCel,tFar);
lcd.clear();
lcd.cursorTo(1,0);
lcd.printIn("TCouple=");
char buf[6];
itoa(int(tCel),buf,10);
lcd.printIn(buf);
lcd.print('C');
lcd.print('/');
itoa(int(tFar),buf,10);
lcd.printIn(buf);
lcd.print('F');
Serial.print("Temp: ");
Serial.print(tCel,DEC);
Serial.print("C, ");
Serial.print(tFar,DEC);
Serial.println('F');
}
void setup()
{
Serial.begin(57600);
pinMode(22, OUTPUT);
lcd.init();
lcd.clear();
delay(10);
}
boolean pump_on = false;
boolean status_change = true;
void loop()
{
readThermocouple(tCel);
displayTemp();
if (tCel>30)
{ lcd.cursorTo(2,0);
lcd.printIn("PUMP ON");
status_change = !pump_on;
pump_on = true;
}
else
{
status_change = pump_on;
pump_on = false;
}
if (status_change)
digitalWrite(22,pump_on);
delay(1000);
}