You just have to accept that when you are measuring below 1V, your accuracy will go very very far south.
Aren't the Arduino ADC steps 5/1024? That's ~ 4.88 mV. I don't see why it would be any less accurate than that below 1V? Could you please elaborate?
He just needs to amplify x133.33 as he said and a 1023 read at the ADC will mean 5 Amps, or 4.88 mA per count.
If you assume condition is perfect, you would have 4.88mV for every step. There is no ideal opamp even inside an MCU. Whatever circuits it uses, it is going to have imperfections. Random noise in and out side the circuit...Measuring equipment, power supply... they all have their imperfections.
- If I have a 1V source, a 0.01V random noise pulse show up as 1% error. If I have a 0.1V source, a 0.01V noise pulse show up as 10% error.
- When ADC count is 100, 1 count off is 1%, when ADC count is 10, 1 count off is 10%
- It takes longer time for the ADC to measure 100 count reading than to measure 10 count. A repeating noise pulse would inject more noise (longer time) at 100 count than at 10 count.
- Count is an integer. You either get there or you don't. 4.88mV per count means below 4.88mV count is 0. 4mV has a zero count, the 0.88mV error in percentage is infinite. At 9.76mV (count=2), ADC measuring just a tiny tiny bit low would have count=1, error of 100%
etc etc etc
In short, I don't know exactly where the error comes from, I measured them to be such. I agree it is rather unsatisfactory, but that's the case with imperfections.
Rick