Hi,
I need to measure a temperature in multiple areas (~8) with my Arduino board. This is an embedded system so the sensors must be small to be embedded with fast response and somehow, quite accurate (don't know the standard) with a range from 0°C to ~80°C. It's to measure
There is a lot of temperature sensors in the market but I don't know how to choose one, the pros and cons of each of them, the major difference between them, etc. So far I have found this kind of sensors, can someone enlighten me to better understand which one should I take ?
-
DS18B20 : Not so bad but too big and not very accurate
-
TMP36 : Too big and not enough Analog pin, difficult to integrate when there is multiple sensors to read
-
NTC Thermistor : Size looks ok, but slow response and range too wide, don't know about the accuracy
-
Semitec sensors : Size looks perfect, accuracy great, fast, price unknown
and integration with an arduino board not done yet ? Long delay to receive them (>3 weeks)
-
Surface sensor : Expensive ,
quite big (but flat), don't know if it is easy to integrate with an Arduino
-
RTD PT100 : Too big, not easy to embed, average accuracy, expensive
-
Thermocouple : Expensive, range too wide, but size is good
Do you have other medical temperature sensor to suggest ? They looks to better suit my needs.
Thanks
Your requirements are not clear
#define fast response // how many samples per minute do you need? 1 - 10 - 100 - 1000
#define quite accurate // how accurate should it be 1.0C 0.5C 0.1C 0.01C
#define range 0°C to ~80°C. // OK that is a clear requirement
Can you elaborate on what you want to measure exactly?
some remarks:
DS18B20, you can trade precission with performance, its my favorite so I am biased.
TMP36,
note1: the ADC is multiplexed in Arduino so measurements will affect each other
note2: the ADC is 10 bit of which 1 or 2 is noisy, leaving 8 or 9 'stable' bits (depends on environment too)
NTC Thermistor
same ADC remarks apply.
You should check if you have enough discrete values in the range you want
note: the floating point math needed for these is not Arduino's strongest point (performance/accuracy)
Surface Sensor
don't lnow, but interesting.
As it is a resistor, you can create a voltage divider which connects to Arduino ADC
By fast response I mean fast adaptation to temperature not sampling rate, I don't know the standard in this requirement though.
Accurate for me means better than +/-0.5°C
I want to measure the ambient temperature inside an object that you can wear, for example protection for soccer player's tibia or protection of US football player. I want to measure the temperature inside, between the body and the protection.
DS18B20 are good but their shape make it difficult to embed in small space as you might better understand regarding my previous paragraph. I need something "soft"/"tiny"/"flat"/or whatever to not risk to injure.
Thanks
Google "wearable temperature sensor" there are lots of them.
Paul
The Silicon Labs Si7051 will give you 14-bit resolution of 0.01°C at ±0.1°C accuracy. You can buy them from tindie for $9. The breakout board is only about 1cm/1cm:
I've been using them as a reference when calibrating cheap thermistors.
Though in that case, I should probably say I was mis-calibrating them, as using the internal bandgap on aref gave me more trouble than it was worth.
Hi,
my favorite LM35 or LM35CZ is missing here.
Just reminging its existence. But it is analogue. There are more pins on Arduino MEGA.
Lukas
Thank you all for your suggestions I will take a look at all of this.
EKMallon:
The Silicon Labs Si7051 will give you 14-bit resolution of 0.01°C at ±0.1°C accuracy. You can buy them from tindie for $9. The breakout board is only about 1cm/1cm:
https://www.tindie.com/products/closedcube/si7051-01c-max-digital-temperature-sensor/
I've been using them as a reference when calibrating cheap thermistors.
Tutorial: Calibrating Oversampled Thermistors on an Arduino Pro Mini | Underwater Arduino Data Loggers
Though in that case, I should probably say I was mis-calibrating them, as using the internal bandgap on aref gave me more trouble than it was worth.
Very interesting story how you calibrated the Thermistor with this great Si sensor.
To get the formula for thermistors work for all ranges you chould make the "constants" temperature dependant, so that for low (eg < 10) temperatures other constants are used.
@ rt
I've just updated that post with another kick at the can, which works better than an empirical polynomial fit.
The problem of calibrating a thermistor of unknown specification has been on my to-do list for a while, and I think I finally have it sorted by creating "artificial" Steinhart-Hart constants - with all the errors baked in. Of course rolling all the ADC offsets & voltage errors into the thermistor resistance calculation means that those numbers are completely bogus, but the end result is that I can hold the sensor output right on top of that Si7051 line, and then claim an accuracy spec somewhere near that.
Digging into the accuracy issue increased my respect for engineers who play whack-a-mole until their product reaches a decent spec, but I don't have the skills for that. So I'm happy to flatter them by imitation.
It's also worth noting that the method(s) I used would work fine without the oversampling & dual voltage stuff, if people simply removed the rail/aref ratio from the calculations.