As a start I had few mistakes in my schematic.
* Current shunt is 4 terminal 0.01 ohm, not 1k - makes a huge difference.
* U4 is a voltage follower - negative connected to output - I used this schematic:
http://sim.okawa-denshi.jp/images/OPsLow3order.png* U4 is MCP601 not MCP3001. The latter one is the ADC.
Sorry, I was quickly sketching it.
1. Hmm. Indeed I don't have decoupling on Vref. I'll check datasheet about that. Usually I'm afraid to put caps on outputs because circuits become unstable (opamps, refs), unless it's in datasheet how much capacitance the output can take.
2. Current inputs are fed from external device - I used a battery (another one) and a 12V transformer with 7805 and a resistor. Negative current input is connected to virtual ground. The idea is to be able to read positive and negative values. Also this is an analog front end. Even at PGA x1 setting it has an opamp buffer. Yes, of course there is some current on ADC inputs but it shouldn't be varying too much, so it should be adding a constant offset. And it should be small because ADC inputs are connected to small impedance sources.
3. see notes above
4. It's U6 - AZ431, but the LTSpice won't let me change the part No. In real circuit I use TL431A. They are pretty much the same device with different pinout. And I'm using LT Spice for drawing because I don't like other software.
5. I think both channels sample at about 1kHz. For CH0 there is analog filter at 10Hz., CH1 had stable, slow-changing sources for the tests. I'll use proper filters later.
6. First thing I did is to solder 100uF, low ESR directly at ADC analog power supply. Nothing changed. I also added some decoupling at the opamps and MCU - also 100uF low ESR. I plan to add later few values ceramic caps at app power supplies near all chips.
7. The 4 MHz clock is generated for 16MHz clock of the MCU which is a quartz crystal oscillator. I'm not sure if this is enough, but it should be. The 4MHz clock wire is <10mm long. The digital ground wire from MCU to ADC digital ground is maybe 2-3cm. I checked the clock at the adc - it's pretty clean. I tried using slow slew and fast slew rates for the MCU and I decided to leave slow slew rate. ADC probably doesn't need that sharp edge as it can work with quartz crystal. So the clock contains less high frequencies.
I'll start with Vref decoupling.
P.S. this fast session expiry is kinda annoying.