Go Down

Topic: Temperature sensor with fast response time (Read 1 time) previous topic - next topic

Dutchy

Dear community,

We are working on a project in which one of the things we need is measurement of hot air, very accurate (0,5 / 0,1 degrees celcius). This is working out fine with the DS18B20 but this sensor has a drawback, it's pretty slow. We're looking for a good sensor which will have a fast response time as well, we know real time is not possible, but we would like to be able measure a change from 50 to 90 degrees celcius in 5 seconds or less. Our measured air ranges from min 0 to max 110 degrees celcius. Does anyone know which sensor would be capable of measuring that accurate and fast?

Thanks in advance!!!  :smiley-roll:

retrolefty

Usually the response time of a temperature sensor is ultimately tied to the mass of the sensor element being used. I would suspect that ultra miniature lab quality thermistors would be a fruitful place to research. Your desired temperature range is certainly not a harsh or demanding requirement, but accuracy and response time are pretty tight.

Lefty

Erk

You can use the library to remove any delays in your code with .setWaitForConversion(false). The sketch will just loop till enough time has passed to have the devices do their thing then you can grab that data and request a new set. below is an idea.

Code: [Select]

const byte TEMP_RESOLUTION = 10;
// Startup area code
tmp.requestDelay = 750 / (1 << (12 - TEMP_RESOLUTION));

TempSens_Mid.setWaitForConversion(false);
  TempSens_Top.setWaitForConversion(false);
  TempSens_Mid.requestTemperatures(); // Request first set.
  TempSens_Top.requestTemperatures();
  tmp.lastRequest = millis();

//Get tempatures from devices here after the request delay.
if (millis() - tmp.lastRequest >= tmp.requestDelay){

// pulling data from devices code goes here

// Request next set of temps.
  TempSens_Mid.requestTemperatures();
  TempSens_Top.requestTemperatures();
  tmp.lastRequest = millis();
}



robtillaart

Quote
.setWaitForConversion(false).

Nice to see that one mentioned ;)

If you want to use DS18B20 the resolution and time are strongly coupled. More resolution means more time. In my experience it is not fast enough for your requirements (although I never tried such differences)

Check - http://www.temperatures.com/ - for alternative solution.

===

There are however other means to measure temperature of the air. The speed of sound in hot air is different from cold air. If you take an ultrasound distance sensor and let it monitor a fixed distance to a "wall" e.g. 100 cm and the airflow is between the sensor and the wall, the distance reading changes predictably and superfast.

Check my post in this thread - http://arduino.cc/forum/index.php/topic,65205.0.html - (11) for a theoretical backgrounder

==>

float SpeedOfSound =  331.45 * sqrt(1 + T/273);  // T in Kelvin

distance = SOS * time = 331.45 * sqrt(1 + T/273) * time;

As you have a distance you need to invert this formula to get the temperature (left as homework :)
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

Dutchy

Wow!!! I wasn't expecting this awesome amount of advice allready, thank you guys!!!  :)

We've got a nice arduino night coming up, in which we will try the coding with the DS18B20 we have right now and I think I have an ultrasound distance sensor lying around somewhere, great advice, again thank you! I will let you know when we have it working.

Go Up