Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Measure temperature @0.1deg resolution using thermistor

Status
Not open for further replies.

gopal_amlekar

New Member
Hello all,

I would like to get expert suggestions on whether it is possible to design a circuit for:

1. Temperature measurement using a NTC thermistor
2. 10-bit ADC (Max. input 3.3V)
3. Resolution of 0.1 degree celsius
4. Temperature range of -40 to +100 degree celsius


I studied a thermistor (10K, Beta value 2490) datasheet **broken link removed**.
If I use this thermistor in a voltage divider circuit biased from a 3.3V supply, I get a minimum step size of only 536uV for a 0.1 degree change in temperature.This step size varies through the range as the characteristics are nonlinear.

For a 10-bit ADC, minimum step size is 3.2mV.

Is there some way out or some other trick like amplifying voltage obtained across thermistor and / or changing gain of this amplifier dynamically etc. or some software manipulation / linearization etc.

Please guide..

Regards,
Gopal
 
Yes, there is another "trick".

Use a 12 or 14 bit A/D converter or a self-contained 16-bit serial temperature sensor such as the Sensirion SHT11, which doesn't need the 10-bit A/D converter in an MCU.

It also measures relative humidity.

Boncuk
 
A 10bit A/D will quantize 2^10=1024 steps. Your interval is 140degC, so your theoretical step is 140degC/1024 = 0.137degC. You really need a 12 bit A/D.

You can use an opamp to amplify the delta V across the thermistor, and offset it so that it fills the full dynamic range of the A/D.

The reading accuracy will be determined by self-heating due to the currrent you pass through the thermistor, and how stable the reference voltage for your A/D is. If the A/D is ratiometric to the Vdd pin on your uC, then the accuracy is no better than the Vdd voltage regulation...
 
  • Like
Reactions: 3v0
Do you want 0.1 degree accuracy or 0.1 degree resolution? They are two different things not related to each other.
 
Do you want 0.1 degree accuracy or 0.1 degree resolution? They are two different things not related to each other.

That's what the OP stated: "3. Resolution of 0.1 degree celsius".

I think it's clearly formulated.
 
Do you want 0.1 degree accuracy or 0.1 degree resolution? They are two different things not related to each other.
They are related to the extent that you want the resolution to be at least as good as the accuracy, otherwise the accuracy is wasted.
 
hi Gopal,
Look at the MCP3202 dual 12bit A2D IC, use the SPI feature of the PIC to interface with the MCP3202.
 
You could take multiple 10bit measurements (AD-conversions) and average the result. You could also use dithering (adding noise to the signal) with averaging: https://www.dspguide.com/ch3/1.htm
 
Last edited:
misterT: I think it is same as doing an oversampling, right?

ericgibbs: MCP3202 or even 3201 is also a good option but this project is cost constrained and significant difference in pricing of a thermistor and an external ADC is there.

My earlier reply to this post has not been posted on forum, it seems (moderation?)
 
misterT: I think it is same as doing an oversampling, right?

ericgibbs: MCP3202 or even 3201 is also a good option but this project is cost constrained and significant difference in pricing of a thermistor and an external ADC is there.

My earlier reply to this post has not been posted on forum, it seems (moderation?)

hi,
The MCP3202 costs $1 for a one off, I would not call that significant...
 
Hello all,

I would like to get expert suggestions on whether it is possible to design a circuit for:

1. Temperature measurement using a NTC thermistor
2. 10-bit ADC (Max. input 3.3V)
3. Resolution of 0.1 degree celsius
4. Temperature range of -40 to +100 degree celsius


I studied a thermistor (10K, Beta value 2490) datasheet **broken link removed**.
If I use this thermistor in a voltage divider circuit biased from a 3.3V supply, I get a minimum step size of only 536uV for a 0.1 degree change in temperature.This step size varies through the range as the characteristics are nonlinear.

For a 10-bit ADC, minimum step size is 3.2mV.

Is there some way out or some other trick like amplifying voltage obtained across thermistor and / or changing gain of this amplifier dynamically etc. or some software manipulation / linearization etc.

Please guide..

Regards,
Gopal


Hello there,


You should take a look at different methods of reading the thermistor. There are a few different methods really. With the simple resistor/thermistor method, if you check the resolution you can get at various places over the temperature range you'll see that it changes and at one place it is the best, meaning the thermistor and resistor pair offer the greatest sensitivity. You can shift that area over the temperature range by simple swapping out resistors, going to maybe 3 times as high of a resistor to maybe 1/4 of the original resistor and this provides more sensitivity over the full temperature range.
There's also the method of 'charge balancing' which you might find more info about on the web.

In case you want to investigate the method of swapping resistors (using port pins of course) here is a formula for the derivative of the Vo center tap voltage with temperature:
Code:
dVo_dT(R1,TdegC)=-(Vcc*R1*R25*(-B/(TdegC*T1+273*T1)-((-B*(273-T1)-TdegC*B)*T1)/(TdegC*T1+273*T1)^2)*e^((-B*(273-T1)-TdegC*B)/(TdegC*T1+273*T1)))/(R25*e^((-B*(273-T1)-TdegC*B)/(TdegC*T1+273*T1))+R1)^2
where:
R1 is the bottom resistor (thermistor on top)
Vcc is the power supply voltage,
R25 is the resistance of the thermistor at temperature T1 (usually at 25 deg C),
T1 is the temperature that R25 is measured at (T1 in temperature units of K),
B is the thermistor constant,
TdegC is the temperature of the thermistor.
For example if you have a 5.12v power supply and you calculate dVo_dT to be 50mv, then with a 10 bit ADC that gives you one step per 0.1 deg C because 50mv/10 is 5mv and that is the voltage of one bit of the ADC.

You'll find that when you go to the extreme ends of temperature the sensitivity goes down (and so you'll loose resolution) but if you simply change resistor R1 you can get that sensitivity back again. This means breaking the entire temp range up into sections, at least two but probably more. This means you might get away with a 10 bit ADC if you have enough extra port pins.
 
Last edited:
Good suggestion, MrAI

MrAl, Thank you very much for a nice new suggestion. I will study it in detail.

ericgibbs, Thanks for suggestion but pricing here is quite different. A thermistor you can get at Rs. 4, while a 12-bit ADC (MCP3201 / 3202) at more than Rs. 100 so a 25 times difference. Hence I am finding ways out..
 
hi,
The MCP3202 costs $1 for a one off, I would not call that significant...

Hi Eric,

for a single circuit the difference of $1 might not be significant.

Industrial manufacturers calculate production cost down to a fraction of a Cent, e.g. if a screw costs 5Cents they use a rivet instead costing 4.5Cents.

The significant difference will be seen if they produce 1Mio units.

Regards

Hans
 
Hi Eric,

for a single circuit the difference of $1 might not be significant.

Industrial manufacturers calculate production cost down to a fraction of a Cent, e.g. if a screw costs 5Cents they use a rivet instead costing 4.5Cents.

The significant difference will be seen if they produce 1Mio units.

Regards

Hans

Morning Hans,
Reference the fractions of a cent, been there, done that, to 0.1pence on many commercial products.

As I understand it the OP is making a one off design.??

If not, he should be costing the product based on volume purchasing of components

hi gopal,
ericgibbs, Thanks for suggestion but pricing here is quite different. A thermistor you can get at Rs. 4, while a 12-bit ADC (MCP3201 / 3202) at more than Rs. 100 so a 25 times difference. Hence I am finding ways out..
I am not suggesting that you replace a thermistor with a MCP3202, the MCP is for the 12bit ADC conversion, so that you can realise the 0.1C resolution.

The 'dithering' method suggested by 'Mister T' works very well, you could enhance the PIC's adc to 11 bit or 12 bit resolution.

In fact I have recently used that method on a commercial product, to increase a 12Bit adc to 13bit resolution.

Good luck with the project.
 
Last edited:
Cost...

As I understand it the OP is making a one off design.??
ericgibbs, No it is for volume production. Sorry I should have mentioned it earlier. Hence, I am trying best to get desired specifications at lowest possible cost.
My processor already has a 10-bit ADC inbuilt, so at present, there is no extra cost for an ADC. So adding external 12-bit ADC will sure increase BoM cost. Thank you for wishes. I will give a try to oversampling.
 
I would think that a thermistor would be too non-linear for such a feat, whether looking at accuracy or resolution, but especially accuracy, without some sort of look-up correction table at the output of the ADC. Don't forget that a thermistor has a pretty low upper-temp limit and that if you ever have to replace the thermistor, you have to start all over again with the linearizing table.
 
Hello again,


Oversampling is a good idea in addition to range switching (or even using more than one thermistor and resistor pair) but it should be noted that the theory behind this has to be understood very well or it will look like you're getting accurate results when really it's not that accurate. For one thing, you have to have some way to guarantee part of the input signal is true random noise, and that is not that easy to get due to external influences being somewhat repetitive rather than random. Repetitive signals cause range clotting, where there ends up being more chance of a given measurement than another, and that upsets the whole theory of oversampling.
For example, you can not dither the input with a small sine wave and expect that to take the place of a small random signal. Note that it will look like it is working when really if you took many many measurements over the full range of the device you'd find that there is more chance of reading say 2.100 volts than say 2.110 and that defeats the whole purpose of oversampling in the first place. All i can suggest is that you read something good written on oversampling very carefully and make sure they talk about the required randomness of the noise source.

Also, as Deans post suggests, thermistors were not really made for this kind of application in the first place. For this kind of accuracy, cost or not, the best way to go is the digital sensor along with a look up table and some kind of calibration routine.

One thing we dont know yet though is what kind of overall accuracy you are looking for. You mentioned the resolution but that isnt the same as accuracy. For example, if you measure 40.2 deg C and the real temperature is 40.1 or 40.3 is that going to be a problem? Note that the repeatability would probably be ok though and the resolution would still be 0.1 deg C. Temperature measurements usually dont have to be super super accurate because there are other things that easily throw off the reading anyway like small temperature gradients caused by even the smallest air turbulence.
 
Last edited:
Status
Not open for further replies.

Latest threads

New Articles From Microcontroller Tips

Back
Top