Adaptador de niveles para bus I2C (3,3V/5V)

En la actualidad existen microcontroladores que utilizan 3,3Volts de alimentación debido a las modernas tecnologías de fabricación de 0,5 micrómetros. Además, la constante miniaturización ya está entregándonos dispositivos que trabajan a 2Volts, 1,8Volts y hasta 1,35Volts. La existencia de componentes que trabajan a tensiones normalizadas de 5Volts nos obliga a adaptar los niveles de voltaje dentro del bus I2C para lograr un funcionamiento correcto entre estos dispositivos que utilizan distintas fuentes de tensión. Un problema frecuente; he aquí una solución eficiente.

Si en un circuito no existen dispositivos capaces de adaptar los niveles de los impulsos manejados dentro de un bus I2C entre dos dispositivos que sean alimentados con diferentes tensiones, es muy probable que aquel que trabaje con la menor tensión se dañe irremediablemente. En el caso inverso, aquellos que utilicen los voltajes de trabajo inferiores corren el riesgo de no ser detectados dentro del bus cuando intentan conectarse a los demás. Sin embargo, existen algunos componentes que, a pesar de operar con tensiones de 3,3Volts de alimentación, tienen la posibilidad de conectarse sin inconvenientes y sin componentes adicionales a un bus I2C que utilice una tensión de 5Volts. Un circuito de ejemplo de convivencia de elementos de distintas características sería el siguiente:

Dispositivos de 3,3Volts que pueden operar en un bus I2C de 5Volts

El inconveniente que se presenta con esta clase de montajes es que, en la gran mayoría de los casos, los dispositivos que son desarrollados para operar con tensiones de trabajo de 3,3Volts no traen la posibilidad de ser compatibles con un bus I2C de 5Volts, mientras que los pocos que sí lo hacen y que se encuentran en el mercado son más caros que un dispositivo estándar, ya que las técnicas de fabricación son más complejas. La manera más usual de solucionar este inconveniente es a través de la utilización de dos transistores MOS-FET de canal N conectados entre los elementos de distintas tensiones de trabajo, tal como se observa en la imagen.

Circuito sugerido para el adaptador de tensiones I2C

Como podemos deducir de la imagen, el sector izquierdo se alimenta con 3,3Volts y las resistencias Pull-Up (Rpl) utilizadas son de un valor acorde a esta tensión de alimentación (3K3), mientras que del lado derecho, las resistencias Rph (4K7) son las que se utilizan habitualmente en cualquier disposición de bus I2C con alimentación de 5Volts. Los transistores MOS-FET de canal N utilizados en el circuito pueden ser cualquier dispositivo capaz de manejar tensiones de 50Volts y corrientes de 100mA máximas, como puede ser el modelo BSN20 fabricado por NXP.

Funcionamiento del adaptador
Lo elemental que salta a la vista en el segundo diagrama mostrado es que la falta  de cualquiera de las tensiones de alimentación en el equipo no significa que el bus I2C deje de funcionar. Por ejemplo, si estamos trabajando con un equipo alimentado a baterías, donde la preservación, optimización y uso correcto de la energía es prioritario, podemos “suspender” las secciones que no sean necesarias para el correcto funcionamiento del microcontrolador principal. Es decir, podemos suspender sensores, display, relés, sistemas con microcontroladores que funcionen de manera satelital al principal, y todo dispositivo I2C que esté “colgado” del bus y no requiera ser alimentado de manera permanente debido a que no es necesario su intervención contínua.

El microcontrolador principal determina que dispositivos activar a través del bus

Otro ejemplo son los instrumentos que habitan una sonda espacial. No es necesario que estén consumiendo de manera contínua la energía de las baterías sino que deben hacerlo sólo en el momento en que deban realizar una tarea, como puede ser una toma fotográfica, un análisis químico específico, un movimiento mecánico necesario y muchos otros “consumos” que son momentáneos y no continuos. Las auto-evaluaciones funcionales de estos vehículos espaciales son un claro ejemplo de consumos que no requieren operatividad contínua.

Una de las características necesarias para un correcto funcionamiento del bus es que los pines SDA y SCL de los circuitos conectados sean de colector abierto para poder garantizar un drenaje correcto de la corriente a través del bus. Por su parte, y como vemos en el esquema, las Puertas (o Gate) de los transistores MOS-FET deben estar conectadas directamente a la tensión de alimentación más baja. Además, las Fuentes (Source) también deben estar orientadas hacia los sistemas de menor tensión, y los Drenadores (Drain) hacia los de mayor tensión de alimentación.

Un transistor MOS-FET puede funcionar como una resistencia variable

Al polarizarse la puerta con una tensión positiva en un MOS-FET de canal N, se crea una región de deplexión (canal de conducción electrónica) en la región que separa la fuente y el drenador. Si esta tensión crece lo suficiente, aparecerán portadores minoritarios (electrones en MOS-FET de canal N) en la región de deplexión que darán lugar a un canal de conducción. El transistor pasa entonces a estado de conducción, de modo que una diferencia de potencial entre fuente y drenador dará lugar a una corriente. El transistor, en este caso, se comporta como una resistencia controlada por la tensión de puerta y, como nosotros tenemos estos pines (Vg) conectados a VCC1, los transistores estarán polarizados para conducir cuando las condiciones de diferencias de potencial mencionadas se hagan presentes (intercambio de datos).

Los tres estados posibles dentro del circuito son muy sencillos de comprender. El primero es cuando no hay actividad en el bus de datos, es decir, cuando ningún dispositivo de ninguna de las ramas de alimentación pone a cero las líneas SDA o SCL. En este caso, el diodo de protección que trae cada transistor impedirá la conducción desde las zonas de tensión alta (5Volts) hasta las zonas de tensión baja (3,3Volts), brindando la protección necesaria a los dispositivos que trabajan con menor tensión. Además, la tensión de puerta (G) será la misma que la de la fuente (S) en cada rama, por lo que no habrá diferencia de potencial G-S y, en consecuencia, ninguno de los transistores entrará en estado de conducción, manteniendo aisladas a las secciones del bus. Ambas ramas mantendrán un estado ALTO gracias a sus respectivas resistencias Pull-Up.

Un estado bajo se hace presente en la zona de los 3,3Volts

El segundo estado posible es cuando hay un estado bajo en alguna de las líneas del lado de los 3,3Volts. La fuente (S) del transistor involucrado pasará a un estado bajo, mientras que la puerta (G) se mantendrá polarizada a 3,3Volts. Esta diferencia de potencial iniciará la conducción del transistor. En esta situación, y del lado de alta tensión, la línea también será inducida a un estado bajo y será arrastrada por la conducción del MOS-FET. Por lo tanto, ambas secciones del bus pasarán a un estado BAJO y al mismo nivel de tensión.

Un estado bajo se hace presente en la zona de los 5Volts

El tercer y último estado es cuando una línea pasa a un estado BAJO en la zona de 5Volts. Inicialmente, el diodo interno del transistor entrará en conducción desde las líneas polarizadas a 3,3Volts hacia el potencial cercano a cero existente en la otra sección que se puso en estado BAJO. De esta forma, la fuente (S) pasa a un estado bajo inducida por la conducción del diodo y, en consecuencia, se vuelve a provocar la diferencia de potencial entre la puerta (G), que siempre estará a 3,3Vols, y la fuente (S) del transistor, comenzando la conducción a través del mismo y asegurando el estado BAJO a ambos lados del bus. Recordemos que, cuando es polarizado correctamente, el MOS-FET se comporta como un resistor variable entre drenador (D) y fuente (S).

De esta forma, podemos ver los tres estados posibles dentro del bus para un funcionamiento correcto del mismo. Como último dato, podemos agregar que las tensiones a ambos lados del bus pueden ser muy distintas entre sí, pudiendo variar entre 2Volts y 10Volts sin problemas. El único requisito que se debe mantener es que las puertas (G) de los transistores deben conectarse a la menor alimentación existente en el circuito.

Deja tu voto

0 puntos
Upvote Downvote

Total votes: 0

Upvotes: 0

Upvotes percentage: 0.000000%

Downvotes: 0

Downvotes percentage: 0.000000%

  • Ciul

    Un dato muy útil que me puede ayudar a reducir costos.
    Muchísimas gracias NeoTeo.

  • GEGLab

    Gracias Mario por el aporte !!!

  • sk8

    Hola Mario disculpa quisiera saber si tienes manuales de electronica for dummies para los que no sabemos nada de nada que yo quisiera hacer todo lo que veo en neoteo pero no puedo ya que ni siquiera he soldado nada en mi vida y mucho menos reparado asi que si no es muxa molestia!!!!! xfa por los novatos NeoTeo

  • Truko

    Yo estoy aprendiendo I2C con proteus simulo 2 pic y programo con CSS. Pero todavía no domino bien el uso adecuado del protocolo de comunicación…
    Es una super herramienta según me han dicho.

  • Andres Marquez

    Muchas gracias por el aporte, está muy bueno.