Answer the question
In order to leave comments, you need to log in
How to measure the air temperature with an accuracy of +/- 0.1C in the shortest possible time?
Hello,
I am faced with the task of making a thermostatically controlled semi-hermetic volume, one of the subtasks is to measure the temperature of the intake air and air in the volume with an accuracy of 0.1C at least once a minute (every 5-10 seconds would be good) for 0.5-72 hours, for the PID to work. The temperature outside the volume is room temperature (17-30С), inside the volume 36.6С (in the future there may be tasks 30-45, unlikely 52-53). Since the circulation is 1 copy, and the budget is limited, I took the good old ds18b20 sensors as sensors, since their maximum resolution is 0.0625C and the average error at the main operating temperature is -0.2C.
I want to solve the problem of floating over time or with a set of temperature fluctuations (setting up, cooling down after work) and basic (re)calibration. To do this, I propose to act stupidly: put several sensors at the input and in the volume and average the readings within the group (if it is possible to read the readings of the sensors more or less at the same time, then a simple average over the sensors, otherwise a moving average and a Kalman filter).
As far as I understood the work with ds18b20 and 1-wire in general ( and I want to clarify this especially! ), if there are several sensors on the bus, we must interrogate them one by one without submitting a new measurement request until the current one is completed. If I'm right, then polling each sensor will take 750ms + protocol overhead, and using a bunch of sensors within the current requirements will not work.
Hence the questions:
1. Have I chosen the right way to accurately measure temperature, or would you recommend something else, for example, to calibrate the sensors and recalibrate them at certain time intervals?
2. Did I understand correctly the procedure for polling sensors, or can they first give them all (in turn or all at once through SKIP_ROM) a measurement command, and then count them one at a time?
3. How to increase the polling speed within the task without putting each sensor on its own leg of the microcontroller?
Answer the question
In order to leave comments, you need to log in
1. take high-precision temperature sensors. PT for example. calibrating without having a calibration "reference" sensor is pointless.
2. yes. first send a temperature measurement start signal, then interrogate. the survey can be done slowly - the data is stored in the register until the next measurement.
3. use a current source. separate the power from the signal. try to work at maximum frequency
very correct product development concept. at the same time, if you carry out an initial calibration of the sensors, find out the deviation of each and take this into account (by developing a mathematical apparatus, for example, on Python + a neural network on raspberry) - then you can get an accuracy even higher than 0.1 degrees. for example floats can easily be averaged to 0.01 degrees or more.
and for (re)calibration, attach a tank with water and a boiler in the kit - by pouring distillate you can get a calibration temperature of 100 degrees (approximately), and adding salt, you can set any custom (re)calibration temperature to use the Kalman filter with a sliding window.
3) Look in the direction of the LM75A sensors, it works on I2C so you can put a bunch on it, the resolution is 0.125 degrees (yes, a little worse, but there may be others) Conversion time (Temperature conversion) 100 ms
Fig knows. ds18b20 give an error in degrees. I don't know how you were going to calibrate them.
If you need an accuracy of 0.1 degrees, then they are assembled on bridge circuits with Pt100 (1000) thermal resistance or something like that. Expensive, of course, but industrial.
Well, or some LMT70, probably, will do.
Or disassemble an electronic thermometer (which is medical) into parts. There is surely something there.
---
(sensors can also be placed on different legs of the controller - it's still a software protocol.)
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question