08 ) Une vermine bien ennuyeuse.

Examinant la documentation relative à l’écran OLED on apprend que son adressage sur la ligne I2C est soit 0x78 soit 0x7A exprimée en hexadécimal. Elle est donc différente de celles des deux multiplexeurs PCA9685. En théorie on ne devrait pas avoir de problème. Mais force est de constater qu’entre la théorie et le réel il y a souvent une différence, et un problème durant le développement des démonstrateurs se manifeste assez régulièrement. On peut constater sur les images de la Fig.26 que manifestement il y a interférence. Les décalages latéraux mis en évidence par les lignes jaunes ne se produisent jamais si les deux multiplexeurs PCA9685 sont débranchés. Il y a donc indubitablement une interférence entre les trois modules électroniques.

Vérification des adressages I2C.

Face à un incident tel que celui-ci qui se produit de façon aléatoire, la première action à mener consiste à vérifier que les trois modules sont bien conditionné matériellement à des adresses I2C différentes. Dans ce but, on peut utiliser le logiciel spécifique P00_Test_ligne_I2C.ino préservé dans le dossier <OUTILS> qui se charge de balayer toutes les adresses possibles sur la ligne I2C gérée par A4 et A5 (Bibliothèque Wire.h) et d’en afficher la liste sur le Moniteur de l’IDE initialisé à une vitesse de transfert de 57600 baud dans le programme. Si on débranche la ligne qui va vers les deux multiplexeurs on obtient le résultat de la Fig.27 qui confirme que conformément à la documentation du module OLED l’afficheur est bien à l’adresse 0x3C. Si l’on recommence l’expérience en branchant les deux multiplexeurs PCA9685 l’affichage devient celui de la Fig.28 qui fait apparaitre quatre nouvelles adresses mises en évidence en vert pastel. Pour s’assurer qu’il n’y aurait pas deux modules simultanément sur 0x3C on effectue une dernière manipulation qui consiste à tester la ligne I2C en ayant débranché OLED. Effectivement seules les quatre adresses en vert sont détectées.
CONCLUSION : L’interférence constatée n’a rien à voir avec un adressage commun. Des résistances de 10kΩ ont été ajoutées entre les deux lignes et le +5Vcc pour assurer une polarisation fiable … sans succès. Le problème reste au final un mystère. Il importe donc de contourner cette difficulté en isolant la ligne I2C qui va vers les multiplexeurs PCA9685 lorsqu’un affichage est effectué sur OLED. L’agencement logiciel prend la forme de l’organigramme de la Fig.29 qui sera repris pour chaque affichage sur OLED. Cette parade consomme 146 octets pour l’ensemble des dialogues actuels.

Solution matérielle.

Consistant à intercaler un commutateur double entre les deux broches A4, A5 et la ligne qui gère les deux multiplexeurs, la Fig.30 ne représente pas la technologie adoptée. L’afficher OLED est branché en permanence sur la ligne de dialogue I2C. Dès qu’un affichage est invoqué par le programme d’exploitation, la sortie A0 passe à l’état « 1 » et active une INTERFACE qui fait passer les deux inverseurs à l’état travail. De ce fait la ligne I2C ne va plus vers le multiplexeur n°1 qui sera ignoré. Idem pour le multiplexeur n°2 qui est en série avec le premier. Dès que la boucle d’affichage sur OLED est terminée, la sortie A0 repasse à l’état « 0 » et impose à l’interface de faire revenir les deux inverseurs à l’état repos. Dans cette configuration la ligne I2C est rétablie vers les multiplexeurs qui sont à nouveau gérés par le logiciel pour allumer ou éteindre les 32 LEDs qui sont réunies sur leurs sorties. Pour ne pas pénaliser la rapidité de fonctionnement des programmes, il importe que le temps de commutation de l’INTERFACE soit court. Un délai inférieur à 20mS sera parfait.

Technologie retenue.

C’est vers l’utilisation de circuits intégrés logiques que les premières études ont été orientées. Bien que le schéma ne soit pas très compliqué, il intégrait trois circuits DIL à 14 broches, ce qui se traduisait par un circuit imprimé un peu compliqué et surtout relativement grand. Aussi, après plusieurs tentatives le choix définitif s’est orienté vers un petit relais électromagnétique qui optimise la solution en simplicité et volume occupé. Ce choix peut sembler incongru, car les relais électromagnétiques sont réputés coûteux en énergie et d’une lenteur de fonctionnement légendaire. Ce n’est pas forcément vrai pour les petites puissances commutées. Considérons la Fiche n°37 qui décrit les caractéristiques de celui mis à contribution. Il s’agit d’un composant KEMET : EC2-5NU dont la fiche signalétique est fournie dans le dossier <Documents>. On note que le temps nécessaire pour passer de l’état repos à celui de travail n’exige que 2mS et 1mS pour revenir au repos. Dans le démonstrateur on a prévu un délai de 5mS soit plus du double par sécurité. Au final ce composant ne ralentit un affichage que de 0,005S ce qui est insignifiant et négligeable par rapport au temps nécessaire au rafraichissement d’une page-écran OLED. Par ailleurs sa consommation de 28mA reste tout à fait acceptable pour être directement piloté par une sortie de l’ATmega328.

Test d’endurance.

Pour tester la fiabilité (Lors de l’élaboration de la Machine de Turing décrite sur ce Site.) de ce composant, ces contacts ont été soumis à un courant de 200mA alimenté par un module basse tension « de puissance » à une cadence de 16,666Hz. Dans ce but A0 avait été programmé pour fournir un signal « carré » à cette fréquence. L’essai d’environ 2.700.000 commutations à ce régime prouve une non dégradation des contacts vérifiés à 1A avec un ΔU de 0,05V soit une Rcontact de 50mΩ. Ce tout petit relais a donc largement montré sa fiabilité, d’autant plus que dans cette application il va commuter des courants dérisoires. (Pour son branchement voir la Fiche n°1.)

Circuit imprimé du petit clavier secondaire.

Développer « sereinement » le logiciel passe par un affichage stable qui impose la circuiterie du relais électromagnétique. De plus, disposer d’un vrai clavier est autrement plus commode que le dispositif provisoire de la Fig.3 à laquelle on a ajouté quatre boutons poussoir sans aucune référence visuelle. Le moment est venu de réaliser le module électronique du petit clavier en 3 sur la Fig.31 qui intègrera également l’afficheur graphique en 1 qui sur la réplique doit voisiner. Devant être légèrement séparés latéralement on va en profiter pour intercaler en 2 le relais d’isolation de la ligne I2C. Il est probable que par la suite les inscriptions sur l’étiquette qui sera imprimée avec soin risquent de changer, en particulier l’indication Vitesse qui actuellement n’est pas définitive.

La suite est ICI.