For current measurement in the low micro-amp and nano-amp ranges, a feedback ammeter is usually an excellent choice (see Keithley Application Note 1671). Because of the very high gain of an Op-amp, the burden voltage can usually be ignored when using a feedback ammeter. Thus, the measurement results can be obtained much more accurately compared to using the shunt resistance current measurement method. Also, because of the near zero burden voltage, circuit that is sensitive to power supply voltage changes can be instrumented without affecting its operation.

A typical Op-amp based feedback ammeter is very simple as shown in the schematics below:

Feedback Ammeter
Feedback Ammeter

Where the output voltage is determined by the following equation in an ideal situation.
\[V_o = -I_{in} R\]

For the above relationship to hold true, the Op-amp used must have a very small input offset voltage and negligible input bias current. These requirements are especially true when the measurement is down to the pico-amp range as even the minute bias current will affect the accuracy of the measurement. Alan showed an example of using LMC662 to build a picoammeter which is capable of measuring extreme low current. Judging from its datasheet, LMC662 seems to be a good choice for this type of measurement as its input bias current is extremely low, coming just at 2 femto-amp.

The Op-amp I used in my current adapter, Touch Stone TS1001 might be a rather surprising choice for many people. After all, given its relatively mediocre performance data (e.g. 0.5mV input offset voltage, 74dB CMRR and PSRR, 4kHz GBWP) TS1001 looks rather unsuitable for using in such precision instrument. But what makes TS1001 very attractive is that it is a low power Op-amp. It can be operated at a voltage as low as 0.8V and draws as little as 0.8 uA. This makes it very attractive for battery powered operations. In fact, given such low current draw we can even do without an on/off switch!

TS1001 also has a relatively low input bias current (typically at 25 pA). This is more than enough for low current measurement in the nano-amp range. TS1001 does have a relatively large input offset voltage, but this can be easily cancelled out during measurement using the zeroing or relative functions available on most multimeters. Since the offset voltage remains constant during measurements duration, the accuracy of the measurement does not suffer as long as the offset is zeroed out prior to performing measurements.

The schematic below shows the feedback ammeter built around the TS1001. With the component values chosen, the four ranges provide a resolution between 1mA/V and 1uA/V. With a 3 1/2 multimeter, you can easily measure current accurately well down into the nA range. As I mentioned earlier, the input bias current of TS1001 is 25 pA, so I deliberately limited the lowest current range to 1uA/V.

TS1001 Ammeter Circuit
TS1001 Ammeter Circuit

The circuit above can be powered with a single power supply or a split-rail power supply. When powered with a single rail, the input current must flow into the positive input in order to generate an output voltage. So this configuration is most suited for DC current measurement when the current polarity can be predetermined. Using the virtual ground circuit below, this current adapter can be used to measure AC current or DC current of either polarities. In either power supply scenario, TS1001 can be powered from just a single 1.5 battery.

Since TS1001 has a relatively low GBWP, the split-rail configuration is probably only suited at measuring low frequency (e.g. 60Hz) signals. Also, keep in mind that since the maximum output voltage can not exceed the supply power rail, using a split power rail effectively halved the measurement range in either positive or negative range for the same supply voltage.

The precision of the resistors used determines the overall precision of the current adapter. I hand-matched the current range selection resistors to be within 0.1% tolerance. Low temperature coefficient resistors are also desired.

Optional Virtual Ground Circuit
Optional Virtual Ground Circuit

Here is a picture of my finished build. Since I only need to measure low DC current, the virtual ground circuit is not used. As mentioned before, the power consumption of TS1001 is extremely low and thus no power switch is needed. A single AA battery can power the circuit for years. The low power consumption feature makes this adapter very convenient to use.

Finished Circuit 1
Finished Circuit 1

The entire circuit fits into a tin can rather nicely.

Finished Circuit 2
Finished Circuit 2

As long as you understand the limitations of TS1001, this circuit performs reasonably well. I may put together another post in the near future to show you the real world performance. If even lower current measurement or measurement of higher frequency signal is required, you will need to choose a more capable Op-amp. AD8603 for instance, is pin compatible with TS1001 and can be used if pico-amp range measurement is needed. With AD8603 however, you will need to increase the supply voltage and add an on/off switch as it is not a low power consumption device.

Be Sociable, Share!

27 Thoughts on “Current Adapter for Low Current Measurement Using TS1001”

  • Hello Kerry – I’ve built this as shown in your first circuit diagram, using 1/2 of a LMP2232 Micropower Op-Amp. The power supply is a single 1.5V cell / battery. I can only get it to work if I connect the 2 x VGND directly to -VS (-ve of 1.5V cell) is this correct? – Secondly, is it OK to drive a 100uA FSD meter directly from the Op-Amp output to VGND via a 1K calibration preset? Thank you :)

    • Hi Rich,

      LMP2232’s minimum supply voltage is 1.6V, so 1.5V might be a bit low. Anyway, if you are using a single supply, yes, -ve would be tied to ground. But you lose the ability to measure negative current (which may be OK if your intention is for DC use only.)

      The opamp outputs a voltage in proportion to the input current so you would need to measure the voltage output. If you are using a 100uA meter, it depends on the internal resistance, you will not be able to get an accurate reading if the resistance is comparable to your 1K resistor in series. Hope it helps.

  • Thanks very much for your reply and advise – especially regarding the VGND connections to battery -ve. Yes, I’ll only be using this to measure DC current, so that’s fine ;) – In tests the TI LMP2232 seems to cope well down to below 1.5V R-R without any problems, though I’ve ordered a TS1001 anyway. It’s very low input bias current of 20fA, I/P offset of +/- 150uV and 16uA quiescent current seemed particularly good for a 1.6V R-R Op-Amp. The meter’s DC resistance is 792 Ohms – When 100uA FSD is displayed, the series preset, a 1K multiturn, has a resistance of 209 Ohms – so not far off with a total load of 1001 Ohms. As you explained, the voltage source and calibration resistors must be very accurate. I’m using a 1.000V reference (ADR510) and a 10M Ohm series resistor to the input to display 100nA FSD.

    • Yeah, if 1.5V works, LMP2232 would be a much better opamp for this purpose as the extremely low input bias current you mentioned. TS1001 is a rather mediocre opamp as far as the spec goes, but it can operate on a single 1.5V battery in a split-rail configuration, which most of the op amps can’t do.

  • Hey Kerry, great design, this is exactly what I need. I do have a question, I would like to use this circuit with a scope, but I need much higher transient response. I am monitoring an embedded processor as it wakes up and goes to sleep. What op amp would be suitable for this? I was considering a T.I part such as the OPA355 or OPA656. I need to catch the processor turning on for 10uS and measure the current. I don’t need much accuracy, 5% to 10% would be fine and I don’t care about fast slew rate, just a reasonable rise time so I can get an idea of current used during processor run time. Component cost is not important. What would you suggest?

  • Between the two I would go with OPA656. One caveat is that the input bias current of these high bandwidth OpAmps are extremely sensitive to temperature. So they are not the most desirable OpAmps for this application unless you can precisely control the operating temperature. The input bias current for OPA656 for instance ranges from 1 pA under 25C all the way to 1000+ pA for the full temperature range. So unless the temperature is well regulated, the measurement accuracy will be poor for small current measurements.

    So if you are just after some ball park figures, you are probably much better off with a current sensing resistor with a precision OpAmp (e.g. AD8603) and the burden voltage is likely to be insignificant in your application (you can easily achieve less than 20mV burden voltage with a standard multimeter).

  • Hi,

    my question is how you realise the switch between the different resistors. Do you use a transistor or a relais or sth else?


  • I wanna build up such a system, but I´m not sure how to realise the switch. Because if I use transistors, they have also a nonlinear resistance. Would they influence the measurement? And relais are always to big for a small board. So I´m thinking about a diode, but there is also the same problem like the transistors. What would you use?

  • Dear Kerry D. Wong

    This article is very useful….

    We want to measure Gate leakage current of a JFET which is around 300 PA. We have chosen OPA445 for the experiment of this Feedback ammeter circuit.
    We would like to clarify the following things,
    1. How to choose the resistor values for various range of current measurement (ex. mA to pA)
    2. Where the device (JFET) should be connected in this circuit to measure the leakage current of this device.
    Test conditions are, 0V should be forced to Drain and Source pins, -36V should be forced at Gate pin and current to be measured at Gate.

    Thanks in advance…

    • Is there a particular reason for choosing OPA445? It’s input bias current could be as around 100PA which would be almost 1/3 of the current you are trying to measure. Also the input offset voltage is in the mili-volts range (unless you want to trim it).

      Anyway, OpAmp aside the output voltage is I*R (where the R is the feedback resistor). The higher the resistor, the higher the sensitivity (for instance, if you are using a 100M resistor, then the output would be 10nA/V (or 10pA/mV)). But higher value resistors may affect your measurement accuracy due to leakage and thermal noise. So the best way to do this is to use a 10M resistor and have a x100 amplifier amplify the output (needs to be a low input offset OpAmp) and you can get 1pA/mV output which would be more than enough for your measurement.

      Regarding how to hook up your test circuit, You can connected the gate to the negative input (which is at ground potential because the voltage differences between the two inputs are negligible) and connect drain and source at 36V (if that’s the voltage you are using). Make sure you have a current limiting resistor in place so that you don’t damage the opamp in case of a malfunction.

      • Thank you so much for your quick reply…

        We do not have any specific reason for choosing OPA445 but We have this one OP-Amp in our lab which can support up-to 50V power supply. We have experimented your circuit and able to measure 1 UA current. We have the following queries, your reply for those would help us to move forward.

        We have connected Rf=10Mohms, Vin=1V, Rin=1Mohms (inseries with Vin) Now we have got v0=-9.8V. Intially we have made Vin=0V and measured the offset voltage V0(offset)=1.4V. Now we have subtracted this V0(offset) from V0, so the now the V0=-9.8-1.4=-11.2V. now the current flowing through Rin as well Rf=(11.2/10M )=1.12 microAmps

        We are planning to connect the FET in between Vin and Rin to measure leakage current.As we discussed above we need to force 36V to the Source and Drain, If we use 10Mhms as Rf and Rin=1Mohms the gain would be 10. Can we give 36V at Vin if the gain is 10? can the opamp produce the output voltage?
        So now we intended to reduce the gain. To reduce the gain we have increased the Rin value. If we use 10Mohms as Rin, The gain would be 1 but the FET leakage current is too low (ie, low resistance)so we feel FET is not able to make desirable variation in the output voltage when it is placed in series with Rin=10Mohms. Please help to clarify this…

  • Dear Kerry,

    I am trying to measure the output of a quantum sensor with your circuit with the maximum accurancy I can get. The output varies from 0 to 10 μA. I implemented your circuit with a 100KΩ resistor and the output was 190mV. I changed the resistor with one of 1 MΩ and the output was 100mV. What am I doing wrong? I connected a single resistor to the output of the sensor and I measured the voltage across the resistor. For resistors from 1.2ΚΩ to 9KΩ the calculated current intensity is 0.70 uA.

    I connected the sensor and the battery as it is shown in your first image and as ground I used the ground pin of an arduino. The resistors I used were measured with a multimeter and they were 100K and 994K

    Any help on how I can get accurate measurements?

    • If the full scale is 10uA, the resistor value you use can’t be too large as the output voltage swing is limited by the power supply. If you are using a single supply, the range is less than 1.4 V and if you are using a dual supply the range is further cut to half. so 100K is the probably the highest you can use.

      I am not sure what the output impedance is for the sensor you are using as the output characteristics could vary based on load. Have you tried using a smaller resistor (say 50K)? I am willing to bet that the value you get would be half of the value you get when using the 100K resistor.

  • Dear Kerry,

    I applied a 100K resistor and the circuit seems to work. I say seems because after I have it connected to an arduino in an analog pin, in stable conditions my output is a wave. I get measeuremets every second and the first two are 0 (the must be 0) then the voltage goes to 54 mV and then to 8mV and then to 0. Can I do something to fix this?

    • Not sure why the output is a wave? If you short the opamp inputs, what values do you get? The output from the opamp should be DC only if current is DC current. I’d suggest first try reading the output using a multimeter, and after confirming the values then connect it to the ADC input of the Arduino.

      • I have used a multimeter and the output was 765mV. I connected the arduino and the measured value was around 780mV. I think the difference is due to multimeter error. If it is not are there any other possible reasons for this swift and if there are, what can I do to increase the accurancy?
        The biggest problem is not the voltage difference between multimeter and arduino, is the fluctuations. In I uploaded an image with my results. Each line is a measurement lasting 27ms under 3 different conditions. As you can see the signal is stable for a while, goes up and down and the stable again and so on. What should I do to make it stable?

  • Hi Kerry,

    I am trying to use the circuit to measure current in the mA range (+0-100mA).
    It is DC current so I am trying to use with a single rail. The circuit works fine with a virtual ground of 2.5V however I only need to measure positive currents so I would like to use a single rail to increase the measurement range.
    You said the current should be supplied (I_in) to the V+ pin but where does the I_out go?
    I am using the OPA277 (it was lying around the lab) with a 5V supply.


  • Hi,
    Thanks for this post, I need to build a system to measure MCU current consumption during sleep and wake up.

    During sleep, my MCU consumption can reach 500nA to 1uA, when wake up, it can shot to 30mA.

    Question 1. You have used switch to select the range, is there any method that I can use to have the wider range, example from 500nA to 50mA
    Question 2. What will be the BEST Opamp for Q1, power supply not an issue, output will be connected to a scope to record the values.

    Thanks for the help.

    • So for your requirement, you would need an OpAmp that is rail-to-rail and can output current > your maximum required measurement current.

      Because your minimum current requirement is not particularly low (500nA), input bias current shouldn’t be too much concern for you. Anything < 5nA would give you an error of < 1%. Your main challenge is going to be able to measure the output voltage with a dynamic range of 50 dB. So without a range switch, you will have to be able to distinguish the voltage output within this range. In order to do that, you will need a meter (or DAC) with at least 17 bit of input resolution.

      • Thanks, I have purchase the uCurrent Gold from Dave, to address my urgent needs, Using your information, I am planing to build one with wide range and 24bit ADC interface to MCU.

  • Really awesome. I have been working with 0 to 25mA current measurement. I would like to interface with 24 bit ADC LTC2410 and microcontroller.

    Can you clarify my doubts?
    1. Since the output is negative, How can I convert it to positive signal? Can I use a inverting buffer?
    2. Where should I connect the grounds of Voltage reference, ADC, microcontroller, Display?
    3. Should I connect ADC Input pin IN+ to output of opamp and IN- to VGND?

Leave a Reply to Arundo Cancel reply

Your email address will not be published.