Zener as reference for ADC

I did not know if this is the right forum, I hope it is!

I am designing a simple ADC stage, using the MCP3562R IC. It is 24-bit, but of course only in theory.

My analog input voltage will be in the range of 0-3V. I am planning on running the IC at 3.3V, and using only one regulator for both analog and digital power supply (possibly performing a star ground at least to improve their isolation).

The voltages that will be fed into the inputs of the ADC will be generated from a ~15.6V reference, created by using two BZX84B15 diodes in series (one forward biased, one reverse). The voltage source powering these diodes will be a discrete series reg.

My goal is to achieve at least 100uV sensitivity at the ADC inputs. Meaning that the digital output should be able to distinguish changes of 100uV at the analog inputs. In my understanding, this means that I should aim for at least 15 usable bits, that provide 32768 levels - 3/32768 is close to 92uV per step.

So my question is, would it be a good idea to use my diode reference as the ADC reference (after bringing it down to 3V of course), or would I prefer to use the built-in one? It specifies a noise of 14uV, but I don't know the BW that this spec refers to.

According to specs, using an OSR figure of at least 64 would give me an ENOB figure of 18 bits. So all this is about how good my reference and input noise levels need to be in order to guarantee 15-16 bits out of this IC.

I plan to also use an opamp to feed the ADC inputs, probably the OPA4991, with an offset voltage of 125uV - meaning about a step of error. Or OPA4192, which only has 5uV offset.
 
Well, I got the idea from the PM829 design of Walt Jung, where he describes this approach as having a quite low TC. With 6V2 diodes of course.

To be honest I am looking for a quick but adequate solution, since I initially planned to use another ADC scheme. I know that I can make it more complex and good, but I was wondering if such an implementation would suffice for the level of resolution I am seeking.

I suppose I can live with a 1% deviation in full temperature range..

EDIT: I have included a calibration pot, so I think that only temperature drift matters. The BZX84B15 specifies a 13mV/K maximum coefficient, which means a 3.5% change for 40oC change. It is not that accurate indeed
 
Last edited:
On the other hand, I will use this for an adjustable power supply, that will have a display for the measurement of output voltage. So the voltage could probably drift 3-5% across the temperature spectrum, but I will be able to see the fluctuations and re-adjust if needed.

Hardly a concern in my experience, but something that I should obviously consider.
 
Of course, I did ask it! 🙂

But apart from the stability issue - are both solutions adequate for achieving 15-16 bits of resolution?

I don't think that spice models include noise models for the zeners, so I can't be sure. Reading another classic thread concerning real measurements I deduced that high voltage zeners are expected to be quite low noise.

But are they that quiet? I suppose they trade their instability/inaccuracy for a better noise figure. At least compared to affordable competitor references.
 
Well I did my reading, and I understand that for so many bits, the reference must be rock stable.

I do not want to go crazy though, and I am leaning towards using a REF2033 as both analog supply and reference. Is seems quite stable, and since noise is in the order of about 40uVpp in 0.1-10Hz, I believe it's adequate.

Regarding noise: could we assume that the reference noise is more or less constant, so that it will introduce a dc step error? For example, a 230uV input level carrying a varying 40uVpp noise, would force the ADC to interpret the input voltage as either 200uV or 250uV, if we assume that step is 50uV.

Can these noise fluctuations in the 0.1-10Hz region be considered a dc error (so that you know that every reading carries it, like an offset voltage), or will it appear as a real time fluctuation in the SPI? Unless you average the readings etc. My gut tells me that the reading will fluctuate along with the peculiar waveform of the noise.
 
Sigma-delta ADCs typically use noise shaping, so your insights about step response are probably way off. There are no fixed levels corresponding to each output count, but a continous response polluted by quantization noise that has had its spectrum pushed up in frequency.

The datasheet has some histograms of output values corresponding to the ADC's internal noise - they are basically gaussian curves - whatever your reference noise, its going to be seen through the lens of the ADC's sigma-delta modulation dynamics which appears to approximate a stable amount of gaussian noise.
 
So the influence of the reference noise is going to appear gaussian.

Doesn't that mean that it will appear as a steady uV level polluting the ADC's output signal? But dependent upon the reference noise?

It seems to me from your comment that regardless of the reference noise, the ADC operation will make it appear as stable amount. Sorry for any misunderstanding, I am still getting familiar with quantizing, I have only a basic knowledge of bits, ENOB, SINAD, OSR in that matter.
 
Another 'pro' for a micropower reference, this part requires the reference to be below its AVdd, so a 2,5V ref would be right in the sweet spot. And typically they operate at very low currents -- much lower than any discrete zener at a useable impedance.

I'm surprised there isn't a Successive Approximation part with 3½ or 4½ decimal digits of resolution that would better suit a power supply app -- especially since you don't need differential inputs or 150k samples/second. (Do you? 😉)

You could even *settle* for the internal reference. A cursory scan of the spec PDF points to a temperature-sensing diode on chip. Are you sure that wouldn't be accurate enough? It does claim 23,3 ENOB, after all.

This is a real beast of a part -- especially for under $5 USD! And the whole thing draws less than one milliamp! Thanks for discovering it; bet you'll get it working before I do ..

Cheers
 
Last edited:
Well it is a beast for the price!

And as you correctly suggest, I do not need 150ksps. 😛 This leads to me thinking I will achieve at least 15-16 bits even with "mediocre" planning, being able to use high OSR - a figure of 512 in OSR will still give me a data rate of 2400, more than adequate for driving an LCD.

What I did not understand is you remark about the reference being below the AVDD - the specs in the datasheet quote AVDD=Vref in many occasions, did I miss something?
 
Yes, thanks for the link! It seems good indeed.

How about "shielding" the reference with some silicone to thermally isolate it from ambient temperature changes?

Or another quick and easy way to isolate it a bit and gain some accuracy for "free".
 
The only thing about *insulation* for the reference -- it will considerably lengthen the time constants, which would greatly complicate/aggravate testing -- while contributing nothing to ultimate accuracy. (The resulting accuracy after everything reaches equilibrium.)

Cheers
 
Hmmm, interesting. I would suppose that if it is thermally isolated, the thermal barrier would introduce a temperature difference between the ambient and the reference that is greater than leaving it just open.

Are you suggesting that in general any thermal insulation will have negligible effect, or the "method" I proposed?
 
Errm .. uuh, Nope, I'm thinkin' that unless you have wildly swinging ambient temperatures to hold steady through, you'll be biting off additional trouble that you don't need. The differing time constants between the thermally insulated and un-insulated circuit sections will probably be good for several extra headaches.

Of course, I've been wrong before. 😱

Cheers
 
Well I still don't get it - if the reference is rock solid no matter the external temperature, even if the other components fluctuate due to ambient changes, the ADC will correctly read the fluctuated values, and this would (for the most part) result in a system that has drifts over the operating ambient temperatures, but read the drifted values correctly. Am I missing something?

Do you propose that you should let everything share the same ambient air so that everything would "drift together"? I feel that this could not hold, since you need to have the same ppm/C ratings for every component, to say the least... Which cannot easily happen, not in my case anyway 😛