I need to read a sensor data which gives analog output(range is +10V to -10V) and convert it to digital form using 24 bit ADC and then store it to a memory card. I have some experience with PIC microcontroller and Arduino. Is it good enough to chose one of these or go to some other platforms to minimise noise? please guide me what are the factors to be noted in chosing ADC, controller in the design for my application. I just doubt whether it is possible or not to read at least 18 bit resolution with external ADC and arduino combo.

Specifications of sensor:

  • Frequency range DC ..... 3 kHz DC – 30 sec
  • Sensor noise < 0.006 nT √Hz @ 1Hz
  • Output sensitivity 0.143 mV/nT
  • Orthogonality error < 0.5°
  • Output voltage range ± 10V
  • Measuring range ± 70,000 nT
  • Offset temperature coefficient ± 0.1 nT / °C
  • Offset error ± 5 nT
  • Supply voltage ± 12V to ± 15V stabilized and filtered
  • Supply current +26mA, -6mA (+1.4mA per 100μT)
  • \$\begingroup\$ Why do you need 24 bits? \$\endgroup\$
    – The Photon
    Sep 19, 2018 at 5:26
  • \$\begingroup\$ @ThePhoton: to record the atmospheric data for a better research. \$\endgroup\$
    – Shrikant
    Sep 19, 2018 at 5:46
  • \$\begingroup\$ But can you explain why you need that resolution, 1 in 16,000,000? And what will your resolution be when you have accounted for noise? \$\endgroup\$
    – Transistor
    Sep 19, 2018 at 5:53
  • 1
    \$\begingroup\$ There are18 and 24 bit ADCs available, but you have to take care of anything (electrical) noisy, because at 76µV (or worse, 1µV) resolution, you'll not only hear electrons coughing, you'll hear them on the other side of the world. In a bunker. When your deaf. I doubt there is an off the shelf solution for a reasonable price. \$\endgroup\$ Sep 19, 2018 at 7:14
  • 1
    \$\begingroup\$ The analysis should include raw SNR , prefiltered SNR, BW reduction, resolution and accuracy needed of full scale range. Determine If DC offset improves this and then compute the number of bits per sample and over sampling rate needed to achieve this result with worst case error budgets from all sources. \$\endgroup\$ Sep 23, 2018 at 7:21

2 Answers 2


Here is an analysis, using HFI, EFI, PSI and GPI interferers. These are Magnetic field, inducing deterministic trash into the loop of Signal Trace above Plane; Electric field inducing displacement currents into impedance of circuit nodes; Power supply ripple/switching noise/LC ringing where the circuit / ADC PSRR is inadequate; Ground noise, where ground_impedance * ground_currents are computed. The total of these 4 interferers is 14 milliVolts.

I configured the tool --- Signal Chain Explorer --- for 20 volts PP into the ADC; edited the Master Sampling Specs for 18 bits and 10KHz sample rate; the ADC internal sample-hold is 50 ohms and 48 pF default values. Many of these specs can be edited.

Resultant SNR with NO interferers is 109 dB.

Resultant SNR with interferers (I added additional interferers from the Gargoyle tables, to be realistic in a Arduino system), is only 54 dB.

Conclusion: blindly building such a system will produce a 9 bit measurement with 9 extra bits of deterministic noise.

enter image description here

Here, below, are results of injecting the 4 types of interferers, with the system frequency response used to model the deterministic trash upset to the Code Spread (the noise floor, or the SNR). Note the Magnetic Field of the way-too-close MCU clock is the biggest problem.

enter image description here

Here is the HFI (magnetic field) table; the 10MHz Switch Reg is default active; you can turn it off. You can edit any of the parameters, including Distance, to explore how close or how far away some field generators may be placed yet still achieve your SNR goals.

enter image description here

Here is the EFI (electric field) table;

enter image description here

What can you do, to greatly reduce the deterministic noise floor from the 4 types of interferers? (Note the thermal noise floor, with KT sources only being the sensor 50 ohms and the ADC 50 ohms ---- both editable ---- only contribute 9 microVolts RMS in the system bandwidth; if you want 20 bits, you'll need to reduce this 9uV; but first lets improve on the existing 14 milliVolts of deterministic trash.

The primary issue is the too-close location of switching power supplies and of the MicroController CLock/IO lines.

The switching power is only 10 milliMeters away, with an assumed Switching Frequency and dI/dT. Move that away, and shield it.

How accurate is the HFI number? We use a loop area, defined by trace length and trace height-above-gnd (both editable); we state the Distance from Wire-to-Loop; we state the dI/dT in the wire; we assume worst-case (maximum induced voltage).

The MCU clock/IO line is 1 millimeter away from the ADC input trace; who would be so cramped for PCB area they would route a high-slew-rate clock/data trace only 1mm from a 18bit (or 24 bit) analog trace?

How accurate is the EFI number? We assume parallel-plate coupling in the absence of any other mechanical geometry. We know the slew-rate, and the embedded simulator of Signal Chain Explore computes the node impedance.


You asked if 24 bits at 3KHz bandwidth is achievable. Examine the Sensor Noise and the Output sensitivity as one spec, simply by multiplying those numbers:

0.006 nT RtHz * 0.145 mV/nT == 0.00087 milliVolts noise per RtHz

or 0.87 microVolts RMS per RtHz bandwidth

•Frequency range DC ..... 3 kHz DC – 30 sec

•Sensor noise < 0.006 nT √Hz @ 1Hz

•Output sensitivity 0.143 mV/nT

What happens in a 3,000 Hertz bandwidth? Assuming no 1/Freq (pink) noise behaviors, meaning the noise energy is constant over frequency, the noise power increases linearly with bandwidth, and the noise VOLTAGE increases with the square root of the bandwidth, thusly

Vnoise = 0.87uV/RTHz * sqrt(3,000) = 0.87 * 55 == 48 microVolts RMS

Comparing 48 microVolts RMS to 20voltPP range, you'll have about 18 or 19 bits, IN FULL BANDWIDTH.

Severely reducing the bandwidth, for example to DC -- 30 Hertz, causes 10:1 less noie voltage, and 100:1 less noise power.

Thus in DC -- 30Hz, expect 4.8 microVolts RMS, or about 22 bits.

I will return later, and set up Signal Chain Explorer for 22 bits ADC and 30Hz bandwidth. I'll insert RC lowpass filter (1-pole) to roll off the bandwidth.

Use the 'comments' to suggest any preferred interferers (the top right of main SCE screen has buttons to enable/disable one/all of the Gargoyles).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.