Go Down

Topic: High Resolution Thermocouple and Data Log (Read 8175 times) previous topic - next topic

rpmccly

Mar 15, 2011, 04:31 am Last Edit: Mar 15, 2011, 05:54 pm by rpmccly Reason: 1
I'd like to have a high resolution and high temperature thermocouple that I can use with the arduino and be able to data log it so I can plot it in excel. I would need to be able to take readings at a minimum of 1 millisecond. I would need thermocouple to be able to handle something like 1000 degrees Fahrenheit or as high as we can get it. How would I log the data? I would assume it would be pretty easy if we left the Arduino hooked into a computer and just make a text file from it and import into excel but I don't know how to do it.

Can anyone help!!!

Thanks!

Background Info:
This is for a small combustion engine which is ignited by a coil/target, think of it like a light bulb filament that acts as the spark plug. We need the measurements so we know where we are if we have trouble. A resolution of 10,000 would be awesome but really isn't necessary. We need a minimum of 1,000 readings a second and the higher we can get the better. We think the operating range is something near 900F.

Magician

"high resolution" - how high?
0.1%, or 12 bits or maybe 0.1 F ?

MarkT

The arduino can sample that fast if you change the ADC clock prescalar - at expense of some accuracy.  Thermocouple would need _very_ low thermal mass to respond that quickly.  2500F is quite hot, people use optical pyrometers for that range.
[ I won't respond to messages, use the forum please ]

rpmccly

we need a minimum of 1000 readings a second, and we would like more than that. We would be using it for something that does heat up in 1 millisecond, I am not sure the maximum temp it gets to but I thought it was at least 1000F, I will check today.

Whats the maximum resolution a thermocouple can do and whats the maximum resolution the arduino can do?

Magicician, I said what resolutions I needed, is your .1% duty cycle? I don't know how many bits I would need and i'm not sure what 0.1F is, thanks for your help though!

KE7GKP, The spec I gave would be ideal, obviously its not possible but also not needed. I will check on temp today but we would need a reading every millisecond at least and I was under the impression the arduino could easily do that, maybe not?

MarkT, We don't want to have to change anything in the arduino, just to use it! I'd assume optical pyrometers are pretty expensive?

Also, is there a way to measure this without having to have a something physically on the object being measured for temp? We could use a thermal imaging camera but don't have the funds to buy one thats good enough.

rpmccly

#4
Mar 15, 2011, 05:08 pm Last Edit: Mar 15, 2011, 05:11 pm by rpmccly Reason: 1
I honestly didn't know how possible it was, let me be a little more descriptive. This is for a small combustion engine which is ignited by a coil/target, think of it like a light bulb filament that acts as the spark plug. We need the measurements so we know where we are if we have trouble. Is that more clear? A resolution of 10,000 would be awesome but really isn't necessary. We need a minimum of 1,000 readings a second and the higher we can get the better. We think the operating range is around 900F. I appreciate your timely responses and want you to know I am new to arduino so I have no idea what the details and limitations are of the Arduino.

WillR

I don't think you understand your problem space well enough to describe it to us.

I think this is an R&D type question...
http://www.micro-epsilon.com/products/temperature-sensors/index.html

Dig around a bit...
http://www.google.ca/#sclient=psy&hl=en&q=infra%20red%20temperature%20sensor%20high%20speed&aq=&aqi=&aql=&oq=&pbx=1&fp=ec885af529af1eb0&pf=p&pdl=300

You can do some more google searches I am sure.
Just another Hacker

Glass

A standard type K thermocouple will work well above the temperature range you are talking about.
At 900F the output will only be around 20 millivolts, so you might want to use an operational amplifier to expand this to about 4 volts.  Alternatively, you could use the ARef input and analogReference() function to scale the Arduino input to 25 or 30 millivolts full scale.  Not sure offhand if one way would be better than the other.  10 bits of A/D would give you +/- about 2 degrees resolution, not counting the limits of error of type K.
A bare-bead thermocouple made of fine wire will give the quickest response time.  Might be hard to seal at high pressures.
Since you are working in a combustion environment (oxidizing? reducing?), this can affect your choice of materials .... type N might be preferable for a reactive environment.  Sheathing can improve resistance greatly but at the expense of response time.
www.omega.com has extensive reference materials on temperature measurement which may be useful.


Another thought:  what is the thermal coefficient of resistance of your ignition coil material ?
If it is high enough, you might be able to measure temperature directly by measuring voltage drop at constant current like a standard 4-wire resistance measurement (or current at constant voltage if that is more convenient).

Glass


Quote
you could use the ARef input and analogReference() function to scale the Arduino input to 25 or 30 millivolts full scale


The minimum recommended reference is around 1 volt. Below that Arduino is too noisy to produce reliable results.

Note also that any attachment to a real thermocouple must use an "ice-point" reference compensation or else you will never know whether you are measuring the temperature at the thermocouple, or the temperature at the junction point.  That is one of the downsides of using real thermocouples.


Thanks, wasn't sure about the noise floor, thats why I inserted a caveat.

Good point about the ice point, too ... most OEM instrumentation fakes this automagically.

B@tto

#8
Mar 16, 2011, 12:42 pm Last Edit: Mar 16, 2011, 12:47 pm by B@tto Reason: 1
You can use an AD595ACD to inferface directly with the thermocouple ==> http://www.datasheetcatalog.com/datasheets_pdf/A/D/5/9/AD595AQ.shtml
and an ADS1213 to improve the speed and the resolution of the measurement ==> http://focus.ti.com/lit/ds/symlink/ads1213.pdf
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

kf4ixm

Depending on the type of thermocouple you use, you CAN read temperatures up to around 2912 deg. F with type R thermocouples. http://en.wikipedia.org/wiki/Thermocouple You can use a Maxim MAX6675 http://www.maxim-ic.com/datasheet/index.mvp/id/3149 chip to interface with a type K thermocouple that will give you 2012 deg. F. it has built in cold junction compensation also. As far as the 1000 readings a second, i don't know if it can measure and send data that fast, but i do know that it works great for interfacing thermocouples.

yennifs

See Adafruit product #269:
http://www.adafruit.com/products/269

For MAX6675 Thermocouple breakout board.  This will handle the temp measurement, I don't know about the speed of measurement.

ttstam

I have both the MAX6675 and the replacement 3.3V variant of that board.  It does not measure that fast, and it only measures to 0.25 deg C accuracy.  Check out my Turkey smoking blog post at: http://www.TerenceTam.com for an example of what you can do with that board.

Honestly, if you *really* need 1000 samples per second, the only tool that would do readily do that is an oscilloscope or a dedicated data acquisition system.  Nothing really converts and sample that fast, nor does it make sense to in an industrial control setting, which is what most of these tools are.  None of the industrial control processes change that fast to require 1000 samples per second time resolution (and none of them can be controlled that fast either).  At my last job when we characterized battery chargers, we take 1 sample per second over a 2 hour or more period. 

I would look into wiring up the outputs to an oscilloscope to the thermocouple's output and triggering on an external event.

-=- Terence

jcims

If it's a positive displacement engine, what about using a pressure transducer synchronized with a rotary encoder on the crankshaft?  You should be able to solve for temperature given you know volume and pressure, and 1000hz response is much more realistic.

Constantin

#13
Jan 20, 2012, 08:19 pm Last Edit: Jan 20, 2012, 08:31 pm by Constantin Reason: 1

Honestly, if you *really* need 1000 samples per second, the only tool that would do readily do that is an oscilloscope or a dedicated data acquisition system.  Nothing really converts and sample that fast, nor does it make sense to in an industrial control setting, which is what most of these tools are.


Allow me to disagree a bit. One approach is to find an external ADC that samples quickly, with a high enough resolution, and which interfaces easily to an Arduino. Circuit #3 on this page may fit the bill, up to 12 bits of resolution with 11ksamples/s. You may be able to boost to 13 bits of resolution through decimation on the Arduino and still enjoy a faster than 1ksample/s rate. McSarge even wrote a program to interface with the LTC1298 for you. Not sure what the maximum sampling rate is, but you could time it and see how quickly the code executes.

I think the bigger challenge is what to do with the deluge of data. The serial bus is likely too slow to transfer such a quantity without significantly reducing the sampling rate at standard transmission rates. Non-standard serial transfer rates (i.e. about 115kbaud) are possible, but not with the Arduino IDE (i.e. you'll have to use PuTTy, etc.) I've transferred at 1Mbit/s between arduinos but couldn't monitor said transfer in the Serial Monitor.

RPCoyle

I think you will have a hard time finding a thermocouple element small enough in thermal mass to respond to changes as quickly as you wish to measure. You may well end up with just average while the thermocouple undergoes a slower response.

Go Up