Fundamentos · 17 min de lectura

Divisor de voltaje: fórmula, cálculo de resistencias y Arduino

Divisor de voltaje explicado: fórmula Vout = Vin × R2 / (R1 + R2), elegir resistencias, efecto de carga, medir 12 V con Arduino, de 5 V a 3,3 V, LDR y NTC.

Un divisor de voltaje (también llamado divisor de tensión) es el circuito más sencillo para convertir una tensión en otra más pequeña y fácil de calcular usando dos resistencias en serie. La tensión de salida se obtiene con Vout = Vin × R2 / (R1 + R2): R1 va a la fuente, R2 va a tierra (GND) y la salida se toma del punto medio donde se unen. Por ejemplo, dos resistencias de 10 kΩ dividen 12 V exactamente por la mitad, a 6 V. Estas dos resistencias están en el corazón de innumerables circuitos: desde medir una batería de 12 V con Arduino y adaptar una señal de 5 V a los pines de 3,3 V de un ESP32 hasta leer sensores como la LDR y el termistor NTC.

En esta guía verás, con números reales, de dónde sale la fórmula, cómo elegir los valores de las resistencias y por qué la salida baja cuando conectas algo al divisor (el efecto de carga). Después montaremos paso a paso el código que mide la tensión de una batería con Arduino Uno, ESP32 y Raspberry Pi Pico, elegiremos las parejas de resistencias adecuadas para pasar de 5 V a 3,3 V y leeremos una LDR y un NTC con un divisor. Por último, explicaremos por qué un divisor de voltaje nunca debe usarse como fuente de alimentación.

Resistencias para un divisor de voltaje
Un divisor de voltaje solo necesita dos resistencias; para medidas precisas, las resistencias de película metálica al 1 % dan resultados más exactos.

¿Qué es un divisor de voltaje y cómo funciona?

La fórmula del divisor de voltaje sale directamente de la ley de Ohm. Por R1 y R2, conectadas en serie entre la fuente y tierra, circula la misma corriente: I = Vin / (R1 + R2). La tensión en R2, que es la salida, es esa corriente multiplicada por R2: Vout = I × R2 = Vin × R2 / (R1 + R2). En resumen, la tensión de la fuente se reparte entre las resistencias en proporción a sus valores; a la resistencia mayor le toca la parte mayor. La salida siempre es menor que la entrada, porque la relación R2 / (R1 + R2) es menor que 1. Tienes más detalles sobre cómo se reparte la tensión en un circuito en serie en Cálculo de resistencias en serie y en paralelo.

MagnitudFórmulaEjemplo (Vin = 12 V, R1 = 22 kΩ, R2 = 10 kΩ)
Tensión de salidaVout = Vin × R2 / (R1 + R2)12 × 10 / 32 = 3,75 V
Relación de divisiónk = R2 / (R1 + R2)10 / 32 = 0,3125
Entrada a partir de la salidaVin = Vout × (R1 + R2) / R23,75 × 3,2 = 12 V
R1 para una relación deseadaR1 = R2 × (Vin / Vout − 1)10 kΩ × (12 / 3,75 − 1) = 22 kΩ
Corriente del divisorI = Vin / (R1 + R2)12 / 32 kΩ = 0,375 mA
Potencia totalP = Vin² / (R1 + R2)144 / 32 kΩ = 4,5 mW
Resistencia de salida (Thévenin)Rth = R1 × R2 / (R1 + R2)22 × 10 / 32 = 6,875 kΩ

También puedes calcular al revés: si quieres bajar 12 V a 3,3 V y has elegido 10 kΩ para R2, obtienes R1 = 10 × (12 / 3,3 − 1) ≈ 26,4 kΩ. Ese valor no se vende, así que eliges el siguiente valor normalizado hacia arriba, 27 kΩ, y la salida queda en 12 × 10 / 37 ≈ 3,24 V. Redondear R1 hacia arriba baja un poco la salida, que es el lado seguro para el pin. Un potenciómetro también es, en realidad, un divisor de voltaje ajustable: su cursor divide la pista resistiva en R1 y R2. Si no quieres hacer la cuenta a mano, la calculadora de divisor de voltaje te da la salida al instante a partir de la tensión de entrada y las resistencias. En electrónica verás el divisor de voltaje sobre todo en estas tareas:

  • Medir tensiones altas: llevar fuentes como una batería de 12 V o un pack de litio de 7,4 V al rango que puede medir una entrada analógica.
  • Bajar el nivel lógico: hacer que una señal de 5 V sea segura para las entradas de 3,3 V del ESP32 y la Raspberry Pi Pico.
  • Leer sensores resistivos: convertir en tensión el cambio de resistencia de componentes como la LDR, el NTC, el sensor de flexión o el sensor de fuerza (FSR).
  • Leer muchos botones con un pin: una escalera de resistencias da a cada botón una tensión distinta, de modo que cinco botones pueden compartir un solo pin analógico.
  • Realimentación de reguladores: reguladores como el LM317 o el LM2596 ajustable mantienen estable su salida midiéndola a través de un divisor; en el LM317, Vout = 1,25 × (1 + R2 / R1).
  • Crear una tensión de referencia: generar la mitad de la tensión de alimentación como referencia en circuitos con amplificadores operacionales.

Cómo elegir los valores de las resistencias

La fórmula solo se fija en la relación: 1 kΩ + 1 kΩ y 100 kΩ + 100 kΩ dividen igual, exactamente por la mitad. Pero en la práctica también importan los valores absolutos. Las resistencias pequeñas dejan pasar mucha corriente por el divisor; esa corriente es energía desperdiciada y en proyectos con batería la agota sin motivo. Las resistencias grandes consumen muy poca corriente, pero su salida es débil: una carga conectada o el condensador de muestreo de la entrada analógica alteran fácilmente la tensión de salida, y el ruido captado por los cables entra con más facilidad. La elección correcta es un equilibrio entre estos dos extremos:

Resistencia total (R1 + R2)Corriente a 12 VVentajasInconvenientesUso típico
100 Ω – 1 kΩ12–120 mACasi no le afecta la carga, muy rápidoSe calienta, gasta mucha corrienteCasi nunca en circuitos de medida
1 kΩ – 30 kΩ0,4–12 mAResistencia de salida ideal para el ADC, apto para señales rápidasConsumo constante en proyectos con bateríaConversión de señal de 5 V a 3,3 V, medidas con Arduino
30 kΩ – 300 kΩ40–400 µARespetuoso con la batería, no se calientaPuede necesitar un condensador de 100 nF en la entrada analógicaMonitorización de pilas y baterías
1 MΩ o másMenos de 12 µACasi no consume corrienteSensible al ruido, el ADC no lo lee bien, hasta un multímetro lo cargaSolo con un búfer con amplificador operacional
  1. Determina la tensión de entrada máxima. Una batería de plomo de 12 V puede llegar a 14,4 V mientras se carga; toma el peor caso de la tensión que vas a medir y añade un margen del 10 %.
  2. Determina la tensión máxima que admite el pin. 5 V en el Arduino Uno y 3,3 V en el ESP32 y la Pico; como objetivo seguro elige unos 4,5 V en el Uno, 2,5 V en el ESP32 y 3,0 V en la Pico.
  3. Calcula la relación: k = salida objetivo / entrada máxima. Por ejemplo, 4,5 / 14,4 ≈ 0,31.
  4. Elige R2 (10 kΩ es un buen punto de partida en la mayoría de los casos) y halla R1 con R1 = R2 × (1 / k − 1). Redondea el resultado al siguiente valor hacia arriba de los valores normalizados de resistencias.
  5. Comprueba la corriente y la potencia: I = Vin / (R1 + R2) y P = Vin² / (R1 + R2). En proyectos con batería intenta mantener la corriente en el rango de los microamperios.
  6. Comprueba la resistencia de salida: R1 × R2 / (R1 + R2) debería estar por debajo de 10 kΩ en el Arduino Uno; si no, añade un condensador de 100 nF entre el pin analógico y GND.
  7. Escribe la relación real en el código: recalcula la relación con los valores normalizados elegidos, mide con un multímetro una vez montado el circuito y calibra.
La tolerancia de las resistencias altera directamente la relación. En el peor caso, dos resistencias de 22 kΩ y 10 kΩ al 5 % pueden desplazar la relación a cualquier punto entre 0,291 y 0,334, es decir, alrededor de ±7 %, y leerías 12 V como 11,2 V o 12,8 V. Con resistencias de película metálica al 1 % el error baja a ±1,4 %, y una sola calibración con el multímetro lo elimina casi por completo.

Efecto de carga: ¿qué pasa al conectar algo al divisor?

La fórmula supone que no se saca corriente de la salida. En cuanto conectas una carga, queda en paralelo con R2, la resistencia equivalente de la rama inferior se reduce y la tensión de salida baja. La forma fácil de calcularlo es ver el divisor como su equivalente de Thévenin: una fuente con la tensión que mides sin carga (Vth) y una resistencia interna Rth = R1 × R2 / (R1 + R2). Con una carga RL, la salida pasa a ser Vth × RL / (Rth + RL). La tabla muestra una fuente de 10 V dividida con 10 kΩ + 10 kΩ (Vth = 5 V, Rth = 5 kΩ) y distintas cargas en la salida:

Carga en la salida (RL)Tensión de salidaError
Sin carga5,00 V0 %
1 MΩ4,98 V0,5 %
100 kΩ4,76 V4,8 %
10 kΩ3,33 V33 %
1 kΩ0,83 V83 %

La regla práctica: si la resistencia de la carga es al menos 100 veces la resistencia de salida del divisor (Rth), el error queda por debajo del 1 %. Si la carga es menor, reduce las resistencias o intercala un seguidor de tensión (búfer) con amplificador operacional. La entrada analógica de un microcontrolador tiene de por sí una resistencia muy alta, pero dentro hay un pequeño condensador de muestreo que se carga en cada conversión (unos 14 pF en el ATmega328P). Por eso la hoja de datos recomienda que la resistencia de salida de la fuente sea de unos 10 kΩ o menos. Si usas un divisor de valores más altos, añade un condensador de 100 nF entre el pin analógico y GND: mantiene lista la carga que hace falta en el momento del muestreo. Y si lees varios pines analógicos seguidos, descartar la primera lectura de cada pin elimina el error que deja el cambio de canal.

Por qué un divisor de voltaje no sirve como fuente de alimentación

La trampa más habitual de los principiantes es sacar 5 V de un adaptador de 12 V con dos resistencias e intentar alimentar con ellos un Arduino o un módulo. Sobre el papel, un divisor de 7 kΩ y 5 kΩ da exactamente 5 V a partir de 12 V, pero solo mientras no se saque corriente de la salida. Una placa que consume 50 mA se comporta como una carga de unos 100 Ω; en paralelo con los 5 kΩ de R2, la rama inferior baja a 98 Ω y la salida se desploma a 0,17 V. Si reduces las resistencias a 70 Ω y 50 Ω, el circuito consume 100 mA y genera 1,2 W de calor incluso sin nada conectado; con la carga, la salida sigue cayendo a 3,9 V y cada vez que cambia el consumo de la placa (Wi-Fi, un servo, un relé) la tensión también varía. Además, al quitar la carga la tensión vuelve a subir y puede dañar componentes sensibles.

Para alimentar un circuito usa un regulador, no un divisor de voltaje. Para corrientes pequeñas, un regulador de voltaje 7805 (un AMS1117 para 3,3 V), y para más corriente y eficiencia un convertidor reductor (buck) como el LM2596, mantienen la salida estable sea cual sea la carga. Usa el divisor de voltaje solo para medir y para señales, y nunca conectes la tensión de red a un Arduino mediante un simple divisor; para eso existen módulos aislados.

Medir una batería de 12 V y pilas con Arduino

Las entradas analógicas del Arduino Uno leen como máximo 5 V; conectar directamente una batería de 12 V quemaría el pin. La solución es un divisor de 22 kΩ (R1) y 10 kΩ (R2): con una relación de 0,3125, los 14,4 V de carga llegan al pin como 4,5 V y el circuito puede medir hasta 16 V. A 12 V el divisor consume solo 0,375 mA y su resistencia de salida, de 6,9 kΩ, queda por debajo del límite recomendado de 10 kΩ. El ADC de 10 bits distingue unos 4,9 mV por paso; con el divisor eso equivale a una resolución de unos 15,6 mV en la entrada. Como el ESP32 y la Pico trabajan a 3,3 V, en ellos usamos una R1 mayor (56 kΩ):

ConexiónArduino UnoESP32Raspberry Pi Pico
R1 (resistencia superior)22 kΩ56 kΩ56 kΩ
R2 (resistencia inferior)10 kΩ10 kΩ10 kΩ
Extremo superior de R1Positivo de la fuente (+12 V)Positivo de la fuente (+12 V)Positivo de la fuente (+12 V)
Punto medio (R1–R2)A0GPIO 34 (ADC1)GP26 (ADC0, pin 31)
Extremo inferior de R2 y negativo de la fuenteGNDGNDGND (p. ej., pin 38)
Tensión en el pin con 14,4 V4,50 V2,18 V2,18 V
Entrada máxima medible16 VUnos 16 V (rango preciso)Unos 21 V
El negativo de la fuente y el GND del Arduino tienen que estar unidos; sin una tierra común, la tensión medida no tiene referencia y los valores bailan sin sentido (más detalles en ¿Qué es GND?). Invertir las resistencias también es peligroso: con 10 kΩ arriba y 22 kΩ abajo, llegan al pin 8,25 V de los 12 V. Mide el punto medio con un multímetro antes de conectar el circuito al microcontrolador.
C++ (Arduino IDE)
1// 12 V akü gerilimini gerilim bölücüyle ölçme / Measuring a 12 V battery with a voltage divider
2// Kaynak + -> 22k (R1) -> A0 -> 10k (R2) -> GND / Source + -> 22k (R1) -> A0 -> 10k (R2) -> GND
3// Kaynağın eksisi Arduino GND'sine bağlı / Source minus is tied to the Arduino GND
4const int VIN_PIN = A0;
5const float VREF = 5.0;      // 5V pininde ölçtüğün gerilim / voltage you measured on the 5V pin
6const float R1 = 22000.0;    // üst direnç (ohm) / top resistor (ohms)
7const float R2 = 10000.0;    // alt direnç (ohm) / bottom resistor (ohms)
8const float CAL = 1.000;     // kalibrasyon: gerçek / okunan / calibration: real / measured
9const float LOW_V = 11.8;    // düşük akü eşiği (V) / low battery threshold (V)
10
11float readInputVoltage() {
12  analogRead(VIN_PIN);                        // ilk okumayı at / discard the first reading
13  long sum = 0;
14  for (int i = 0; i < 16; i++) {              // 16 ölçümün ortalaması / average of 16 readings
15    sum += analogRead(VIN_PIN);
16    delay(2);
17  }
18  float vPin = (sum / 16.0) * VREF / 1024.0;  // pindeki gerilim / voltage at the pin
19  return vPin * (R1 + R2) / R2 * CAL;         // bölücüden önceki gerilim / voltage before the divider
20}
21
22void setup() {
23  Serial.begin(9600);
24  pinMode(LED_BUILTIN, OUTPUT);
25}
26
27void loop() {
28  float v = readInputVoltage();
29  Serial.print(F("Giris / Input: "));
30  Serial.print(v, 2);
31  Serial.println(F(" V"));
32  digitalWrite(LED_BUILTIN, v < LOW_V ? HIGH : LOW);  // akü zayıfsa LED yanar / LED on when the battery is low
33  delay(1000);
34}

El código descarta la primera lectura para que se estabilice el condensador de muestreo del ADC y luego promedia 16 lecturas para reducir el ruido. El número leído se convierte primero en la tensión del pin (dividimos entre 1024 porque, según la hoja de datos del ATmega328P, ADC = Vin × 1024 / Vref) y después se multiplica por (R1 + R2) / R2 = 3,2 para obtener la tensión antes del divisor. La mayor fuente de error es Vref: el pin de 5V de un Uno alimentado por USB suele estar entre 4,7 y 5,1 V. Por eso mide el pin de 5V con un multímetro y escribe el valor en VREF; después mide con el multímetro la tensión real de la batería, compárala con el valor del monitor serie e introduce en el código CAL = real / medido. Este único paso corrige a la vez los errores de Vref y de tolerancia de las resistencias. Si conectas el divisor después del interruptor de encendido del aparato, no consume nada mientras está apagado; 0,375 mA suman unos 9 mAh al día, nada para la batería de un coche pero apreciable en una batería pequeña. Estas son parejas de resistencias adecuadas para otras fuentes:

Fuente a medirRango de tensiónArduino Uno (5 V): R1 + R2ESP32 / Pico (3,3 V): R1 + R2
Celda Li-ion / LiPo (1S)3,0–4,2 VNo hace falta divisor (4,2 V < 5 V)100 kΩ + 100 kΩ → 2,10 V como máximo
Pack Li-ion 2S6,0–8,4 V10 kΩ + 10 kΩ → 4,20 V como máximo100 kΩ + 33 kΩ → 2,08 V como máximo
Pack LiPo 3S9,0–12,6 V22 kΩ + 10 kΩ → 3,94 V como máximo56 kΩ + 10 kΩ → 1,91 V como máximo
Batería de plomo de 12 V10,5–14,4 V22 kΩ + 10 kΩ → 4,50 V como máximo56 kΩ + 10 kΩ → 2,18 V como máximo
Sistema de 24 V21–29 V56 kΩ + 10 kΩ → 4,39 V como máximo120 kΩ + 10 kΩ → 2,23 V como máximo

Medir tensión con el ESP32

En el ESP32 el ADC es de 12 bits (0–4095), pero tiene dos diferencias importantes. La primera: los pines del ADC2 no se pueden leer con el Wi-Fi activo, así que conecta siempre el divisor a un pin del ADC1, GPIO 32–39 (los GPIO 34–39 son solo de entrada e ideales para esto). La segunda: el ADC no es lineal en los extremos; con la atenuación por defecto de 11 dB, Espressif recomienda aproximadamente 150–2450 mV como rango más preciso. El pin mostrará valores hasta unos 3,1 V, pero en esa zona el error crece. Por eso elegimos un divisor de 56 kΩ + 10 kΩ: 14,4 V llegan al pin como 2,18 V y se quedan en el rango preciso. En lugar del analogRead() en bruto usamos analogReadMilliVolts(), que devuelve directamente milivoltios usando los datos de calibración grabados en el chip en fábrica:

C++ (Arduino IDE)
1// ESP32: 56k + 10k bölücüyle 12 V ölçme / ESP32: measuring 12 V with a 56k + 10k divider
2const int VIN_PIN = 34;        // ADC1_CH6, Wi-Fi açıkken de çalışır / ADC1_CH6, works with Wi-Fi on
3const float R1 = 56000.0;      // üst direnç (ohm) / top resistor (ohms)
4const float R2 = 10000.0;      // alt direnç (ohm) / bottom resistor (ohms)
5const float CAL = 1.000;       // multimetreyle ayarla / tune with a multimeter
6
7void setup() {
8  Serial.begin(115200);
9  analogReadResolution(12);    // 0-4095 (varsayılan / default)
10}
11
12void loop() {
13  uint32_t mv = 0;
14  for (int i = 0; i < 32; i++) {
15    mv += analogReadMilliVolts(VIN_PIN);     // kalibre edilmiş milivolt / calibrated millivolts
16  }
17  float vPin = mv / 32.0 / 1000.0;           // pindeki gerilim (V) / voltage at the pin (V)
18  float vIn = vPin * (R1 + R2) / R2 * CAL;   // bölücüden önceki gerilim / voltage before the divider
19  Serial.printf("Pin: %.3f V  Giris / Input: %.2f V\n", vPin, vIn);
20  delay(1000);
21}

Medir tensión con la Raspberry Pi Pico (MicroPython)

En la Raspberry Pi Pico las entradas analógicas son GP26, GP27 y GP28 (ADC0–ADC2). La función read_u16() de MicroPython escala la lectura de 12 bits al rango 0–65535, y la referencia es ADC_VREF, que procede de los 3,3 V de la placa. Como el ADC de la Pico mide hasta 3,3 V, con 56 kΩ + 10 kΩ llegas hasta unos 21 V. Un detalle curioso: la propia Pico usa un divisor de voltaje. Un divisor en la placa divide entre tres la tensión de alimentación VSYS y la lleva a GP29 (ADC3); si multiplicas por 3 la tensión leída con ADC(29), ves la tensión de alimentación de la placa (en la Pico W, GP29 se comparte con el chip inalámbrico y esto no funciona directamente).

MicroPython
1from machine import ADC
2import time
3
4adc = ADC(26)            # GP26 = ADC0 (pin 31)
5VREF = 3.3               # ADC_VREF; multimetreyle ölçüp düzelt / measure and correct with a multimeter
6R1 = 56000               # üst direnç (ohm) / top resistor (ohms)
7R2 = 10000               # alt direnç (ohm) / bottom resistor (ohms)
8CAL = 1.000              # kalibrasyon katsayısı / calibration factor
9
10
11def read_input_voltage(samples=32):
12    total = 0
13    for _ in range(samples):
14        total += adc.read_u16()                  # 0-65535
15    v_pin = total / samples * VREF / 65535       # pindeki gerilim / voltage at the pin
16    return v_pin * (R1 + R2) / R2 * CAL          # bölücüden önceki gerilim / voltage before the divider
17
18
19while True:
20    v_in = read_input_voltage()
21    print("Giris / Input: {:.2f} V".format(v_in))
22    time.sleep(1)

Bajar una señal de 5 V a 3,3 V (para ESP32 y Pico)

Los pines del ESP32 y la Pico no toleran 5 V. Si la salida ECHO del HC-SR04, el pin TX de un Arduino Uno o la salida digital de un módulo alimentado a 5 V se conectan directamente a estas placas, los diodos de protección de la entrada se fuerzan y el pin puede estropearse con el tiempo. Para señales en un solo sentido, la solución más barata es un divisor de voltaje. El objetivo es una tensión que nunca supere 3,3 V pero que sea lo bastante alta para que la placa la lea como HIGH: el ESP32 toma el 75 % de su alimentación (unos 2,5 V) como nivel HIGH mínimo, y el RP2040 de la Pico, 2,0 V. Por eso una salida de entre 3,0 y 3,3 V deja un margen cómodo en ambas placas. Es también el método que recomienda la guía del sensor de distancia HC-SR04 para conectar el pin ECHO a placas de 3,3 V.

R1 (lado de la señal)R2 (lado de GND)Salida con 5 VResistencia de salidaValoración
1 kΩ2 kΩ (dos de 1 kΩ en serie)3,33 V667 ΩLa opción clásica; vale también para señales rápidas
1,2 kΩ2,2 kΩ3,24 V776 ΩValores normalizados E12, justo por debajo de 3,3 V
10 kΩ20 kΩ3,33 V6,7 kΩPoco consumo; suficiente para UART y el HC-SR04
2,2 kΩ3,3 kΩ3,00 V1,3 kΩEl margen más seguro; ambas placas leen HIGH
4,7 kΩ10 kΩ3,40 V3,2 kΩAl límite; si la línea de 5 V sube a 5,25 V, salen 3,57 V; no recomendado

Junto con la capacidad del propio pin, el divisor forma un pequeño filtro RC. Los 6,7 kΩ de resistencia de salida de un divisor de 10 kΩ + 20 kΩ, con unos 15 pF de pin y protoboard, dan una constante de tiempo de unos 100 ns; a una UART de 115200 baudios (8,7 µs por bit) no le afecta, pero los flancos de las señales SPI de varios MHz se redondean. En líneas rápidas, mejor 1 kΩ + 2 kΩ. Recuerda también que un divisor solo funciona en un sentido, de la tensión más alta a la más baja. En el sentido contrario normalmente no hace falta nada: el Arduino Uno considera HIGH todo lo que supera 3,0 V, así que puede leer la salida de 3,3 V del ESP32, aunque con poco margen. En líneas bidireccionales como el I2C, en cambio, el divisor no sirve; ahí se usa un convertidor de nivel lógico con MOSFET.

Leer una LDR y un NTC con un divisor de voltaje

LDR (fotorresistencia) como sensor de luz
La resistencia de una LDR cambia con la luz; al montar un divisor de voltaje con una resistencia fija, ese cambio se convierte en una tensión que el Arduino puede leer.

Los microcontroladores no pueden medir resistencia directamente, solo tensión. Cuando pones un sensor resistivo como una LDR o un NTC en serie con una resistencia fija formando un divisor de voltaje, el cambio de resistencia se convierte en un cambio de tensión en el punto medio. El valor de la resistencia fija determina la sensibilidad. Para obtener la mayor variación de tensión, la resistencia fija debe ser la media geométrica de la resistencia mínima y máxima del sensor en el rango que te interesa: R = √(Rmin × Rmax). Para una LDR de 1 kΩ con mucha luz y 100 kΩ con poca luz, sale √(1 k × 100 k) = 10 kΩ. A 5 V, con 10 kΩ la salida varía 4,09 V, mientras que con 1 kΩ o 100 kΩ la variación se reduce a 2,45 V. Por eso los kits de inicio traen resistencias de 10 kΩ. Hay otra ventaja: como el divisor y el ADC se alimentan de los mismos 5 V, la resistencia calculada no depende de la tensión de alimentación (medida ratiométrica), así que el código de abajo ni siquiera necesita un valor de Vref.

C++ (Arduino IDE)
1// LDR ve NTC'yi gerilim bölücüyle okuma / Reading an LDR and an NTC with voltage dividers
2// A0: 5V -> LDR -> A0 -> 10k -> GND
3// A1: 5V -> 10k -> A1 -> NTC 10k (B = 3950) -> GND
4const float R_FIXED = 10000.0;  // sabit dirençler (ohm) / fixed resistors (ohms)
5const float R0 = 10000.0;       // NTC'nin 25 °C direnci / NTC resistance at 25 °C
6const float BETA = 3950.0;      // NTC B katsayısı / NTC beta coefficient
7const float T0 = 298.15;        // 25 °C kelvin cinsinden / 25 °C in kelvin
8
9void setup() {
10  Serial.begin(9600);
11}
12
13void loop() {
14  analogRead(A0);                         // kanal değişti, ilk okumayı at / channel changed, discard first reading
15  int ldrRaw = analogRead(A0);
16  analogRead(A1);
17  int ntcRaw = analogRead(A1);
18  if (ldrRaw < 1) ldrRaw = 1;             // sıfıra bölmeyi önle / avoid division by zero
19
20  // Oransal ölçüm: besleme gerilimi hesaptan düşer / ratiometric: the supply voltage cancels out
21  float rLdr = R_FIXED * (1024.0 / ldrRaw - 1.0);
22  float rNtc = R_FIXED * ntcRaw / (1024.0 - ntcRaw);
23  float tempC = 1.0 / (1.0 / T0 + log(rNtc / R0) / BETA) - 273.15;  // Beta denklemi / Beta equation
24
25  Serial.print(F("LDR: "));
26  Serial.print(rLdr / 1000.0, 1);
27  Serial.print(F(" kOhm   NTC: "));
28  Serial.print(rNtc / 1000.0, 2);
29  Serial.print(F(" kOhm   "));
30  Serial.print(tempC, 1);
31  Serial.println(F(" C"));
32  delay(1000);
33}

En el código la LDR está arriba, así que la lectura sube cuando hay más luz; su resistencia es R = 10 kΩ × (1024 / ADC − 1). El NTC está abajo y, cuando sube la temperatura, baja su resistencia y con ella la tensión leída. Para los NTC habituales de 10 kΩ a 25 °C con coeficiente B de 3950, la temperatura se obtiene con la ecuación Beta: 1 / T = 1 / T0 + ln(R / R0) / B (temperaturas en kelvin). Como la resistencia fija coincide con la del NTC a 25 °C, a temperatura ambiente la salida es exactamente la mitad de la alimentación, que es donde la sensibilidad es máxima. Para más precisión en un rango amplio de temperaturas, tratamos la ecuación de Steinhart-Hart y el autocalentamiento del NTC en la guía del termistor NTC.

Ideas de proyectos con divisor de voltaje

  • Monitor de batería con alarma: vigila la batería de una autocaravana o de una instalación solar y haz sonar un zumbador cuando baje de 11,8 V; para opciones de alimentación en proyectos con batería, mira Alimentar Arduino con pilas.
  • Voltímetro digital: muestra la tensión medida en una pantalla LCD u OLED; los pasos están en Cómo hacer un voltímetro con Arduino.
  • Luz nocturna automática: con un divisor con LDR, enciende LED o un relé cuando oscurece.
  • Seguidor solar: compara las tensiones de dos divisores con LDR para orientar un panel hacia la luz (seguidor solar).
  • Cinco botones en un pin: monta una escalera de resistencias distintas y averigua qué botón se pulsa a partir del valor analógico (conectar botones).
  • Termostato: mide la temperatura con un divisor con NTC y activa un ventilador o un calefactor mediante un relé a la temperatura que elijas.

Errores frecuentes y cómo solucionarlos

SíntomaCausa probableSolución
Las lecturas no tienen sentido y saltanEl negativo de la fuente no está unido al GND del ArduinoConecta una tierra común
La tensión en el pin es mucho mayor de lo esperadoR1 y R2 están intercambiadasLa resistencia mayor va en el lado de la fuente (arriba); mide con el multímetro antes de conectar
La lectura se desvía un 5–10 % del valor realResistencias al 5 % o Vref distinta de 5,00 VUsa resistencias de película metálica al 1 % y calibra con VREF y CAL en el código
La salida baja al conectar un móduloEfecto de carga: la carga queda en paralelo con R2Haz que la carga sea al menos 100 × Rth, usa resistencias menores o un búfer con amplificador operacional
La lectura se desplaza con un divisor de valores altosEl condensador de muestreo del ADC no llega a cargarseAñade 100 nF en el pin y descarta la primera lectura
En el ESP32 la lectura deja de funcionar al activar el Wi-FiEl divisor está en un pin del ADC2Usa GPIO 32–39 (ADC1)
La batería se descarga aunque el aparato esté apagadoEl divisor consume corriente de la batería todo el tiempoConecta el divisor después del interruptor y usa resistencias de valor alto
Un módulo alimentado desde el divisor no funcionaUn divisor no es una fuente de alimentaciónUsa un regulador como el 7805, el AMS1117 o el LM2596
El I2C no funciona a través de un divisorEl divisor funciona en un solo sentido y el I2C es bidireccionalUsa un convertidor de nivel lógico con MOSFET
Cada vez que montes un divisor nuevo, enciende la fuente y mide con el multímetro la tensión del punto medio antes de conectarlo al microcontrolador. Si el valor coincide con el de la calculadora de divisor de voltaje con un margen de pocos puntos porcentuales, pasa el cable al pin analógico. Esta comprobación de diez segundos evita que una resistencia invertida queme tu placa.

Un divisor de voltaje no es más que dos resistencias y una fórmula, pero aparece en casi cualquier proyecto que mida algo. Si eliges la relación con la fórmula y los valores absolutos equilibrando corriente y resistencia de salida, tienes en cuenta el efecto de carga y calibras el resultado con un multímetro, obtendrás medidas fiables. Puedes leer los fundamentos de la lectura analógica en ¿Qué es un ADC?. En la app BlueGrays encontrarás proyectos como leer la intensidad de luz con una LDR, una luz nocturna con LDR, un voltímetro digital con LCD, la medida de temperatura con NTC y un medidor de distancia con ESP32 y HC-SR04, explicados paso a paso con esquemas y código.

Preguntas frecuentes

¿Cuál es la fórmula del divisor de voltaje?

La tensión de salida es Vout = Vin × R2 / (R1 + R2), donde R1 es la resistencia del lado de la fuente y R2 la del lado de tierra. Por ejemplo, si divides 9 V con 10 kΩ y 10 kΩ obtienes 4,5 V. La fórmula solo es exacta cuando no se saca corriente de la salida.

¿Se puede bajar de 12 V a 5 V con un divisor de voltaje?

Para medir o para una señal, sí: con 22 kΩ y 10 kΩ bajas 12 V a 3,75 V y los lees con una entrada analógica del Arduino. Para alimentar una placa o un módulo, no; la salida se desploma en cuanto la carga consume corriente. Para alimentar usa un regulador como el 7805 o un convertidor reductor como el LM2596.

¿Qué resistencias uso para pasar de 5 V a 3,3 V?

La pareja más habitual es 1 kΩ en el lado de la señal y 2 kΩ en el lado de tierra, que convierte 5 V en 3,33 V. Con 10 kΩ y 20 kΩ consigues la misma relación, pero para señales rápidas son mejores los valores pequeños. Si no tienes 2 kΩ, con 2,2 kΩ y 3,3 kΩ obtienes 3,0 V, que el ESP32 y la Pico siguen leyendo como HIGH.

¿Cómo se calculan las resistencias de un divisor de voltaje?

Primero fija la relación según la tensión de entrada máxima y el límite del pin; luego elige R2 (normalmente 10 kΩ) y calcula R1. Si la resistencia total es baja, el divisor desperdicia corriente; si es muy alta, aumentan el efecto de carga y el error del ADC. En Arduino, una resistencia de salida por debajo de 10 kΩ y, en proyectos con batería, un total de unos 100 kΩ son un buen equilibrio.

¿Cómo medir 12 V con Arduino?

Conecta el positivo de la batería a A0 a través de 22 kΩ, A0 a GND a través de 10 kΩ y el negativo de la batería al GND del Arduino. En el código multiplica el valor de analogRead() por 5 / 1024 para obtener la tensión del pin y luego por 3,2 para obtener la de la batería. Con este divisor puedes medir con seguridad hasta 16 V.

¿Un divisor de voltaje descarga la batería?

Sí, un divisor consume constantemente I = Vin / (R1 + R2). Un divisor de 32 kΩ consume 0,375 mA a 12 V, unos 9 mAh al día: nada para la batería de un coche, pero mucho para una batería pequeña. En proyectos con batería usa resistencias de unos 100 kΩ con un condensador de 100 nF en el pin analógico, o conecta el divisor después del interruptor del aparato.

Ver todos los proyectos
Medir la intensidad de luz con LDR
#11Principiante

Medir la intensidad de luz con LDR

¿Quieres ver en números cuánta luz hay en tu habitación? El LDR, una pequeña pieza sensible a la luz, mide la luz ambiente y el Arduino escribe el valor en la pantalla del ordenador cada medio segundo

4.6(81)
139
Luz nocturna con LDR
#12Principiante

Luz nocturna con LDR

Una pequeña lamparita que se enciende sola cuando oscurece y se apaga cuando llega la mañana. Un sensor de luz mide la claridad de la habitación, y el Arduino enciende el LED cuando está lo bastante o

4.8(102)
205
Lectura de la intensidad luminosa con el módulo LDR del ESP32
#113Principiante

Lectura de la intensidad luminosa con el módulo LDR del ESP32

Visualización en tiempo real en el monitor serie del valor bruto del ADC del módulo LDR y del porcentaje relativo de luz calculado a partir de referencias de oscuridad y claridad. Este porcentaje no es una medición en lux. Explica el funcionamiento de la calibración del módulo. Es recomendable realizarlo antes del Proyecto 10, ya que se utiliza para determinar el valor umbral.

4.6(36)
55
Voltímetro digital con pantalla LCD
#56Intermedio
Premium

Voltímetro digital con pantalla LCD

Descubre cuánto voltaje da una pila o un adaptador con un medidor hecho por ti. Un divisor de dos resistencias baja la tensión alta a un nivel que la placa puede leer, y el Arduino calcula el valor re

4.5(27)
36
Medición de temperatura con NTC y pantalla LCD 2x16
#44Principiante
Premium

Medición de temperatura con NTC y pantalla LCD 2x16

Mide la temperatura del ambiente con un sensor que parece una pequeña cuenta. Esta pieza, llamada NTC, deja pasar la electricidad con más facilidad cuanto más se calienta; el Arduino lee ese cambio, l

4.5(33)
44
ESP32 Luz de Noche con LDR
#112Principiante
Premium

ESP32 Luz de Noche con LDR

Luz nocturna en la que el LED se enciende automáticamente en la oscuridad y se apaga con la luz. Se utiliza el pin D0 (digital out) del módulo sensor LDR - el umbral de oscuridad se ajusta con el pequeño potenciómetro del módulo, el propio módulo genera la salida HIGH/LOW. ESP32 sólo lee esta señal con digitalRead(), el código es muy simple.

4.6(17)
30
ESP32 HC-SR04 Medidor de distancia por ultrasonidos
#116Intermedio

ESP32 HC-SR04 Medidor de distancia por ultrasonidos

El sensor ultrasónico HC-SR04 calcula la distancia midiendo el tiempo de vuelo (Time of Flight) de la onda sonora que emite al chocar contra un objeto y rebotar. En este proyecto, enviaremos un pulso de 10 microsegundos desde el ESP32 al pin TRIG del sensor y leeremos el tiempo de eco procedente del pin ECHO mediante pulseIn(). Mostraremos la distancia calculada en centímetros en una pantalla LCD I2C de 16x2. Dado que el HC-SR04 funciona a 5 V, es obligatorio utilizar un divisor de tensión

4.9(28)
45
Brillo de LED con Potenciómetro en ESP32 (Analógico → PWM)
#115Intermedio
Premium

Brillo de LED con Potenciómetro en ESP32 (Analógico → PWM)

En este proyecto controlamos el brillo de un LED de forma analógica mediante un potenciómetro. El pin ADC del ESP32 lee la tensión de 0-3,3 V procedente del potenciómetro y este valor se convierte en una señal PWM (modulación por ancho de pulso) que se envía al LED. Al girar el potenciómetro, el LED se enciende y se apaga gradualmente. Con Arduino Core 3.0+ se usa directamente analogWrite(); en el ESP32-S2/S3, la resolución del ADC es de 12 bits.

4.5(19)
32