adc unstable values


I'm testing my new Arduino Zero Pro and noticed that the ADC converter acts very unstabile. I updated the bootloader with the newest IDE (1.7.8) and run a basic analogRead() function. I connected the pins of an 10kOhm Potentiometer to GND/A0/3.3v.

Just tu mention - all cables are short and good quality.

Exactly the same configuration works just perfect on my uno and due board..

I tried this topic on but nobody could really help.. :(

Dear zalech_com,

I have some suggestions that might help you.

  1. Consider noise pick-up. If you want 1 digit accuracy with a 12 bit ADC this means disturbances due to electronic noise must be less than about 0.5 bits wide. With a 3.3 V ADC input span this translates to just 0.35 mV. Try looking at the input voltage on A0 with an oscilloscope to check the level of noise in your circuit.

  2. Even if you are making DC measurements and the reference voltage is the power supply, Ripple can occur. This can come from the mains 50/60 Hz, or the step-down power converters. (Different from a Uno) Capacitors of 0.1 µF between the 3.3 V line and ground, and potentiometer wiper contact and ground should help.

  3. Power supply voltage stability can give an apparent increased noise if it is used with the internal bandgap reference for measurements with a potentiometer

  4. Normal practice to control noise in electronics is by using a low impedance voltage source and a high impedance signal sensing input. The source impedance is often about 50 Ohms. In your case a 10 K potentiometer will have a maximum AC source impedance of 5 kOhm. This is quite high and make your circuit sensitive to noise and pickup.

  5. Mechanical vibrations can give noise on potentiometers. The level depends on the quality of the potentiometer and the environment. Standard potentiometers are not precise. Use a 10-turn pot. if you want to get accuracy. If you just want to check the ADC conversion use fixed resistors. Say two 1 kOhm.

  6. The Arduino Zero/M0 pro power converters are quite limited in capacity. If you take a lot of current with many digital outputs this will generate noise on te 3.3 V supply. The best is to use an external supply and feed the potentiometer from the +5V output with a resistor in series so the voltage across the potentiometer is max 3.3 V.

  7. Ground loops can give problems that are difficult to identify. Only connect the 0V line to the pot. to the pot. use separate ground lines for other external components and any shielding.

I usually get the variation in conversion down to 1-2 LSB using an op-amp buffer close to the Arduino and a voltage reference chip as a source.

I hope this gives some help to you.

Harry J. Whitlow