Thermopile Sensor

64,949

62

29

Introduction: Thermopile Sensor

A thermopile is a device that converts thermal energy into electrical voltage.  It's what you find in those in-ear infrared thermometers or remote temperature probes used in the food industry.

there are lots of cool applications they can be used for including motion sensors, temperature probes, fire alarms, heat flow detectors, robot sensors, forge temperature monitors or low resolution thermal imaging to name a few ideas.

This Instructable will describe the practical application of a thermopile (in particular a TS118-3) and show how to get a readout using an Arduino.

I'm fairly new to the world of electronics and I found experimenting with this to be great way to learn.  I have attempted to write this Instructable so it is easy to understand by beginners and useful to experts.  Please feel free to leave constructive comments!

I will publish another Instructable soon describing how to build a practical circuit using a thermopile for a Heat Activated Soldering Fan.

Step 1: Part Requirements

Here is what you need.  Except for the thermopile which I had to buy the choice of other components was based on what I had to hand.
  • TS118-3 Non-contact Infrared Sensor Infrared Temperature Sensor (the thermopile)
    • I got mine from Ebay
  • LM358 Dual Op-Amp
  • Resistors:
    • 3 x 1K
    • 2 x 8K2
    • 1 x 47K
    • 1 x 68K
    • 1 x 1M
  • 1 x 100nF Capacitor
  • Arduino
  • breadboard

Step 2: TS118-3 Non-contact Infrared Temperature Sensor

This is the beastie this project is all about. 
This small component contains a thermopile.  Essentially it converts the difference between the ambient temperature and the object being measured temperature into a voltage using the Seebeck Effect.  It requires no outside power to work and can measure a temperature range between 0 and 100 degrees Celsius.

Because it uses temperature difference you also need to know the ambient temperature if you want to accurately measure actual temperature.  The TS118-3 also contains a thermistor just for this purpose. 

Pins 1 and 3 are for the thermopile itself.  Pins 2 and 4 are for the thermistor.

The voltage that the thermopile outputs is measured in only milli-volts.  In fact, its only produces about 4.4mV at maximum.  This isn't very useful so we need to boost the voltage using an op-amp.

This document provides lots of useful technical information on thermopiles, how to calibrate them, factors affecting accuracy, and how to perform ambient temperature compensation with an op-amp.

The more you find out about thermopiles the trickier and more complex they seem!  Hopefully this Instructable will make using these simpler.

Step 3: Op-Amp

The op-amp I used for this project is an LM358 which actually contains two op-amps within the same chip.  It requires external power to work.
Check out the circuit diagram for how the op-amp boosts the voltage of the thermopile. 

The two resistors R1 and R2 provide feedback to the op-amp.  The amount voltage boost is set by the ratio between them.  In our case R1 is 1MOhm (1000KOhm) and R2 is 1KOhm.  1000K/1K is 1000, so the voltage is boosted 1000 times.
The maximum voltage from the thermopile is about 4.4 milli-volts which is way too small.  A 1000 times boost now makes it 4.4 volts.  This is a practical voltage for us to use.
R3 affects the sensitvity of the thermopile up to a point.

Experiment with changing these resistors to see what affect it makes.

Step 4: Thermistor

A thermistor is a resistor that changes its resistance depending on the surrounding temperature.  It is useful to measure the ambient temperature.

The thermistor in the sensor is apparently a Ni1000 which is important to know to calculate the temperature from its resistance.

To read the thermistor output we use a voltage divider  (See the circuit diagram).  When we read the output voltage we can work backwards to calculate the resistance and hence the temperature.  We can use a lookup table or use an equation to convert resistance to temperature.  The one in this data sheet seems to be reasonably accurate.  See the picture above for the formula.

Note that the reference temperature is 0oC at 1000 Ohms.

I hope the maths doesn't scare you off.  It took me ages to find this out so I'm writing it down here to save you the effort!

Step 5: Experimenting With Arduino

I hooked up the sensor to an Arduino to do some testing. 

I quickly realised I had a problem.  The analog pins on the Arduino can read positive voltages between 0 and 5V.  But the sensor produces a negative voltage below 25oC.  That makes our readings wrong!  The solution is to shift the voltage.  The sensor reads about 4.4mV at 100oC and about -0.6mV at 0oC.  That's a difference of 5mV.  Now that's handy!  If we add 0.6V to the output of the op-amp we get a range of 0-5V to send to the Arduino. Perfect!

Do do this we use a summing amplifier circuit.  The second amp in the LM358 comes in handy after all.

In the pictures of the bread board you'll see I actually used an additional LM358 to make it less confusing to wire up and view.

The sketch code to run is attached.
The program is simple and just outputs the readings from the thermopile and the thermistor via serial port.

Note:
The circuit is very sensitive due to the sensor only outputing milli-volts.  The temperature may appear to fluctuate wildly with any interference.
The circuit itself seems to add about 0.6mV to the thermopile raw reading.  I account for this in the sketch with a constant called verr.
The sensor reads the temperature over the entire area it sees.  The sensor must only see the object being measured and nothing else to get an accurate temperature reading.

Step 6: Conclusion

That's a thermopile in a nutshell.  Stay tuned for another Instructable using this sensor to build a Heat Activated Soldering Fan.

Arduino Contest

Participated in the
Arduino Contest

1 Person Made This Project!

Recommendations

  • Rice & Grains Challenge

    Rice & Grains Challenge
  • Lamps Challenge

    Lamps Challenge
  • Puzzles Challenge

    Puzzles Challenge

29 Comments

0
JerryB1975
JerryB1975

5 weeks ago

Great Tutorial. I think a good follow up would be to explain the math. show how you got the Delta and 'k' values. Also the amount of shift voltage and voltage error. How you deal with the noise from the sensor. etc...

0
thube.a55
thube.a55

2 years ago

How you Calculate the Value of Delta and K in the equation? Please share the reference document for that equation. I am using the ZTP148SRC1 Amphenol Temperature Sensor.Does the value of K and delta will be the same for ZTP148SRC1 Amphenol Temperature Sensor ? Thanks

0
kareem.morsy
kareem.morsy

Reply 1 year ago

Hi thube.a55,
Were u able to obtain the needed data?
I am working with the same sensor, but I am having the same questions you are asking.

0
ajaytecyon
ajaytecyon

Reply 2 years ago

you can get the delta value from the thermometric data sheet, according to the thermistor material type.

0
softlandtest
softlandtest

1 year ago

Hi

I tried this circuit with DS-CP1042TS thermopile sensor. Added 1K resistor to the GND from thermopile sensor negative pin. Tested by using number of LM358 ICs..But output voltage of opamp is not same for all ICS at a particular voltage. How can i solve this situation?

1
willyhong
willyhong

2 years ago

Hi, Can you tell me, why you used delta value as 2.468? what is the value of delta? How you got 2.468? Thanks

0
radhikasoni
radhikasoni

2 years ago

Hi, Thanks for make project easier. Can you tell me, why you used delta value as 2.468? I am using TPS434 thermopile. In this thermopile sensor, what is the value of delta? How you got 2.468? Thanks

0
2367265
2367265

Reply 2 years ago

I have the same problem, could I solve it?
0
walanchiku
walanchiku

2 years ago

hey how can i interfece ztp-135s

0
HKB1
HKB1

9 years ago on Step 3

I am using the same sensor to detect body heat. The changes in voltage are tiny, only 0.4mV at one metre, so I am using the op amp inputs in common mode. R1 is 10M, R2 and R3 are removed and the sensor connected directly to the op amp inputs, and then a 10K resistor is added from each input to a bias point (at half the supply voltage - 2.5V). This arrangement cancels any noise common to both inputs (common mode rejection) and gives a gain of 1000. Any residual high frequency noise can be attenuated with a 1n capacitor in parallel with the 10M feedback resistor. Using common mode noise rejection may give you a cleaner output - when I tried your circuit a lot of mains hum was being picked up and amplified, but in common mode there was none.

0
centricuser
centricuser

Reply 2 years ago

Hi HKB1,

According to your above explanation, can I request you draw the diagram to have to same view?
Thank you in advance!

3
vivekbonty
vivekbonty

Question 2 years ago on Step 6

Nice ! How to interface TS318 thermopile?

0
MiguelA153
MiguelA153

6 years ago

Hi! Good instructable!

What's the thermopile's responsivity like? is it fast?

0
SeungnamK
SeungnamK

7 years ago on Step 4

thank you for me to understand a lot of things. One question. In the heat balance equation, the unit of temperature may be in Kelvin. Isn't it?

0
AdriMS
AdriMS

8 years ago

Hi I liked your explanation is very understandable, you may be able to send me the code you used in Arduino? Thanks. Greetings.

0
number8wire
number8wire

Reply 8 years ago on Introduction

Hi the Arduino code is attached to step 5 as Thermopile.zip. Download it an unzip it.

0
AdriMS
AdriMS

8 years ago

Hi I liked your explanation is very understandable, you may be able to send me the code you used in Arduino? Thanks. Greetings.

0
AdriMS
AdriMS

8 years ago

Hola, es posible que puedan enviarme el codigo que usaron en Arduino. Saludos.