I have a circuit that is essentially just a 1kV DC source connected to a very high resistance (basic circuit outline), within which current in the range from 0.1nA to 500uA flows that I am trying to measure using an Arduino (the current varies because the resistance varies due to outside factors). I had the idea of using this (or similar) connected to an Arduino: https://www.adafruit.com/product/904

However this works up to 26V and only has a 0.8mA resolution.

To solve this I first thought of using a potential divider to have a parallel section of the circuit with voltage reduced to ~13V where the INA219 can go (reduced voltage section), with high resistance resistors so essentially all the current flows through this section.

However I now need to amplify the current in this section to a value the INA219 can measure. After looking things up I thought that a good idea for this would be a Darlington pair and implemented it like this: with Darlington pair. However I find there's no amplification for this. Am I implementing the Darlington pair incorrectly or does it not work for such small currents, or is a Darlington pair completely the wrong idea here to amplify the current? If this is the wrong way to go about it, what would be a good way to measure the current of this low current high volt circuit with an Arduino?

Edit: I've included a schematic of the diagram that I think is described by Olin Lathrop's answer


simulate this circuit – Schematic created using CircuitLab

  • 4
    \$\begingroup\$ 1) There's a circuit drawing tool included here, use it. (falstad.com is for kids) 2) is a darlington pair the complete wrong idea here to amplify the current? Uhm, yes. The reason for that is that the current amplification is very unpredictable. 3) You should consider measuring the current at the ground side using a more sensitive current sensor. 4) 1 kV combined with your lack of electronics experience scares me. \$\endgroup\$ Commented Dec 5, 2017 at 15:29
  • 4
    \$\begingroup\$ @Bimpelrekkie 1kV is not necessarily dangerous, depending on the source resistance. Rubbing a balloon on your head can produce a higher voltage, as you should know. \$\endgroup\$
    – τεκ
    Commented Dec 5, 2017 at 15:37
  • 3
    \$\begingroup\$ @τεκ You are right, 1kv is not necessarily dangerous in experienced hands. However, it could be devastating and dramatic in newby hands... \$\endgroup\$
    – M.Ferru
    Commented Dec 5, 2017 at 16:15
  • \$\begingroup\$ No, that's not what I described. See addition to my answer. \$\endgroup\$ Commented Dec 5, 2017 at 17:55
  • 1
    \$\begingroup\$ @Bimpelrekkie You should get into an argument with this person who would prefer the built-in circuit editor to never be used and would probably prefer Falstad. \$\endgroup\$ Commented Dec 5, 2017 at 23:30

3 Answers 3


This would be the schematic that Olin was thinking about, with a few bonuses.


simulate this circuit – Schematic created using CircuitLab

Zeners can have quite high leakage current, and you need a protection with very low leakage, since the current you want to measure is tiny.

So, D3 will create a 3V reference with an ability to shunt excess current to ground. D1/D2 will switch on, only if something goes wrong. D1 and D2 are normal silicon diodes, which you should select for low leakage current.

The schematic editor used 1N4148 but according to datasheet, leakage is quite high. You could try 1N3595 which has much lower leakage. I selected a thru-hole part on purpose, because it's easier to have low leakage with thru-hole due to the wider pin spacing...

C1 provides some lowpass filtering, if needed. If not remove R5/C1.

Note this will only be fully protected against a short across R1 if R3 is able to withstand 1kV without arcing or burning, or if the supply shuts off due to over current, etc.

If your 1kV supply is only able to output a few mA, then the diodes D2-D3 will protect your micro's ADC, but R2/R3 would arc and die. Not very expensive parts, so your choice to overdesign or not.

  • \$\begingroup\$ Extremely helpful details thank you. Just to clarify, you mention "[...]only be fully protected against a short across R1[...]" Is the extra part with resistors and capacitor only to protect against shorts in R1? As a short in R1 is physically impossible in this case (I apologise for not mentioning this, I did not realise it would be relevant to the answers). Thanks again. \$\endgroup\$
    – Jack
    Commented Dec 5, 2017 at 18:47
  • \$\begingroup\$ With the circuit as-is a short across R1 would burn R2/R3 if the supply has enough output current but it would not harm the micro, which is the point ;) Anyway extra protection can't hurt, and this will cost you next to nothing in parts... \$\endgroup\$
    – bobflux
    Commented Dec 5, 2017 at 19:08

You want to measure up to 500 µA with a microcontroller. A low side current sense resistor seems like the obvious choice unless there are constraints you aren't telling us about. With 1 kV, it should be acceptable to drop a volt or a few.

Let's say you want 3.0 V at 500 µA. Do the math. (3.0 V)/(500 µA) = 6 kΩ. With that between the bottom end of the load and ground, you will get a 0 to 3.0 V signal indicating 0 to 500 µA.

With the large voltage around, I'd put some protection between this 3 V signal and the A/D. Add some series resistance followed by diode clipping to ground and 3.3 V or something.

With a 12 bit A/D (easy to get nowadays built-into a microcontroller), you get about 122 nA resolution. If that's not good enough, use a external A/D, like delta-sigma if your bandwidth is low enough.


The placement of the diodes and R4 make no sense in your schematic.

Here is what I described above:

R2 is the current to voltage converter. It makes 3.0 V at 500 µA. D1 and D2 clip the result to a safe level, and R1 provides the impedance for them to work against.

One drawback of the clipping is that the impedance of OUT becomes high. The OUT shown above needs to be buffered before driving a A/D input. This could be done with a opamp as voltage follower.

Since you end up with a opamp in there anyway, you can consider lowering R2 and using the opamp to amplify. Whether that makes sense depends on various tradeoffs you haven't told us about.

  • \$\begingroup\$ Your voltmeter is in series...how is that going to work? \$\endgroup\$ Commented Dec 5, 2017 at 16:54
  • \$\begingroup\$ Hi thanks very much for your answer. I've included a circuit diagram of what I think you mean in the question. Is this along the right lines? (I'm pretty confident I have misinterpreted what you mean by the protection with a diode and resistor) \$\endgroup\$
    – Jack
    Commented Dec 5, 2017 at 16:54
  • \$\begingroup\$ @evil: Huh? What voltmeter? I said nothing about any voltmeter, and I have no idea what you think it is in series with, or why that would be bad anyway. \$\endgroup\$ Commented Dec 5, 2017 at 17:57
  • 1
    \$\begingroup\$ @OlinLathrop I think evil was referring to the incorrect schematic I made. Thank you for the extra elaboration, it has cleared it up for me a lot. \$\endgroup\$
    – Jack
    Commented Dec 5, 2017 at 18:45
  • 1
    \$\begingroup\$ One thing to consider when choosing the right diodes is choosing ones that have a low reverse current, this to make sure the measurement is really accurate. \$\endgroup\$
    – Ferrybig
    Commented Dec 6, 2017 at 7:56

One option is to use an optoisolator in series with the load:


simulate this circuit – Schematic created using CircuitLab

This has the benefit that you can completely isolate the high voltage from your microcontroller.

The main downside is that the current transfer ratio (CTR) of optoisolators varies, so it will need some calibration. Depending on how accurate measurement you need, you can use some generic model with 100%-1000% CTR, but somewhat non-linear response. If you need extra accuracy, there are linearized optoisolators, but their CTR is only about 1%, which means that instead of amplifying you've attenuated the signal, and would need to add an operational amplifier on the low-voltage side.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.