Calculadora de resistencia pull-up (I²C y drenador abierto)
Introduce la tensión de alimentación, la tensión de salida en nivel bajo y la corriente que admite el dispositivo más débil, el tiempo de subida permitido y la capacidad del bus. La calculadora da el rango de resistencias pull-up válidas y comprueba la que has elegido.
Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.
Cómo usarla
- Introduce la tensión de alimentación VDD y la tensión máxima en nivel bajo VOL del dispositivo más débil del bus.
- Introduce la corriente IOL que ese dispositivo garantiza a VOL.
- Introduce el tiempo de subida máximo y la capacidad total del bus (pines, pistas, cable).
- Si quieres, introduce en kΩ la resistencia que piensas usar para comprobarla.
Fórmulas
- Mínima: R_min = (VDD − VOL) / IOL.
- Máxima: R_max = tr / (0,8473 × Cb), donde 0,8473 = ln(0,7 / 0,3) es el tiempo que tarda un flanco RC en subir del 30 % al 70 % de VDD, en unidades de RC.
- Con tu resistencia: corriente (VDD − VOL) / R, tiempo de subida 0,8473 × R × Cb, constante de tiempo R × Cb.
Si R_min es mayor que R_max, ninguna resistencia cumple los dos límites: acorta el bus, quita dispositivos, usa un modo más lento o un pull-up activo o buffer de bus.
Ejemplo resuelto
Bus de 3,3 V en Fast-mode con VOL = 0,4 V, IOL = 3 mA, tr = 300 ns y Cb = 100 pF:
- R_min = 2,9 ÷ 0,003 = 967 Ω;
- R_max = 300 × 10⁻⁹ ÷ (0,8473 × 100 × 10⁻¹²) = 3541 Ω.
Una resistencia de 2,2 kΩ está dentro del rango: absorbe 1,318 mA con la línea en bajo y sube en 186,4 ns.
Consejos y errores frecuentes
- Un par por bus. Muchos módulos traen sus propias pull-up; varias en paralelo pueden quedar por debajo de R_min.
- Mide la capacidad si el bus es largo: los cables añaden decenas de pF por metro.
- Más baja es más rápida, pero consume más. Elige un valor cerca de R_max para bajo consumo y cerca de R_min para velocidad.
Preguntas frecuentes
¿Cómo se calcula la resistencia pull-up mínima del I2C?
R_min = (VDD − VOL) / IOL. El driver debe bajar la línea a VOL o menos sin absorber más de IOL. A 3,3 V con VOL de 0,4 V y 3 mA, R_min = 2,9 ÷ 0,003 = 966,67 Ω.
¿Cómo se calcula la resistencia pull-up máxima?
R_max = tr / (0,8473 × Cb). La línea se carga a través de R sobre la capacidad del bus, y tr se mide del 30 % al 70 % de VDD, lo que dura ln(0,7/0,3) = 0,8473 constantes de tiempo. Con 300 ns y 100 pF, R_max = 3541 Ω.
¿Qué tiempo de subida y corriente pongo para I2C?
La especificación I²C fija un tiempo de subida máximo de 1000 ns en Standard-mode (100 kHz), 300 ns en Fast-mode (400 kHz) y 120 ns en Fast-mode Plus (1 MHz), y una corriente de 3 mA con VOL de 0,4 V en Standard y Fast-mode (20 mA en Fast-mode Plus). Consulta las hojas de datos de tus dispositivos.
¿Sirve para un pulsador o una entrada GPIO?
Sí. Con un pulsador los límites son amplios: al pulsar circula VDD / R, y la constante RC con la capacidad del pin y del cable marca lo rápido que vuelve la línea a nivel alto. Es habitual usar de 4,7 kΩ a 10 kΩ; valores muy altos captan ruido.