Compatibilidad de niveles lógicos 3,3V y 5V
Eliges quién manda la señal y quién la recibe, y sale si conectas directo, si necesitas un divisor con valores exactos o si vas a quemar el pin. Con los VIH y VIL reales de cada placa.
Un Arduino UNO manda 5 V y el pin de un ESP32 aguanta 3,6 V como máximo absoluto: se pasa 1,4 V. Conectado directo, ese pin se quema. No es que lea mal: entra corriente por el diodo de protección hacia el riel de 3,3 V.
Elige quién manda y quién recibe
Arduino UNO manda a ESP32
Así quemas el pin
pasa el máximo absolutoMargen en alto
sobran 1,725 V
Margen en bajo
faltan 75 mV
Contra el máximo
se pasa 1,4 V
El máximo absoluto no es una sugerencia. Puede aguantar meses y después matar el pin, o inyectar corriente por el diodo de protección hacia el riel de 3,3 V y colgar la placa entera. Que hoy funcione no significa que esté bien.
Un divisor NO aísla. Si el lado alto se va a más voltaje por una falla, ese voltaje llega dividido pero llega igual al pin. Cuando al otro lado hay potencia, motores o cualquier cosa con inductancia, lo que corresponde es un optoacoplador.
Conecta siempre las tierras de las dos placas. Sin GND común no hay referencia y ninguno de estos números significa nada: los umbrales se miden contra la tierra de cada chip.
La banda verde es lo que el lado que manda GARANTIZA en alto, no lo que mide tu multímetro sin carga.
Los números de cada lado
| Lado | VDD | VOH min | VOL max | VIH min | VIL max | Máximo absoluto |
|---|---|---|---|---|---|---|
| Arduino UNO | 5 V | 4,2 V | 0,9 V | 3 V | 1,5 V | 5,5 V |
| ESP32 | 3,3 V | 2,64 V | 0,33 V | 2,475 V | 0,825 V | 3,6 V |
Arduino UNO: Hoja de datos ATmega328P, características eléctricas DC. ESP32: Hoja de datos ESP32, características DC.
El divisor que va en el medio
Si das vuelta R1 y R2, al pin le llegan los 5 V menos la caída de R2, que es justo lo que estabas evitando.
Consume 1,667 mA y con las dos resistencias al 5% el peor caso queda entre 3,22 V y 3,443 V: los dos dentro de lo que el ESP32 lee y aguanta. Con 30 cm de cable el divisor sirve hasta 11,94 MHz: para I2C a 400 kHz o un UART sobra, para SPI rápido no.
R1, la de arriba: 1 kΩ
R2, la de abajo: 2 kΩ
El conversor de nivel que corresponde: 4 canales
Alimentar solo un lado es el error más común: sin las dos referencias el módulo no convierte nada.
El conversor no viaja en los datos de esta página
Sin precio ni stock acá: no inventamos un código de producto. Búscalo en la tienda como conversor de nivel lógico bidireccional de 4 canales.
Lo que va en el medio es un divisor de 1 kΩ arriba y 2 kΩ abajo, que deja 3,333 V en el pin con 1,667 mA de consumo. Las dos las tenemos: 1 kΩ SKU GK3-17, $100 con 375 en bodega, y 2 kΩ SKU GK1-16, $100 con 20 en bodega.
Cambia las dos placas abajo y el veredicto se actualiza al instante, con los volt exactos de cada hoja de datos.
Por qué 3,3 V y 5 V no se llevan
Los cinco números que deciden todo
Un pin digital no ve voltajes: ve dos zonas y una tierra de nadie entre medio. Toda la compatibilidad entre 3,3 V y 5 V sale de comparar cinco números, y esta calculadora hace exactamente esas comparaciones.
- VIH, del que recibe: desde qué voltaje lee un 1.
- VIL, del que recibe: hasta qué voltaje lee un 0.
- VOH, del que manda: lo mínimo que garantiza al mandar un 1, ya con carga colgando.
- VOL, del que manda: lo máximo que deja al mandar un 0.
- El máximo absoluto, del que recibe: sobre eso el pin se rompe, lea lo que lea.
Para que dos chips se entiendan tienen que cumplirse las dos:
VOH(quien manda) ≥ VIH(quien recibe) · VOL(quien manda) ≤ VIL(quien recibe)Y antes que las dos, una tercera que no es de comunicación sino de supervivencia: el voltaje que sale del que manda no puede pasar el máximo absoluto del que recibe. Por eso la calculadora mira ese número primero. Que los umbrales calcen no sirve de nada si el pin ya se murió.
La tabla, con la fuente de cada número
Estos son los valores con los que trabaja la herramienta, calculados al riel nominal de cada placa. Los de Espressif y los del ATmega328P salen como fracción del riel, así que siguen valiendo si alimentas la placa a otro voltaje; los del RP2040 son fijos y no escalan.
| Familia | VDD | VOH min | VOL max | VIH min | VIL max | Máximo absoluto |
|---|---|---|---|---|---|---|
| ESP32, ESP32 C3, ESP8266 | 3,3 V | 2,64 V | 0,33 V | 2,475 V | 0,825 V | 3,6 V |
| Arduino UNO y Nano | 5 V | 4,2 V | 0,9 V | 3,0 V | 1,5 V | 5,5 V |
| Raspberry Pi Pico y Pico 2 | 3,3 V | 2,62 V | 0,5 V | 2,0 V | 0,8 V | 3,8 V |
| Raspberry Pi 5 | 3,3 V | 2,62 V | 0,5 V | 2,0 V | 0,8 V | 3,6 V |
| Módulo de 5V con entrada TTL | 5 V | 2,4 V | 0,5 V | 2,0 V | 0,8 V | 5,5 V |
| Módulo de 5V con entrada CMOS | 5 V | 4,0 V | 0,5 V | 3,5 V | 1,5 V | 5,5 V |
| Módulo de 3,3V | 3,3 V | 2,64 V | 0,33 V | 2,31 V | 0,99 V | 3,6 V |
Lo que no pudimos confirmar, y va dicho. Los umbrales de ENTRADA del RP2040 (2,0 V y 0,8 V) están en su hoja de datos. Los niveles de SALIDA que usamos, 2,62 V y 0,5 V, dependen del drive configurado en el pad, que puede ser 2, 4, 8 o 12 mA, y no los pudimos confirmar contra la hoja: trátalos como referencia, no como garantía. De la Raspberry Pi 5 es peor: Raspberry Pi no publica los umbrales del chip RP1 que maneja sus GPIO, así que ahí se usan los del RP2040, que comparte arquitectura de pad. Lo único que sí es seguro de la Pi es que sus GPIO no toleran 5 V. Inventar un número acá cuesta una placa, así que preferimos marcarlo.
Los cuatro veredictos y qué significan de verdad
Conecta directo
El VOH garantizado del que manda queda por sobre el VIH del que recibe, el VOL por debajo del VIL, y no se pasa del máximo absoluto. Un cable y listo. Ejemplo: un ESP32 mandándole a una Raspberry Pi Pico sobran 0,64 V en alto y 0,47 V en bajo.
Funciona, pero no está garantizado. El mínimo de hoja de datos no alcanza, pero el valor típico sí. Es el caso ESP32 a Arduino UNO: el UNO pide 3,0 V y el ESP32 solo garantiza 2,64 V, aunque sin carga entrega los 3,3 V completos. Anda en todos los bancos y el margen real es de 0,3 V. Para un proyecto de escritorio, ya. Para algo que tenga que andar solo un año, no.
Necesita adaptación. Ni el valor típico alcanza. Pasa cuando 3,3 V le manda a un módulo de 5 V con entrada CMOS, que pide 3,5 V: faltan 0,86 V y no hay divisor que los ponga, porque un divisor solo baja. Ahí va conversor o un buffer 74HCT, que es un chip pensado justo para esto: entradas con umbral TTL y salidas de 5 V.
Así quemas el pin
El voltaje del que manda pasa el máximo absoluto del que recibe. 5 V contra los 3,6 V de un ESP32 son 1,4 V de más; contra los 3,8 V de una Pico, 1,2 V. Esto no es "va a leer mal": es corriente entrando por el diodo de protección del pin hacia el riel de 3,3 V. A veces aguanta meses. A veces sube el riel, cuelga la placa y se lleva el puerto USB del computador de paso.
El divisor: cuándo sí y cuándo no
Bajar de 5 V a 3,3 V con dos resistencias es la solución más barata que existe y funciona perfecto en un solo sentido y en una señal push pull. La fórmula es la de siempre:
Vout = Vin × R2 / (R1 + R2)R1 va del lado alto al nodo, R2 del nodo a tierra, y el pin del microcontrolador cuelga del nodo. Para 5 V a 3,3 V, el par que esta calculadora elige del catálogo es 1 kΩ arriba y 2 kΩ abajo: deja 3,33 V en el pin, consume 1,67 mA y con las dos resistencias al 5% el peor caso queda entre 3,22 V y 3,44 V, siempre sobre el umbral del ESP32 y siempre bajo su máximo.
Ese chequeo del peor caso es el que casi nadie hace y es el que importa. Una resistencia de banda dorada es de 5%: si te tocan las dos en el extremo malo, un par que en el papel daba justo 3,6 V te entrega 3,7 V y estás fuera de especificación sin haberte equivocado en nada.
El divisor también tiene un techo de velocidad. Visto desde el pin, el divisor es una fuente con una resistencia en serie:
R_th = R1 × R2 / (R1 + R2) · f_3dB = 1 / (2π × R_th × C_total)Con 1 kΩ y 2 kΩ, R_th vale 667 Ω. Con 30 cm de cable, que suman unos 18 pF, el conjunto sigue sirviendo hasta unos 12 MHz: para un I2C a 400 kHz o un UART a 115200 sobra, y para SPI a 10 MHz con cables largos ya no. Esa es la razón por la que un divisor que "andaba" deja de andar cuando subes la velocidad o alargas el cable.
En I2C el divisor no va, y no es opinión
En I2C nadie maneja el nivel alto: los dos lados solo tiran la línea a tierra y el 1 lo pone el pull up. Un divisor en esa línea se pelea con el pull up, sube el nivel bajo que ven los dos chips y arruina los tiempos de subida del bus. Lo que corresponde es un conversor bidireccional con MOSFET, que es el circuito que la propia especificación de I2C describe para unir dos rieles. Y el valor del pull up es otro cálculo aparte, que tiene su propia herramienta: calculadora de pull up para I2C.
Un sensor de 12V a un Arduino UNO
Esta calculadora cubre lógica de 1,8 V a 5,5 V, que es donde vive el 99% de los proyectos. Si lo que tienes es un sensor industrial de 12 V o 24 V hablándole a un Arduino, el mismo criterio se aplica con otros valores: para 12 V hacia un UNO, que lee un 1 desde 3,0 V y se rompe sobre 5,5 V, el par que sale del catálogo es 4,7 kΩ arriba y 3,3 kΩ abajo. Deja 4,95 V en el pin, consume 1,5 mA y su R_th de 1,94 kΩ mantiene el ancho de banda sobre los 4 MHz.
Con equipos industriales revisa una cosa más antes de conectar nada: si el otro lado tiene motores, contactores o cualquier cosa con inductancia, la separación correcta no es un divisor sino un optoacoplador. Un divisor no aísla: si el lado de 12 V se va a 60 V por una falla, al pin le llegan 24 V dividos y muere igual.
Los cinco errores que se repiten
Creer que "funciona" es lo mismo que "está bien"
El caso ESP32 a Arduino UNO funciona en el 100% de las mesas y sigue estando fuera de la especificación. El día que el circuito se va a una caja, con cables más largos y a 40 grados adentro, ese margen de 0,3 V empieza a fallar de a ratos. Los errores intermitentes son los más caros de encontrar.
Adaptar en la dirección equivocada
Un divisor resistivo baja, no sube. Si el problema es que a tu señal de 3,3 V le falta nivel para un módulo de 5 V, un divisor la deja peor. Ahí va un conversor bidireccional o un 74HCT, que lee con umbral TTL y saca 5 V limpios.
Alimentar un solo lado del conversor
El módulo conversor tiene LV, HV y GND, y necesita las tres. LV al riel de 3,3 V, HV al de 5 V y GND común. Con un solo lado alimentado no convierte nada y la señal pasa a medias, que es peor que no pasar.
Olvidar la tierra común
Todos estos números se miden contra tierra. Si las dos placas no comparten GND, no hay referencia y ningún umbral significa nada: puedes tener 3,3 V en un lado que el otro ve como 1 V o como 8 V. Es el error que más se parece a "el módulo venía malo".
Confiar en el "3,3V y 5V" de la descripción
En la mayoría de los módulos eso se refiere a la alimentación, no a los pines de datos. Un módulo con regulador a bordo acepta 5 V en VCC y por dentro trabaja a 3,3 V, con pines que no toleran 5 V. Si la ficha no dice explícitamente que la entrada es tolerante a 5 V, trátala como de 3,3 V.
Preguntas frecuentes
¿El ESP32 tolera 5V en sus pines?
No. La hoja de datos del ESP32 fija el máximo absoluto del pin en VDD más 0,3 V, o sea 3,6 V cuando está alimentado a 3,3 V. Meterle 5 V lo pasa en 1,4 V. A veces aguanta meses y después el pin se muere, y a veces la corriente entra por el diodo de protección hacia el riel de 3,3 V, sube el riel y cuelga o quema la placa entera. Que hoy funcione no significa que esté bien.
¿Cómo conecto un sensor HC SR04 de 5V a un ESP32?
Trig va directo, porque ahí manda el ESP32 y el módulo lee con umbrales TTL desde 2,0 V. Echo NO va directo: es una salida de 5 V hacia un pin que aguanta 3,6 V. Ahí va un divisor de 1 kΩ arriba y 2 kΩ abajo, que deja 3,33 V en el pin, consume 1,67 mA y con las dos resistencias al 5% se queda entre 3,22 V y 3,44 V, siempre bajo el máximo del ESP32.
¿Un Arduino UNO lee bien una señal de 3,3V?
Casi siempre sí, y no está garantizado. El ATmega328P a 5 V pide 0,6 del riel para leer un 1, o sea 3,0 V, y el ESP32 solo garantiza 2,64 V en alto. Como la salida del ESP32 sin carga llega a los 3,3 V completos, en la práctica el UNO lo lee: por eso funciona en todos los bancos. Pero el margen real es de 0,3 V y se lo come el ruido de un cable largo o una caída por corriente. Para algo que tenga que andar solo, va un buffer 74HCT o un conversor.
¿Sirve un divisor de resistencias para adaptar un bus I2C?
No. En I2C nadie maneja el nivel alto: los dos lados solo tiran la línea a tierra y el 1 lo pone el pull up. Un divisor en esa línea se pelea con el pull up, cambia el nivel bajo que ven los dos lados y arruina los tiempos de subida del bus. Para I2C entre 3,3 V y 5 V va un conversor bidireccional con MOSFET, que es exactamente el circuito que la especificación de I2C describe para unir dos rieles.
¿Qué diferencia hay entre VIH, VIL, VOH y VOL?
Los dos primeros son del que recibe: VIH es desde qué voltaje lee un 1 y VIL es hasta qué voltaje lee un 0. Entre los dos hay una tierra de nadie donde la entrada no sabe qué está leyendo. Los dos últimos son del que manda: VOH es lo mínimo que garantiza al mandar un 1 con carga y VOL lo máximo que deja al mandar un 0. Para que dos chips se entiendan hacen falta las dos comparaciones: VOH del que manda por sobre VIH del que recibe, y VOL del que manda por debajo de VIL del que recibe.
¿Un módulo que dice 3,3V y 5V se puede conectar a cualquiera de los dos?
Ojo con eso, porque casi siempre se refiere a la ALIMENTACIÓN y no a los pines de datos. Muchos módulos traen un regulador que acepta 5 V en VCC y por dentro trabajan a 3,3 V, con pines de datos que no toleran 5 V. Si la ficha no dice explícitamente que la entrada es tolerante a 5 V, trátala como de 3,3 V y adapta.
Dónde la usamos
Tutoriales del blog donde esta cuenta aparece en un proyecto de verdad.
- Luz nocturna automática con sensor de luz ambiental y ArduinoMide la luz de la pieza en lux por I2C y regula el brillo de un LED con PWM, con histéresis para que no parpadee en el umbral.
- Escáner I2C para ESP32 con ESP IDF: encuentra la dirección de cualquier dispositivoSube este escáner I2C en ESP IDF y descubre en segundos la dirección de sensores, pantallas y módulos conectados a tu ESP32.
- ADS7128: el chip híbrido ADC + expansor GPIO por I2C que combina 8 canales configurables en unoEl breakout Adafruit que resuelve la falta de pines analógicos y digitales en un solo bus I2C, con CircuitPython y Arduino.
- Sensor de distancia para estacionar el auto con Arduino, HC SR04 y encoder KY-040Arma una guía de estacionamiento de garage con LED verde indicador y rango ajustable desde un encoder. Componentes Arduino baratos en stock chileno.
- Controla un LCD 16x2 con solo 2 cables usando el módulo I2CTe quedaste sin pines en el Arduino para tu pantalla LCD. El módulo serial I2C resuelve el problema usando solo SDA y SCL.
- Sensores para Raspberry Pi: los 25 módulos clave por categoríaGuía para elegir bien: temperatura, gases, movimiento, RFID y más, con specs reales, tablas comparativas y precios en Chile.