ADC recommendation

So far I've been using 4051 chips to add some analogue ports to Arduino. What I'd like to try is something better with actual ADC built in in hope of getting better results than with Arduinos ADC + 4051.

There are two things I need:

1) It should have 8 analogue inputs, not more 2) I must be able to daisy chain the chips (either via shared clock like shift registers or I2C bus or something else).

MCP3008

Thanks. How does it handle noise? For instance, connecting pot directly to Arduino or 4051 and then Arduino and touching pot wire causes severe fluctuation in reading.

Can’t say, haven’t try this particular ADC yet, though the problem as you described it would repeat itself with any ADC. You can’t touch sensitive circuitry, simply because your body is a huge interference source, it’s acting as huge 2 meters antenna

I see. In that case, what would be the benefits of using that particular chip compared to 4051 setup?

"Noise" like that has nothing to do with the ADC (assuming it is an high impedance input) and all to do with your circuit. You need to lower the input impdedance with say, a 10K ohm resistor and use 1K pots.

The main issue with ADCs is you need clean power and groundplane to get good noise-free performance - using the built-in ADC on the Arduino is a compromise because its sharing the die with digital circuitry (which is noisy).

With a separate chip and board you can get proper analog groundplane and supply (using a high quality linear voltage regulator not shared with other digital circuitry). You could have a trimmable supply voltage for instance to get a nice accurate 5V (the chip works at 3.3V too).

However the MCP3008 is nominally the same performance as the Arduino ADC, although it has 8 inputs rather than the 6 of most Arduinos. The Arduino ADC performs well if you use a regulated supply (not USB) and don't drive large currents from the other pins. With a motor-shield stacked on top, the performance will degrade.

The MCP3208 is 12 bit / 8 channel if you want more accuracy/resolution than the 3008. These chips are SPI so you can have several on the SPI bus (remember you need a different chip-select pin for each chip, so a total of 3+N pins for N chips).

If noise is an issue you may need to think about low-pass filtering the inputs to the ADC, in fact you should be doing this anyway for any sampled system to lose aliased noise energy. For slowly varying inputs just adding some capacitance to ground on the inputs can be enough (referably not ceramic caps, they can be "microphonic".)

The SPI bus must use short wires only though, if you want remotely mounted boards on cables that are too long then you could have "issues".

KeithRB: "Noise" like that has nothing to do with the ADC (assuming it is an high impedance input) and all to do with your circuit. You need to lower the input impdedance with say, a 10K ohm resistor and use 1K pots.

I'm using 10k linear pots, so far so good. Isn't 1k a bit too low?

MarkT: The main issue with ADCs is you need clean power and groundplane to get good noise-free performance - using the built-in ADC on the Arduino is a compromise because its sharing the die with digital circuitry (which is noisy).

My project makes use of 16 pots, 2 groups of 8. Each group has its own double-layered PCB with ground planes on both sides, 4051 and 0.1uF cap on it. See the pic:

+5V and GND connections from both PCBs go into main PCB which has Arduino on it, again, it's also double-layered with ground planes on both sides. So as far as ground/+5V connections are concerned, I tried to make everything as good as possible.

MarkT: With a separate chip and board you can get proper analog groundplane and supply (using a high quality linear voltage regulator not shared with other digital circuitry). You could have a trimmable supply voltage for instance to get a nice accurate 5V (the chip works at 3.3V too).

So you're suggesting to connect MPC +5V/GND connections to another power supply or?

MarkT: However the MCP3008 is nominally the same performance as the Arduino ADC, although it has 8 inputs rather than the 6 of most Arduinos. The Arduino ADC performs well if you use a regulated supply (not USB) and don't drive large currents from the other pins.

There are no high currents in my circuit. It's a really simple circuit actually, 2x4051 + 5 column/4 row button matrix + 4 column/1 row LED matrix (both matrixes share the same columns). So nothing fancy. I'm just trying to make analogue stuff as clean as possible.

MarkT: The MCP3208 is 12 bit / 8 channel if you want more accuracy/resolution than the 3008. These chips are SPI so you can have several on the SPI bus (remember you need a different chip-select pin for each chip, so a total of 3+N pins for N chips).

High accuracy doesn't matter that much since I only need 7-bit resolution.

MarkT: If noise is an issue you may need to think about low-pass filtering the inputs to the ADC, in fact you should be doing this anyway for any sampled system to lose aliased noise energy. For slowly varying inputs just adding some capacitance to ground on the inputs can be enough (referably not ceramic caps, they can be "microphonic".).

I've seen on forums people suggesting to add 0.1uF cap between each analogue input on Arduino and GND. And interesting that you mention not to use ceramic caps, I could have sworn I've seen people generaly advising to use ceramic ones for decoupling. Or maybe this is unrelated to decoupling, I don't know really.

MarkT: The SPI bus must use short wires only though, if you want remotely mounted boards on cables that are too long then you could have "issues".

How long is too long?

How long is too long - depends on many factors, you need an oscilloscope to see how
bad things are.

Decoupling of supply rails is not the same as filtering an analog signal. Plastic film
capacitors and similar are recommended for analog filters because they have stable
values, linear response and are not microphonic. No-one cares about linearity or value
of a supply decoupling capacitor because it stays at the same voltage all the time. Also
microphonic pickup is easily overcome by the linear regulator.

MarkT:
How long is too long - depends on many factors, you need an oscilloscope to see how
bad things are.

Decoupling of supply rails is not the same as filtering an analog signal. Plastic film
capacitors and similar are recommended for analog filters because they have stable
values, linear response and are not microphonic. No-one cares about linearity or value
of a supply decoupling capacitor because it stays at the same voltage all the time. Also
microphonic pickup is easily overcome by the linear regulator.

So is 0.1uF OK value for analogue inputs or?