EEVblog Electronics Community Forum

Electronics => Projects, Designs, and Technical Stuff => Topic started by: andrew_c on April 18, 2018, 07:29:36 am

Title: Accurate PT100 Arduino
Post by: andrew_c on April 18, 2018, 07:29:36 am
Afternoon all,

I have a small project which requires accurate temperature measurement (0.1°C) to be fed into the 10-bit ADC of my Arduino. I need to measure from 10 to 45°C. At present I am using a 1mA current source through my RTD and compensating for wire-length using a circuit "borrowed" from MicroChip AN687. Unfortunately this didn't give me much resolution on my ADC (4.384 to 4.953V) which works out to about 0.3°C. I've had a go at "flooring" the output to 0V and them amplifying which should give me 0.04°C resolution (albeit, inverting the signal). I don't care about linearity as I'll be creating a truth table against a calibrated unit.

This is my first time playing with Op Amps; I was hoping someone could take a quick peek and tell me if anything looks obviously wrong (or right?!).

P.S. Any advice on OA selection?

(https://i.imgur.com/4D8dyUr.png)
Title: Re: Accurate PT100 Arduino
Post by: tszaboo on April 18, 2018, 07:36:28 am
That is a lot of effort to measure an RTD. I would rather connect it to a ADS1147 (or similar chip from AD or Linear) and be done with it.
Title: Re: Accurate PT100 Arduino
Post by: andrew_c on April 18, 2018, 08:26:53 am
I know where you're coming from; I actually have a couple MAX31865 breakout boards which work great but I fancy going the long way around.

Ideally I would like to use a single 5V supply but I'm struggling to find something which would accept the input range (439mV - 4.476V). Does it even exist? Do I need to narrow my resolution?

I guess I could window between 1.75V and still have 0.1°C accuracy. The TI INA118 looks nice.
Title: Re: Accurate PT100 Arduino
Post by: firewalker on April 18, 2018, 12:30:15 pm
For the temperature range in question isn;t better to use an NTC thermistor in voltage divider configuration with a voltage reference as supply? An NTC with a high enough nominal resistance would also cancel out any lead resistance.

Alexander.
Title: Re: Accurate PT100 Arduino
Post by: SiliconWizard on April 18, 2018, 01:15:20 pm
That is a lot of effort to measure an RTD. I would rather connect it to a ADS1147 (or similar chip from AD or Linear) and be done with it.

I second that.
Title: Re: Accurate PT100 Arduino
Post by: Siwastaja on April 18, 2018, 01:32:11 pm
A lot of the reason to use PT100 to begin with is that when the measurement circuit is good, you don't need a lookup table to get 0.1degC resolution.

Lookup calibration is tedious to do and error-prone, so it's a huge plus to avoid doing that. Plus, you'd need a reliable reference temperature for the whole range. For that, you at least need an already calibrated, high accuracy thermometer which you can calibrate your own against.

If you really are ready to do a complete lookup calibration anyway, maybe you indeed could use a cheaper, simpler NTC thermistor with the very simple resistor divider circuit. NTC has a steep curve, meaning you get a lot more change of resistance in your temperature range. With a lookup table based calibration over the full intended operating range, 0.1degC accuracy is IMHO possible.
Title: Re: Accurate PT100 Arduino
Post by: andrew_c on April 18, 2018, 01:40:59 pm
Okay, apologies I didn't mention it, but I really was hoping to play with Op Amps a little bit. However, now I've had a quick play with a 5K NTC, I can see why you're all suggesting it.

The circuit gets pretty simple eh?

(https://i.imgur.com/qS3woMl.png)

This gives me 1.722V between 10-45°C. It's close enough to 0.1°C accuracy. I can fiddle with the divider resistor a little I guess :) thanks for your help guys.

Andy
Title: Re: Accurate PT100 Arduino
Post by: SiliconWizard on April 18, 2018, 01:41:15 pm
With a proper qualified PT100 or PT1000 sensor, you don't need any kind of calibration as long as the rated tolerance satisfies your requirements.
As far as I remember, the resistance-to-temperature conversion is done with simple polynoms given in the relevant standard (I think: IEC 60751). I've used this in the past and there was no need for calibration. To get 0.1°C of precision though, you will need tight-tolerance components and at least a 16-bit ADC.

Really, the ADS1147 is fine for that.

At the time, I did this with a Wheatstone bridge, a voltage reference and an ADS1118. But the ADS1147 integrates most of what you'll need.
Title: Re: Accurate PT100 Arduino
Post by: firewalker on April 18, 2018, 03:26:46 pm
Can't SteinHart-Hart equation for a proper NTC (with well known characteristics) give 0.1 degrees accurately without look up tables?

Alexander.
Title: Re: Accurate PT100 Arduino
Post by: texaspyro on April 19, 2018, 01:27:46 am
Take a look at the first application example shown in this datasheet:
http://www.ti.com/lit/ds/symlink/ref200.pdf (http://www.ti.com/lit/ds/symlink/ref200.pdf)

You can also use the REF200 to drive 10K thermistors.   
Title: Re: Accurate PT100 Arduino
Post by: viperidae on April 19, 2018, 09:46:19 am
Have you thought about changing the MCU's ADC +ref and -ref to match your input voltage range?
Title: Re: Accurate PT100 Arduino
Post by: andrew_c on April 19, 2018, 09:58:53 am
I have in fact, though I already have a few devices configured for the standard reference so it wouldn't be a wise move.
Title: Re: Accurate PT100 Arduino
Post by: westfw on April 20, 2018, 05:39:56 am
Don't forget that the Arduino has a variable Vref - power supply, internal 1.1 bandgap, or external.
The first two might not give you the accuracy you need - "yea, I have a 10bit ADC, but my power supply is only ~10%..."
Title: Re: Accurate PT100 Arduino
Post by: bicycleguy on April 20, 2018, 06:20:17 am
If you really want to play with op amps then you want to play with an instrumentation op amp like the INA826.  Interesting how much closer to ideal in nearly every spec compared to a regular op.

Here's an RTD application from use in 3D printer extruder temp measurement:
https://wiki.e3d-online.com/File:PT100_Schematic_(v1).png
Title: Re: Accurate PT100 Arduino
Post by: ahbushnell on April 20, 2018, 01:04:27 pm
Okay, apologies I didn't mention it, but I really was hoping to play with Op Amps a little bit. However, now I've had a quick play with a 5K NTC, I can see why you're all suggesting it.

The circuit gets pretty simple eh?

(https://i.imgur.com/qS3woMl.png)

This gives me 1.722V between 10-45°C. It's close enough to 0.1°C accuracy. I can fiddle with the divider resistor a little I guess :) thanks for your help guys.

Andy

I don't think you will get .1 C accuracy with a thermistor.  You may have a measurement resolution of .1 C. 

Andy
Title: Re: Accurate PT100 Arduino
Post by: mycroft on April 20, 2018, 06:08:32 pm
You can get 0.1 C accuracy and resolution using an interchangeable NTC (like https://www.mouser.com/ProductDetail/803-PS103J2 (https://www.mouser.com/ProductDetail/803-PS103J2)). The series resistor should have a small tempco and you ADC should have enough bits.

You can use cheaper NTCs like in https://thecavepearlproject.org/2016/06/09/better-thermistor-readings-with-an-arduino-series-resistors-aref/ (https://thecavepearlproject.org/2016/06/09/better-thermistor-readings-with-an-arduino-series-resistors-aref/) provided you calibrate them.

Choose your pick.
Title: Re: Accurate PT100 Arduino
Post by: cellularmitosis on April 20, 2018, 10:41:50 pm
Hello,

You can do this with a thermistor, 1 op amp and 4 resistors (see attached).

You'll need to re-adjust the resistors to suite your temperature rage (the resistors shown are for a 20C to 30C window).

I thought I was getting 0.01C accuracy with this setup: https://www.eevblog.com/forum/metrology/temperature-stabilised-enclosures-heating-and-or-cooling/msg1412203/#msg1412203 (https://www.eevblog.com/forum/metrology/temperature-stabilised-enclosures-heating-and-or-cooling/msg1412203/#msg1412203)

but it turns out that I was actually getting more like 0.1C, due to the tempco of the circuit / Arduino: https://www.eevblog.com/forum/metrology/temperature-stabilised-enclosures-heating-and-or-cooling/msg1412845/#msg1412845 (https://www.eevblog.com/forum/metrology/temperature-stabilised-enclosures-heating-and-or-cooling/msg1412845/#msg1412845)

Here are some more links: https://www.eevblog.com/forum/metrology/temperature-logging-what-are-some-good-entry-points/msg1451006/#msg1451006 (https://www.eevblog.com/forum/metrology/temperature-logging-what-are-some-good-entry-points/msg1451006/#msg1451006)
Title: Re: Accurate PT100 Arduino
Post by: cellularmitosis on April 20, 2018, 10:42:38 pm
Here's the LTSpice file:

Edit: note that you use the same 3.3V signal for your AREF, which makes it a ratio-metric measurement (i.e. it doesn't matter if your 3.3V ref drifts).
Title: Re: Accurate PT100 Arduino
Post by: cellularmitosis on April 20, 2018, 11:28:10 pm
Here's the closest I could get using Vishay's PTF56 resistors, which have good tempco values.  9.4C to 42C, at about 0.03C per LSB, with a fairly linear response.

https://www.digikey.com/product-detail/en/us-sensor-littelfuse-inc/103JG1J/615-1016-ND/1014544 (https://www.digikey.com/product-detail/en/us-sensor-littelfuse-inc/103JG1J/615-1016-ND/1014544)

https://www.digikey.com/products/en/resistors/through-hole-resistors/53?k=ptf56&k=&pkeyword=ptf56&pv7=2&FV=mu59+kOhms%7C2085%2Cmu6.81+kOhms%7C2085%2Cmu75+kOhms%7C2085%2Cmu80.6+kOhms%7C2085%2Cffe00035&quantity=1&ColumnSort=0&page=1&stock=1&pageSize=100 (https://www.digikey.com/products/en/resistors/through-hole-resistors/53?k=ptf56&k=&pkeyword=ptf56&pv7=2&FV=mu59+kOhms%7C2085%2Cmu6.81+kOhms%7C2085%2Cmu75+kOhms%7C2085%2Cmu80.6+kOhms%7C2085%2Cffe00035&quantity=1&ColumnSort=0&page=1&stock=1&pageSize=100)

Of course, you'll have to calibrate this setup :)

The cost for thermistor + resistors is $9.35 (two of the Vishay values were pretty pricey).

(The LT1001 isn't indicative of what op amp you should use -- I just picked that part because LTSpice has a model for it).