Support Forum

Share your projects and post your questions

Register   or   Sign In
The Forum

VRef - Voltage Reference Chip: power available?

1160 Views - Created 02/02/2020

02/02/2020

Posted by:
Christophe Dupriez

Christophe Dupriez Avatar

Hello!

I am trying to achieve good precision in reading multiple thermistors with the ExpanderPi. I am wondering if I could power the thermistors with the Voltage Reference chip (10k fixed resistance + 0-10k variable resistance) ? 6 thermistors would require a maximum of 6 x (4.096V / 10k), about 2.4mA

As the thermistors are heating, I need to close the power when I am not measuring. Any suggestion how to do this without changing the voltage ?

Thanks!

P.S. By the way, I added a suggestion in GitHub for ADC class from ExpanderPi to slow down the SPI bus to get more precise results (190kHz instead of 1.9MHz)

02/02/2020

Posted by:
andrew

andrew Avatar

Location:
United Kingdom

andrew Twitter  andrew Website  

Hello Christophe

The voltage reference used on the Expander Pi can only supply 2mA so it would not be suitable for powering your thermistors.

You could use an external reference such as the MCP1501 from Microchip which can supply up to 20mA. The MCP1501 includes a shutdown pin which you could use to turn the reference off when you are not measuring which would reduce the heating problem. According to the datasheet for the MCP1501 on page 11, the reference takes about 700µS to stabilise so you will need to add a delay between switching the reference on and taking a sample from the ADC.

I have updated the ADC class in the Expander Pi library to use a 200KHz SPI bus so it should be more precise now.

09/02/2020

Posted by:
Christophe Dupriez

Christophe Dupriez Avatar

Thanks Andrew! I also have a lot of fluctuations in measures from other sources than the thermistors (e.g. battery monitoring): I suppose I need to add some capacitors (10nF ? ) to smooth a bit variations in the input signal. ADC is not simple as 1-2-3 and I am a bit surprised no board exists to help interface the "real world" in a variety of situations. If you know some that could sit between your ADC and outside world (8 inputs), let me know ! For now, I see that one could like to be able to (8 times):


put resistors to divide input voltage
add some TVS for dumping ESD
add a RC filter
switch a constant excitation voltage (thermistors)


It could even be based on (not too small) SMD components as they are no longer so difficult to solder...

Just some ideas!

Have a nice day,

Christophe

09/02/2020

Posted by:
andrew

andrew Avatar

Location:
United Kingdom

andrew Twitter  andrew Website  

Hello Christophe

Try checking the stability of the 5V power supply that is powering your Raspberry Pi as any large instability or noise in the power supply can show up in the ADC readings.

One way to improve the accuracy would be to use a separate 5V linear power supply for the Expander Pi, isolating it from any instability in the Raspberry Pi power supply. If you disconnect the solder jumper on the Expander Pi next to the GPIO header you can then power the Expander Pi from the 5V and GND pins next to the DAC header. Adding some 10nF capacitors to the ADC inputs may help smooth out any high-frequency noise.

I don't know of any ready-made boards that will sit in between the ADC and the item you are measuring but I will look into whether or not we could design one to work with our ADC boards.

09/02/2020

Posted by:
Christophe Dupriez

Christophe Dupriez Avatar

Thanks a lot Andrew for the good suggestion!

I got a lot of improvements with two changes:


As I feed the thermistors with the GPIOs of the ExpanderPi (to keep them cool as they are within an insulated place), I increased the setup time for the GPIO before reading the ADC
I added capacitors in various places but what had a dramatic effect was placing a 200nF between 5V and GND (the big connector on the ExpanderPi : a trick that users should know ?


Now I still have a medium error (standard deviation) of about 10mV (of 2.5V) and a mean wich is 0.5% over what it should be: begin to be very good. Problem is that for 75°C (where I really need precision), the thermistors will vary way less than at 25°C: I think there are some tricks for this...

09/02/2020

Posted by:
andrew

andrew Avatar

Location:
United Kingdom

andrew Twitter  andrew Website  

Hello Christophe

It may be worth reading through this application note from NXP that gives a lot of tips for improving ADC accuracy.

One method you could try is to use ADC averaging by taking a number of samples, placing them in an array and then calculating the average value from the array.

Using screened cables for your ADC inputs will also help cut down any external interference on the ADC inputs.

11/02/2020

Posted by:
Christophe Dupriez

Christophe Dupriez Avatar

Thanks a lot Andrew, this is a gold mine to investigate all possible issues!

One may dream to buy an ADC board, with flexibility with resistors and capacitors + voltage reference (switchable excitation signal) so to cope with diverse situations BUT providing a solution to most issues (good PCB design,good connectors, EMC protection, ... ) ! In the current situation, after demonstrating a working prototype, I will be obliged to design a PCB because it will be impossible to deal with all constraints by simply assembling existing boards.

One will notice that the frequency of the measures has a deep impact on an ADC board design. Anyway Python is not allowing very high speed: probably sub kHz would be a big slice of the market.

Have a nice day !

Sign in to post your reply

Note: documents in Portable Document Format (PDF) require Adobe Acrobat Reader 5.0 or higher to view.
Download Adobe Acrobat Reader or other PDF reading software for your computer or mobile device.