I need to detect quick (~200ms) voltage drop, so I am thinking of making an oscilloscope with Arduino. Problem is - can I reliably read 600V DC voltage and what resistor values should I choose for voltage divider? Can I apply same rules as for lower voltage (150k and 1k ohm)?

Is there a limit what value difference can be between resistors?

  • 5
    \$\begingroup\$ Have a read of this answer on designing for Single Point Of Failure (SPOF) protection. You'll have to consider that when looking at the safety of what you're making, particularly if it's for anywhere others can go near it. It's then not just a case of using a 2-resistor potential divider. \$\endgroup\$
    – TonyM
    Commented Nov 9, 2022 at 15:35
  • 9
    \$\begingroup\$ I would be concerned that if you are asking a question like this that you are likely to unaware of the usual safety precautions when dealing with moderately high voltages. \$\endgroup\$
    – copper.hat
    Commented Nov 10, 2022 at 6:31
  • \$\begingroup\$ What sort of resolution do you need (or in other words how small a dip do you need to reliably spot)? Answers have already mentioned noise in high value resistors, but so far we have no way of knowing if that's a problem. \$\endgroup\$
    – Chris H
    Commented Nov 10, 2022 at 9:57
  • \$\begingroup\$ Is this voltage isolated (i.e. what is the grounding relationship between the Arduino and test source)? Is it a low or high impedance source? Are you educated on working with high voltages safely? \$\endgroup\$ Commented Nov 10, 2022 at 17:00
  • 1
    \$\begingroup\$ What kind of drop are we talking about? Do you need to measure it (like with an ADC) or just say "there is a drop at least about that low"? The later would be simpler and safer with some sort of opto-isolated circuit. \$\endgroup\$ Commented Nov 11, 2022 at 13:03

7 Answers 7


can I reliably read 600V DC voltage

You can. But safety first - take all the necessary safety precautions. 600 VDC is high enough to make you have an eternal dream.

There are 4 more things you must consider:

  • Voltage rating of the resistors: Check the maximum allowed voltage of the resistors you are planning to use. For example, 1206 case SMD resistors can be used up to 200 VDC, IIRC. So you'll need to connect the upper resistors in series, if you are planning to use SMD resistors.
  • Total power dissipation of the divider resistors: 600 VDC is not low therefore will cause significant loss across the resistors. And, obviously, the resistors will heat up.
  • Input impedance of the ADC: This determines how large resistors you can choose. You can select ridiculously high value resistors to decrease the power dissipation but they'll interact with the input impedance of the ADC. And this will lead to false measurements.
  • Reading range: High value resistors bring higher noise. So if you drop the voltage to millivolts range it'll probably be noisy. This will lead to false measurements.

There is a lot more to it.

First of all, the divider ratio to make 600V to about 5V means that there will be roughly 600V over one of the resistors. A generic resistor can't handle 600V so you have to split that to as many resistors as needed in order to not exceed their safe rated voltage. I expect for 600V there should be 3 to 6 separate resistors instead of one.

Second problem is the value of the resistances. A 150kohm resistor with 600V over it has 4mA current flowing. It will consume and need to dissipate 2.4 watts. Which is a lot, and you likely don't want to dissipate that much just for measuring voltage, and it would require large resistors that can dissipate the heat and the heat must be conducted somewhere.

To help with power dissipation, the resistance values should be a lot higher.

The next problem is that the resistance values can't be arbitrarily high. You must know what source resistances are acceptable to your Arduino. You don't say which Arduino you will use so it is unknown what it works best with. Assuming it has an AVR, the suggested source impedance to AVR input is 10 kohms.

It basically means that without further tricks, the divider values need to be 1.5 Mohm and 10k.

  • 2
    \$\begingroup\$ Best answer because it doesn't blab on about safety... I'll just add that you can add a 10nF capacitor across your low resistor which will give you a time constant of about 100us, plenty fast, reject most noise and condition the signal to be read by the ADC better. P.s.there are 3kV rated resistors with UL certification for exactly this. \$\endgroup\$ Commented Nov 9, 2022 at 14:28
  • 17
    \$\begingroup\$ @DavidMolony right; there are plenty of electronics hobbyists, we won't miss one or two. \$\endgroup\$ Commented Nov 10, 2022 at 4:31
  • 1
    \$\begingroup\$ It's like trains. We all know they're dangerous, but when i ask which platform my train goes from I don't need 50% of the answer to be about the dangers of stepping in front of them. \$\endgroup\$ Commented Nov 11, 2022 at 5:39
  • \$\begingroup\$ @DavidMolony, train stuff sounds confused. Question's on designing something, not using it. \$\endgroup\$
    – TonyM
    Commented Nov 11, 2022 at 9:16
  • 2
    \$\begingroup\$ @DavidMolony, you're in a confusing direction again. Electronics engineering is an application of two separate disciplines, electronics and engineering. The electronics part is nearly always the relatively easy part while the engineering is where the problems are. Here, electronics is simple and about 5% of the problem: a potential divider using resistors. While the engineering is 95% of it: electrical safety for board and system (600 V hazardous), part selection, FMEA, safety approvals etc. This is equipment design and engineering. Your wiring is installing pre-engineered parts/equipment. \$\endgroup\$
    – TonyM
    Commented Nov 11, 2022 at 17:24

First off all, take a lot of precautions : 600VDC is deadly (excepted if it has very high resistance, limiting current to µA range).

I see several things to check (but wait for other answers as well, I'm no expert in high voltage, so I might miss some) :

  • As @alphasierra mentioned, make sure your resistors resist the voltage.

  • Make also sure your insulation can withstand the voltage (using 2 neighboring tracks on a protoboard will NOT provide enough insulation). Same for wire insulation, shrink tube insulation, ... At those voltages, take no insulation for granted without checking first the datasheet

  • Check the power dissipated by each resistor. If you use 150k+1k, you get about 600V/151k=4mA, but 4mA in a 150k resistor makes 0.004^2*150k=2.4 W : most standard resistors only resist 0.25W : so either you need a power resistor rated 5W or above, or you need to use even bigger values (for example 1.5M and 10k)

  • If you need precision, and you use more than 1 analog pin, then it might be useful to add a small capacitor (or an OP-Amp as follower). If you don't, due to the high resistances you use, the input capacitor of the ADC might not have time to fully charge/discharge between measurements (if I remember well, you start loosing accuracy at around 10k input resistance)


You can use a voltage divider to reduce the voltage down to a level safe for the ADC. The same math applies when calculating the current through the divider and the ratio. The difference is in physical construction.

A critical thing to watch out for is the voltage rating of the resistors. A small package resistor will not be able to stand off the voltage and break down. Depending on the industry this is handled either by using HV resistors made for this purpose (see picture), or by putting multiple resistors in series to spread the voltage drop.

enter image description here

I would also recommend putting a buffer on the output of your voltage divider. This will allow you to place the arduino farther away from the divider without introducing signal issues. Additionally you need to ensure you clean up solder flux residue and other contaminants. Keep sufficient creepage and clearance distances to other circuits.

If there is any substantial power behind your 600V source (like a battery pack) I would also recommend placing an appropriately rated fuse in line. 600V is not to be taken lightly. Be careful, and test your design with a current limited source. If you're not feeling confident just go buy a sensor.

EDIT: The divider datasheet: http://www.caddock.com/Online_catalog/Mrktg_Lit/Type1776.pdf Image from here


Here's a method for finding the resistors you need.

First, decide what is the maximum power dissipation you would want in the top resistor. Let's go with 1/4 W. You need to go with a higher rated resistor to give it a safety factor so use at least a 1/2 W one.

Now find what is the maximum voltage across the top resistor. If you're going from 600 V to 5 V it will be 595 V.

Find the resistance that will dissipate 1/4 W at 595 V.

$$ R = \frac{V^{2}}{P} = \frac{595V^2}{0.25W} = 1.4161 M\Omega $$

So let's take the next even value, 1.5\$M\Omega\$ You need one that will handle the voltage and power, here's one that is rated 1/2W and 3500 V as an example.

Now you need to find the bottom resistor. The formula for this is:

$$ R2 = \frac{R1}{\frac{Vin}{Vout}-1}$$

Plugging in the values we get

$$ R2 = \frac{1.5M\Omega}{\frac{600}{5}-1} = 12605\Omega$$

You can use a 12k resistor or 12.4k from the E96 1% series would be closer. You don't need to worry about the voltage and power ratings on this one, it's not going to have more than 5 V across it and the maximum power will be around 2 mW.

Now check that it's correct using the voltage divider formula \$Vout=Vin\cdot\frac{R2}{R1+R2}\$, using a 12.4k we get:

$$ Vout = 600\cdot\frac{12400\Omega}{1.5M\Omega+12400\Omega} = 4.92 $$

So, pretty close.

If you need lower value resistors to satisfy the impedance requirements of your measuring device you can go to a higher wattage for the top resistor. At 1/2 W maximum dissipation (using a 1 W resistor) gets you around 700k for the top and 6k for the bottom.

You need to take resistor tolerances into account as well. Having the top resistor a little low in value or the bottom one a little high could put the output voltage over the allowable voltage into your measurement device, best to check it before connecting.

Also the measurement device loading will affect the output voltage, if you're going into an impedance less than around 100 X the bottom resistor value you either need a high impedance buffer or you need to adjust the bottom resistor value up a bit to compensate.

You can adapt this to similar problems by just changing the values.

  • 2
    \$\begingroup\$ Just a note...there is no point in putting 560 ohms in series with the 12k unless the 12k resistor tolerance is 1% or better. It would be far easier to just use 12k and do the final correction in software. \$\endgroup\$ Commented Nov 9, 2022 at 15:58
  • \$\begingroup\$ My only concern is that with these values the divider output impedance slightly exceeds the suggested limit for common AVR-based Arduinos. The comment about the usefulness of the extra 560 ohm resistor is also valid. If you are going to put it, the 12k resistor must have 1% tolerance, and so you could just select a single suitable 1% resistor from E96 series such as 12.4k or 12.7k. \$\endgroup\$
    – Justme
    Commented Nov 9, 2022 at 19:36
  • 1
    \$\begingroup\$ @Justme Updated. Trying to get the general idea across without having to write a book to cover every little aspect of it. I had mentioned tolerance and impedance at the end trying to cover that, guess it wasn't enough. \$\endgroup\$
    – GodJihyo
    Commented Nov 9, 2022 at 20:12

As you are making an oscilloscope with your Arduino, you should consider the possibility that the 600V input may be floating with respect to ground, or perhaps the user might reverse the leads. For 600V, it would be good to use a 10:1 or 100:1 probe, which would typically be used with a 1 Megohm input, and thus have a resistance of 9 Meg or 99 Meg. That would require your scope input to have a buffer amplifier to the Arduino analog input.

To protect against the possibility of a reversed input, where 600 VDC might be connected to the ground of the Arduino power supply, you must make sure that the circuit can handle that safely. So you might consider an isolation amplifier for the analog front end. Another approach would be a differential amplifier, but it would need to have sufficient common mode voltage rejection to be able to detect and measure the voltage drop you mentioned.


I have put 1Mohm and 10Kohm resistors, which seem to work.

  • 3
    \$\begingroup\$ what's the voltage rating of the 1M one? I don't mean 'does it happen to be working now with 600 V across it?', I mean, 'what is the voltage rating figure in the resistor's data sheet?' \$\endgroup\$
    – Neil_UK
    Commented Nov 9, 2022 at 12:28
  • 3
    \$\begingroup\$ What kind of 1Meg is your resistance? if it is a classical resistor ... it should be not safe !!! Use series 4x 250 kOhm resistors at least . \$\endgroup\$
    – Antonio51
    Commented Nov 9, 2022 at 12:36
  • 3
    \$\begingroup\$ It should not work. 600V would divide to 5.94V with 1M&10k resistors, which is larger than supply voltage, so it would be clamped by protection diodes. If it does appear to work, the resistor may have damaged by exceeding voltage or power limit. \$\endgroup\$
    – Justme
    Commented Nov 9, 2022 at 19:58
  • \$\begingroup\$ well yes, the voltage should have been >5, but I guess resistors were so inaccurately made (by the way - no idea what voltage they are - I just had them laying around), or my soldering added extra resistance. I was able to measure 600V with 900/1024 value from arduino. \$\endgroup\$
    – Ri Di
    Commented Nov 10, 2022 at 17:40
  • \$\begingroup\$ As Antonio51 said, "Use series 4x 250 kOhm resistors at least". I only say all of these things because I care, and seek to save your life. The 250K x4 (or better, x6) is a good idea, so please consider that! \$\endgroup\$ Commented Oct 28, 2023 at 3:00

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.