Human Temperature (maybe RTD PT100)

Hi everybody. I need to record people's temperature from their forearm or hand for an experiment. I need the recording to be very precise and accurate.

I know how to use the TMP36, but I am afraid that this is not accurate enough.

From what I understand, looks like the RTD PT100 is the best option for what I need, but I don't know how to use it.

I saw this video: https://www.youtube.com/watch?time_continue=319&v=ZKj12hfqrZQ And the documentation: http://absolutelyautomation.com/sites/default/files/160209_TEMPERATURE_MEASUREMENT_RTD_4_20_ARDUINO.pdf

For some reason, this guy used a 24V 25W 2A Power supply. Does anybody know whether it would be possible to use it with the 5V from the Arduino?

Also, I need to use it with Matlab. That's why I can't just buy the driver sold by Adafruit.

It looks like all this guy is doing in the Arduino code is reading the value of the Analog Pin and then Remap it. Is this correct? Would it work if I do just the same in Matlab?

Thank you for your time.

"very precise" and "accurate" are relative terms, but I would have thought the DS18B20 would be fine for the job and rather easier to use.

+1 for the DS18B20 it does 1/16 °C at 12bit.

  1. check the watertight version of the DS18B20 as it is easier to clean. (think ~5$)

  2. check out the Dallas Temperature library of Miles Burton

  3. whatever sensor you use, add some code that waits until temperature is stable,
    e.g. the abs(average delta) of the last X readings < 0.1

The time it takes for the sensor to stabilise may be one of the hardest bits to deal with. The fastest such sensors use IR, those are just about instant.

By the way, the precision of the DS18B20 may be down to 1/16 °C, the accuracy is still +/- 0.5°C. That's pretty much for measuring body temperature. It of course depends whether OP wants to know the absolute temperature or just compare between two people.

Thank you all for your suggestions. The DS18B20 looks good but, as Rob said, it needs the Dallas Temperature library.
As I said, I need to control it using Matlab and I am afraid that the support package for Arduino does not include the Dallas Temperature library. Do you know whether it would still be possible to use it via Matlab? I am trying to figure out if there is a way to import libraries in Matlab but it looks very confusing…

Also, to answer wvmarle: I need to know absolute values. We are going to use an experimental procedure that can induce drops in body temperature. But these drops are not so huge. That’s why I need something “accurate”.

What we want to do is to compare a condition that is not supposed to induce any change to another condition that should reduce body temperature. So, the comparison is within participants.

Gluce: Also, to answer wvmarle: I need to know absolute values. We are going to use an experimental procedure that can induce drops in body temperature. But these drops are not so huge. That's why I need something "accurate".

What we want to do is to compare a condition that is not supposed to induce any change to another condition that should reduce body temperature. So, the comparison is within participants.

You contradict yourself here. You say you're interested in absolute values, but the explanation says you're interested in changes (difference between start and finish of the experiment). For that, thermocouples can also work very well. Connected to a 16-bit ADC you can get even better resolution than the DS18B20, but the overall circuit is more critical. To get to see really tiny differences you need a good voltage supply for the thermocouple.

Gluce:
Thank you all for your suggestions. The DS18B20 looks good but, as Rob said, it needs the Dallas Temperature library.

So what’s wrong with that? You talk as if the Dallas Temperature library is a liability, which is nonsense.

I am trying to figure out if there is a way to import libraries in Matlab but it looks very confusing…

Further, Dallas Temperature library nothing to do with MatLab, and is included in the Arduino IDE, so there is little wonder that you are confused.
I don’t know anything about MatLab, but I suggest you give it away for a while and concentrate on Arduino and DS18B20 for now. You might even find MatLab redundant.

Hmm, the problem with that is that when I connect the Arduino to Matlab one of two things will happen:

1) If I use Matlab 2012, I have to upload a little script to the Arduino that allows it to communicate with Matlab. Then, from matlab I can do things like ReadPin X, WritePIn X. But, if I want to use something particular, like this, I would have to modify the script on the arduino. Now, I tried with the LCD. I added some lines in the Arduino code that said: "Load the LCD library", and something similar. Bottom line: I failed. Could not communicate it with matlab. Well, I found a different way of making them communicate, but then I would loose all the other Input Output functions.

2) I use Matlab 2017. When I open Matlab and connect the Arduino, Matlab is gonna automatically upload a script on the Arduino to interface with it. Then, once again, I can use the basic functions. And again, if I want to use something that needs a library, then I am in the dark. It looks like there are ways of importing the libraries in Matlab 2017, but they look a bit advanced for me. At the end of the day I am a Psychologist. Don't know much about these things. Most of my fellows would not even try opening matlab or getting an Arduino (not all of them, some are better than me. All I am saying is that I lack some basic knowledge in programming and electronics).

AAAANYWAYS: I am starting to believe that using the Arduino pde would make things much easier. The problem is that I am not really confident with it. With Matlab I can write entire experiments, I know how to do things like read and write world files and I have Psychtoobox, which is super useful for Psychology Experiments.

With the arduino I feel like I have way less control (and confidence)

Gluce: I am starting to believe that using the Arduino IDE would make things much easier.

Probably true, it's what everybody else does. Once you bight the bullet, you will get the confidence. The real problem may simply be one of knowing what Arduino is about, and then you can go back to MatLab with a proper sense of how to use Arduino as an input for it.

The LM35 needs 10 secs+ to give a good reading. MLX...gives temp instantly https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf

Matlab can read the serial port, and in that way you can transfer any data you want from Arduino to Matlab.

If you are interested in making [u]accurate absolute[/u] temperature measurements, then you will have to either buy a specially calibrated sensor (expensive), or calibrate your own. This is true whether the sensor is a thermocouple, RTD or DS18B20.

from their forearm or hand for an experiment. I need the recording to be very precise and accurate.

The temperature of a person's forearm often has little to do with the temperature of the person's hand (when making snowballs, for example), and you have not even told us what you mean by "the temperature".

The skin temperature? The core temperature? The average temperature of the entire body part? You may want to think through your requirements a bit more carefully.

Update:

  1. Regarding MATLAB and ARDUINO
    I may have found a way to read the data from Matlab. I knew about the serial print and read, but I didn’t really know how to use it. The problem is that I was trying to modify the Matlab package for arduino (the script that you upload on the arduino), but I was failing.

But last night I had the revelation: maybe I don’t need all that. I can write a new script that reads the values from the sensors and then writes it on the serial port. Then, from matlab all I have to do is read that value with fscanf. Which is kind of what the script is already doing, with the difference that there is a lot of stuff in that script that I don’t understand and it is hard to modify for me.

  1. WHAT I NEED:

jremington:
Matlab can read the serial port, and in that way you can transfer any data you want from Arduino to Matlab.

If you are interested in making accurate absolute …and you have not even told us what you mean by “the temperature”.

The skin temperature? The core temperature? The average temperature of the entire body part? You may want to think through your requirements a bit more carefully.

Regarding what I need. I use some terms in a naive way, but basically what I was aiming for was to record the temperature of the skin surface. When I say “precise” and “Accurate” I mean that if the temp is 36.76°C, the reading will be something very close to that, and not 38 or whatever.
Also, we discussed the position and are going to place the sensor on the forehead. There are particular physiologic reasons for this. Finally, participants will perform a ~15 minutes experiment during which they experience several conditions known to induce some physiologic changes. We want to see whether there is a different skin temperature on the forehead in some conditions compared to others WITHIN participants.

  1. SENSORS. Let’s consider the ones you suggested so far:

Nick_Pyner:
“very precise” and “accurate” are relative terms, but I would have thought the DS18B20 would be fine for the job and rather easier to use.

Apparently, these are quite accurate (as far as I understand…±0.5°C Accuracy from -10°C to +85°C. But here they say that they are a bit hard to use and require quite some coding, which I am trying to avoid: DS18B20 Digital temperature sensor + extras : ID 374 : $3.95 : Adafruit Industries, Unique & fun DIY electronics and kits

[url=http://[/quote]

robtillaart:
+1 for the DS18B20 it does 1/16 °C at 12bit. 1) check the watertight version of the DS18B20 as it is easier to clean. (think ~5$) 2) check out the Dallas Temperature library of Miles Burton 3) whatever sensor you use, add some code that waits until temperature is stable, e.g. the abs(average delta) of the last X readings < 0.1

][/quote]

robtillaart:
+1 for the DS18B20 it does 1/16 °C at 12bit. 1) check the watertight version of the DS18B20 as it is easier to clean. (think ~5$) 2) check out the Dallas Temperature library of Miles Burton 3) whatever sensor you use, add some code that waits until temperature is stable, e.g. the abs(average delta) of the last X readings < 0.1

[/url]

Do you mean this one? Waterproof 1-Wire DS18B20 Compatible Digital temperature sensor : ID 381 : $9.95 : Adafruit Industries, Unique & fun DIY electronics and kits
Same as above, they say that: "The only downside is they use the Dallas 1-Wire protocol, which is somewhat complex, and requires a bunch of code to parse out the communication. "

knut_ny:
The LM35 needs 10 secs+ to give a good reading.
MLX…gives temp instantly
https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf

So, this one: https://www.sparkfun.com/datasheets/Sensors/Temperature/MLX90614_rev001.pdf as far as I understand looks the most accurate but only if you do this “medical calibration”:
" High accuracy of 0.5°C over wide temperature
range (0…+50°C for both Ta and To)
High (medical) accuracy calibration optional
Measurement resolution of 0.02°C"

SO, I found something else on adafruit that looks quite promising and not too difficult to use:
https://www.adafruit.com/product/3328

What do you think?

Someone also said that I could use the TMP36, but that looks really inaccurate. Like, if the skin temperature is 36, it could record 38.

Regarding the calibration: I will do my best and follow the instructions, whatever sensor I end up buying.

By the way, the MLX looks very good and apparently is easy to use: https://www.adafruit.com/product/1748

So, right now my preferences would go for this one or the PT100 RTD with the amplifier.

Gluce: But here they say that they are a bit hard to use and require quite some coding, which I am trying to avoid: https://www.adafruit.com/product/374

This is an Arduino forum, and you can take it as read that everything requires some coding. The advantage of the the DS18B20 is that that is all it takes to give a good result, which puts is at some advantage over other devices requiring calibration tables or mechanical adjustment - as well as coding. If the coding for the DS18B20 is something you need to avoid, you are clearly on the wrong forum, and you need a store-bought gadget.

Gluce: Apparently, these are quite accurate (as far as I understand...±0.5°C Accuracy from -10°C to +85°C. But here they say that they are a bit hard to use and require quite some coding, which I am trying to avoid: https://www.adafruit.com/product/374

Do you mean this one? https://www.adafruit.com/product/381 Same as above, they say that: "The only downside is they use the Dallas 1-Wire protocol, which is somewhat complex, and requires a bunch of code to parse out the communication. "

I hope you understand the difference between the words "code" and "coding".

Indeed the DS18B20 needs quite some code, but very little coding on your side, as all you have to do is include the library in your code and call it. Just a few lines of coding to do from your part. The same accounts for most sensors.