Multiplexer à outrance constitue la clef de voûte de notre entreprise. C’est la solution classique qui permet de gérer infiniment plus d’éléments indépendants que l’on ne dispose de broches d’E/S sur le(s) processeur(s) inclus dans l’organisation matérielle d’un projet. On peut multiplexer par le truchement d’une ligne I2C ou par la technique « matrice lignes/Colonnes ». Dans cette réalisation les deux techniques vont cohabiter. Pour évaluer la viabilité des solutions envisagées, nous allons passer en revue chacune des facettes particulières de ce projet.
La ligne de multiplexage I2C.
Avant de pouvoir mettre en Å“uvre le démonstrateur P01 il nous faut impérativement faire connaissance avec l’indispensable technique I2C qui permet de piloter un très grand nombre de périphériques avec seulement deux fils et une masse commune GND. Dans ce but, il nous faut absolument consulter la Fiche n°3 et la Fiche n°4. Nous y apprenons que pour traiter une telle ligne on va se contenter d’utiliser la bibliothèque <Wire.h> qui gère les protocoles I2C sur les deux broches analogiques A4 et A5. Il importe de noter que <Wire.h> n’est qu’une « sous-couche » logicielle pour mettre en Å“uvre les deux sorties filaires A4 et A5. À elle seule elle ne sert à rien. Il faut lui adjoindre une bibliothèque spécifique pour chaque module du commerce qui dialoguera en I2C.
Présentation du multiplexeur PCA9685.
Concrètement, ce module du commerce particulièrement bien pensé et très compact a été sélectionné, car à lui seul il peut fournir 16 sorties PWM indépendantes. Consultons la Fiche n°9 qui montre qu’avec deux de ces modules on va pouvoir gérer jusqu’à 32 LEDs … et avec seulement les deux broches A4 et A5. Nous ne pouvons pas faire l’économie de la Fiche n°5 et de la Fiche n°6 qui décrivent la bibliothèque Adafrui-PWM-Servo-Driver-Library-master qui accompagne le module PCA9685. C’est précisément cette couche logicielle spécifique au module électronique qui se servira de <Wire.h> pour dialoguer avec la carte Arduino NANO. Notons au passage que « Servo-Driver » fait référence à la spécificité de ces modules qui peuvent gérer des servomoteurs par des signaux PWM . Tous les servomoteurs prévus pour de la petite robotique sont pilotés par un signal de type PWM (Pulse Width Modulation : Impulsions à modulation de largeur.) dont la fréquence de répétition est de 50Hz. Mais ici on ne va piloter que des LEDs, donc la fréquence peut être bien plus élevée. Par exemple 1000Hz éliminant tout phénomène de scintillement même si la LED clignote à cadence rapide.
Préalable à l’utilisation de P01 nous devons placer « en cascade » deux modules PCA9685. Cette obligation impose de modifier l’adressage d’au moins l’un des deux circuits imprimés. Pour simplifier on conserve x40 pour le premier, et l’on adresse le deuxième en x41 ce qui impose de faire une petite soudure. La Fiche n°7 décrit comment changer l’adressage de l’un des modules alors que la Fiche n°8 précise comment les chaîner électriquement. Sur Image 01.JPG on voit en « macro » la soudure à effectuer, alors que sur Image 02.JPG on observe le deuxième connecteur à ajouter au module x40 pour chaîner le deuxième module électronique.
La suite est ICI.