Needing more than a spark test?

With maybe three attempts at this, I wired up the ADC board. I have no input, just the 10K resistor to ground. I get an average count of 15. I need to modify stuff to get more info. No stuck bits. Was going to short the input, but my laptop just froze and turned off. Will have to run this on my RPI. I have no idea why my laptop just quits, but it's aggravating as all get out. It's something to do with USB. The system leaves no messages, it just turns off.

On the air again with my RPI. Grounded input. "Avg # bits = 9". RMS variation 0.936. Very good for not having done any changes to the board. That should not be bits. It's the average digitized value, that would be counts. So a hair over 3 bits. I didn't rework the capacitors, or add any grounding. This is just the board as received and populated.

As time goes on, the average count has increased, even with a grounded input. Now hovering around 14 counts, just shy of 4 bits. I have unplugged many unneeded power supplies, and it seems the same.

I believe there is a bug with commonbits only being initialized at the start of loop. If I put the same statement, at the start of the commonbits loop, I get no stuck bits. Without it, in a loop once it is set, it is perpetually set. At the moment, I can't see much difference in average count between running at an apparent 200KSPS or 1MSPS.
The stuck-bits function is misleading in another way. It really only finds a stuck-high condition. It was written when I was seeing all sorts of junk coming out of the ADC, and probably should just be deleted (or totally reworked), now that the ADC timing problem has been addressed.

DC offset, but at least it's noise like.
1676309852076.png

It appears you are getting something around 13 counts on average. That translates to a Vos around 0.5mV. Not too bad!
 
@homebrewed Mark, what is your current thinking on the grounding and capacitors for this board? Have your reworks shown any promise, or is this similar to what you are seeing? Hate to give up those 3 bits (real ones!) if we don't have to.
 
@homebrewed Mark, what is your current thinking on the grounding and capacitors for this board? Have your reworks shown any promise, or is this similar to what you are seeing? Hate to give up those 3 bits (real ones!) if we don't have to.
I'm seeing zero counts with the input shorted to ground but it's really hard to believe it's true. Yes it's powered up :)

My board just has two mods, neither one of which required cutting any traces. I have a heavy jumper wire connected between the input GND pin and the ground side of C2, which is the 1206 mounted on the bottom of the board (the end closest to the edge of the board is Gnd). That provides an alternate path for DGND. The second mod is a 10uF capacitor connected between the +5 and Ground inputs to the board. I made a little 2-pin "power connector" that plugs into the header, and the capacitor is soldered to those pins.

Have you tried disabling the LED_SET and LED_CLEAR commands in the ISR? They might produce a small power bump that's synchronous with the ADC. They're only there for debug purposes.

To be honest I think the noise coming out of the detector circuitry is going to be much higher than 13 counts. Concentrating our attention on improving that will probably be more beneficial to the success of the project.
 
With maybe three attempts at this, I wired up the ADC board. I have no input, just the 10K resistor to ground. I get an average count of 15. I need to modify stuff to get more info. No stuck bits. Was going to short the input, but my laptop just froze and turned off. Will have to run this on my RPI. I have no idea why my laptop just quits, but it's aggravating as all get out. It's something to do with USB. The system leaves no messages, it just turns off.
You may be doing OK, or even better than expected at this stage.
Whatever is going on, it is not from the 10K resistor.
Consider √ (4*k*T*B*R) with T = 290K (about) and R = 10K
Choosing all of B=300,000 Hz and k = Boltzmann's Constant 1.380649E-23
... it all amounts to about only 6.9uV of noise if Vref was 2.048V.
I think your Vref is higher. Even so, regardless, it's too little to make a count of 15. That noise is below what it takes to twitch the LSB.

Thus you have a count from some kind of 0V offset, or some other cause, or noise. A count of 15 is useful, perhaps even fairly normal going by the standards of quite a lot of kit. In hard numbers, the 15 count is -72.8dB down.
The ADC specification is good for 89dB on noise S/(N+D), and 105dB of spurious free dynamic range

Mark is right that 0.5mV might be not too bad if it were a final opamp offset, but an ADC input is not one of those. A don't think a grounded input to an ADC can have any offset at all, by basic principle. There is no source in the resistor. ADCs are tested down to the LSB.
On the air again with my RPI. Grounded input. "Avg # bits = 9". RMS variation 0.936. Very good for not having done any changes to the board. That should not be bits. It's the average digitized value, that would be counts. So a hair over 3 bits. I didn't rework the capacitors, or add any grounding. This is just the board as received and populated.
A count of 9 instead of 15. That's good!. Getting -77dB, but the variability is curious?
As time goes on, the average count has increased, even with a grounded input. Now hovering around 14 counts, just shy of 4 bits. I have unplugged many unneeded power supplies, and it seems the same.
It may be just accidental passing field pickup. You can try shielding the circuit by putting some aluminium cooking foil over it, held off by a piece of paper. and take a single wire from the foil to the ground plane. At these levels, you need the kind of test setups Analog Devices use when figuring out what they can put in the data sheet.

I don't want to be the armchair critic. I am trying hard to get something going with my AD7622 on the Raspberry Pi. Instead, today was a bust trying to remove air-lock out of the hot water cistern supply to the shower pump.
 
I'm seeing zero counts with the input shorted to ground but it's really hard to believe it's true. Yes it's powered up :)
That is excellent news. I think, believe it! That is what the ADC is supposed to do.

My board just has two mods, neither one of which required cutting any traces. I have a heavy jumper wire connected between the input GND pin and the ground side of C2, which is the 1206 mounted on the bottom of the board (the end closest to the edge of the board is Gnd). That provides an alternate path for DGND. The second mod is a 10uF capacitor connected between the +5 and Ground inputs to the board. I made a little 2-pin "power connector" that plugs into the header, and the capacitor is soldered to those pins.
Yes indeed - a big fat short is the hardball way to test it.
To be honest I think the noise coming out of the detector circuitry is going to be much higher than 13 counts. Concentrating our attention on improving that will probably be more beneficial to the success of the project.
On the last point, I don't think like that. You may be right, but until you actually made the ADC operate to it's specification, and be able to measure below that (expected) noise, you were not at the point you could trust that what is was measuring was indeed that noise. Now you know. You can even measure S/N ratio.

There are quite enough causes to be hiking the count without allowing the actual instrumentation to be ignoring what it need not. We do want to see that noise. It's the only way we know the rest of the calibration.

For all that, I think you guys are doing really well. I am getting a bit envious! :)
 
I'm seeing zero counts with the input shorted to ground but it's really hard to believe it's true. Yes it's powered up :)

My board just has two mods, neither one of which required cutting any traces. I have a heavy jumper wire connected between the input GND pin and the ground side of C2, which is the 1206 mounted on the bottom of the board (the end closest to the edge of the board is Gnd). That provides an alternate path for DGND. The second mod is a 10uF capacitor connected between the +5 and Ground inputs to the board. I made a little 2-pin "power connector" that plugs into the header, and the capacitor is soldered to those pins.

Have you tried disabling the LED_SET and LED_CLEAR commands in the ISR? They might produce a small power bump that's synchronous with the ADC. They're only there for debug purposes.

To be honest I think the noise coming out of the detector circuitry is going to be much higher than 13 counts. Concentrating our attention on improving that will probably be more beneficial to the success of the project.
The LED set and clear didn't make a significant change. I disabled them and nothing obvious happened. I will try the extra grounding wire. More likely a piece of insulated solder wick which makes a fairly low inductance connection. Lastly I will try the extra cap. Might solder a cap onto the back of the header socket.

I don't have much to say about the detector circuit, I have yet to get anything to work there yet. Haven't made an LTC6269 model yet, been a bit busy to settle into that. From working with this tiny stuff, it's apparent that a PCB is necessary, at least for me to have much of a chance to get the detector to work.
 
That is excellent news. I think, believe it! That is what the ADC is supposed to do.


Yes indeed - a big fat short is the hardball way to test it.

On the last point, I don't think like that. You may be right, but until you actually made the ADC operate to it's specification, and be able to measure below that (expected) noise, you were not at the point you could trust that what is was measuring was indeed that noise. Now you know. You can even measure S/N ratio.

There are quite enough causes to be hiking the count without allowing the actual instrumentation to be ignoring what it need not. We do want to see that noise. It's the only way we know the rest of the calibration.

For all that, I think you guys are doing really well. I am getting a bit envious! :)
I'm with you Graham, I don't think the ADC is running close enough to spec, at least on my unit. Being a radar guy, I don't concede noise bits willingly. I want to drive the noise down as low as it can go. 0 bits doesn't sound right, at least to me. If you told me there's about 1.6 counts RMS, that would be ok.
 
I have a heavy jumper wire connected between the input GND pin and the ground side of C2, which is the 1206 mounted on the bottom of the board (the end closest to the edge of the board is Gnd).
Lets get technical here. By input GND pin, do you mean H3-pin 2, or do you mean U1-pin 39? I understand the ground side of C2, by your description.

Unfortunately on the print I have, the font on the port following C2 is slightly blurred, is that DGND also? The schematic shows multiple grounds and ground symbols, some with identical symbols but different names. I think they are intended as local connections, and then starred together below U1.

So I connected H3 - pin 2 to the ground of C2. And a 100uF 1206 cap across the 5V input (from my RPI4 USB). No difference, although perhaps the noise is a count higher. Certainly not lower noise. I need to make this run continuously, and just output average DC offset and RMS variation, this one shot mode is too difficult to evaluate, too much variability to see if changes are doing any good.
 
Well had a minor interruption, my glass scales finally arrived. Had to test them to see if they were any good. Seem to pass muster, at least on my ELS display. Set the sensitivity on my ELS to 1um and moved the scale about 3 inches - and that is what my ELS showed. Hope I dont run into problems with the fine scale and reading my spindle encoder.

Getting back to the ADC, I increased the buffer size (and fixed some overflowing variables) to get a better sense of the statistical noise. Increased the buffer size to 16K, just for giggles. I have noticed over the day that I have been playing, the average noise count has been slowly increasing, I am at roughly 15.8 counts. It may be the close proximity of my crazy wires to the RPI4 power supply. Think I will move all the circuitry away from the switching lines and make a better quality short on the header pins. Long leads just aren't good.
 
Lets get technical here. By input GND pin, do you mean H3-pin 2, or do you mean U1-pin 39? I understand the ground side of C2, by your description.

Unfortunately on the print I have, the font on the port following C2 is slightly blurred, is that DGND also? The schematic shows multiple grounds and ground symbols, some with identical symbols but different names. I think they are intended as local connections, and then starred together below U1.

So I connected H3 - pin 2 to the ground of C2. And a 100uF 1206 cap across the 5V input (from my RPI4 USB). No difference, although perhaps the noise is a count higher. Certainly not lower noise. I need to make this run continuously, and just output average DC offset and RMS variation, this one shot mode is too difficult to evaluate, too much variability to see if changes are doing any good.
Yes, it's DGND. Once I connected DGND and AGND on the schematic, the PCB design program treated both the same in terms of the rat's nest so it would be really easy to screw up the layout, at least in terms of preserving the desired "star" connection. I _think_ I got it right.

Speaking of layout issues, I was considering separating OGND from DGND but due to the way the ISR runs the ADC, either the digital section is running or the output section is running: but not both at the same time. So it seems to me that it should be OK for them to share the same ground.

Regarding the zilch improvement in noise, well, now we know that going to the trouble of doing those mods isn't worth it. But it appears to me that noise and a ~13 count offset are two different issues. One suggestion: use a DVM to measure the DC voltage coming out of the opamp buffer to see what it's doing.
 
Back
Top