Une extension bus I2C à 8 relais

Cet appareil permet à tout dispositif capable d’exploiter une ligne bus I2C de commander une extension d’I/O PCF8574.



Si vous avez construit le “Contrôle bidirectionnel par GSM avec alarme” ET448, proposé dans le numéro 42 d’ELM, vous avez certainement apprécié son vaste champ d’utilisation et sa fiabilité.
Vous avez été nombreux, depuis, à nous signaler que le nombre des sorties de commande de l’appareil vous semblait un peu limité. En effet, il n’offre que deux canaux, chacun étant associé à une instruction simple que l’usager envoie en tapant une séquence sur le clavier d’un téléphone portable.
Il en est de même pour la “Radiocommande UHF 4 à 28 canaux avec réponse de confirmation” décrite dans ce numéro, où 3 montages comme celui décrit dans ces lignes permettront d’étendre les 4 canaux d’origine à 28 !

Notre réalisation
Sur le schéma électrique du “Contrôle bidirectionnel par GSM avec alarme” ET448 (ELM42 p. 8), vous aurez remarqué que les deux lignes d’I/O (Input/Output ou E/S Entrée/Sortie en français) RA0 et RA1 du microcontrôleur U1 (respectivement A et B, en bas à droite du schéma), sont inutilisées mais déjà prévues pour être interfacées avec d’autres éventuels dispositifs. Eh bien, nous voilà prêts à réaliser une extension pilotée par bus I2C qui, comme vous le savez, fonctionne sur deux fils et qui, par conséquent, est parfaitement gérable par les deux lignes d’extension du Contrôle GSM ET448. Il s’agit d’une interface générique permettant de gérer l’excitation et la relaxation de huit relais dont chacun rend disponible son propre contact pour la commande d’un utilisateur électrique ou contrôlable électriquement.

Figure 1 : Le PCF8574.
L’extenseur d’I/O pour bus I2C est disponible en deux versions (PCF8574 et PCF8574A) se distinguant par l’adressage du dispositif. Dans cet organigramme interne, on voit que le PCF8574 est adressé avec la séquence “0100” placée avant les données réelles (A2, A1, A0), alors que le PCF8574 A est adressé avec pour séquence introductive “0111”.

Figure 2 : Le protocole bus I2C.
L’utilisation d’un protocole bus I2C fournit d’importants avantages liés à l’extensibilité et à la simplicité d’utilisation d’un système à plusieurs périphériques. Grâce à l’adressage des diverses platines, il est possible de relier plusieurs unités en parallèle et de les utiliser comme “slaves” (esclaves). Le “master” (maître) envoie la commande sur la ligne commune et, grâce à l’adresse esclave, ce message atteint seulement son destinataire. Notez que le protocole bus I2C prévoit l’envoi d’un caractère d’”acknowledge” (reconnaissance) à la fin de chaque commande et c’est seulement à l’arrivée de celle-ci que l’esclave est en mesure d’interpréter la commande : par conséquent, l’adresse esclave comme les données proprement dites ne sont transmises au destinataire que si elles sont suivies du caractère de reconnaissance.

Figure 3 : Les connecteurs d’I/O.
Les deux connecteurs montés sur la platine d’extension sont reliés ensemble en parallèle, ce qui permet la connexion de plusieurs platines sur le même canal bus I2C et à la platine maître de pouvoir profiter de tous les contacts présents sur le connecteur d’extension. En effet, par exemple, si l’on utilise l’extension avec le Contrôle GSM ET448, il est nécessaire de disposer des contacts 1 à 6 afin de gérer les entrées d’alarme et donc il est particulièrement utile d’utiliser le connecteur de sortie à la place de celui monté sur la platine de base. S’il n’y était pas, il faudrait créer un câblage particulier pour relier les contacts 5, 6, 7 et 8 à la platine d’extension et les contacts 1, 2, 3, 4, 5 et 6 aux alarmes.

Le schéma électrique de l’extension
Vous comprendrez mieux de quoi il s’agit si vous jetez un coup d’oeil au schéma électrique de la figure 4 : l’unité d’extension fonctionne avec des dispositifs, au demeurant for t simples, en ce qu’elle ne met en oeuvre aucun microcontrôleur, mais se contente d’un I/O “expander” (extenseur), un “line driver” (pilote de ligne) à huit canaux, 8 relais et un MOSFET. Tout le circuit est alimenté en 12 Vcc dont un régulateur intégré tire le 5 V stabilisé nécessaire à la logique.
Commençons par analyser l’élément de base du circuit : l’extenseur d’I/O.
Il s’agit d’un circuit intégré Philips PCF8574, une puce dialogant au moyen d’un bus I2C (correspondant aux broches 14 SCL et 15 SDA) et qui, selon la commande reçue, habilite une ou plusieurs de ses huit sorties. Dans notre cas, les états logiques correspondants sont envoyés à un pilote inverseur ULN2803, avant d’atteindre les enroulements des relais. Par ce moyen, nous parvenons à piloter huit canaux avec deux lignes seulement.
les résistances de 10 kilohms connectées entre lesdites lignes et le +5 V, servent de “pull-up”.

Figure 4 : Schéma électrique de l’unité d’extension.

Figure 5a : Schéma d’implantation des composants de l’unité d’extension ET473.

Figure 5b : Photo d’un des prototypes de la platine de l’unité d’extension.

Figure 5c-1 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés de l’unité d’extension, côté composants…

Figure 5c-2 : …et côté soudures. Si vous réalisez vous-même ce circuit imprimé, n’oubliez pas toutes les liaisons indispensables entre les deux faces.

Liste des composants
R1-R8 ....... 1 kΩ
R9 .......... 47 kΩ
R10 ......... 10 kΩ
R11 ......... 4,7 kΩ
R12 ......... 4,7 kΩ
R13 ......... 1 kΩ
R14 ......... 10 kΩ
R15 ......... 10 kΩ
R16 ......... 10 kΩ
C1 .......... 100 nF multicouche
C2 .......... 1000 μF 16 V électro
C3 .......... 100 nF multicouche
C4 .......... 220 μF 16 V électro
C5 .......... 220 μF 16 V électro
LD1-LD8 ..... LED 3 mm rouge
D1 .......... Diode 1N4007
D2 .......... Diode 1N4007
U1 .......... Intégré PCF8574(A)
U2 .......... Intégré ULN2803
U3 .......... Régulateur 7805
T1........... MOSFET IRF540
RL1-RL8 ..... Relais 12 V min. ci Toutes les résistances sont des 1/4 W à 5 %.

Divers :
1 ............ Support 2 x 8 broches
1 ............ Support 2 x 9 broches
3 ............ Cavaliers
8 ............ Borniers 3 pôles à insertion
2 ............ Connecteurs 8 pôles RJ45
1 ............ Câble RJ45



L’extenseur d’I/O PCF8574
Comme l’I2C est effectivement un bus, il prévoit la possibilité de connecter sur les deux lignes SCL et SDA de nombreux dispositifs, ce qui permet au microcontrôleur qui les gère (élément “master”, maître, du bus) d’envoyer des commandes sélectives directes.
Comment cela est-il possible ? Facile : la syntaxe des instructions contient, outre la commande, l’adresse du dispositif auquel elle est destinée. A leur tour, tous les dispositifs doivent être identifiés par une adresse univoque.
Normalement, tous les composants au standard bus I2C disposent de trois broches pour le paramétrage de l’adresse : chacune peut prendre le niveau logique 0 ou le 1 et, par conséquent, on en déduit l’existence de huit adresses possibles. Ce n’est pas pour rien que sur un bus I2C on ne puisse monter que huit dispositifs : en effet, les instructions qui y transitent peuvent être adressées à un maximum de huit éléments et si deux d’entre eux ont la même adresse, la commande agit sur les deux.
Dans notre extenseur, afin que le PCF8574 fonctionne correctement, nous avons prévu trois cavaliers pour l’adressage (figure 6). Pour utiliser cet extenseur avec le Contrôle GSM ET448, par exemple, il est nécessaire de fermer les trois cavaliers à la masse car le microcontrôleur PIC16F876 de la platine de contrôle envoie sur le fil SDA des commandes destinées à l’adresse 000. Pour utiliser, en revanche, l’extenseur avec la Télécommande avec réponse ET475…, les extensions sont configurées en fermant l’un des trois cavaliers J1, J2 ou J3. La condition logique des sorties P0 à P7 est maintenue entre la réception d’une commande et la suivante : c’est à cela que s’emploie un registre interne spécial du PCF8574.
Comme ses sorties ne peuvent débiter que peu de mA et de toute façon un courant bien inférieur à celui demandé par les enroulements des relais, il a fallu interposer un pilote capable de renforcer les niveaux TTL obtenus avec l’extenseur. Nous avons choisi un ULN2803, contenant essentiellement huit darlingtons NPN dont les bases sont pilotées par les états logiques appliqués aux entrées 8, 7, 6, 5, 4, 3, 2 et 1 et dont les collecteurs correspondent aux broches de sortie 11, 12, 13, 14, 15, 16, 17 et 18. Chacun d’eux peut alimenter des charges, même inductives (chaque sortie a une diode incorporée reliée entre collecteur et broche 10), en mode “sink” : chaque utilisateur doit être connecté entre la sortie correspondante et la ligne positive d’alimentation. Dans notre cas, les charges sont les huit relais, chacun étant alimenté par le fil portant le +12 V (Val). L’alimentation de chaque relais est indiquée par la LED située à côté de lui : quand la sortie correspondante du ULN2803 passe au niveau logique 0, la cathode de la LED devient négative par rapport à l’anode.
Bien sûr, une résistance de limitation du courant a été prévue pour chaque LED. Toujours à propos du ULN2803, il faut noter une astuce mise en oeuvre afin d’éviter de fausses commutations pendant la transitoire de mise sous tension : la broche d’alimentation négative est fermée à la masse par un MOSFET dont la gâchette est alimentée par un réseau de retard R/C. Le but est de faire en sorte que le pilote de ligne puisse commander les relais, non pas tout de suite après la mise sous tension du circuit, mais seulement après un bref instant : ceci parce que pendant la transitoire de mise sous tension, le PCF8574 pourrait paramétrer aléatoirement le registre de sortie et envoyer un niveau logique 1 sur une ou plusieurs sorties, ce qui occasionnerait l’activation intempestive d’un ou plusieurs relais.
Le réseau R9/C5 est tel que la gâchette de T1 ne reçoit une tension de seuil (4 V environ) qu’après 5 à 6 secondes à partir du moment de la mise sous tension du circuit. D2 pourvoie à la décharge rapide de l’électrolytique quand l’extenseur est mis hors tension : sans cela, le circuit de retard aurait besoin de 10 secondes au moins pour pouvoir exécuter sa fonction et, quand on réalimenterait le circuit tout de suite après l’avoir éteint, il ne pourrait intervenir comme il se doit.
Le circuit se connecte aux périphériques externes au moyen d’un unique connecteur RJ45, prolongeant les broches 15 et 14 vers l’extérieur par ses contacts 7 et 8 : ceux-ci sont reportés sur un autre connecteur relié en parallèle.
En fait, le montage comprend deux RJ45 en parallèle point par point : ce procédé permet de transporter vers l’extérieur les signaux relatifs au bus (et de permettre par conséquent la connexion d’autres extensions éventuelles) et de maintenir disponibles les contacts éventuellement nécessaires à la platine maître et présents dans le connecteur de sortie (comme dans le cas du Contrôle GSM ET448).
Vous comprendrez encore mieux ces propos si vous allez relire l’article du numéro 42 d’ELM : l’unité principale de contrôle à distance a aussi un connecteur RJ45, prévu à l’origine pour relier les 4 entrées IN1+, IN1–, IN2+ et IN2– à des interrupteurs, relais et autres dispositifs en mesure de les commander.
Donc, si on utilise le connecteur pour relier l’unité de base à l’extenseur, on s’interdit, de fait, l’accès aux entrées.
Mais avec ce second RJ45, dont les contacts sont tous reliés à ceux du premier, il est possible d’accéder, à partir d’eux, aux “inputs” d’alarme de l’unité de base (contacts 1, 2, 3 et 4) en passant par la platine de l’extenseur comme si elle n’y était pas. L’utilisation d’un double RJ45, pour prévoir une extension ultérieure, va de soi si on examine l’application de la platine extenseur à la Télécommande avec réponse ET475… Dans les RJ45, le circuit décrit ici prélève aussi l’alimentation (12 V) devant se trouver entre les broches 5 (+) et 6 (masse).
La tension reçue par l’unité de base alimente, à travers D1, une extrémité des enroulements de chaque relais et les LED, ainsi que la broche 10 (cathode commune des diodes internes du ULN2803) de U2. En revanche, le PCF8574 fonctionne sous 5 V stabilisé par le régulateur intégré U3 dont l’entrée est filtrée par C1 et C2 (C3 et C4 servant en revanche à filtrer les perturbations sur la ligne du 5 V).

Figure 6 : Le paramétrage du nombre de dispositifs est effectué au moyen des trois cavaliers J1, J2 et J3.


Figure 7 : Utilisation de l’extension avec le Contrôle GSM ET448.
PARAMÉTRAGE MATÉRIEL.
Pour pouvoir utiliser l’extension huit canaux avec notre Contrôle GSM ET448, ce dernier doit être animé par la version R1 du logiciel et les deux résistances R23 et R24 ne doivent pas être montées : elles doivent être retirées et remplacées par des “straps” de court-circuit. Sur l’extension, les trois cavaliers J1, J2 et J3 doivent être en place.
En ce qui concerne les connexions, il suffit de connecter indifféremment l’un ou l’autre des connecteurs d’I/O de l’extension au Contrôle GSM ET448 en utilisant un câble spécial “pin-to-pin” avec connecteurs RJ45. Les opérations sont donc les suivantes :
- Fermer les trois cavaliers J1, J2, J3 de l’unité d’extension ET473.
- Vérifier que le microcontrôleur du Contrôle GSM ET448 est bien un EF448R1.
- Dans le Contrôle GSM ET448, ôter les résistances R23 et R24 et les remplacer par des “straps” de court-circuit.



CONNEXIONS ÉLECTRIQUES.
CÂBLE 8 POLES
- GRIS ........ SCL
- ORANGE ...... SDA
- NOIR ........ GND
- ROUGE ....... +12 V
- VERT ........ IN2 actif au +
- JAUNE ....... IN1 actif au –
- BLEU......... IN2 actif au –
- MARRON ...... IN1 actif au +

BROCHAGE DU CONNECTEUR RJ45.
1 = IN1 actif au +
2 = IN2 actif au –
3 = IN1 actif au –
4 = IN2 actif au +
5 = +12 V
6 = GND
7 = SDA
8 = SCL

COMMANDES DISPONIBLES.
Les commandes d’activation des relais restent inchangées avec l’adjonction des contrôles relatifs aux relais disponibles sur l’extension.
* suivi d’un chiffre de 0 à 9 commute l’état du relais correspondant,
# suivi d’un chiffre de 0 à 9 demande l’état du relais correspondant (bip long = relais fermé, 3 bips = relais ouvert),
* suivi de # relaxe tous les relais.
Le chiffre de 0 à 9 sélectionne un relais selon le tableau suivant :
0 = RL8 de ET473
1 = RL1 de ET448
2 = RL2 de ET448
3 = RL1 de ET473
4 = RL2 de ET473
5 = RL3 de ET473
6 = RL4 de ET473
7 = RL5 de ET473
8 = RL6 de ET473
9 = RL7 de ET473.



En ce qui concerne les connexions, il suffit de relier indifféremment l’un ou l’autre des connecteurs d’I/O de l’extension ET473 au Contrôle GSM ET448 en utilisant un câble spécial “pin-to-pin” doté de connecteurs RJ45.


Figure 8 : Utilisation de l’extension avec l’Unité radio relais ET477.

Figure 9 : Logiciel de gestion du système radio.
En reliant l’unité radio base ET476 au PC par l’intermédiaire de l’interface sérielle ET475, nous sommes en mesure de gérer les 4 relais disponibles sur l’unité radio relais ET477 et les 8 relais disponibles sur l’extension ET473. Le système prévoit le contrôle d’un maximum de 3 extensions et, par conséquent, un total de 28 canaux disponibles. L’interface usager, ci-contre, est très intuitive et, par conséquent, facile à utiliser : elle permet pour chaque canal de changer ou de demander l’état du relais. Toutes les commandes transmises ou reçues sont visualisées dans la fenêtre de log à droite de l’écran du programme (et éventuellement sauvegardées dans un fichier).

Figure 10 : Pour chaque relais les trois contacts (commun, NF, NO) sont disponibles vers l’extérieur. On note l’utilisation d’un bornier à 3 pôles enfichable associé à chaque relais.

La réalisation pratique de l’extension
Une fois que l’on a réalisé le circuit imprimé double face à trous métallisés (les figures 5c-1 et 5c-2 donnent les dessins des deux faces à l’échelle 1), ou qu’on se l’est procuré, on monte tous les composants dans un certain ordre en regardant fréquemment les figures 5a et 5b ainsi que la liste des composants.
Montez tout d’abord les supports des circuits intégrés U1 (PCF8574) et U2 (ULN2803) : vérifiez bien les soudures (ni court-circuit entre pistes et pastilles, ni soudure froide collée). Montez toutes les résistances sans les intervertir (classez-les au préalable par valeurs).
Montez ensuite les 2 diodes (DS1 et DS2), bagues blanches orientées dans le bon sens comme le montre la figure 5a. Montez tous les condensateurs en respectant bien la polarité des électrolytiques (la patte la plus longue est le +).
Montez les 8 LED rouges en respectant bien la polarité de leurs pattes (la plus longue est l’anode +).
Montez le régulateur U3, en boîtier TO220 (7805), debout sans dissipateur, semelle tournée vers l’extérieur.
Montez T1 (IRF540), en boîtier TO220 aussi, debout, semelle vers l’intérieur.
Montez les six picots au pas de 2,54 mm pour les 3 cavaliers J1, J2 et J3.
Montez les 8 relais 12 V miniatures RL1 à RL8 et les 8 borniers enfichables à trois pôles qui leur sont associés pour les sorties de commandes utilisateurs. Montez enfin les deux connecteurs RJ45 en parallèle.
Vous pouvez alors enfoncer délicatement les circuits intégrés dans leurs supports en orientant bien leurs repèresdétrompeurs en U vers C2 pour U2 et C4 pour U1.
Procurez-vous maintenant un câble de type téléphone à 8 fils ou LAN (dans ce cas, il en faut un direct et non “uplink”) terminé par deux prises mâles RJ45 : si vous ne le trouvez pas, vous pouvez le construire en achetant du câble au mètre et les deux prises dans une grande surface de bricolage. Ce câble vous permet de relier l’unité de base et l’unité d’extension que vous venez de monter : insérez l’une des deux prises RJ45 dans le connecteur de la base et l’autre dans celui de l’extension. Le système de contrôle à distance bidirectionnel GSM à 10 canaux est alors prêt à l’usage. Rappelez-vous que, si vous voulez gérer des entrées d’alarme, vous devez connecter le câble correspondant au connecteur RJ45 laissé libre : utilisez les fils des “inputs” en les connectant selon le schéma publié dans le numéro 42 d’ELM (figures 3 et 4 pages 10 et 11) : le contact 1 est IN1+, le 2 est IN2–, le 3 va à IN1– et le 4 à IN2+.
Dernier détail concernant la compatibilité entre l’unité de base ET448 et l’unité extenseur ET473 : dans l’article du numéro 42 d’ELM, la platine comporte les résistances R23 et R24 protégeant les lignes RA0 et RA1 du microcontrôleur au cas où serait inséré dans le connecteur RJ45 une prise ou un câble câblé différemment. Ces résistances doivent être enlevées et remplacées par des “straps” de court-circuit, ce qui connecte RA0 et RA1 aux contacts correspondants du RJ45. Sinon le microcontrôleur ne pourrait pas envoyer les données de l’extenseur d’I/O de l’extension car les valeurs originales de R23 et R24 sont comparables à celles des résistances de “pull-up”.

0 commentaires:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...