I have a thermistor that should vary between 98 and 140 Ohm and am looking for the simplest circuit that will convert this into something meaningful for a 10 bit ADC in the 0-3.3V range.

Precision wise, 0.4 Ohm or so on average would be great, and let's just ignore the nonlinearity issue altogether. I'd rather save some circuitry than shoot for optimal results (and there will be a lookup table).

I have (only) +3.3V of input voltage, plenty of current, a dual op-amp that is hopefully useful somehow, and a bunch of resistors and some other crap. Suggestions?


The simplest way is to use a resistor pullup (or pulldown) matched to the thermistor range to achieve the maximum voltage range output. 140Ω / 98Ω is a ratio of 1.43. To get the maximum response with this being one of the resistors of a voltage divider, we want to divide that range in half, which means taking the square root of the ratio. Sqrt(1.43) = 1.20. This means the center value of the voltage divider should be when the thermistor is 1.20 times its minimum, which is also its maximum divided by 1.20, which is 117 Ω. The nearest common value of 120 Ω will be close enough to still give you basically the maximum possible output.

So now we have:

The R2-R1 voltage divider divide ratio will change as a function of temperature as R2 changes. C1 is there only to reduce noise. You know a thermistor just can't change that fast, so it will reduce some of the high frequency content that you know can't be real signal. In this case, it will start attenuating above around 250 Hz, which is well above what any ordinary thermistor can do.

The next step is to figure out what voltage range you will get. This is just solving the divider for the two extreme cases, which are 120/(120 + 98) and 120/(120 + 140). Multiplying these by the 3.3V input, we get 1.82 V and 1.52 V, for a total range of 293 mV.

If you just run the voltage divider output straight into the A/D input, then you will be using 8.9% of the range, or about 91 counts. If 1 part in 91 is good enough, then you don't need to do anything further.

To get better resolution, you can amplify this signal about the midpoint of half the supply voltage. To bring it to a full scale signal, you'd need a gain of 3.3V / 293mV = 11. It's good to leave some headroom and not force the opamp to go completely rail to rail, so a gain of 8 or so would be good. That would give you lots more A/D counts of the temperature range than the accuracy of the parts can support.

  • 3
    \$\begingroup\$ Beware that the current flowing in the thermistor will heat it, with about 23mW of power max (U^2/R1/4). This will be insignificant in some applications, but not others (small thermistor in a well-insulated environment). To minimize this, you may want to use a pulsed current technique. \$\endgroup\$ – fgrieu Dec 9 '13 at 14:55
  • 2
    \$\begingroup\$ @fgrieu: Yes, good point. In this example, the worst case heating is when the thermistor resistance equals the fixed resistance of 120 Ohms, at which case half the supply voltage is applied to it. That results in 23 mW of heating. That could be significant for a small thermistor. It depends on the application. If this matters, the easiest solution is to use a higher resistance thermistor and scale the fixed resistor accordingly. Thermistors are available in a wide range of resistances. Or, as you say, turn on the circuit for a short time around each measurement. \$\endgroup\$ – Olin Lathrop Dec 9 '13 at 15:00
  • 1
    \$\begingroup\$ @fgrieu: Doh! Yes, 23 mW. Fortunately it was still within the time limit to edit the comment, so I fixed it. \$\endgroup\$ – Olin Lathrop Dec 9 '13 at 15:04
  • \$\begingroup\$ Thanks! That range should do, even if it feels like I'm wasting some potential here. I assume amplifying the signal would take quite a few components? \$\endgroup\$ – eevar Dec 9 '13 at 18:08
  • \$\begingroup\$ @eevar: Amplifying the signal as is could be done with one opamp and three resistors. However, if you're going to amplify the signal, then I'd use a different topology using in total 3 resistors, 1 capacitor, 1 opamp, and the thermistor. \$\endgroup\$ – Olin Lathrop Dec 9 '13 at 19:49

A simple voltage divider of which your thermistor would be part should work, though you would not be able to take advantage of your adc's range. If R1 = 120 this would give you a 1.48V to 1.78V range (so 460 to 551 at your ADC's output).

If you are just looking for a very simple indicator that could do the job, otherwise I would use an op-amp to expand the signal over the whole 0-3.3V range.


simulate this circuit – Schematic created using CircuitLab


Taking several readings consecutively will give you a decent average because the noise present on the signal will auto-dither the result (dithering). So, it comes down to finding a resistor value from the 3V3 that maximizes your range. Using this method also relies on the ADC's reference being also the same supply voltage to give best accuracy.

If you used a 140 ohm resistor from 3V3 to power the thermistor you'd get half the supply across the thermistor and half the ADC span i.e. 512 bits - that's in the order of 0.27 ohms resolution BUT self heating might be a problem. Power in the thermistor would be 19mW.

If you don't envisage too much of a problem with that then job done.

However if self heat is too much, then go for a 1kohm feed resistor. Now, the voltage across the thermistor will be 0.405 volts and self heating will be about 1.2mW. Resolution will be down to about 126 bits or 1.11 ohms but like I said earlier, using multiple measurements and averaging will be fine.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.