Help with thermistor power filtering circuit

Hi all,

I've been tinkering with my Arduino for a while, and I'm finally starting off on a more substantial project, which includes a number of 100K thermistors (and maybe one of two 10K thermistors) for temperature sensing. I'm using the Thermistor4 library (http://playground.arduino.cc/ComponentLib/Thermistor4) which has been a massive help, and taught me a lot.

In the link above, a power filtering circuit is described. My background is mainly software, and while I'm fairly comfortable with what I'm looking at in the diagram, there are a few elements that are a little ambiguous, and I could do with a bit of assistance. I'll likely end up using a much simpler version of the circuit, but want to understand as much as possible about the reference design before beginning. For reference, here is the diagram of the circuit:

Starting with the inductor, is there a specific type of inductor I should be using? Is a simple R.F. Choke going to be suitable (e.g. http://www.maplin.co.uk/p/rf-choke-100uh-wh35q)?

With the resistor directly after the inductor, a value of "1-10" is given. Should I assume Ohms of kOhms? How important is the specific resistance in the circuit result?

Lastly, for the electrolytic capacitors, a huge range is given for appropriate capacitance values (10-47uF in one case, and 0.1-47uF in the other). Like the resistor, should I be assuming that the specific capacitance value is less important than the mere presence of the component, and just pick a value in the middle?

Thanks in advance for any help.

  • Peter :)

Most of your assumptions are fairly good. The point of everything on the left side of this schematic is just to make sure you have a very clean 5V feeding the right half of the schematic. RP is 1-10 Ohms not KOhms.

I am no expert on inductors, but given that this one is meant to be a filter I would think a simple RF chock is what is being called. out. The electrolytic caps are again just being used as filters so the exact value is less critical than the presence. The exact values will affect what frequencies get filtered more than others, but unless you know your noise sources you can't really say which would be best.

The only truly necessary components on this schematic are the thermistor and the fixed resistor used to form a voltage divider that you measure with the ADC. Everything else is just helping to remove noise from the signal. You could opt to just hook up the minimum first and if the result is too noisy then add in the rest.

Thanks jroorda,

I've got the minimum hooked up already, but I am seeing some reasonable variation in temperature readings from my first thermistor (taking readings at 1 second intervals is showing up with 0.5-1.0 degree C temp reading jitter). So I thought I'll add on some simple power filtering, coupled with new code to take multiple readings and average them out, and see how things improve.

  • Peter

There is no point at all in filtering the thermistor supply unless you feed the analog reference from the same filtered supply. So you should connect the Aref pin to the positive side of CP1 and CP2, and call analogReference(EXTERNAL) in setup()..

Also, you should separate the analog and digital grounds. Connect the ground of the circuit in the diagram (ADC_GROUND) and nothing else to one of the ground pins of the Arduino. Use the other ground pins for connecting everything else (i.e. power and output devices). Doing this may improve things far more than filtering the supply does.

Thanks DC42.

From what I understand, if I feed the Aref pin with my filtered supply, all analog pins will use the same external reference, correct? So there's no way of setting just some of the analog inputs to use the external reference?

Just to clarify, if I go down this route, you suggest taking Aref from after the Inductor and Resistor, but before CP1 & CP2.

And, that being the case, I would have to use the same filtered supply (taken from just after the Inductor in the diagram - the same junction as the Aref) for any other analog sensors I wanted to add into the system, correct?

I think I'll draw up a new schematic... :)

Yes, all pins will use the same external reference. What other devices are you connecting to analog inputs? Any devices that are ratiometric (like your thermistor circuit) can also be powered from the filtered supply. It's only devices that produce absolute voltage outputs whose readings must be affected if you use using the external reference.

It may well be that you don't need to use a filtered supply. It all depends on what else the Arduino 5V supply and Arduino output pins are powering. Try separating the grounds first (see my previous reply), that may give the stability you need.

btw have you considered using digital temperature sensors instead of the thermistors, such as the DS18B20? Then you won't need to use the ADC.

Great. I’ll try the separate ground, and see how it improves my results. Right now, I don’t know what other analog inputs I’ll need, but I’m still in the early stages of designing the system.

I will have a lot of other digital outputs connected, though. Currently it’s only a serial controlled character LCD, but as I build up I’ll have an 8-channel solid state relay breakout (via a shift register), a couple of peltier modules (likely using a dedicated supply, but with the Arduino switching them on and off), a number of LEDs, a few 7-segment displays (likely through a shift register), a couple of water pumps (again on their own supply, but switched by the Arduino)… So there’s going to be a lot going on.

I looked at the DS18B20 (it seems rather ubiquitous) but a few of the temp sensors require high temp resistance (up to around 200ºC), which unfortunately rules them out.

If you do decide to try the filtering circuit, than the 100uH choke that Maplin sells would be suitable, although the 470uH or 1mH one would probably be better, assuming that Rfixed is at least a few Kohms. Don't bother with RP, the choke has enough resistance already.

dc42, your advice on using a different ground pin for the analog sensors seems to have worked! I've done a number of tests, and I'm getting around half the fluctuation in temperature readings compared to using a common ground pin. Thanks!

Tomorrow I'll experiment with the power filtering, just to see if it has any impact. If it doesn't work, no-harm, no-foul.

But, I've come across another issue...

I've noticed that the presence of the Serial LCD display is impacting the readings I get from the thermistor. With the two components grounded to different pins on the Arduino board, I did a series of tests taking thermistor readings with the LCD display set to "Off" and the display set to "On" with backlight at full brightness. With the LCD turned on, the readings are on average 0.25ºC lower, and also exhibit increased jitter (e.g. broader range between max and minimum readings).

So, it seems like the LCD display is impacting the thermistor circuit. Any thoughts on why this could be happening?

My first thought is that it may be related to the fact I've been running off USB power. Could the USB power source be influencing both the reading variability with the LCD on / off, as well as introducing jitter in the thermistor readings?

I think the problem is similar to the common ground problem, but on the +5V wire. I expect you have a wire from +5V on the Arduino that feeds both the thermistors and the LCD. So if the LCD current varies, so will the voltage drop across that wire and the connections at either end of it.

Most Arduinos have only one 5V pin, so you don't have the option of using different pins this time. Using a filtered supply to power both the thermistor and Aref should solve it, even if the filter is quite simple (e.g. a 10 ohm series resistor followed by a 100uF capacitor to ground).