Electronic – An LC-unstoppable noise in a USB-powered device

adcnoisepowerusb

EDIT: I found out the cause, see my answer. I would like to thank the commenters.

I am making a USB powered device with a 12 bit ADC, from which I want to get a 8 kHz signal with a precision of about 10 bits. Yet, there is a quite complicated noise in the obtained digital signal, of different frequencies in the audio range, which limits the precision to about 5 bits.

As it turned out, there is also a ~ 100 mV, >= 1 MHz noise on the USB power line, which I guess is the cause of the problems:

enter image description here

So this is yet another question about a USB noise, like this where a DC regulator is recommended or this where an inductance is suggested.

Seemed easy. After a ceramic 1 uF which was there from the start, I tried the following serial sequence:

  1. NCP380LSNAJAAT1G (limit charge current to 500mA).
  2. A large electrolytic capacitor, 3300 uF, too large but it was at hand.
  3. L1117 to trim the voltage to 3.3 V.
  4. A small ceramic capacitor 1 uF.

It reduced the noise on the power line by about 20%. The other effect of the filtering above was, that in the data from the ADC some low frequencies ~ 50 Hz disappeared, but some higher-pitched noise is left:

enter image description here

The precision is now ~ 6 bits, a single bit better than before.

I did not yet try an inductance, but this guy did and it reduced the noise from 100 mV like in my case to a sparse 50 mV. I am not sure if this will help in increasing the precision from 6 to 10 bits. Also, see p. 1 in the list below.

Can it be that this signal does not really come from the power line? There is an off-the-shelf microcontroller board with MK20DX256 in the same circuit, working at ~ 100 Mhz, and the power line noise is present only if it transmits the digital signal to the host. And thus it can be some interference in the cable and/or in the device, picked by the power line but also individually by different parts of the device.

Here is the simplified circuit:

enter image description here

Inputs of LM358 are connected as follows now: plus to a voltage divider, minus to an analog signal with a floating ground.

As seen, the microcontroller board is connected directly to the USB power, but:

  1. The board has an LC filter and a 3.3 V regulator, but despite that, its Vout is about just as noisy as that from my filter.
  2. Its ADC has internal Vref. I do not know, though, if it helps with such a power line.
  3. My power filter is not effective anyway.

I could use a special, external, shielded ADC together with a more complex LC than that in the link above, but I only want 10 bits of precision. Would it all be really necessary?

Is there a compact solution to the problem? Or should I just power the device from another, clean source?

Best Answer

The ADC input range is about 2 V, I wanted 10 bits. Yet the analog signal turned out to be so weak that, as seen in the schematic, I needed to set the opamp gain to 40x.

It translates to an expected differentation of input levels of about 2000 mV / 40 / 1024 = 0.05 mV. Not realising at first, that it is such a small value, I did not shield the analog source.

The digital signal is quite clean when the analog source is cut off near the opamp, so the 1 MHz power line noise probably does not affect a lot the sampling at a much lower frequency of 8 kHz. I removed the voltage stabiliser, as it made the analog part work a bit worse and otherwise had no function. I kept NCP380LSNAJAAT1G + the electrolytic condenser, though, as they do remove some low frequency noise, as described in the question.