I did a few more tests increasing the Samples Per Second like imo suggested and it works, i can take more measurements now although the "final" measuring speed doesn't double when doubling the SPS.
There is still work to be done like figuring out how fast i can without having massive Ohm's measured differences, what N/M ratio is best (i think more samples and less cycles is better than the other way around for the same overall speed), etc but
i don't think it makes sense to continue with this on the breadboard:
Already i am getting around 1mV difference between readings on the 10Ω Vdrop, that is unacceptable for a 16bit ADC at the +-1.024V range. 10Ω's Vdrop is right in the middle of that range when close to max current (60+ mA), probably on purpose. OFC as the DUT value climbs the current drops (since its in series in the loop) and the current drops to less than 10mA on "high-value resistances", for example for a 330Ω DUT the Vdrop on the 10Ω is ~125mV, with a 470Ω it drops to about 90mV and its less than 50mV for a 1KΩ DUT (ofc the PGA has switched to the +-256mV range for all of those).
I think i will also try a 1-2Ω res instead of the 10Ω once i make this on a veroboard (the next step), so the same PGA is used for both resistors in the important to me sub-1Ω range (the loss of accuracy in the >10-20Ω DUT range does not bother me at all).
BTW at 330Ω you almost maxed-out on voltage (~4V on the DUT) but Arduino's pin output voltage does raise as current drops or better the voltage sags as load increases and that is how the original circuit can get away with only 30Ω pin resistors (that would burn-up the Arduino at ~200mA total or 50mA per pin at 5.00Vout). In my Arduino Nano with external 7805 supply i can get 5.00Vout from the digital pins without load but with my 8x100Ω setup i get ~4.140V pin-to-pin, thankfully both voltage and current stay exactly the same in both current directions (as far as my DMM can tell).
For the videos i removed the Vbat voltage and icon in the debug menu and added the N and M values and the SPS rate used. Also i made a video with many different setting on screen at the same time so you can better see the speed difference.
Just noticed another one as well. This has the PCB up on PCBway.
I have additionally have a bunch of milliohm capable meters so no point in me personally building any of these projects for measurement. But Kripton2035's shorty is pretty cool tool. I'll eventually get around to making his or sooner if he decides to sell a board/kit.
That is a nice, analog circuit but the issue is that you rely on the Panel Meter's accuracy... I would prefer the ADC method, so you can for example use code to calibrate any loss non-linearity error, like if the
ADC (of the OpAmp/IntAmp front end) reads 1% lower at very low voltages, almost perfectly at the middle of the range and 1% higher at the highest voltages, you can easily add a "calibration" code that adds or subtracts a little from the measured value, depending on the voltage level.
That being said, before i fround the "Milliohm Meter" circuits i was planning to make a simple 0-1A Constant Current Source using a 5V USB charger, just a TL431 and a AD8628 (a AD620/AD8221 would be better but require negative supply) with a Darlington BJT and a 0.1Ω/5W to be able to drop 1A to up to a couple of Ohms. I have a
5mA 5-digit Panel Meter that i will use to measure the current (with the help of a 200Ω trimpot parallel to the 0.1Ω) because i want to be able to see that the current stays stable under load and it don't change by the second like in my failed LM317 "1A CCS"...
I made it on Proteus and it works nicely, i was about to start soldering but then got on the Milliohm stuff. I still want to make it because it can be used for other things like measuring diode's Vdrop vs Current (and/or temperature) and i also will add a VOM1271T to it so i can easily drive MOSFET Gates (i already use this in a temporary LM317 50mA CCS setup).