Saltar al contenido
Herramienta

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.

Calculadora

Elige quién manda y quién recibe

Las dos placas
hoja de datos
hoja de datos

Rango válido: de 1,8 V a 5,5 V.

Arduino UNO manda a ESP32

Así quemas el pin

pasa el máximo absoluto

Margen 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.

012345Vmanda 1manda 0lee 1lee 0se rompeUNOmandaESP32recibese pasa del máximo012345Vmanda 1manda 0lee 1lee 0se rompeUNOmandaESP32recibese pasa del máximo

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

LadoVDDVOH minVOL maxVIH minVIL maxMáximo absoluto
Arduino UNO5 V4,2 V0,9 V3 V1,5 V5,5 V
ESP323,3 V2,64 V0,33 V2,475 V0,825 V3,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

Divisor entre UNO y ESP32Divisor resistivo entre el pin de UNO, que manda 5 V, y el pin de ESP32. R1 de 1 kΩ arriba y R2 de 2 kΩ abajo dejan 3,333 V en el nodo, y el pin necesita 2,475 V para leer un 1. Por el lazo circulan 1,667 mA; por la rama que va al pin no circula nada, porque una entrada no consume. Las dos placas comparten el GND.UNOriel 5 VESP32riel 3,3 Vlee 1 desde 2,475 V5 Ventra1,667 mAcorrienteR11 kΩ2,778 mWGK3-17R22 kΩ5,556 mWGK1-163,333 V5%: 3,22 V a 3,443 Vla entrada no consumeGND común de las dos placasDivisor entre UNO y ESP32Divisor resistivo entre el pin de UNO, que manda 5 V, y el pin de ESP32. R1 de 1 kΩ arriba y R2 de 2 kΩ abajo dejan 3,333 V en el nodo, y el pin necesita 2,475 V para leer un 1. Por el lazo circulan 1,667 mA; por la rama que va al pin no circula nada, porque una entrada no consume. Las dos placas comparten el GND.UNOriel 5 VESP32umbral2,475 V5 V1,667 mAR11 kΩ2,778 mWR22 kΩ5,556 mW3,333 Vno consumeGND común

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Ω

La tenemos$100

R2, la de abajo: 2 kΩ

La tenemos$100

El conversor de nivel que corresponde: 4 canales

conversor de nivelLV 3,3 VHV 5 Vcanal 1canal 2canal 3canal 4las dos flechas van y vuelven: sirve para I2Cconversor de nivelLV 3,3 VHV 5 Vcanal 1canal 2canal 3canal 4las dos flechas van y vuelven:sirve para I2C

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.

Niveles lógicos al riel nominal de cada familia. VOH y VOL son del lado que manda; VIH y VIL, del que recibe.
FamiliaVDDVOH minVOL maxVIH minVIL maxMáximo absoluto
ESP32, ESP32 C3, ESP82663,3 V2,64 V0,33 V2,475 V0,825 V3,6 V
Arduino UNO y Nano5 V4,2 V0,9 V3,0 V1,5 V5,5 V
Raspberry Pi Pico y Pico 23,3 V2,62 V0,5 V2,0 V0,8 V3,8 V
Raspberry Pi 53,3 V2,62 V0,5 V2,0 V0,8 V3,6 V
Módulo de 5V con entrada TTL5 V2,4 V0,5 V2,0 V0,8 V5,5 V
Módulo de 5V con entrada CMOS5 V4,0 V0,5 V3,5 V1,5 V5,5 V
Módulo de 3,3V3,3 V2,64 V0,33 V2,31 V0,99 V3,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.