Go Down

Topic: Arduino, thermocouples, rocketry. (Read 10071 times) previous topic - next topic


Apr 02, 2011, 06:42 am Last Edit: Apr 02, 2011, 09:39 pm by Tetrahyde Reason: 1
Hi everyone!

I am programming an Arduino Uno for a club I'm in at school and what we need is for the Arduino Uno to return temperatures after reading a voltage from a couple of Omega thermocouples. The thermocouples are J-type "Fine wire thermocpuples" With a dia./Ga. of .001, Length of 12'' and bare insulation. The part number for them is IRCO-001. These guys are really freaking thin. Which raises my first question, how am I going to get two of these onto an Arduino? They are seriously about the width of a human hair. I have an Arduino ProtoShield Kit that I bought off Adafruit. Here's the link: http://www.adafruit.com/index.php?main_page=product_info&products_id=51 That's what I have. I also have a data logger. This is my friends that he's letting me use and I don't know much about it. It comes from "DataQ instruments" Here is its link: http://www.dataq.com/products/obsolete/di194.html He did say he's had it for a while.  ;)

Too Long didn't read? Totally fine. Here's the run down:

What I am doing
I have a rocket. It's going to go up for about thirty seconds. We have a ducted nose cone with a vortex tube in it that separates the wind  into two separate areas we have one thermocouple at both of these areas. I want the Arduino to read the temperatures these thermocouples are sending me and store that data. I also want a timer to go off at launch so the Arduino can give each temperature a corresponding time. EDIT: I don't think I made it clear that I'm going to get a different temperature reading from the two thermocouples. If the vortex generator does its job, one thermocouple will be getting cool air and the other thermocouple will be getting warm air. The experiment is measuring the temperature difference from each of the thermocouples. I was just planning on getting the temperature from the two different thermocouples at the same time and finding their difference, so that part the Arduino doesn't have to do.

                                                                                  /Warm air---Thermocouple--------------------/
Air entering from ducted nose cone-----Vortex generator/                                                             /Arduino
                                                                               /Cool air---Thermocouple---------------------/
Just a really simple picture of what will be happening.
Things I have
-Arduino Uno
-5 Omega thermocouples. Here is the link: http://www.omega.com/pptst/IRCO_CHAL_P13R_P10R.html
-A ProtoShield Kit. Here is the link: http://www.adafruit.com/index.php?main_page=product_info&products_id=51
-A data logger. This guy is kinda old and outdated, but I think it will still work. Here is the link:  http://www.dataq.com/products/obsolete/di194.html

That's all I have! Now for my questions part...
-How do I get these hair thin Thermocouples to attach to my Arduino or Protoshield?
-The thermocouples send out microvolts. The lowest an Arduino Uno can read is 5 volts. I'm going to need an amplifier, yes?
-What kind of amplifier should I use and where can I purchase one?
-Will I need the datalogger?
-What are some important functions and commands I'm going to need to know?
-How do I get the Arduino to start a timing program at launch?
-Could this all be done in two weeks time? Due to major part delays I couldn't get started until just now. LAME.  ;)

Thank you so much for any help you can give me, if you found anything unclear please tell me how I can clarify. Thanks!


This would  be difficult for an experienced person to get done in 2 weeks.  Both building up the HW and programming the SW.

You will need an amplifier for the thermocouple, yes, and possibly lower the ADC reference voltage as well.
LSB will be equal to 5V/1024, or 1.1V/1024, or theoretically less if you have another ADC reference voltage.

Try a test - you know temperature drops about 2C for every thousand feet of elevation change.
Test your thermocouple at standard temps, then freeze it at the temp you think it might to, and see how much change you are getting.

Your rocket will be pretty darn high if it is going up for 30 seconds. I imagine it will also come down quite some ways away as well.
You are planning to store the data in FLASH/EEPROM & then download when you recover the rocket? How many readings do you expect to store?

You could add an accelerometer as well it sense when the rocket lifted off and start reading micros() for time  stores.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.


I think thermocouples are a poor choice for your applications. Thermocouples output a low impedance in the millivolt (not microvolt) range. Not only would if require amplification, but also a cold reference junction compensation. Even then you are dealing with a non-linear temp Vs voltage curve the needs to be calculated or converted with a look-up table. There are special thermocouple interface ICs that can handle a lot of the electrical needs but they are not cheap. And after all that thermocouples don't have all that great an accuracy specification. The main claim to fame for thermocouples is the very high temperature range they can be used in, up to and over a 1,000 degrees if the couples wire insulation is designed for that range. So unless you were trying to measure the rocket exhaust temperature in flight, I think thermocouple is a non-starter for your project.

You would be much better off with some of the newer IC temp sensors, check out the temperature section in the following: http://arduino.cc/playground/Main/InterfacingWithHardware#Input/

I don't mean to rain on your parade, but I suspect in 2 weeks you will still be having problems trying to interface thermocouples to an Arduino.

Good luck with your project.



Will any amplifier that I find work or do you know of any kind of amplifier that would work best? How would I go about lowering the ADC reference voltage?

"...then freeze it at the temp you think it might to.."
Could you clarify that please? I'm not following that. lol.

I'm sorry. I used the wrong number! Ascent should be about 20 seconds. Yes, it will most likely take a while to come down, though measuring temperatures for that doesn't matter. Yes, I was planning on that. Is that bad? Will that not work? The thermocouples take in one reading for every 0.15 seconds so my team is hoping to get 130 readings.

I was thinking that. I just might do that. Do you think that's the best option? I was also thinking I would probably use micros() too. Awesome!


I was really hoping no one would say that.  :( I kinda felt that way too, but it's what the club bought and told me to use and I figured they knew their stuff(This is my first year doing this sort of thing)
How much quicker and easier would this be with one of these IC temp sensor? Would you say they're perfect for use here? Also, how quickly do you think I could get one?

It's completely alright. I had a feeling something like this would come up. lol. So to avoid this messing around with thermocouples you 100 percent recommend IC temp sensors?  I'm fine with using them, as long as it saves me time and is easier. I wish I had more time, but our Arduino hasn't even come in yet! I had to take my Arduino off of my Science Fair project and use it for this. lol. Freaking parts.  D:

Thanks! I'm going to need it...  :smiley-roll-sweat:


While I am a great fan of the Dallas temperature measuring chips, I don't think they'll meet your needs for rapid response to ambient temperatures.

I'm guessing you want to do temperature/altitude profiles? Or maybe even infer rocket speed from the differences in the temperatures between your two air streams? The Dallas chips, in that context, have WAY too much thermal inertia. In other words, if I take a Dallas chip from a 15 degree (C) room, which has been 15 degrees for, say, two hours, and take it outside to where it is, say 10 degrees, it will take a minute or two (5 or 10 flights!) for it to get near 10 degrees.

Interesting problem. Not sure of answer... unless you simply want temperature/altitude profiles, in which case I'd use a balloon. Not as much fun, of course!


So an IC temperature sensor, won't work and I need to stick to the thermocouples I have? I really need the rapid response.

I just want to have the temperature recorded and the time since launch it's been. We have other electronics measuring altitude. The part I'm doing is for the "scientific payload."

Lol. Nah, it has to be a rocket because the club I'm in is a rocket club. ;)


I really need the rapid response

I thought TCs where not good for fast changes.

Normally you only use them when you need high temp reading in the 150-1500 or so range.

Rob Gray aka the GRAYnomad www.robgray.com


I thought TCs where not good for fast changes.

If you following the thread you'll have noticed these thermocouples are incredibly thin.  Thermal mass depends on size.  Also they are metal in a fast moving air-stream.  I can't think of a faster way to measure air temperature.  An IC temp sensor will be in poor indirect thermal contact with the air as its in a plastic package.  They have time constants of 10 seconds or so!  Very thin wire will be more like 0.1s

As for attaching to thin non-solderable wires I think some sort of screw terminals with internal metal leaf contacts might do it - the internal contacts don't rotate with the screw and thus don't destroy the wire, merely squeeze it. possibly improvisable with some metal foil.
[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]


So, sticking to the thermocouples. Got it.

Thank you so much for teaching me how to make the connections! That was a huge problem for me. Where can I purchase said screw terminals?

Also, does anyone have any ideas for getting these thermocouples to play nice with the Arduino? Am I going to have to do any fancy coding to get the thermocouples to work?

Thank you so much everyone for all your help so far!


This application note will show and tell how to interface properly to thermcouples:


2 weeks and counting.  ;)


Apr 04, 2011, 05:34 am Last Edit: Apr 04, 2011, 05:36 am by Graynomad Reason: 1
Thermal mass depends on size.

Yeah I know, just for some reason I had it in my head that their response was slow, don't know why.

That AP note looks like a nightmare, can't you just use a MAX6675 or similar? No mucking around with cold junction temps etc, just read from SPI.

Or are there some non-obvious gotchas?

Rob Gray aka the GRAYnomad www.robgray.com


I can't use a MAX6675 because I have J-tpye thermocouples, not K-type.

Thanks so much for the Application note! This will be super useful. Thank you so much!

hahah. Two weeks and counting. ;)

I'll keep you guys all updated.


There are thermistors almost as small, fast as the thermocouples that would be MUCH EASIER to interface to Arduino.

For thermocouples you need to build or buy the amplifier with cold junction compensation, even if you "take a shortcut" and put the compensation inside and merely assume the temperature.

AltairLabs $0.02 is:
buy a few of these asap
either should work.

Hook 2 identical units in series between +5v and gnd, connect the center tap to Arduino.  Arduino analogRead() returns near 512, about mid point, when both are at the same temp.  Record this value as your zero differential value.

Immerse the 2 units in different temperatures, the Arduino count deviates from its neutral value.  Record the temperature and the analogRead() count.  Divide the temp difference by the count difference, this is your scale factor.  Doesnt hurt to check a few wider and narrower temperature differences to get a feel of how linear it is.

When you launch, store analogRead()s and see the zero value change as you Hilsch tube operates.  Use the scale factor to convert the change in analogRead() counts to temperature  difference.

That is the principle of a variometer, to read temperature DIFFERENTIALS.

If you also want the absolute temp, put a thermistor in series with a 100k resistor, and make a table of analogRead() vs temperature using a known thermometer and test chambers (toaster oven, freezer, etc.)

This is something you can wire up immediately and directly to Arduino, it doesnt need an amplifier like thermocouples do.  These thermistors are small enough to have time constants < a few seconds, but beware: soldering them to heavy wires can degrade this.  Use fine wire and keep the original thermistor leads as LONG as possible to avoid slowing down the thermistors.

We fly thermcouples at work but only inside engines where they need to withstand extreme temperatures there.  They can be finnicky even when you DO have the properly designed amplifier. For everything else we use thermistors.

The thermocouples can be used in differential as outlined above, but the Seebeck voltage is so tiny you still need to build and debug a DC amplifier.

The LM temperature sensors recommended above are also easy to get running on Arduino without designing and building special interface circuits.  The thermistors I recommend also can connect direct to Arduino, they respond faster, and when you use them in differential rather than absolute temperature they are nearly as accurate.

BTW great idea putting what I assume is a Hilsch vortex tube in a rocket, good luck with your project.


A very handy reference document for such ventures is the old skewl USAF FLIGHT TEST ENGINEERING HANDBOOK.

Antique, but much more accessible and useful to the hobbyist than newer USAF pubs.


I can't use a MAX6675 because I have J-tpye thermocouples, not K-type.

So switch to K-type?


Go Up