I need to measure many shunt resistors with relatively high accuracy of 1m
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
but I want to design something to an order of magnitude better (just for good practice!) so 0.1m
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
is what I'm designing for(obviously this level of accuracy needs 4 wire measurement so a current source is used in conjunction with an ADC). I will be using an atemga 328P as the MCU (8MHz internal clock), and the ADS1015IDGSR (12 bit ADC with +-1 INL error which is pretty good) plus the REF3440IDBVR as the voltage reference of the ADC (I can switch to ADR434B if it was proven to be unstable or not accurate enough). I will also probably use a precision x10 gain amplifier in combination with the programmable gain array of the ADC to achieve maximum accuracy, but I would also like to have a switchable constant current source to provide 1mA, 10mA, 100mA and 1A (pulsed for a short amount of time just enough for the output of the ADC to be accurate) to be able to do range switching to cover a wider range of resistor values. I seem to be unable to find a device that can do it. I've seen this note on TI's website which is an improved howland charge pump:
http://www.ti.com/lit/an/snoa474a/snoa474a.pdf![](https://i.imgur.com/0M5nTsK.jpg)
I can use a digital pot (5k 128 taps) and multiply all the values by 10, i.e 1Meg 0.1% resistors (although I think the 249
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
resistor is used to be halfway in the midpoint of the 500
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
trim pot so I might be able to get away with using a 2.49k resistor to go with the 5k pot but I don't know how much this would affect the performance without stepping up the 100k
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
resistors to 1Meg). This way I can have a trimmed value for every output current which is set into the MCU's EEPROM. All in all as accurate as this might be, it seems a bit overkill to me even for the theoretical 0.1m
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
or even the targeted 1m
![Ohms \$\Omega\$](https://www.eevblog.com/forum/Smileys/default/omega.gif.pagespeed.ce.G89vbH4KGC.gif)
accuracy and if I have to use the ADR434B as my voltage reference, this is gonna end up costing a lot (that chip is about 7 pounds as one off or about 5pounds in 100 quantity). Anyways I couldn't find any specific values but people have been suggesting that the howland charge pump is a low power (about 10s of mA) kind of circuit. is there a limit as to use it for higher current outputs of 100mA or 1A for a pulsed output? if yes, how can I create a current source with that level of adjust ability and even more importantly, do I even need to do a such thing or would I be better off using multiple current sense amplifiers with gains of 10 and 100 + the integrated PGA of the ADC? Thank you very much!