23 August 2026 · Bharat Raj · originally published on Compoden

Voltage Dividers, and the Loads That Break Them

Voltage divider built from two resistors on a breadboard

A voltage divider is two resistors in series across a voltage source, and the junction between them sits at a fraction of the input voltage: Vout = Vin × R2 ÷ (R1 + R2), where R2 is the resistor connected to ground. Put 10kΩ on top and 10kΩ on the bottom across 5V and the middle sits at 2.5V. It is the simplest useful circuit in electronics and it powers half of all sensor interfaces. But the formula carries a hidden assumption: that nothing is drawing current from the middle. Connect a load that draws real current and the output voltage drops below what the formula promised. Knowing when a divider holds and when it collapses is the actual skill.

How the divider divides

Current through a series chain is the same everywhere; there is only one path. Across 5V, two 10kΩ resistors in series make 20kΩ, so 0.25mA flows. Each resistor drops voltage in proportion to its resistance (Ohm's law: V = I × R), so each 10kΩ drops 2.5V. Measure from ground up to the junction and you read 2.5V. Change the ratio and the output follows: 30kΩ over 10kΩ gives you a quarter of the input; 10kΩ over 30kΩ gives three quarters. The ratio decides everything, which is why a potentiometer, which is just an adjustable divider, sweeps smoothly from 0V to full input.

What dividers are actually for

Three honest jobs. First, scaling a voltage down so an ADC can read it: a 12V battery cannot go straight into an Arduino Uno R3 pin (5V absolute limit), but through a suitable divider it becomes a safe fraction. Second, reading resistive sensors: an LDR (light-dependent resistor), a thermistor, or a soil probe forms one half of a divider with a fixed resistor, converting a changing resistance into a changing voltage the ADC can see. Third, level-shifting a signal, such as dropping a 5V logic output to about 3.3V with a 1kΩ over 2kΩ pair for a 3.3V input.

Notice what is not on the list: powering things. That is the trap we will get to.

The load problem

The formula assumes zero current leaves the junction. A real load connected from the junction to ground sits in parallel with R2, and parallel resistances combine into something smaller. The ratio shifts, and Vout sags.

Concretely: 10kΩ over 10kΩ across 5V promises 2.5V. Attach a 10kΩ load and the bottom becomes 10kΩ parallel with 10kΩ, which is 5kΩ. Now Vout = 5 × 5 ÷ 15 ≈ 1.67V. Your 2.5V just became 1.67V because something looked at it.

The rule of thumb: a divider holds up when the load resistance is at least ten times R2. An ADC input at megaohms barely disturbs a 10k divider. A 100Ω load flattens it completely.

Worked example: reading a 9V battery with an Arduino Uno R3

You want the Uno to monitor a 9V battery. Nine volts on an analog pin would damage the chip, so divide it. Choose R1 = 20kΩ (top, to battery positive) and R2 = 10kΩ (bottom, to ground), both from a resistor variety pack, assembled on a 400-point breadboard with the junction wired to A0 via a Dupont jumper wire. Battery negative connects to Uno GND, always.

Vout = 9 × 10 ÷ 30 = 3V, comfortably inside the 5V range. In code, read A0 and multiply by 3 (the division ratio) after converting counts to volts: volts = analogRead(A0) * 5.0 / 1023.0 * 3.0;. The divider draws 9V ÷ 30kΩ = 0.3mA continuously, gentle enough for the battery, small enough that the analog pin's tiny input current does not disturb the reading.

Where this bites you

The classic mistake is using a divider as a power supply. A beginner needs 3.3V for a sensor, has only 5V, calculates a divider to 3.3V, and connects the sensor. The moment the sensor draws its 30mA, the divider output collapses and the sensor browns out or behaves erratically. Worse, the sensor's current draw varies as it works, so the "supply" voltage wobbles with activity. A divider can set a voltage; it cannot hold one under load. Powering anything real takes a regulator (an AMS1117-3.3, or the Uno's own 3.3V pin for small loads).

A quieter version of the same bug: dividing a signal with very large resistors (say 1MΩ over 1MΩ) to save power, then reading it with an ADC. The Uno's ADC wants to see a source under about 10kΩ; fed from 500kΩ it samples slowly-charging voltages and returns unstable, load-dependent readings. Big resistors make even a microamp of input current matter.

FAQ

Which resistor values should I pick if only the ratio matters?

The ratio sets the voltage; the absolute values set the trade-off. Small values (1kΩ range) give a stiff, noise-resistant output but waste current continuously. Large values (100kΩ and up) sip current but are easily loaded down and noisy. For ADC work, keeping the bottom resistor around 10kΩ or less is a sound default.

Can I divide 230V mains down to read it with an Arduino?

Do not do this. A resistive divider offers no isolation: one wrong assumption, cracked resistor, or wiring slip puts mains potential on your board and possibly on you. Measuring mains safely requires isolated modules (voltage transformers like the ZMPT101B, or current transformers) designed for the job. Mains is the one domain where "it is just a divider" thinking causes injuries.

Why does my LDR divider read differently on different boards?

The output depends on the fixed resistor, the LDR, and the reference voltage of whichever ADC reads it. A board running at 4.8V and another at 5.1V will report different counts for the same light level. Ratiometric thinking, or a stable reference, fixes the discrepancy.

When your project needs a sensor read or a voltage scaled safely, Compoden's AI build assistant Soldr can work out the divider values and wire it into the build for you.