"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?
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.
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?
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
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.
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.
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.
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?