Ajouter facilement et efficacement des nœuds enfants rentables aux points d'extrémité IIoT en utilisant des expanseurs de port
Avec la contribution de Rédacteurs nord-américains de DigiKey
2020-06-10
Pour les applications Internet industriel des objets (IIoT), les caractéristiques et la flexibilité des points d'extrémité IIoT ont non seulement augmenté en termes de fonctionnalités, mais également en termes de portée de contrôle physique de plusieurs mètres à partir du microcontrôleur hôte du point d'extrémité. Alors que quelques broches E/S du microcontrôleur hôte du point d'extrémité IIoT peuvent être utilisées pour atteindre ces emplacements étendus, les lignes E/S deviennent plus sensibles aux interférences électromagnétiques (EMI) à mesure que la distance augmente, ce qui réduit la fiabilité. Bien qu'un autre microcontrôleur puisse être utilisé comme nœud enfant du microcontrôleur hôte du point d'extrémité IIoT, cela peut inutilement accroître la complexité lorsque les données ne sont utilisées que pour de simples signaux E/S numériques.
Au lieu d'étendre les lignes E/S pour un contrôle plus large, les développeurs peuvent utiliser des expanseurs de port comme des nœuds enfants rentables en dehors du point d'extrémité IIoT.
Cet article décrit le rôle des expanseurs de port avant de présenter deux expanseurs de port de Maxim Integrated. Ces expanseurs interfacent facilement avec le microcontrôleur hôte grâce à des interfaces série qui étendent considérablement les fonctionnalités E/S numériques du nœud IIoT. Ils le font tout en conservant les fonctionnalités des E/S à usage général (GPIO) classiques telles que la génération de modulation de largeur d'impulsion (PWM) et la détection d'interruptions.
Pourquoi les expanseurs de port sont requis pour un réseau IIoT
Lors de la planification d'un réseau IIoT, l'une des premières étapes consiste à décider du nombre de points d'extrémité. Chaque pièce d'équipement nécessaire pour synchroniser son comportement avec le reste de l'installation nécessitera au moins un point d'extrémité. Un bon exemple serait une chaîne de montage en usine. Chaque station doit être synchronisée avec la progression de l'ensemble de la chaîne de montage afin de réaliser la bonne procédure de montage au bon moment.
Cependant, un point d'extrémité IIoT dans une chaîne de montage en usine peut ne pas être localisé dans une zone physique mais peut utiliser des câbles pour étendre les ports GPIO du microcontrôleur hôte du point d'extrémité IIoT à plusieurs mètres de distance, comme dans une configuration en étoile avec le microcontrôleur hôte comme concentrateur. La terminaison de chaque point d'étoile peut être suffisamment complexe pour agir comme un nœud enfant à partir du point d'extrémité IIoT principal mais peut ne pas être suffisamment sophistiquée pour être configurée comme son propre point d'extrémité IIoT avec sa propre connexion réseau. Si le nœud enfant peut être conçu pour être contrôlé par son propre microcontrôleur, pour une simple GPIO, cela peut ajouter une complexité et un coût inutiles.
Un exemple concret serait un point d'extrémité IIoT qui contrôle des moteurs avec des signaux PWM. Si les moteurs se trouvent à plusieurs mètres de distance, il faudrait envoyer de multiples signaux PWM aux moteurs, ce qui augmenterait les interférences électromagnétiques pour la zone environnante. Un câble blindé pourrait être utilisé pour transmettre les signaux PWM, mais cela augmenterait le coût du système et n'éliminerait pas les erreurs dues aux temps de propagation de phase sur la distance ou à la diaphonie. Au lieu de cela, un bus série comme I2C ou SPI pourrait être utilisé pour envoyer des commandes à un système programmable situé près des moteurs générant les signaux PWM. Cette électronique serait un nœud enfant programmé pour générer les signaux PWM nécessaires.
Une solution pratique pour le nœud enfant peut être d'utiliser un expanseur de port sur une interface série vers le microcontrôleur hôte. Les expanseurs de port sont plus simples à configurer qu'un microcontrôleur et étendent la portée des GPIO du microcontrôleur hôte. Au lieu d'exécuter huit lignes GPIO ou plus vers un nœud enfant, le microcontrôleur hôte peut facilement accéder à un expanseur de port au niveau du nœud enfant via une simple interface I2C ou SPI. L'écriture dans un registre d'un expanseur de port définit ou efface les GPIO tandis que la lecture renvoie l'état des GPIO, tout comme le contrôle des GPIO sur le microcontrôleur hôte. Les expanseurs de port conservent également une grande partie des fonctionnalités des GPIO des microcontrôleurs, notamment la génération PWM et les entrées d'interruption.
Un exemple d'expanseur de port facile à utiliser est le MAX7315AUE+T de Maxim Integrated avec huit GPIO et une interface I2C (Figure 1).
Figure 1 : L'expanseur de port MAX7315A de Maxim Integrated fournit jusqu'à huit GPIO et peut générer une interruption vers le microcontrôleur hôte lors du changement d'état d'une GPIO. L'accès se fait via une interface I2C à deux fils. (Source de l'image : Maxim Integrated)
Le MAX7315A prend en charge huit GPIO, chacune pouvant être configurée indépendamment comme entrée ou sortie à drain ouvert. Un microcontrôleur hôte communique avec le MAX7315A via une interface I2C à deux fils qui fonctionne jusqu'à 400 kilohertz (kHz). L'adresse du dispositif sur le bus I2C est configurée par les trois broches d'adresse AD [0:2], comme illustrée à la Figure 1. Le dispositif peut également générer une interruption pour le microcontrôleur hôte.
Le MAX7315A permet de gérer facilement huit GPIO avec seulement trois broches : les deux broches I2C et la broche d'interruption. Le dispositif peut être placé à n'importe quelle distance du microcontrôleur hôte tant que les conditions permettent des communications I2C fiables. En fonction de la disposition de la carte et des interférences électromagnétiques ambiantes, avec une horloge série (SCL) fonctionnant à 400 kHz, une distance d'un mètre constitue généralement une distance fiable, et avec une horloge série de 100 kHz, une distance de trois mètres ou plus peut être atteinte.
Toutefois, il est important de tester la configuration dans un environnement actif pour s'assurer que les conditions ambiantes ou les interférences électromagnétiques n'ont pas d'effet significatif sur la distance.
Détection des interruptions au niveau du nœud enfant
Le dispositif prend en charge une sortie d'interruption active basse sur la broche 13, mais si la fonction d'interruption n'est pas requise, la broche 13 peut être configurée comme une neuvième GPIO. L'interruption peut être configurée pour passer à l'état bas sur toute transition de broche d'entrée. Cela permet au microcontrôleur hôte d'être informé de l'activité au niveau du nœud enfant sans interroger le MAX7315A. Lorsque la fonction d'interruption est activée, toute GPIO qui est configurée en tant qu'entrée et dont l'interruption est activée agit comme une entrée d'interruption. Lors de tout changement d'état d'une GPIO configurée en tant qu'interruption, la broche 13 passe à l'état bas pour signaler le changement au microcontrôleur hôte. Le microcontrôleur hôte lit alors l'état du MAX7315A pour déterminer quelle GPIO a changé d'état.
Ce processus permet d'éviter toute perte de fonctionnalité d'interruption liée à l'utilisation d'un expanseur de port pour GPIO, ce qui est essentiel non seulement pour l'IIoT mais également pour les systèmes de microcontrôleurs exigeant des interruptions pour un fonctionnement efficace du micrologiciel.
La fonction d'interruption doit être désactivée avant de modifier la configuration du MAX7315A pour éviter la génération d'une fausse interruption.
Bien que le MAX7315A puisse fonctionner avec une alimentation de 2 V à 3,6 V, les GPIO tolèrent une tension de 5,5 V. Cela permet aux GPIO d'être compatibles avec les niveaux logiques standard, y compris les systèmes numériques de 2,0 V, 3,6 V et 5,0 V. Chaque GPIO configurée en tant que sortie à drain ouvert peut fournir jusqu'à 50 milliampères (mA) à un niveau logique élevé. Les sorties peuvent être reliées entre elles pour augmenter le courant de sortie. Le MAX7315A est donc adapté aux voyants LED haute intensité et au rétroéclairage de claviers.
Génération PWM au niveau du nœud enfant
Le MAX7315A fournit également des sorties PWM programmables sans intervention du microcontrôleur hôte. Un oscillateur interne de 32 kHz est utilisé comme base de temps pour les formes d'ondes PWM. Un réglage d'intensité maître 4 bits configure l'intensité PWM 32 kHz disponible pour toutes les sorties de 0 à 15, comme un prédiviseur. Chaque forme d'onde de sortie PWM pour chaque GPIO est divisée en 15 intervalles de temps. Le réglage de l'intensité maître détermine le nombre d'intervalles disponibles pour la génération PWM. Chaque GPIO possède son propre registre d'intensité individuel qui est utilisé pour définir le rapport cyclique de la forme d'onde dans les intervalles actifs. Un exemple utilisant la forme d'onde de sortie d'une broche GPIO individuelle (Figure 2) permet de mieux comprendre.
Figure 2 : Le MAX7315A est doté d'un générateur PWM programmable qui fonctionne à partir d'une horloge de 32 kHz générée en interne. Cette modulation PWM a une intensité maître = 2 et une intensité de rapport cyclique de GPIO individuelle = 2. (Source de l'image : Maxim Integrated)
L'intensité maître est définie sur 2, de sorte que seuls les intervalles 1 et 2 des 15 intervalles sont disponibles pour la génération PWM, tandis que les intervalles 3 à 15 sont au niveau logique zéro. L'intensité du rapport cyclique individuel pour cette GPIO est définie sur 2, de sorte que les formes d'ondes dans les intervalles 1 et 2 ont un rapport cyclique de 2/16 = 12,5 %.
L'intensité maître PWM peut être définie de 0 à 15, où 15 signifie que les 15 intervalles sont disponibles. Une intensité maître de zéro signifie que la génération PWM est désactivée pour toutes les GPIO et que l'horloge de 32 kHz est donc désactivée pour économiser l'énergie.
Chaque GPIO individuelle peut configurer une intensité de rapport cyclique PWM de 1 à 16, où 16 est un rapport cyclique de 100 %, ce qui place l'intervalle à un état logique haut.
Pour plus de flexibilité, chaque GPIO a un bit de polarité qui peut inverser la forme d'onde PWM. La Figure 2 montre la forme d'onde avec le bit de polarité pour cette GPIO défini sur 1. La forme d'onde PWM de la Figure 3 montre la même GPIO avec la même intensité maître et la même intensité de rapport cyclique que la Figure 2, mais le bit de polarité est mis à 0.
Figure 3 : Chaque GPIO PWM sur le MAX7215A de Maxim Integrated a un bit de polarité qui inverse la forme d'onde. Cette modulation PWM a une intensité maître = 2 et une intensité de rapport cyclique individuelle = 2 avec le bit de polarité = 0 qui inverse la forme d'onde. (Source de l'image : Maxim Integrated)
Grâce à cette flexibilité dans la génération de formes d'ondes PWM, le MAX7315A peut être utilisé dans un nœud enfant en dehors d'un point d'extrémité IIoT pour contrôler la gradation de voyants LED, commander les transistors de puissance des moteurs CC et contrôler des solénoïdes et des actionneurs. Désormais, au lieu d'exécuter huit lignes numériques transmettant des formes d'ondes PWM dans un environnement industriel bruyant, il suffit au microcontrôleur hôte de configurer le MAX7315A et de lui permettre de fonctionner indépendamment.
Étendre les fonctionnalités aux nœuds enfants
Pour les nœuds enfants plus complexes, Maxim Integrated propose l'expanseur de port MAX7301AAX+T avec jusqu'à 28 GPIO. Le MAX7301AAX est connecté au microcontrôleur hôte dans le point d'extrémité IIoT en utilisant une interface SPI à quatre broches standard (Figure 4). Il prend également en charge une fonction d'interruption active haute en tant que fonction alternative hors P31. Le MAX7315AAX peut être configuré pour générer une interruption vers le microcontrôleur hôte lors d'un changement d'état d'une ou de plusieurs GPIO. Cela permet de contrôler 27 GPIO dans un nœud enfant dans un système commandé par interruption en utilisant seulement cinq lignes de contrôle : les quatre lignes de contrôle SPI et une ligne d'interruption.
Figure 4 : L'expanseur de port MAX7301 de Maxim Integrated est doté d'une interface SPI et il prend en charge jusqu'à 28 broches GPIO qui sont disponibles pour l'entrée ou la sortie. La broche 31 prend en charge une fonction alternative d'interruption active haute, permettant de contrôler 27 lignes GPIO à l'aide de cinq signaux de commande. (Source de l'image : Maxim Integrated)
Le MAX7301AAX fonctionne sur une vaste plage d'alimentation de 2,25 V à 5,5 V, ce qui le rend compatible avec la plupart des systèmes logiques numériques. Les GPIO peuvent être configurées en tant qu'entrées de bascule de Schmitt avec ou sans résistance d'excursion haute interne. Les GPIO peuvent également être configurées en tant que sorties push-pull pouvant absorber jusqu'à 10 mA. Le MAX7301AAX est donc approprié pour interfacer avec des circuits de niveau logique utilisés pour contrôler d'autres équipements tels que des contrôleurs industriels, et avec des circuits de surveillance et d'alarme.
Conclusion
À mesure que les concepteurs étendent la portée physique des points d'extrémité IIoT, le contrôle des nœuds enfants peut constituer un défi car l'extension de multiples lignes de contrôle sur des distances de plusieurs mètres crée des problèmes d'interférences électromagnétiques, de configuration et de complexité des circuits. En utilisant des expanseurs de port pour contrôler les nœuds enfants dans les systèmes commandés par interruption, les développeurs peuvent simplifier la configuration des cartes à circuit imprimé et améliorer la fiabilité tout en ajoutant des fonctionnalités importantes au point d'extrémité IIoT.
Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

