Designing Voltage Dividers for Sensor Circuits
A voltage divider scales a supply voltage down using two series resistors. The output appears at the junction between the two resistors and equals Vout = Vin × R2/(R1+R2).1 In sensor circuits, the most common application is level-shifting: connecting a 12 V battery sense line to a 3.3 V microcontroller ADC input, scaling a 5 V sensor output down for a 3.3 V GPIO, or forming a bias voltage for a resistive sensor such as an NTC thermistor. The design requires balancing three competing demands: achieving the target output voltage, maintaining output stability when a load connects across the lower resistor, and limiting the quiescent current drain from the supply. Getting the ratio right takes Ohm's Law and an understanding of the Thevenin source resistance at the divider output.
Deriving R1 and R2 from target output voltage and load current
The divider design starts with the supply voltage Vin, the target output voltage Vout, and a target divider current I_div. Setting I_div to at least 10 times the maximum expected load current keeps the output shift from loading below 10 percent.2 The resistor values follow directly: R2 = Vout / I_div and R1 = (Vin - Vout) / I_div.
For a 12 V battery sense line scaled to 3.3 V for an ESP32 ADC with a 1 mA divider current: R2 = 3.3 kΩ and R1 = 8.7 kΩ. The nearest E24 standard values are 8.2 kΩ and 3.3 kΩ, giving Vout = 12 x 3.3 / (8.2 + 3.3) = 3.44 V, slightly high but within the ESP32 ADC's 3.6 V maximum, and this quick recalculation with real component values is the step that catches ratio errors before they become soldered-in mistakes on the board. Consequently, the actual Vout with standard values must always be checked against the ADC maximum input voltage before committing to the design.
Scaling higher-voltage signals for low-voltage ADCs
When the signal you need to measure exceeds the ADC range, a voltage divider is the simplest level-shifter. For a 48 V battery bus feeding a 3.3 V ADC, choose a divider ratio of 3.3/48 = 0.06875. With a 100 kΩ upper resistor, the lower resistor is 100000 × 0.06875 / (1 - 0.06875) = 7.38 kΩ. The nearest E24 value of 7.5 kΩ gives a ratio of 7.5 / 107.5 = 0.0698, producing 3.35 V at 48 V input. Always verify that the maximum expected input voltage, including transients, does not produce an output that exceeds the ADC's absolute maximum rating, or add a clamp diode to protect the input. R1 and R2 for a 3.3 V ADC set the ratio that keeps the clamp off.
The 10x stiffness rule and how to verify load independence
The Thevenin source resistance at the divider output equals R1 in parallel with R2: R_th = R1 × R2 / (R1 + R2).1 When a load Rload connects across R2, the output shifts to Vout = Vin × (R2||Rload) / (R1 + R2||Rload). The output shift caused by the load is approximately I_load × R_th, which stays small when R_th is small relative to Rload.
The 10x stiffness rule states that divider current should be at least 10 times the load current. For the 12 V to 3.3 V divider above, R_th = 8200 × 3300 / (8200 + 3300) = 2.35 kΩ. An ESP32 ADC input draws only a few microamps, so the load effect is negligible.
Checking load variation over the operating range
Yet a MOSFET gate driver or a resistive sensor drawing 100 µA pulls the output down by 100 × 10⁻⁶ × 2350 = 0.235 V, potentially placing the output outside the ADC's calibration range. Verify R_th against load current whenever the load draws more than a few microamps. If the load varies over a wide range during operation, calculate the divider output at both minimum and maximum load current before finalising the design.
For a resistive sensor like an NTC thermistor whose resistance swings from 1 kΩ to 50 kΩ, the divider output shifts dramatically, and the source impedance at each operating point determines how much the ADC reading is affected by the sampling current. Design for the worst-case source impedance, not the mid-range value.
Accuracy budget: resistor tolerance, temperature coefficient, and load variation
Resistor tolerance sets the first error term in any voltage divider. Two 1 percent resistors can create nearly 2 percent ratio error if both drift in opposite directions at the same time.3 Temperature coefficient adds another term: a 100 ppm/°C pair shifts by about 0.2 percent over a 20°C rise, which matters in calibrated battery monitors and precision bias circuits.
For field sensing, verify the loaded output with the actual microcontroller input active rather than only calculating the unloaded ratio. The ADC sample capacitor draws a brief current pulse at the start of each conversion, momentarily pulling the divider output down through the source impedance. If that impedance is too high, the reading appears low cycle after cycle and exposes itself as excess noise in the captured data.
Verifying the loaded output with the microcontroller enabled
Use a lower divider resistance or a buffer amplifier when ADC accuracy matters, and measure the worst-case output with both resistors at their tolerance extremes if the divider feeds a safety or charging threshold. A practical test: measure the divider output with a high-impedance DMM, then connect the ADC and measure again while the microcontroller is sampling. If the reading drops by more than one LSB equivalent, the source impedance is too high and you need a buffer or a stiffer divider. For a 12-bit ADC at 3.3 V, one LSB is 0.8 mV,4 so even a small shift matters when you are trying to resolve millivolt-level signals from a sensor.
When to use this
Use this guide when connecting a higher-voltage analog signal to a lower-voltage ADC input, when creating a stable bias voltage for a resistive sensor, or when calculating the loading effect of a microcontroller ADC on a voltage divider. Reference it before finalizing resistor values to confirm that accuracy, stiffness, and quiescent current all meet the application requirements.
Examples
12V battery monitor to 3.3V ESP32 ADC (1mA divider current)
R1 = 8.7 kΩ (use 8.2 kΩ E24), R2 = 3.3 kΩ. Actual Vout = 3.44 V at 12 V supply. Confirm this is below the ESP32 ADC maximum of 3.6 V. R_th = 2.35 kΩ, ESP32 ADC input current is a few µA, so load effect is negligible.
NTC thermistor divider: 10kΩ reference resistor and 10kΩ NTC at 25°C from 3.3V
At 25°C where NTC = 10 kΩ: Vout = 3.3 × 10 / (10 + 10) = 1.65 V, mid-scale on the ADC. As temperature rises, NTC resistance falls and Vout rises. Choose R_ref equal to the NTC nominal value at the temperature of interest for maximum sensitivity.
5V sensor output scaled to 3.3V GPIO (microcontroller input, 500µA divider current)
Vout/Vin = 3.3/5.0 = 0.66. R2 = 3.3 V / 0.5 mA = 6.6 kΩ (use 6.8 kΩ), R1 = 1.7 V / 0.5 mA = 3.4 kΩ (use 3.3 kΩ). Actual Vout = 5 × 6.8 / (3.3 + 6.8) = 3.37 V. Acceptable for a 3.3 V GPIO if the sensor output is exactly 5 V.
- 1.
"Voltage divider," Wikipedia, accessed June 2026. https://en.wikipedia.org/wiki/Voltage_divider
- 2.
All About Circuits, "Voltage Divider Circuits," allaboutcircuits.com, accessed June 2026. https://www.allaboutcircuits.com/textbook/direct-current/chpt-6/voltage-divider-circuits/
- 3.
Analog Devices, "How to Improve Power Supply Output Regulation Accuracy with the LTpowerCAD Resistor Divider Tool," analog.com, November 2021. https://www.analog.com/en/resources/analog-dialogue/articles/how-to-improve-power-supply-output-regulation-accuracy-with-the-ltpowercad-resistor-divider-tool.html
- 4.
Texas Instruments, "ADC Input Circuit Evaluation for C2000 MCUs," SPRACY9, ti.com, accessed June 2026. https://www.ti.com/lit/an/spracy9/spracy9.pdf