Con el desarrollo y la difusión de la lógica a 3,3V en lugar de los clásicos 5V a veces nos encontramos con el problema de conectar dispositivos entre sí que trabajan con tensiones distintas. Una conexión directa entre un componente con salida lógica de 5V y otro con entrada de 3,3V podría dañar irremediablemente este último. En este post analizaremos las distintas soluciones posibles, con algunos ejemplos prácticos para construir.
Independientemente del tipo de datos que viajan por estas líneas (paralelos o seriales), generalmente podemos considerar tres tipos de conexiones entre dispositivos de 5V y de 3,3V:
- Salida de 3,3V a entrada 5V
- Salida 5V a entrada de 3,3V
- Conexión bidireccional entre 5V y 3,3V
A continuación analizaremos estos tres tipos de conexiones.
Salida de 3,3V a entrada de 5V
Dispositivos con salidas lógicas de 3,3V se pueden conectar directamente a otros con entradas de 5V sin inconvenientes. Esto es debido a que la lógica de 5V considera un nivel alto, tensiones superiores a 2V y por lo tanto las provenientes de dispositivos de 3,3V son interpretadas correctamente.
La figura nos muestra los niveles de tensión de ambas familias lógicas. Como podemos observar, son compatibles entre si.
Salida de 5V a entrada de 3,3V
En este caso es necesario usar un adaptador de niveles porque los 5V superan la tensión de funcionamiento del dispositivo de 3,3V y pueden dañarlo. Existen dispositivos de 3,3V tolerantes a los 5V pero ante la duda es mejor no arriesgarse. Por suerte, el adaptador necesario en este caso puede ser muy simple de hacer como explicaré más adelante en este mismo artículo.
Conexión bidireccional entre 5V y 3,3V
Es el tipo de conexión en la cual los dispositivos involucrados transmiten y reciben datos usando el mismo terminal (pero no al mismo tiempo). En este caso es necesario usar un adaptador de niveles pero debe ser más sofisticado que en el caso anterior porque debe trabajar diversamente según la dirección de los datos en tránsito (disminuir la tensión en un sentido y aumentarla en el otro). El ejemplo más común de línea bidireccional es el usado en la interfaz I2C para comunicación entre microcontroladores y dispositivos periféricos (por ejemplo sensores de movimiento, giroscopios y memorias, entre otros). En comercio podemos encontrar adaptadores bidireccionales muy compactos basados en mosfet.
Una interfaz bidireccional con mosfet
En la figura les muestro una interfaz con mosfet que permite de trabajar con líneas bidireccionales y que he construido para algunos de mis proyectos. Se pueden usar mosfets de baja potencia, de canal N y con una tensión de gate (VGSth) no superior a los 3V. Yo he probado con el mosfet 2N7000 y también con el BS170, ambos trabajan correctamente.
Recuerden que estos modelos de mosfet tienen los pins Drain y Source invertidos. He hecho dos diseños de ejemplo para ambos componentes.
¿Como funciona la interfaz con mosfet?
Trabajando el circuito como adaptador bidireccional tenemos 4 condiciones posibles:
1. El dispositivo de 3,3V transmite y está en estado alto ("1") mientras que el de 5V recibe.
La salida lógica de 3,3V está conectada al "Source" del mosfet y se encuentra a nivel alto. Por lo tanto la diferencia de tensión entre "Source" y "Gate" es de 0V porque también el "Gate" se encuentra a 3,3V gracias a la resistencia de "pull-up" de 10K conectada directamente a la alimentación de 3,3V. Con una caída de tensión Source - Gate de 0V el mosfet no conduce por lo tanto la entrada lógica de 5V se encuentra a 5V gracias a la otra resistencia de "pull-up" de 10K (en rojo) conectada directamente a la alimentación de 5V.
2. El dispositivo de 3,3V transmite y está en estado bajo ("0") mientras que el de 5V recibe.
La salida lógica de 3,3V está conectada al "Source" del mosfet y se encuentra a nivel bajo (negativo). Por lo tanto la diferencia de tensión entre "Source" y "Gate" es de 3,3V porque el "Gate" está conectado a positivo de 3,3V. Con una caída de tensión "Source - Gate" de 3,3V el mosfet es un corto y fuerza la entrada lógica de 5V también a negativo.
3. El dispositivo de 5V transmite y está en estado alto ("1") mientras que el de 3,3V recibe.
La salida lógica de 5V se encuentra a nivel alto ("1") por lo tanto el mosfet no conduce y la entrada de 3,3V también estará a nivel alto ("1") gracias a la resistencia de "pull-up" de 10K (en rojo) conectada directamente a la alimentación de 3,3V.
4. El dispositivo de 5V transmite y está en estado bajo ("0") mientras que el de 3,3V recibe.
Con la salida lógica de 5V a nivel bajo("0"), el diodo interno del mosfet (diodo de substrato entre Source y Drain) empieza a conducir porque correctamente polarizado (el positivo de Source lo obtiene gracias a la resistencia de pull-up conectada a 3,3V)y por lo tanto fuerza la entrada de 3,3V a nivel bajo (en realidad a 0,7V que es la caída de tensión del diodo).
Una interfaz muy simple desde 5V a 3,3V
Si nos encontramos con la necesidad de hacer una conexión con salida 5V a entrada 3,3V no bidireccional, podemos simplemente usar un divisor resistivo, hecho con dos resistencias comunes, como podemos ver en la figura.
El principio de funcionamiento es el siguiente: la tensión de +5V de la salida del circuito lógico se reparte entre las dos resistencias R1 y R2 que están conectadas en serie. Si fueran ambas de igual valor, la caída de tensión en cada una de ellas sería de 2,5V pero si aumentáramos el valor de R2 respecto a R1, la tensión en ella sería mayor. Podemos observar también que R2 se encuentra conectada a la entrada del circuito lógico de 3,3V. Por lo tanto, nos basta usar una resistencia R2 con un valor tal que nos dé una tensión de salida aproximadamente igual a 3,3V cuando aplicamos 5V en la entrada del divisor.
Para calcular el valor de las resistencias conviene elegir primero la corriente que pasará por nuestro divisor, sin que cargue excesivamente la salida lógica de 5V pero que al mismo tiempo tenga una buena respuesta en frecuencia. Esto es debido al hecho que las entradas de los dispositivos MOS digitales necesitan de una cierta corriente durante las transiciones de estado lógico, especialmente si se trabaja con velocidades elevadas. En general, una corriente de 1mA es suficiente. Conociendo la corriente (1mA) y la tensión de salida (3,3V) podemos aplicar la Ley de Ohm para obtener R2:
Usando la misma fórmula calculamos el valor de R1:
Ahora redondeamos los valores obtenidos a los valores estándar de resistencia más cercanos:
Por último verificamos que la tensión de salida obtenida después del redondeo no supere los 3,3V deseados. Para ello aplicamos la fórmula derivada de la Ley de Ohm para los divisores resistivos.
El valor obtenido es correcto porque cercano a los 3,3V pero por debajo de él.
En la figura siguiente podemos ver el adaptador con las resistencias respectivas:
En este artículo hemos visto los adaptadores para familias lógicas de 5V y 3,3V. Existen también dispositivos con niveles lógicos más bajos como por ejemplo 1,8V que veremos en otra publicación.
- Indice de todos los artículos de Inventable-
Los contenidos de este blog son originales y están bajo una licencia Creative Commons BY_NC_SA
Hola, hubiera estado bien que explicases el funcionamiento del adaptador bidireccional con el mosfet. No termino de entenderlo.
Por cierto felicidades por tus pictogramas, son geniales.
Hola Pedro, he agregado en el post la explicación de como funciona el adaptador bidireccional con MOSFET. Espero que sea claro. Muchas gracias por tus observación. 🙂
Gabriel
Madre mia, que oxidado estoy!!!!
Yo estaba venga a darle vueltas al circuito preguntándome como es que esas resistencias conseguían polarizar el mosfet para que siempre condujera y encima en ambas direcciones, por dios…
Con tu explicación queda todo más claro.
Gracias por todo.
CONFIRMO
Muy bueno, Gabriel. Un saludo.
¡Clarísima la explicación de la interfaz MOS!
Un abrazo,
Juan
Me desapareció la primera imagen del divisor. No creo que sea mi máquina porque todo lo demás sale perfecto.
Si, ya lo arreglé
quisiera algo como un invento con una batería de 1.5v hacer funcionar la carga de un teléfono celular
yo lo logre con un ladrón de julios pero hay teléfonos que necesitan mas amperaje que voltios y se me complico
Muy buena y entendible explicación. Gracias.Manuel
Hola, la verdad no entendí del todo, quisiera que me ayudes con una duda, lo que quiero es alimentar desde una batería de 3.7 V a un conversor que eleve el voltaje a 5 V y este alimente a una placa de Arduino, pero no lo logro.
Puse en paralelo al MOSFET de canal P un pulsante con la idea de que apenas el arduino detecte un pulso de alimentación cierre el switch y permita el paso de alimentación permanente al arduino y todo lo que deba comandar.
¿me podrías dar una mano por favor?
Hola Estefanía:
Lamento decirte que mezclaste incorrectamente dos temas totalmente distintos.
Lo que necesitas es un convertidor DC-DC. Es algo que no tiene nada que ver con lo expuesto aquí.
Este artículo explica como adaptar niveles lógicos entre dos equipos que YA ESTÁN alimentados. No genera nada.
Lo siento.
Saludos,
Juan
Merci
ça ma bien aider c’est bien expliquer.
Oe mano gracias, me estaba partiendo la cabeza pensando en como voy a hacerlo para conectarlos pero
me solucionaste esa duda super bien, fue como ver las luz. Saludos desde PERU.