Añadir fácil y eficientemente nodos subordinados rentables a los puntos finales del IIoT utilizando expansores de puertos
Colaboración de Editores de DigiKey de América del Norte
2020-06-10
Para las aplicaciones de la Internet Industrial de las Cosas (IIoT), las características y la flexibilidad de los puntos finales de la IIoT se han ido ampliando no solo en cuanto a funcionalidad, sino también ampliando el área de control físico a muchos metros del microcontrolador anfitrión en el punto final. Mientras que unos pocos pines de E/S del microcontrolador principal del extremo del IIoT pueden utilizarse para llegar a estas ubicaciones extendidas, las líneas de E/S se vuelven más susceptibles a las interferencias electromagnéticas (EMI) con el aumento de la distancia, lo que resulta en una reducción de la fiabilidad. Aunque se puede utilizar otro microcontrolador como nodo subordinado del microcontrolador principal del extremo del IIoT, esto puede aumentar innecesariamente la complejidad cuando los datos solo se utilizan para señales de E/S digitales simples.
En lugar de ampliar las líneas de E/S para un control más amplio, los desarrolladores pueden utilizar los expansores de puertos como nodos subordinados rentables del punto final del IIoT.
Este artículo describe el papel de los expansores de puertos antes de introducir dos expansores de puertos de Maxim Integrated. Estos expansores se conectan fácilmente al microcontrolador anfitrión con interfaces seriales que amplían significativamente la funcionalidad de E/S digital del nodo IIoT. Lo hacen manteniendo la funcionalidad convencional de E/S de propósito general (GPIO) como la generación de modulación de ancho de pulso (PWM) y la detección de interrupciones.
Por qué se necesitan expansores de puertos para una red de IIoT
Cuando se planifica una red de IIoT, uno de los primeros pasos implica decidir el número de puntos finales. Cada pieza de equipo que se requiere para sincronizar su comportamiento con el resto de la instalación requerirá al menos un punto final. Un buen ejemplo de esto sería una línea de montaje de una fábrica. Cada estación debe estar sincronizada con el progreso de toda la línea de ensamblaje para realizar el procedimiento de ensamblaje correcto en el momento adecuado.
Sin embargo, un extremo del IIoT en una línea de ensamblaje de fábrica puede no estar localizado en un área física, sino que puede utilizar cableado o cables para extender los puertos GPIO del microcontrolador anfitrión del IIoT a muchos pies de distancia, similar a una configuración en estrella con el microcontrolador anfitrión como centro. La terminación de cada punto de la estrella puede tener la suficiente complejidad para actuar como un nodo hijo del extremo principal del IIoT, pero puede no ser lo suficientemente sofisticado para ser configurado como su propio extremo del IIoT con su propia conexión de red. Mientras que el nodo infantil puede ser diseñado para ser controlado por su propio microcontrolador, para un simple GPIO esto puede añadir una complejidad y un costo innecesarios.
Un ejemplo del mundo real sería un extremo del IIoT que controla los motores usando señales PWM. Si los motores están a varios metros de distancia, habría que enviar múltiples señales PWM a los motores, lo que aumentaría la IEM para el área circundante. Se podría utilizar cable blindado para transmitir las señales PWM, pero eso aumentaría el costo del sistema y no eliminaría los errores debidos a los retrasos de fase por la distancia o el cruce. En su lugar, un bus serial como I2C o SPI podría ser usado para enviar comandos a un sistema programable localizado cerca de los motores que generaría las señales PWM. Esta electrónica sería un nodo infantil programado para generar las señales PWM requeridas.
Una solución práctica para el nodo subordinado puede ser utilizar un expansor de puertos a través de una interfaz serie con el microcontrolador anfitrión. Los expansores de puertos son más sencillos de configurar que un microcontrolador y extienden el alcance del GPIO del microcontrolador anfitrión. En lugar de ejecutar ocho o más líneas GPIO a un nodo subordinado, un expansor de puertos en el nodo subordinado puede ser fácilmente accesible por el microcontrolador anfitrión a través de una simple interfaz I2C o SPI. Escribir en un registro en un expansor de puertos establece o borra las GPIO mientras que la lectura devuelve el estado de las GPIO, lo mismo que controlar las GPIO en el microcontrolador anfitrión. Los expansores de puertos también conservan gran parte de la funcionalidad de los GPIO de microcontroladores, incluyendo la generación de PWM y las entradas de interrupción.
Un ejemplo de un expansor de puertos fácil de usar es el MAX7315AUE+T de Maxim Integrated con ocho GPIO y una interfaz I2C (Figura 1).
Figura 1: El expansor de puertos MAX7315A de Maxim Integrated proporciona hasta ocho GPIO y puede generar una interrupción al microcontrolador anfitrión en un cambio de estado de cualquier GPIO. Se accede a él por una interfaz de dos hilos I2C. (Fuente de la imagen: Maxim Integrated).
El MAX7315A soporta ocho GPIO, cada una de las cuales puede ser configurada independientemente como entrada o salida de drenaje abierto. Un microcontrolador anfitrión se comunica con el MAX7315A a través de una interfaz de dos hilos I2C que opera hasta 400 kilohercios (kHz). La dirección del dispositivo en el bus I2C está configurada por los tres pines de dirección AD [0:2], según la Figura 1. El dispositivo también puede generar una interrupción en el microcontrolador anfitrión.
El MAX7315A permite que ocho GPIO sean fácilmente manejados por sólo tres pines: los dos pines I2C y el pin de interrupción. El dispositivo puede ser colocado a cualquier distancia del microcontrolador anfitrión siempre que las condiciones permitan una comunicación fiable I2C. Dependiendo de la disposición de la placa y de la IEM ambiental, con el reloj serial (SCL) funcionando a 400 kHz, normalmente tres pies es una distancia confiable, y con un SCL de 100 kHz se pueden lograr nueve pies o más.
Sin embargo, es importante probar esto en un ambiente activo para asegurarse de que las condiciones ambientales o el IEM no tengan un efecto significativo en la distancia.
Detección de interrupciones en el nodo subordinado
El dispositivo admite una salida de interrupción baja activa en el pin 13, pero si no se necesita la función de interrupción, el pin 13 puede configurarse como una novena GPIO. La interrupción puede ser configurada para que baje en cualquier transición de pines de entrada. Esto permite que el microcontrolador anfitrión sea consciente de la actividad en el nodo subordinado sin tener que consultar al MAX7315A. Cuando la función de interrupción está activada, cualquier GPIO que esté configurado como una entrada y tenga una interrupción activada, actúa como una entrada de interrupción. En cualquier cambio de estado de cualquier GPIO configurado como una interrupción, el pin 13 se baja para señalar el cambio al microcontrolador anfitrión. El microcontrolador anfitrión lee entonces el estado del MAX7315A para determinar qué GPIO cambió de estado.
Este proceso previene cualquier pérdida de la funcionalidad de interrupción por el uso de un expansor de puertos para GPIO, lo cual es crítico no sólo en la IIoT sino también en los sistemas de microcontroladores que requieren interrupciones para un funcionamiento eficiente del firmware.
La función de interrupción debe ser desactivada antes de cambiar la configuración del MAX7315A para evitar la generación de una falsa interrupción.
Aunque el MAX7315A puede funcionar con una fuente de alimentación de 2 voltios a 3.6 voltios, las GPIO son tolerantes a 5.5 voltios. Esto permite que las GPIO sean compatibles con los niveles lógicos estándar, incluyendo los sistemas digitales de 2.0 voltios, 3.6 voltios y 5.0 voltios. Cada GPIO configurada como una salida de drenaje abierto puede originar hasta 50 miliamperios (mA) en un nivel lógico alto. Las salidas se pueden unir para aumentar la corriente de salida. Esto hace que el MAX7315A sea aplicable para indicadores LED de alta corriente y retroiluminación de teclados.
La generación PWM en el nodo subordinado
El MAX7315A también permite salidas PWM programables sin la intervención del microcontrolador anfitrión. Un oscilador interno de 32 kHz se utiliza como base de tiempo para las formas de onda PWM. Un ajuste de intensidad maestra de 4 bits configura la intensidad PWM de 32 kHz disponible para todas las salidas de 0 a 15, de forma similar a un preescalador. Cada forma de onda de salida PWM para cada GPIO se divide en 15 franjas horarias. El ajuste de la intensidad maestra determina cuántas ranuras están disponibles para la generación de PWM. Cada GPIO individual tiene su propio registro de intensidad que se utiliza para establecer el ciclo de trabajo de la forma de onda en las ranuras activas. Esto se explica mejor con un ejemplo que utiliza la forma de onda de salida de un pin GPIO individual (Figura 2).
Figura 2: El MAX7315A tiene un generador PWM programable que opera con un reloj de 32 kHz generado internamente. Este PWM tiene una intensidad maestra = 2 y una intensidad de ciclo de trabajo GPIO individual = 2. (Fuente de la imagen: Maxim Integrated).
La intensidad maestra está fijada en 2, por lo que solo las ranuras 1 y 2 de las 15 ranuras están disponibles para la generación de PWM, mientras que las ranuras 3 a 15 están en el nivel lógico cero. La intensidad del ciclo de trabajo individual para esta GPIO está fijada en 2, por lo que las formas de onda en las ranuras 1 y 2 están en un ciclo de trabajo de 2/16 = 12.5%.
La intensidad maestra del PWM se puede ajustar de 0 a 15, donde 15 significa que las 15 ranuras están disponibles. Una intensidad maestra de cero significa que la generación de PWM está desactivada para todos los GPIO y por lo tanto el reloj de 32 kHz se apaga para ahorrar energía.
Cada GPIO individual puede configurar una intensidad de ciclo de trabajo PWM de 1 a 16, donde 16 es un ciclo de trabajo del 100 por ciento, ajustando la ranura a un alto lógico.
Para mayor flexibilidad, cada GPIO tiene un bit de polaridad que puede invertir la forma de onda PWM. La figura 2 muestra la forma de onda con el bit de polaridad para esa GPIO ajustada a 1. La forma de onda PWM de la figura 3 muestra el mismo GPIO con la misma intensidad maestra y la misma intensidad de ciclo de trabajo que la de la figura 2, pero el bit de polaridad está despejado a 0.
Figura 3: Cada GPIO PWM en el MAX7215A de Maxim Integrated tiene un bit de polaridad que invierte la forma de onda. Este PWM tiene una intensidad maestra = 2 y una intensidad de ciclo de trabajo individual = 2 con el bit de polaridad = 0 que invierte la forma de onda. (Fuente de la imagen: Maxim Integrated).
Con esta flexibilidad en la generación de formas de onda PWM, el MAX7315A puede ser usado en un nodo hijo de un punto final IIoT para controlar la atenuación de indicadores LED, transistores de potencia de accionamiento para motores de corriente continua, y solenoides y actuadores de control. Ahora, en lugar de correr ocho líneas digitales que llevan formas de onda PWM a través de un ambiente industrial ruidoso, el microcontrolador anfitrión solo necesita configurar el MAX7315A y permitirle correr independientemente.
Extendiendo la funcionalidad en los nodos infantiles
Para los nodos infantiles más complejos, Maxim Integrated ofrece el expansor de puertos MAX7301AAX+T con hasta 28 GPIO. El MAX7301AAX se conecta al microcontrolador anfitrión en el punto final del IIoT usando una interfaz SPI estándar de cuatro pines (Figura 4). También soporta una función de interrupción alta activa como una función alternativa de P31. El MAX7315AAX puede ser configurado para generar una interrupción de vuelta al microcontrolador anfitrión en un cambio de estado de uno o más GPIO. Esto permite controlar 27 GPIO en un nodo infantil en un sistema de interrupción usando sólo cinco líneas de control: las cuatro líneas de control SPI y una línea de interrupción.
Figura 4: El expansor de puertos MAX7301 de Maxim Integrated tiene una interfaz SPI y soporta una GPIO de hasta 28 pines que están disponibles para la entrada o la salida. El Pin 31 admite una función alternativa como una interrupción alta activa, permitiendo que las 27 líneas de GPIO sean controladas usando cinco señales de control. (Fuente de la imagen: Maxim Integrated).
El MAX7301AAX funciona en un amplio rango de suministro de 2.25 a 5.5 voltios, lo que lo hace compatible con la mayoría de los sistemas lógicos digitales. El GPIO puede ser configurado como entradas de disparo Schmitt con o sin una resistencia de arranque interna. GPIO también puede ser configurado como salidas push-pull que pueden hundirse hasta 10 mA. Esto hace que el MAX7301AAX sea apropiado para interconectarse con los circuitos de nivel lógico utilizados para controlar otros equipos como los controladores industriales, así como los circuitos de monitoreo y alarma del sistema.
Conclusión
A medida que los diseñadores extienden el alcance físico de los extremos del IIoT, el control de los nodos infantiles puede ser un desafío, ya que la extensión de múltiples líneas de control a distancias de muchos pies crea problemas con la IEM, la disposición y la complejidad de los circuitos. Mediante el uso de expansores de puertos para controlar los nodos subordinados en los sistemas impulsados por la interrupción, los desarrolladores pueden simplificar la disposición de la placa de la PC y mejorar la fiabilidad, al tiempo que añaden una funcionalidad significativa al extremo del IIoT.
Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

