I think I know what may be going on. More-careful examination of the AD8655's DS shows that its Vol does NOT NECESSARILY include ground. It's specified to get CLOSE to ground (apparently close enough to be called "rail to rail"), but in fact its Vol is allowed to range from the specified typical 8mV up to 30mV max. If the input stage _is_ capable of operating down to ground, the amplifier will be open-loop at that point so all bets are off when it comes to gain accuracy, offset etc.
This may well be a common problem for so-called RR amplifiers. I tried using a different one in an application and it never worked right, turns out that it didn't get close enough to the rails for my requirement even though the mfr called it a "rail to rail" amplifier.
The other tricky thing about rail to rail amplifiers is that they can come in different flavors. Some have rail-rail inputs but their outputs aren't. Or vice-versa. Since we need an amplifier whose input and output include ground, we need a true RRIO device.
The interesting thing is that the amplifier ADI recommends for feeding the AD7667 is NOT a rail-to-rail amplifier. Also its minimum supply voltage is +/-5V.
Some surgery and an external power supply will tell the tale. But, since the AD8655's maximum supply voltage is only 5.5V, the negative voltage can't be TOO negative. To ease things up, the next version of ADC board may run the AD8655 at +3.3 and -2 (or thereabouts).
Are you or Graham aware of any amplifiers that might be suitable drop-in substitutes? It may be difficult to find a drop-in amplifier that meets all the requirements AND happens to be in stock..
I have very carefully gone over all the options about ways to give an opamp linear range in this application.
"Rail-to rail" opamps cannot be truly "rail to rail". The best of them get to within 20mV of the rail, like my LT1807, but more commonly the limit is are nearer the 200mV off the rail, typical of the LT6268-10.
There are several strategies that can be used to fix this. One is to commit to having both positive and negative rails. In out case, the whole thing can be done within the positive rail, except for the very first amplifier. The TIA is fed into its inverting input. The output is tiny, but that is not much help if it is not at least enough away from the rail.
The very low noise, low power, dual rail generator.
To have isolation, it still needs a switched high frequency supply (like MAX253) or a wall wart upstream of it, but the ADM27762 is a bit of a gem. It supplies both, and it has the whole charge pump negative supply, and LDO regulators built-in, and it runs at 2MHz.
For convenience, I have attached the datasheet here.
Another approach
This is to use a deliberate, controlled offset, and choose non-inverting amplifiers, such that the signal is always between 0V and the positive rail.
In my case, I have the differential input, AD7622, so I can use a resistor divider from Vref, and offer it at the buffer to (IN-), and also at (IN+). The ADC still only sees the difference, but everything upstream is shifted upwards to the full accuracy, sufficiently away from the 0V (rail) if using single power supply.
There comes the problem of the negative going pulse at the TIA. This too, we can turn around. I put the capacitor in the input to remove the offset from the dark current through the 40MΩ reverse biased PIN diode. 4nA in 40MΩ would be a whole 160mV, but that is not what happens in a TIA. The actual output would be Idark x Rf = about 1.6mV. That is still many times greater than the microvolts of pulse, but can, in theory, be offset.
The "shift the Rails with an opamp" trick
This is one I have mentioned before. If the rails are a bit inconvenient, then shift them.
It does, of course, require a supply that is floating in the first place, or batteries.
We can "turn around" the PIN diode.
I know I am using an AC coupled TIA input, and I think I only get away with it because the charge current is so tiny. The AC coupled pulse seems unable to end up around the 0V either side of it's average value. This idea only works if one deliberately allows the dark current, to direct DC couple, and at the same time, use an integrator offset remover. Alternatively, use AC coupling, and add a deliberate Vref derived offset. As I have it at this time, I supply a little negative charge pumped supply to the first opamp only.
See the TIA first stage problem
Here is a fully simulated (simple type) TIA, using a 400pA pulse. The output at V(n003) TIA first stage output is -90uV. Even if we turned the PIN diode around, it's all too close to the 0V if that was also a single supply rail. Note that this circuit is delivering 200mV output at Vout3, with -35pV offset. There is a spare opamp in one of the packages if that is not enough, but we did start with 400pA.
Note that to play with this one, set Tools -> Control panel -> Absolute Current tolerance =1e-012, and Absolute Voltage tolerance 1e-007. The latter may be OTT. Likely 1e-006 will do.
My circuit.
Given some of these final things are still not proven in real assembly for me, I am still somewhat keeping the options open, but I think choosing a deliberately shifted negative rail too little to hurt the ADC if something goes wrong, could be the way. There are Schottky protection diodes in the ADC, which, along with the resistor in the driver output, can protect it anyway,
I know it's a distraction, but developing a nice ultra low noise, hopefully cheap, low power isolated power supply set, possibly with more than one output, is what I am after right now.