With 0.1 V of voltage drop the MOSFETs may have a significant leakage when the parasitic diode is in forward direction. So I am a bit skeptical if this would work with 80 K, it may work with some 10 K or so.
The leakage can be via 2 paths:
1) through the large fet, so that the low current range could read a little low.
2) through the small fet, loading the sense line with the 80 K in series. This would especially effect the highest current range. Here it is the drop at the shunt, but the drop at the fet. So the fet for the highest current range should not be too small. So this case may be OK and not so critical, as the voltage can be smaller.
It is still a tricky balance between low leakage and low R_on.
For less leakage in the off case one may use a slightly negative gate voltage, especially with low threshold fets.
Another point to watch would be some protection against overload. This would be mainly the 8 Ohms shunt, that could burn from too much current (e.g. > some 500 mA)
AFAIK the MCP3426 and similar ADCs have the option to use internal gain. This gain is quite stable and could be helpful. Unless one needs a fast result on should be able to go below 3 µV resolution.
I don't have the equipment to measure the leakage current so I have to rely on the simulated result from Ltspice and hope it gives some realistic value.
With the components I've chosen for the simulation.
Scenario 1 : ~1uA current with M3(80K shunt) turned on, and the others 3 turned off.
The voltage drop is 0.079 volt. The leakage current through M4(0.08 Ohm shunk) is 90pA, M1 and M2(8 and 800 ohm) is 45pA , giving a total of 180pA
leakage. The % error is 0.18/1000 ~= 0.02% which is better then my target.
Scenerio 2: ~1000mA current with M4(0.08Ohm) On, other 3 turned off
The leakage current through M3 is ~3pA, the bias current of LTC2050HV is also ~3.5pA,
making a total voltage drop for the 80K + 800 + 8 ohm resisters about 0.5 uV . This is acceptable becauase the minimum resolution of the mcp3426 Adc
with 0.1V full range is about 3uV
If the simulated result is realistic , the circuit should work. Anyway I may reduce the resistance to 50KOhm to 0.05 Ohm to make it capable of measuring
higher current.
I know the mcp3426 has configurable gain of 1x,2x,4x and 8x. So I make the opamp a fixed gain of 10x , giving the output voltage with 0.1V drop at 1V.
This is just less than the full range reading of mcp3426 with 4x gain. I will try to program the uP to switch the gain to read more precise value if the
current drop is far below 0.1v.
Talking about circuit protection, what is the best way to ensure that the maximum voltage difference between the two input terminal will not
exceed say 5v in order not to damage the opamp and the fet ?