Not the cheapest thermocouple device out there but I had one in my kit and connected it to the arduino last night w/ the 1 wire library. Worked like a charm.
You can use any tc type - code sample below for K type (grabbed the polynomials from the NIST website)
void dstc()
{
// ugly ugly ugly
double c[10];
c[0]=-0.176004136860E-01;
c[1]=0.389212049750E-01;
c[2]=0.185587700320E-04;
c[3]=-0.994575928740E-07;
c[4]= 0.318409457190E-09;
c[5]=-0.560728448890E-12;
c[6]=0.560750590590E-15;
c[7]=-0.320207200030E-18;
c[8]= 0.971511471520E-22;
c[9]=-0.121047212750E-25;
double a0=0.118597600000;
double a1=-0.118343200000e-3;
double a2=0.126968600000e3;
double voltage;
float cj, tcv_float;
double cj_volt, tc_volt, t;
byte lb,ub;
// read the cold junction
ds.reset();
ds.write(0xCC);
ds.write(0x69);
ds.write(0x18);
cj=ds.read();
cj_volt=0;
for(int j=0;j<10;j++)
{
cj_volt+=c[j]pow(double(cj),double(j));
}
cj_volt+=a0exp(a1*pow(double(cj)-a2,2.0));
ds.reset();
ds.write(0xCC);
ds.write(0x69);
ds.write(0x0E);
ub=ds.read();
lb=ds.read();
tcv_float = word(ub,lb) >> 3;
tcv_float = (tcv_float*15.625)/1000.0;
tc_volt = double(tcv_float) + cj_volt;
c[0]=0.0;
c[1]=2.508355E1;
c[2]=7.860106E-2;
c[3]=-2.503131E-1;
c[4]=8.315270E-2;
c[5]=-1.228034E-2;
c[6]=9.804036E-4;
c[7]=-4.413030E-5;
c[8]=1.057734E-6;
c[9]=-1.052755E-8;
tF=0.0;
for(int j=0;j<10;j++)
{
tF+=c[j]pow(tc_volt,double(j));
}
tF=tF9.0/5.0+32.0;
}