50nV Resolution

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
I've been busy the past few weeks with a new project. This one has been fun.

As usual, no details about the intended application, but here is the hardware:

PIC18F65k22 at 8Mhz
TI ADS1242 24 bit delta-sigma A/D, PGA=128, 30 samples per second, Vref=2.5V

The code takes the 30 samples per second, runs them through an IIR with a 32 stage feed-forward and 2 stage feed-backward, followed by a 3 sample per second decimation filter.

In IEEE floating point!!!.

Total computation time per sample -- about 3ms**.

Result: 50nV* rock solid DC resolution at 3 readings per second. Step response settling time about 4 seconds.

Totally awesome.

*Total peak-to-peak noise is about 75nV measured over a 1 minute period.
** Measured by shaking my head.

Oh! And it runs for about 150 hours on 2 'AA' batteries with a bluetooth radio in active connect mode.

And all the code written in .asm, of course.
 
Last edited by a moderator:

Alec_t

Joined Sep 17, 2013
12,315
As you say, awesome. Let me guess; the mystery application isn't controlling the flash rate of a LED string on your Christmas tree :D.
 

bogosort

Joined Sep 24, 2011
678
Impressive! Yesterday I received my PCBs for a design that required 16-bit resolution at dc. It uses a Teensy 3.2 (96 MHz) and an MCP3421 18-bit delta-sigma ADC, carefully laid out on a 4-layer PCB. I was curious how well my design performed, so I tested it at 18-bits with no software averaging -- just straight sampling, as fast as the 3421 can achieve (3.75 SPS). I was very happy to measure peak-to-peak noise of 2 LSBs over a 1 minute interval (1 LSB over 30 seconds). At 18-bits, one LSB is 15.625 uV, so nowhere near as nice as your 50 nV, but not too shabby for pure analog performance. :)
 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
Note to mods: I have a bit of a problem with you editing my posts without making it clear a) that you did so, and b) what editing you did. Thank you.
 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
Impressive! Yesterday I received my PCBs for a design that required 16-bit resolution at dc. It uses a Teensy 3.2 (96 MHz) and an MCP3421 18-bit delta-sigma ADC, carefully laid out on a 4-layer PCB. I was curious how well my design performed, so I tested it at 18-bits with no software averaging -- just straight sampling, as fast as the 3421 can achieve (3.75 SPS). I was very happy to measure peak-to-peak noise of 2 LSBs over a 1 minute interval (1 LSB over 30 seconds). At 18-bits, one LSB is 15.625 uV, so nowhere near as nice as your 50 nV, but not too shabby for pure analog performance. :)
The ADS1242's native unfiltered 1 minute peak-to-peak noise (in my configuration) is about 600nV. With the filter activated, most of the noise is sub 0.25 Hz, increasing at lower Hz. It looks a hell of a lot like 1/f noise. If the source is inside the chip, it is something upon which I may be able to further improve. That's my job for today.

FYI, the objective is long-term stability (i.e. minimal drift and very low low-frequency noise).
 
Last edited:

nsaspook

Joined Aug 27, 2009
8,904
I used a ADS1220 with a custom kernel driver (written in C like most people would ) for the Raspberry PI Comedi DAQ system in my Super moon monitor using the 20SPS 20-bits of real data mode.
http://forum.allaboutcircuits.com/threads/super-moon-shine.100322/page-2#post-904573

The ADS1220 code from solar driver was added to a general RPI Comedi DAQ driver that includes support for several other chips like the ADS8330 (16-bit 1MSPS), MCP3x02 ADC and MCP48x2 DAC.
https://github.com/nsaspook/daq_gert/blob/master/daq_gert.c

I ran several FFTs of the raw source+noise data from the ADS1220/Panel system to get a good idea about what type of external data processing I needed to extract the moonlight signal data from the thermal noise of the solar panels under darkness and low light conditions. Managed to post-process the data to the point I could detect airplane lights flying across the sky at night with a solar panel

Some screenshots of that raw data.
Raw signal data chart display example with noise.

Post processed signal example:


sigview:


 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
I used a ADS1220 with a custom kernel driver (written in C like most people would ) for the Raspberry PI Comedi DAQ system in my Super moon monitor using the 20SPS 20-bits of real data mode.
http://forum.allaboutcircuits.com/threads/super-moon-shine.100322/page-2#post-904573

The ADS1220 code from solar driver was added to a general RPI Comedi DAQ driver that includes support for several other chips like the ADS8330 (16-bit 1MSPS), MCP3x02 ADC and MCP48x2 DAC.
https://github.com/nsaspook/daq_gert/blob/master/daq_gert.c

I ran several FFTs of the raw source+noise data from the ADS1220/Panel system to get a good idea about what type of external data processing I needed to extract the moonlight signal data from the thermal noise of the solar panels under darkness and low light conditions. Managed to post-process the data to the point I could detect airplane lights flying across the sky at night with a solar panel

Some screenshots of that raw data.
Raw signal data chart display example with noise.

Post processed signal example:


sigview:



Tell me more about this:

Selection_002.png
 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
But isn't the typical noise of that part about three orders of magnitude higher than what you are seeing?
Reference noise is irrelevant. The input voltage is ratiometrically related to the reference. I'll probably eliminate the reference for the final design with, theoretically, no reduction in performance. I'll report back when I've confirmed this.
 

nsaspook

Joined Aug 27, 2009
8,904
No, I mean is that a fft? And is the peak on the left 1/f? And, if so, do you know where it came from?
Yes, that's the FFT of the noisy signal. That noise is a mixture of thermal, shot and 1/f noise mainly from the solar panel PN junctions mixed with similar (but lower levels of) noise from the ADC electronics. 1/f noise is likely the dominant energy in the very low end of the signal spectrum but most of my measurements were in the range of 8-10 hours not several days or weeks. The origins of 1/f in most devices is manufacturing process dependent. The higher the quality and uniformity of semiconductor process the lower the levels of 1/f noise usually.
 
Last edited:

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
But isn't the typical noise of that part about three orders of magnitude higher than what you are seeing?
Oh, also, I'm using the Vref/2 mode and 128 PGA. This translates the effective reference noise from 35 µVRMS down to around 136 nVRMS -- if it were important.
 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
Yes, that's the FFT of the noisy signal. That noise is a mixture of thermal, shot and 1/f noise mainly from the solar panel PN junctions mixed with similar (but lower levels of) noise from the ADC electronics. 1/f noise is likely the dominant energy in the very low end of the signal spectrum but most of my measurements were in the range of 8-10 hours not several day or weeks. The origins of 1/f in most devices is manufacturing process dependent. The higher the quality and uniformity of semiconductor process the lower the levels of 1/f noise usually.
Yes, I know where it comes from in general, I was wondering if you did any analysis as to individual sources and their contribution. Specifically, I am trying to track down the source of the 1/f in this system -- it can only come from one, or both, of two places: the transducer or the ADS1242.

I am hoping a major contributor is the ADS1242 -- I can fix that if so. Testing as we speak. Results in a few hours.
 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
BTW, I wish I was proficient in writing Android apps. If so, I'd just transmit the data to my phone via bluetooth and let it do the analysis. It'd be much faster than the manual method I am using.
 

Thread Starter

joeyd999

Joined Jun 6, 2011
4,477
Also, I am not controlling for environmental conditions as I run these tests. The A/C keeps cycling so I'm sure that's a (small, hopefully) part of it.
 

nsaspook

Joined Aug 27, 2009
8,904
Yes, I know where it comes from in general, I was wondering if you did any analysis as to individual sources and their contribution. Specifically, I am trying to track down the source of the 1/f in this system -- it can only come from one, or both, of two places: the transducer or the ADS1242.

I am hoping a major contributor is the ADS1242 -- I can fix that if so. Testing as we speak. Results in a few hours.
I did some simple analysis with several thin-film resistor values to characterize the noise sources. The thermal solar panel noise swamped the ADC sources.
 
Top