I have been working on a way to get very accurate measurements of the tilt of a surface. The signal I use is a bipolar one that ranges between +/-2V. I started by trying the MCP3008, but the since the signal is bipolar, I had to add a resistor potential divider, then a buffer. Those components added some uncertainty, along with the fact that 8 bits with a 3.3V supply only gives 3mV accuracy ( I need at least 1 mV). The circuit worked but only to about 10mV after averaging over time.

To get a better solution, I decided to use an LTC1867 chip which accepts bipolar inputs. I also added an external 2.5V reference LTC6655 to improve accuracy. However for this I had to use the 5V supply (which I have read is more unstable). The reading I got where very unstable but in the right range.

My main question: 1. Is there a way to obtain a different 5V supply that is stable i.e, using batteries/ step down from mains and capacitors and a voltage regulator/ reference. I would like to use this supply just for the ADC and not to power the whole Pi. How would I take care of isolation and the different grounds.

2.This is more of a code question. On my ADC, I have the 2.5V Reference. Using spidev, how to I call spi.xfer2 on two different channels? I ask this because I wanted to use the error from the channel with the 2.5V as an offset to add to the ADC output of my actual signal to reduce the errors. Whenever I tried the code below, one of the values was always wrong compared to when I called spi.xfer2 only once

spi.max_speed_hz = 10000 
adc = spi.xfer2([180,0])
spi.max_speed_hz = 50000 
ref = spi.xfer2([244,0])
  • \$\begingroup\$ Most ADCs actually have pretty good power supply rejection ratios, on pg3 of the LTC1867 datasheet it says "Power Supply Sensitivity: VDD = 4.75V - 5.25V +/- 5LSB" which I assume means that for a 0.5V change, you only get a change of a % of a % (5 counts out of a possible 65'000-something). This is frequency dependent though, but there a lot of other ways noise can get into your ADC than just through the power supply. Noise coupling into the input is a pretty common source of noise, especially if you have high impedance inputs or a digital device nearby. Try a good LDO on the supply. \$\endgroup\$ – Sam Feb 11 '17 at 2:34
  • 1
    \$\begingroup\$ Build a local-battery for the ADC. Start with the original varying +5v, and insert 2 LowPassFilters, each of 10 Ohms and 100uF. The Tau is 1milliSec thus F3dB is 160Hz. These filters do nothing for 60Hz ripple, but other trash such as MPU rail trash at 160Mhz get knocked down a Million:1 in each LPF. Theoretically. With ESR and ESL, expect 10:1 or 100:1; you can raise the 10 Ohms to 100 Ohms, but that drops the VDD and may cause more than 0.5v change. Do not be shy about trying 3 of these LPFs in series. \$\endgroup\$ – analogsystemsrf Feb 11 '17 at 3:24

Your Answer

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

Browse other questions tagged or ask your own question.