Voici une unité périphérique permettant, une fois reliée à la ligne série RS232-C d’un ordinateur PC, de gérer jusqu’à 8 charges indépendantes à travers des sorties relais, et de lire l’état logique d’autant d’entrées. Ses applications sont multiples: automatismes, systèmes d’alarmes, domotique, contrôle d’accès, etc.
L’ordinateur est désormais considéré comme un outil à tout faire, auquel la technique moderne et l’imagination de chacun cherchent à confier de plus en plus de taches.
On peut utiliser son PC pour faire ses courriers, suivre son compte bancaire, établir des prévisions de dépense, etc. En utilisant le PC et Internet, on peut rechercher, et obtenir, des informations en provenance de banques de données du monde entier, faire ses courses, acheter une voiture, s’abonner à un nombre incalculable de services.
Malgré cela, la machine n’est pas utilisée à cent pour cent, loin s’en faut. Il est donc également possible de faire en sorte que cet ordinateur familial devienne pour la maison une sorte de majordome, assumant le rôle d’une alarme, veillant à la surveillance des bâtiments et au portail électrique.
Tout ceci grâce à des interfaces spécifiques que l’on peut d’ores et déjà réaliser et mettre en oeuvre.
Si vous avez un quelconque doute à ce sujet, observez le circuit proposé dans ces pages : une interface pouvant être reliée à l’un des ports série du PC (COM1, COM2…), capable de contrôler jusqu’à 8 charges indépendantes les unes des autres, par l’intermédiaire de relais, simples ou assistés, et d’acquérir l’état d’un maximum de 8 entrées digitales. Le tout est contenu sur une carte compacte réalisée à l’aide de composants bon marché.
Cette carte permet la lecture directe de niveaux logiques TTL/compatibles, et non pas de valeurs analogiques.
C’est pourquoi elle convient parfaitement aux applications de l’automatisation, puisqu’elle permet d’activer une charge et d’en vérifier ensuite l’effet, ou bien de garder sous contrôle des lignes ou des capteurs avec sortie à relais ou, tout du moins, dont la sortie peut s’exprimer uniquement en deux états.
Voyons à présent dans le détail comment cette carte et ses programmes de gestion ont été réalisés.
En fait, pour gérer l’unité, il faut utiliser un logiciel spécial, et voilà la raison pour laquelle nous avons développé un programme capable de fonctionner sous Windows 95/98, avec lequel il est possible de disposer d’un panneau de contrôle vidéo virtuel équipé d’un bouton pour chacun des relais et d’une diode lumineuse pour chacune des entrées TTL.
Ce programme permet l’utilisation manuelle de la carte pour des applications génériques. Pour des applications spécifiques, on peut utiliser - ou mieux, insérer à l’intérieur de programmes spéciaux - la routine en Qbasic appelée 8180.BAS, qui se trouve dans ces pages et qui est capable de contrôler toutes les fonctions de notre montage.
Schéma électrique
Mais laissons pour le moment de côté le logiciel et retournons aux composants, sachant que le coeur du circuit est l’UART U5, c’est-à-dire le CDP6402 de chez Harris.
Il permet de communiquer avec l’ordinateur lorsque celui-ci l’interroge par l’intermédiaire de commandes transmises sur la ligne via le port série.
Le signal d’horloge (clock) avec lequel le “Baud Rate” de la connexion s’opère, est généré par le circuit intégré U2, un oscillateur/diviseur programmable 74HC4060, contrôlé par le quartz Q1.
Nous avons donc les 8 bits d’entrée (le bus-données, indiqué “INPUT”) du CDP6402 reliés aux lignes respectives d’entrée par l’intermédiaire d’une résistance et tous équipés de résistances de “pull-up” (tirage), nécessaires à maintenir chacun d’eux au niveau haut (état logique 1) en position de repos.
En reliant l’une de ces entrées de la carte à masse, on bascule la broche correspondante de l’UART au niveau logique 0, tandis qu’en la laissant déconnectée, on maintient le niveau 1.
L’état des 8 bits est transmis à l’ordinateur par l’U5 après chaque réception de commande envoyée par le PC.
La communication série se fait par l’intermédiaire d’un classique MAX232 (appelé U1 sur le schéma), un convertisseur TTL/RS232-C Maxim, munis de canaux de transmission et de réception pour l’adaptation des niveaux logiques de la carte en +12/–12 volts, et ceux du PC en TTL (0/5 volts), comme prévu par le standard EIA RS232-C.
Le bus-données RR1 à RR8, sur lequel on prélève en parallèle les huit bits reçus sur le canal série (broche 20, RRI), gère les charges, c’est-à-dire les 8 relais de sortie.
Un réseau darlington ULN2803 relié à ce même bus, contrôle les bobines des relais en leur donnant le courant nécessaire : il s’agit d’un circuit intégré à 18 broches à double ligne d’entrée, contenant huit darlingtons pouvant être pilotés par des signaux de type TTL, capables de débiter en sortie (sur le collecteur) jusqu’à 500 milliampères.
Le fonctionnement de chaque section est en mode “sink”, c’est-à-dire que les sorties, étant de type “open-collector” (à collecteur ouvert), elles servent d’interrupteurs vers la masse.
La bobine d’un relais est reliée à chaque étage de l’ULN2803, qui est directement excité par l’un des bits de sortie de l’UART U5 (“1” en entrée, provoque “0” logique à la sortie correspondante).
Chacune de ces bobines est munie d’une diode LED reliée en parallèle et protégée par une résistance.
En s’allumant, la LED permet de visualiser l’état de sa propre sortie, c’est-à-dire de savoir si elle est activée (relais excité = diode LED allumée) ou bien au repos (diode LED éteinte).
L’alimentation de la carte est fournie par le pont de diodes PT1 qui redresse la tension alternative d’entrée (9 ou 10V) et envoie aux bornes des condensateurs C1 et C2 une tension continue pour être filtrée. Cette tension allume la diode LED DL9 qui sert d’indicateur de fonctionnement.
Le régulateur de tension intégré (U6), reçoit environ 12 volts redressés et filtrés et génère du 5 volts stabilisé qu’il envoie ensuite à l’UART, au générateur de clock U2 ainsi qu’au convertisseur TTL/RS232-C U1.
Soulignons que le pont à diodes permet également de tout alimenter en tension continue (12/15 volts), ce qui offre l’avantage de ne pas avoir à se préoccuper de la polarité de la liaison. En effet, entre le “+” et le “–” de PT1, on a toujours une seule polarité, la bonne, indépendamment du sens de la tension appliquée sur les bornes “IN AC”.
Figure 1 : Schéma électrique de l’interface PC 8 entrées digitales 8 sorties relais.
Figure 2 : Schéma d’implantation de l’interface E/S pour PC.
Figure 3: Dessin du circuit imprimé de l’interface PC à l’échelle 1.
Liste des composants
R1 = 1 kΩ
R2 = 1 kΩ
R3 = 1 kΩ
R4 = 1 kΩ
R5 = 1 kΩ
R6 = 1 kΩ
R7 = 1 kΩ
R8 = 1 kΩ
R9 = 1 kΩ
R10 = 10 MΩ
R11 = 3,3 kΩ
R12 = 3,3 kΩ
R13 = 3,3 kΩ
R14 = 3,3 kΩ
R15 = 3,3 kΩ
R16 = 3,3 kΩ
R17 = 3,3 kΩ
R18 = 3,3 kΩ
R19 = 390 Ω
R20 = 390 Ω
R21 = 390 Ω
R22 = 390 Ω
R23 = 390 Ω
R24 = 390 Ω
R25 = 390 Ω
R26 = 390 Ω
C1 = 470 μF 25 V électrolytique
C2 = 100 nF multicouche
C3 = 220 μF 16VL électrolytique
C4 = 100 nF multicouche
C5 = 1 μF 16VL électrolytique
C6 = 1 μF 16VL électrolytique
C7 = 1 μF 16VL électrolytique
C8 = 1 μF 16VL électrolytique
C9 = 100 nF multicouche
C10 = 22 pF céramique
C11 = 22 pF céramique
DZ1 = Diode zener 5,1 V 1/2 W
DZ2 = Diode zener 5,1 V 1/2 W
DZ3 = Diode zener 5,1 V 1/2 W
DZ4 = Diode zener 5,1 V 1/2 W
DZ5 = Diode zener 5,1 V 1/2 W
DZ6 = Diode zener 5,1 V 1/2 W
DZ7 = Diode zener 5,1 V 1/2 W
DZ8 = Diode zener 5,1 V 1/2 W
LD1 = LED rouge 5 mm
LD2 = LED rouge 5 mm
LD3 = LED rouge 5 mm
LD4 = LED rouge 5 mm
LD5 = LED rouge 5 mm
LD6 = LED rouge 5 mm
LD7 = LED rouge 5 mm
LD8 = LED rouge 5 mm
LD9 = LED verte 5 mm
U1 = Intégré MAX232
U2 = Intégré 74HC4060
U3 = Intégré ULN2803
U4 = Intégré HFC40106
U5 = UART CDP6402
U6 = Régulateur 7805
RL1 = Relais 12 V miniature
RL2 = Relais 12 V miniature
RL3 = Relais 12 V miniature
RL4 = Relais 12 V miniature
RL5 = Relais 12 V miniature
RL6 = Relais 12 V miniature
RL7 = Relais 12 V miniature
RL8 = Relais 12 V miniature
PT1 = Pont redresseur 1 A
Q1 = Quartz 2,4576 MHz
Divers :
1 Prise alimentation BT pour ci
1 Support 2 x 7 broches
2 Support 2 x 8 broches
1 Support 2 x 9 broches
1 Support 2 x 20 broches
11 Borniers 3 pôles
1 Prise DB25 femelle 90° pour ci
1 Circuit imprimé réf. S265.
Sauf indication contraire, toutes les résistances sont des 1/4 W à 5 %.
Notre prototype, une fois le montage terminé. La carte doit être alimentée avec une tension de 12 volts, fournie par une alimentation secteur capable de débiter 400 mA minimum.
Figure 4 : Brochage de l’UART CDP6402 fabriqué par Harris Semiconductor.
L’UART, décomposition du fonctionnement
A la lumière de ce qui vient d’être dit, vous devez commencer à avoir une idée suffisamment précise du fonctionnement de l’unité périphérique.
Il est toutefois préférable, pour mieux comprendre, de s’arrêter sur l’élément principal, c’est-à-dire celui qui coordonne non seulement la réception des commandes, mais également leur envoi totalement automatique, géré seulement par sa propre horloge et par l’arrivée de données sur le canal RRI, des informations relatives aux entrées TTL vers l’ordinateur.
Nous parlons, bien sûr, de l’UART (Universal Asinchronus Receiver Transmitter) U5, le CDP6402, qui permet de transformer en parallèle les données série provenant du port RS232-C, et de mettre en série celles disponibles sur les entrées à 8 bits parallèles.
L’UART est un système complémentaire et la solution idéale pour communiquer avec le RS232-C de l’ordinateur, lequel transforme les niveaux du bus-données interne de la carte mère en informations séquentielles.
Le CDP6402 (U5) est un circuit intégré CMOS fabriqué par Harris et contenu dans un boîtier plastique 2 x 20 broches, garantissant une vitesse de communication supérieure à 200 kilobits/seconde à 5 volts, et de 400 kilobits/seconde à 10 volts.
Il est en outre idéal pour notre montage : en position de repos, il est en état de réception et il attend l’arrivée de données sur l’entrée série (broche 20 - RRI), tandis que lorsqu’il est excité par le bit de “start” (démarrage), il reçoit les impulsions successives et les distribue sur les sorties respectives.
L’UART est capable de reconnaître le format standard de la communication série, c’est-à-dire 8 bits de données précédés d’un bit de démarrage et suivis d’un bit de parité (“0” si la somme des 8 bits est un nombre décimal pair, et “1” si le résultat est impair), et il s’excite à l’arrivée du premier bit.
L’UART, connaissant la vitesse de transfert (“Baud-Rate”, identique à celle du port COM du PC) et par conséquent la durée de chaque impulsion, peut activer un démultiplexeur, lequel, après le front de descente du bit d’arrêt (niveau logique “0”), prend, pendant une brève période, et séquentiellement sur les 8 sorties du bus parallèle, le même état logique que l’entrée RRI, reformant ainsi le byte d’origine.
En bref, pendant l’intervalle du premier bit, il relie l’entrée RRI et le buffer de la sortie RBRI, puis, pendant celui du second, il relie l’entrée RRI et la sortie RBR2 du second bit du bus parallèle, et ainsi de suite jusqu’au huitième.
Il lit aussi le bit de parité envoyé par l’ordinateur par l’intermédiaire du canal série et le compare, dans un réseau logique, à celui qu’il obtient en faisant la somme des 8 bits des données. Si les deux coïncident, le buffer de sortie s’active en permettant aux broches RBR1/RBR8 de prélever les signaux parallèles. Dans le cas contraire, il est placé en “three-state” en attendant d’être annulé dès la réception suivante (pour la précision, à la commutation “1”/”0” de la broche 18…). C’est ainsi que les données relevées et considérées non valables ne sortent pas du bus de réception RRn.
Rappelons que ce bus est relié aux entrées du réseau Darlington U3 (ULN2803) qui contrôle les relais de la façon que nous avons déjà décrite. En ce qui concerne le fonctionnement inverse, c’est-à-dire la transmission vers le PC, l’UART U5 dispose d’une seconde section qui opère essentiellement à l’envers par rapport à ce que nous venons de voir : il y a un second bus des données, cette fois composé de 8 entrées, en correspondance des broches TBR1/TBR8 (broches de 26 à 33), et d’une sortie série (TRO) reliée à la broche 25.
Le circuit intégré transmet automatiquement après avoir reçu et complété la procédure de réception : en fait, chaque cycle de RX (réception) est toujours suivi d’un cycle de TX (transmission), et ce sans l’intervention d’autres éléments externes.
Le CDP6402 prélève les données sur le bus TBRn et, à l’aide du multiplexeur interne, il les dispose une par une en file sur la ligne de transmission (broche TRO) toujours à la vitesse dictée par l’horloge externe et commune à la conversion série/parallèle, de façon à ce que l’ordinateur puisse les lire sans aucune difficulté.
Evidemment, un bit de démarrage est inséré devant le byte et un bit de parité à la fin (calculé par la logique interne sur les 8 bits transmis), suivi par un bit d’arrêt.
Une fois cette phase d’envoi terminée, l’UART s’initialise et revient automatiquement en état de réception, attendant une nouvelle impulsion de démarrage sur la broche RRI (20) pour reprendre un autre cycle.
L’UART en plus simple
Ces explications devraient suffire à comprendre, même dans les grandes lignes, le fonctionnement du circuit.
Mais si vous voulez en savoir plus, nous pouvons approfondir et voir ce qui se produit pas à pas dans le CDP6402.
En partant de la réception : les données sous forme série arrivent par le port RS232-C de l’ordinateur, à travers le convertisseur MAX232, à la broche RRI (20) puis, une fois la transmission terminée, elles rejoignent sous forme parallèle les 8 sorties RBR1/RBR8.
Pour signaler que les données ont été correctement reçues et donc transférées aux bus de sortie, la broche DR (19, Data-Ready) prend le niveau logique haut (“1”).
Nous observerons un peu plus loin l’importance déterminante de cette procédure dans le processus de fonctionnement du circuit intégré Harris qui, autrement, serait incapable à la fin de chaque cycle de réception, d’envoyer des données à l’ordinateur.
Pour préparer l’UART à recevoir un nouveau bit, il faut lui donner une impulsion d’initialisation en faisant basculer la broche DRR (18) au niveau logique “0”.
Cette opération impose le niveau logique “0” à la broche DR afin de signaler qu’aucune nouvelle donnée n’est disponible. Elle initialise également le buffer contenant les précédentes données mais, évidemment, ignore la bascule de sortie.
Le fonctionnement de la section de réception est assuré et rythmé par le signal d’horloge appliqué sur la broche RRC (17), qui doit avoir une fréquence égale à 16 fois le “Baud-Rate”, c’est-à-dire la vitesse de transfert des données, réglée par défaut à 9 600 bits/s. Pour obtenir cette valeur, il faut partir d’environ 153 kHz, obtenus grâce au compteur/diviseur U2, dont l’oscillateur principal travaille à une fréquence de 2,45760 MHz.
Remarquez que pour une question pratique, nous avons relié les broches d’entrée 40 et 17 de l’U5 (RRC et TRC) de façon à piloter avec un seul signal d’horloge les deux sections, réceptrice et émettrice, en simplifiant ainsi le circuit.
Comme le quartz oscille à 2,4576 MHz et que le 74HC4060, il a été configuré pour obtenir un facteur de division de 1/16, en divisant par 16, on obtient une horloge à exactement 153 600 Hz, valeur idéale pour le fonctionnement du canal série à 9 600 bauds (le CDP6402 nécessite justement une fréquence d’horloge de 9 600 x 16 = 153600 Hz).
Une fois la procédure de réception des données terminée, le circuit intégré se commute automatiquement en mode transmission lorsqu’il désactive le canal TX et lit l’état logique de chacune des entrées du bus (de TBR1 à TBR8).
Remarquons à présent que, suite à la connexion réalisée avec la porte “NOT” U4, l’état logique de la broche 19 influence celui des broches 18 et 23, en réalisant ainsi une sorte de boucle qui permet à l’UART d’acquérir et de transmettre les données des 8 entrées sans aucun signal externe, donc de façon autonome.
En fait, après la transition “0”/”1” logique sur la broche 19, due à la fin de la phase de réception (DR passe à l’état logique “1” quand les données sortent du bus RBRn), le circuit U4 fait basculer au niveau logique “0” les broches 18 et 23, en initialisant le registre de réception.
Une fois l’impulsion terminée, la sortie de la porte “NOT” prend à nouveau à l’état logique “1”, ce qui active la phase d’envoi des données lues sur les 8 entrées : le passage “0”/”1” sur la broche TBRL (23) permet de transférer les 8 bits dans un registre interne de l’UART appelé “Transmitter Buffer Register” (TBR), duquel ils seront transmis une fois l’envoi d’un éventuel byte précédent terminé.
Il faut observer que la broche TBRE (22) passe au niveau logique “1” lorsque le transfert du bus d’entrée au registre TBR est terminé, tandis qu’une autre broche de contrôle (24, TRE) prend l’état logique “1” après que l’opération de transmission de la broche de sortie TRO (broche 25) soit terminée.
Ces signaux que l’on vient tout juste d’évoquer à titre d’information, ne sont pas utilisés par notre montage.
Comme pour la réception, le signal d’horloge a une fréquence de 16 fois le “Baud-Rate”, il nous a semblé pratique de relier entre-elles les broches TRC et RRC.
Une fois l’envoi des données sur la ligne série terminé, l’UART s’arrête et attend l’arrivée de nouvelles impulsions (bit de démarrage) sur la broche 20. Dans ce cas-là, il démarre un nouveau cycle, toujours avec les mêmes modalités.
En ce qui concerne l’interface, la carte est connectée à l’ordinateur par l’intermédiaire d’une ligne à 2 fils plus masse, qui correspondent aux broches TXD (2), RXD (3) et GND (masse) du port série.
Le rôle du MAX 232
Etant donné que le reste du circuit fonctionne avec des niveaux TTL de type 0/5 V, le circuit intégré MAX232 procède à l’indispensable conversion: le standard EIA RS232-C prévoit que le “0” logique du canal des données (Space) soit égal à +12V, tandis que le “1” logique (Mark) soit égal à –12 V.
Le MAX232 transforme la tension négative appliquée sur sa broche 8 (comprise entre –8 et –15 V) en niveau logique haut (“1”) TTL (+5 V) et la tension positive (Space), toujours présente sur la broche 8 et dans la même gamme, en niveau logique bas (“0”) TTL (0 V).
Par contre, en transmission, le MAX232 transforme l’état logique “1” TTL de la broche 10, provenant de la broche 7, en –10 V, et il convertit donc le “0” logique sur la broche 10, toujours provenant de la broche 7, en +10 V.
Le logiciel
Le moment est venu de faire quelques observations sur la signification des données transmises par le PC et sur l’utilisation de la routine en QBasic 8180.BAS.
Fonctionnement des relais
L’état des huit relais de sortie est équivalent à celui des bits correspondants extraits du byte que l’ordinateur envoie le long de la ligne sérielle. Chacun d’eux a un poids binaire donné. Le relais correspondant sera excité si le bit vaut “1” et au repos si, au contraire, le bit vaut “0”.
Ce qui semble assez logique, considérant qu’en fait on utilise un UART et que, par conséquent, on peut avoir en forme parallèle, donc sur huit lignes différentes, un byte de 8 bits.
Ainsi, pour pouvoir activer un relais précis, il faut générer un byte qui contienne le bit correspondant à “1” logique.
Les correspondances du circuit sont les suivantes : D0 = RL1, D1 = RL2, D2 = RL3, D3 = RL4, D4 = RL5, D5 = RL6, D6 = RL7 et D7 = RL8.
Si l’on voulait, par exemple, déclencher RL8, il faudrait que le byte soit de type “10000000”, afin que le poids du “1” qui se trouve à gauche soit le plus important (le huitième bit).
Pour contrôler les sorties de la carte, le logiciel force l’ordinateur à envoyer sur le port série un nombre, exprimé en forme binaire de 8 bits, pour lequel les niveaux logiques “1” correspondent aux relais à activer et les “0”, à ceux qui, au contraire, doivent rester au repos. Evidemment, chaque relais a son propre nombre de commande, et pour en activer plusieurs, il suffit de former différentes combinaisons de bit à “1” logique.
Voici un exemple qui peut servir à clarifier les choses: le RL4, dont on sait qu’il se déclenche si la combinaison “00001000” arrive en série, est associé à un byte correspondant au nombre binaire 8, qui se compose en décimal de la somme 0 x 128 + 0 x 64 + 0 x 32 + 0 x 16 + 1 x 8 + 0 x 4 + 0 x 2 + 0 x 1 = 8, ce qui signifie que pour exciter RL4, l’ordinateur doit générer le nombre 8.
Pour citer d’autres exemples, supposons que le logiciel transmette “20”, représenté en binaire à 8 bits par “00010100”, alors, dans ce cas, les relais correspondants aux bits DB2 et DB4, donc RL3 et RL5, s’activeraient.
La combinaison “00000000”, c’est-à-dire “0” binaire, maintient tous les relais au repos, tandis que le nombre “256”, correspondant à “11111111” binaire, les fait tous se déclencher, du premier jusqu’au dernier.
En plus de produire les combinaisons déterminées par les boutons sur l’écran (les boutons carrés, numérotés de 1 à 8, qui se trouvent sur le tableau des commandes, sous Windows), la routine développée dans Qbasic (8180.BAS) effectue l’envoi du byte qui provoque le début de la conversion par l’intermédiaire de l’instruction “print#10”. Ensuite, c’est l’état des entrées qui est lu par l’intermédiaire de l’instruction “get”.
Evidemment, en raison de la structure du hardware de la carte, si l’état des relais n’est pas changé en appuyant sur l’un des boutons virtuels, l’UART ne met pas à jour en temps réel la condition des 8 entrées TTL. Toutefois, pour contourner l’obstacle et éviter cette limitation, le programme envoie continuellement le byte équivalent au dernier affichage correspondant pour les relais : ainsi, le CDP6402 est obligé d’effectuer des cycles répétés et constants de lecture/écriture.
Pour finir, avant de passer à la pratique, notez que lorsque l’UART transmet l’état des 8 entrées, il le fait en l’exprimant sous forme de 8 bits, chacun d’entre eux représentant une ligne : donc, “11111111” signifie qu’elles sont toutes ouvertes et que les broches respectives du CDP6402 se trouvent à “1”, tandis que “00000000” indique qu’elles sont toutes à masse (“0” logique). Les bits sont, bien sûr, en ordre, comme sur la table de la vérité qui se trouve dans la figure 7.
Figure 5 : Pour gérer notre interface, nous avons réalisé un logiciel spécifique en Visual Basic, dont voici représenté le menu principal.
Figure 6: En cliquant sur un bouton virtuel, on commute la sortie correspondante ainsi que le relais associé. Le voyant sur le panneau change alors de couleur. “Signal In” indique la présence ou l’absence de l’entrée digitale correspondante.
Figure 7 : Entrées/sorties : table de vérité.
Réalisation pratique
Comme d’habitude, pour réaliser cette interface 8 entrées digitales 8 sorties relais vous commencerez par graver ou vous procurer le circuit imprimé donné à l’échelle 1 en figure 3. Ceci fait, vous pouvez commencer par monter les résistances et les diodes au silicium, en prêtant bien attention, comme toujours, à la polarité de ces dernières.
Réalisez ensuite trois straps en utilisant les restes de pattes de composants que vous venez de souder. Deux entre U1 et U5, un côté détrompeur de U4.
Installez les supports des circuits intégrés en veillant à les positionner avec leur encoche-détrompeur dirigée comme sur le schéma d’implantation des composants qui se trouve en figure 2. Passez aux condensateurs, en faisant toujours bien attention à la polarité des électrolytiques.
Insérez puis soudez le connecteur femelle DB25 (ce doit être un composant spécifique pour circuit imprimé, avec des broches à 90°) dans les trous prévus à cet effet, en l’enfonçant complètement et en soudant toutes ses broches de façon à obtenir un assemblage stable et robuste.
Vous pouvez ensuite monter, l’un après l’autre, les huit relais miniatures 12 volts, qui devront être de type ITT-MZ ou équivalent.
Poursuivez en insérant et en soudant les diodes LED, sans oublier que la cathode se trouve du côté arrondi, puis le quartz de 2,4576 MHz (sans polarité), le pont redresseur (attention à la polarité), la prise pour circuit imprimé servant à l’alimentation et le régulateur intégré 7805, qui doit être placé avec la face métallique plaquée sur le circuit imprimé.
Pour faciliter les connexions entrées/sorties et celle d’alimentation, il est préférable de monter des borniers au pas de 5 mm pour circuit imprimé. Une fois les soudures terminées, et après avoir contrôlé attentivement votre travail, vous pouvez insérer tous les circuits intégrés dans leur support, en faisant attention à faire coïncider les références et à ne pas plier les broches.
La carte est alors prête à être utilisée : il suffit pour cela de l’alimenter avec 12, 13, 14 ou 15 volts continus, en utilisant une pile ou une alimentation de secteur (de préférence, équipée d’une fiche adaptée à la prise du circuit imprimé), capable de débiter 400 milliampères.
On a également l’alternative d’appliquer aux points “IN AC”, le secondaire d’un transformateur 220 V 50 Hz, qui soit capable de fournir 9 ou 10 volts alternatif et au moins 400 mA.
Installation et branchement
Une fois l’interface montée, il faut préparer le PC à l’utiliser : pour cela, vous pouvez utiliser le logiciel en QBasic, dont le listing est donné dans ces pages. Un logiciel plus complet, avec les fenêtres telles que représentées sur les figures 5 et 6 est disponible, sur 3 disquettes, déjà prêt à être installé directement par Windows 95/98. Il suffit de cliquer sur “exécute” en spécifiant la ligne de commande “a:setup”. Le chargement du programme commence alors dans un répertoire (WIN232) créé à la racine du disque dur : lorsque toute la disquette 1 aura été chargée, on verra apparaître à l’écran la demande d’introduction de la seconde disquette, puis de la troisième.
Une fois l’installation terminée, la nouvelle fenêtre apparaît avec l’icône correspondante: pour entrer dans le programme, il faut pointer puis cliquer sur cette icône et l’écran visualise en quelques instants le panneau de contrôle avec 8 boutons pour la gestion des différents relais, un bouton (FIN) pour sortir, et huit voyants placés chacun sous l’un des boutons.
Au-dessus de ces derniers se trouvent d’autres voyants, rectangulaires cette fois, indiquant si le relais correspondant a été activé ou désactivé. Puis on trouve, en bas à gauche, la zone réservée à la sélection du port série sur lequel connecter la carte : en pointant la souris et en cliquant, on active l’un des COM disponibles (COM1 et COM2 apparaissent s’il y a 2 ports série, ou bien COM1, COM2, COM3 et COM4 s’il y en a 4).
A ce sujet, souvenez-vous qu’au départ le logiciel se prépare pour COM2. Si le port série recherché est déjà utilisé au moment de l’envoi du programme, une fenêtre apparaît, affichant “port inexistant ou déjà utilisé par un autre périphérique” et un bouton “OK” sur lequel il faut pointer pour poursuivre.
Le message apparaît également si on clique sur la case d’un autre COM et que celui-ci est occupé, par exemple par la souris (qui se trouve en général sur COM1).
Pour changer l’état d’un relais, il suffit de pointer et de cliquer sur la touche qui correspond à son chiffre : par exemple, si on voulait exciter RL2 on devrait actionner le bouton 2. L’activation est rendue visible par l’allumage du voyant rouge qui figure au dessus (carré), tandis qu’en relâchant le relais, ce voyant s’éteint et devient noir.
Bien sur, en cliquant une fois, on actionne le relais correspondant, et la fois suivante, on le remet au repos, etc. Quant aux voyants des entrées, tous sont noirs lorsque leur ligne respective est déconnectée (la broche de l’UART au niveau logique “1”) et rouges si elle est fermée à masse (la broche au niveau logique “0”).
Pour sortir du programme, il suffit de pointer la souris sur le bouton “FIN” et de cliquer : le voyant qui se trouve dessous passe du rouge au noir, et le cadre “ESC” apparaît au centre de l’écran, à l’intérieur duquel apparaît la question “Êtes-vous certain de vouloir sortir ?” et sous les boutons “Oui” (mis en évidence) et “Non” ; il suffit de cliquer sur “Oui” ou d’appuyer sur la touche ENTER du clavier pour abandonner la procédure, en revenant à la fenêtre précédente, ou bien au menu d’envoi de Windows 95/98.
Evidemment, pour essayer la carte, il faut tout d’abord l’alimenter, puis la connecter à l’ordinateur : le panneau virtuel fonctionne également, mais sans effets pratiques. Pour faire la connexion, procurez-vous un câble série ayant un connecteur femelle d’un côté et un mâle de l’autre, DB25 bien sûr.
Insérez la prise femelle du câble dans le port série libre de l’ordinateur et la prise mâle dans le connecteur qui se trouve sur la carte.
Il vaut mieux effectuer cette opération lorsque l’ordinateur est éteint afin d’éviter d’endommager la logique interne. Lors de l’utilisation, souvenez-vous que chaque relais supporte un courant de 1 ampère et peut travailler en circuits alimentés par un maximum de 250 volts continus : si l’on doit contrôler des charges qui consomment plus ou qui sont soumises à des tensions supérieures, il est possible d’utiliser chaque relais comme pilote, en excitant, grâce à leurs contacts, les bobines de relais de puissance.
Sachez que les entrées digitales peuvent acquérir des niveaux logiques provenant de plusieurs types de circuits.
Compte tenu de la présence des résistances de “pull-up”, il vous est possible:
- de connecter directement des sorties logiques standard type TTL ou CMOS.
- de relier des contacts “sec” de relais par exemple.
- de connecter des sorties à transistor de type NPN montés en “collecteur ouvert” (les résistances de “pullup” sont déjà présentes sur la carte : R11 à R18) avec émetteur à masse.
L’ordinateur est désormais considéré comme un outil à tout faire, auquel la technique moderne et l’imagination de chacun cherchent à confier de plus en plus de taches.
On peut utiliser son PC pour faire ses courriers, suivre son compte bancaire, établir des prévisions de dépense, etc. En utilisant le PC et Internet, on peut rechercher, et obtenir, des informations en provenance de banques de données du monde entier, faire ses courses, acheter une voiture, s’abonner à un nombre incalculable de services.
Malgré cela, la machine n’est pas utilisée à cent pour cent, loin s’en faut. Il est donc également possible de faire en sorte que cet ordinateur familial devienne pour la maison une sorte de majordome, assumant le rôle d’une alarme, veillant à la surveillance des bâtiments et au portail électrique.
Tout ceci grâce à des interfaces spécifiques que l’on peut d’ores et déjà réaliser et mettre en oeuvre.
Si vous avez un quelconque doute à ce sujet, observez le circuit proposé dans ces pages : une interface pouvant être reliée à l’un des ports série du PC (COM1, COM2…), capable de contrôler jusqu’à 8 charges indépendantes les unes des autres, par l’intermédiaire de relais, simples ou assistés, et d’acquérir l’état d’un maximum de 8 entrées digitales. Le tout est contenu sur une carte compacte réalisée à l’aide de composants bon marché.
Cette carte permet la lecture directe de niveaux logiques TTL/compatibles, et non pas de valeurs analogiques.
C’est pourquoi elle convient parfaitement aux applications de l’automatisation, puisqu’elle permet d’activer une charge et d’en vérifier ensuite l’effet, ou bien de garder sous contrôle des lignes ou des capteurs avec sortie à relais ou, tout du moins, dont la sortie peut s’exprimer uniquement en deux états.
Voyons à présent dans le détail comment cette carte et ses programmes de gestion ont été réalisés.
En fait, pour gérer l’unité, il faut utiliser un logiciel spécial, et voilà la raison pour laquelle nous avons développé un programme capable de fonctionner sous Windows 95/98, avec lequel il est possible de disposer d’un panneau de contrôle vidéo virtuel équipé d’un bouton pour chacun des relais et d’une diode lumineuse pour chacune des entrées TTL.
Ce programme permet l’utilisation manuelle de la carte pour des applications génériques. Pour des applications spécifiques, on peut utiliser - ou mieux, insérer à l’intérieur de programmes spéciaux - la routine en Qbasic appelée 8180.BAS, qui se trouve dans ces pages et qui est capable de contrôler toutes les fonctions de notre montage.
Schéma électrique
Mais laissons pour le moment de côté le logiciel et retournons aux composants, sachant que le coeur du circuit est l’UART U5, c’est-à-dire le CDP6402 de chez Harris.
Il permet de communiquer avec l’ordinateur lorsque celui-ci l’interroge par l’intermédiaire de commandes transmises sur la ligne via le port série.
Le signal d’horloge (clock) avec lequel le “Baud Rate” de la connexion s’opère, est généré par le circuit intégré U2, un oscillateur/diviseur programmable 74HC4060, contrôlé par le quartz Q1.
Nous avons donc les 8 bits d’entrée (le bus-données, indiqué “INPUT”) du CDP6402 reliés aux lignes respectives d’entrée par l’intermédiaire d’une résistance et tous équipés de résistances de “pull-up” (tirage), nécessaires à maintenir chacun d’eux au niveau haut (état logique 1) en position de repos.
En reliant l’une de ces entrées de la carte à masse, on bascule la broche correspondante de l’UART au niveau logique 0, tandis qu’en la laissant déconnectée, on maintient le niveau 1.
L’état des 8 bits est transmis à l’ordinateur par l’U5 après chaque réception de commande envoyée par le PC.
La communication série se fait par l’intermédiaire d’un classique MAX232 (appelé U1 sur le schéma), un convertisseur TTL/RS232-C Maxim, munis de canaux de transmission et de réception pour l’adaptation des niveaux logiques de la carte en +12/–12 volts, et ceux du PC en TTL (0/5 volts), comme prévu par le standard EIA RS232-C.
Le bus-données RR1 à RR8, sur lequel on prélève en parallèle les huit bits reçus sur le canal série (broche 20, RRI), gère les charges, c’est-à-dire les 8 relais de sortie.
Un réseau darlington ULN2803 relié à ce même bus, contrôle les bobines des relais en leur donnant le courant nécessaire : il s’agit d’un circuit intégré à 18 broches à double ligne d’entrée, contenant huit darlingtons pouvant être pilotés par des signaux de type TTL, capables de débiter en sortie (sur le collecteur) jusqu’à 500 milliampères.
Le fonctionnement de chaque section est en mode “sink”, c’est-à-dire que les sorties, étant de type “open-collector” (à collecteur ouvert), elles servent d’interrupteurs vers la masse.
La bobine d’un relais est reliée à chaque étage de l’ULN2803, qui est directement excité par l’un des bits de sortie de l’UART U5 (“1” en entrée, provoque “0” logique à la sortie correspondante).
Chacune de ces bobines est munie d’une diode LED reliée en parallèle et protégée par une résistance.
En s’allumant, la LED permet de visualiser l’état de sa propre sortie, c’est-à-dire de savoir si elle est activée (relais excité = diode LED allumée) ou bien au repos (diode LED éteinte).
L’alimentation de la carte est fournie par le pont de diodes PT1 qui redresse la tension alternative d’entrée (9 ou 10V) et envoie aux bornes des condensateurs C1 et C2 une tension continue pour être filtrée. Cette tension allume la diode LED DL9 qui sert d’indicateur de fonctionnement.
Le régulateur de tension intégré (U6), reçoit environ 12 volts redressés et filtrés et génère du 5 volts stabilisé qu’il envoie ensuite à l’UART, au générateur de clock U2 ainsi qu’au convertisseur TTL/RS232-C U1.
Soulignons que le pont à diodes permet également de tout alimenter en tension continue (12/15 volts), ce qui offre l’avantage de ne pas avoir à se préoccuper de la polarité de la liaison. En effet, entre le “+” et le “–” de PT1, on a toujours une seule polarité, la bonne, indépendamment du sens de la tension appliquée sur les bornes “IN AC”.
Figure 1 : Schéma électrique de l’interface PC 8 entrées digitales 8 sorties relais.
Figure 2 : Schéma d’implantation de l’interface E/S pour PC.
Figure 3: Dessin du circuit imprimé de l’interface PC à l’échelle 1.
Liste des composants
R1 = 1 kΩ
R2 = 1 kΩ
R3 = 1 kΩ
R4 = 1 kΩ
R5 = 1 kΩ
R6 = 1 kΩ
R7 = 1 kΩ
R8 = 1 kΩ
R9 = 1 kΩ
R10 = 10 MΩ
R11 = 3,3 kΩ
R12 = 3,3 kΩ
R13 = 3,3 kΩ
R14 = 3,3 kΩ
R15 = 3,3 kΩ
R16 = 3,3 kΩ
R17 = 3,3 kΩ
R18 = 3,3 kΩ
R19 = 390 Ω
R20 = 390 Ω
R21 = 390 Ω
R22 = 390 Ω
R23 = 390 Ω
R24 = 390 Ω
R25 = 390 Ω
R26 = 390 Ω
C1 = 470 μF 25 V électrolytique
C2 = 100 nF multicouche
C3 = 220 μF 16VL électrolytique
C4 = 100 nF multicouche
C5 = 1 μF 16VL électrolytique
C6 = 1 μF 16VL électrolytique
C7 = 1 μF 16VL électrolytique
C8 = 1 μF 16VL électrolytique
C9 = 100 nF multicouche
C10 = 22 pF céramique
C11 = 22 pF céramique
DZ1 = Diode zener 5,1 V 1/2 W
DZ2 = Diode zener 5,1 V 1/2 W
DZ3 = Diode zener 5,1 V 1/2 W
DZ4 = Diode zener 5,1 V 1/2 W
DZ5 = Diode zener 5,1 V 1/2 W
DZ6 = Diode zener 5,1 V 1/2 W
DZ7 = Diode zener 5,1 V 1/2 W
DZ8 = Diode zener 5,1 V 1/2 W
LD1 = LED rouge 5 mm
LD2 = LED rouge 5 mm
LD3 = LED rouge 5 mm
LD4 = LED rouge 5 mm
LD5 = LED rouge 5 mm
LD6 = LED rouge 5 mm
LD7 = LED rouge 5 mm
LD8 = LED rouge 5 mm
LD9 = LED verte 5 mm
U1 = Intégré MAX232
U2 = Intégré 74HC4060
U3 = Intégré ULN2803
U4 = Intégré HFC40106
U5 = UART CDP6402
U6 = Régulateur 7805
RL1 = Relais 12 V miniature
RL2 = Relais 12 V miniature
RL3 = Relais 12 V miniature
RL4 = Relais 12 V miniature
RL5 = Relais 12 V miniature
RL6 = Relais 12 V miniature
RL7 = Relais 12 V miniature
RL8 = Relais 12 V miniature
PT1 = Pont redresseur 1 A
Q1 = Quartz 2,4576 MHz
Divers :
1 Prise alimentation BT pour ci
1 Support 2 x 7 broches
2 Support 2 x 8 broches
1 Support 2 x 9 broches
1 Support 2 x 20 broches
11 Borniers 3 pôles
1 Prise DB25 femelle 90° pour ci
1 Circuit imprimé réf. S265.
Sauf indication contraire, toutes les résistances sont des 1/4 W à 5 %.
Notre prototype, une fois le montage terminé. La carte doit être alimentée avec une tension de 12 volts, fournie par une alimentation secteur capable de débiter 400 mA minimum.
Figure 4 : Brochage de l’UART CDP6402 fabriqué par Harris Semiconductor.
L’UART, décomposition du fonctionnement
A la lumière de ce qui vient d’être dit, vous devez commencer à avoir une idée suffisamment précise du fonctionnement de l’unité périphérique.
Il est toutefois préférable, pour mieux comprendre, de s’arrêter sur l’élément principal, c’est-à-dire celui qui coordonne non seulement la réception des commandes, mais également leur envoi totalement automatique, géré seulement par sa propre horloge et par l’arrivée de données sur le canal RRI, des informations relatives aux entrées TTL vers l’ordinateur.
Nous parlons, bien sûr, de l’UART (Universal Asinchronus Receiver Transmitter) U5, le CDP6402, qui permet de transformer en parallèle les données série provenant du port RS232-C, et de mettre en série celles disponibles sur les entrées à 8 bits parallèles.
L’UART est un système complémentaire et la solution idéale pour communiquer avec le RS232-C de l’ordinateur, lequel transforme les niveaux du bus-données interne de la carte mère en informations séquentielles.
Le CDP6402 (U5) est un circuit intégré CMOS fabriqué par Harris et contenu dans un boîtier plastique 2 x 20 broches, garantissant une vitesse de communication supérieure à 200 kilobits/seconde à 5 volts, et de 400 kilobits/seconde à 10 volts.
Il est en outre idéal pour notre montage : en position de repos, il est en état de réception et il attend l’arrivée de données sur l’entrée série (broche 20 - RRI), tandis que lorsqu’il est excité par le bit de “start” (démarrage), il reçoit les impulsions successives et les distribue sur les sorties respectives.
L’UART est capable de reconnaître le format standard de la communication série, c’est-à-dire 8 bits de données précédés d’un bit de démarrage et suivis d’un bit de parité (“0” si la somme des 8 bits est un nombre décimal pair, et “1” si le résultat est impair), et il s’excite à l’arrivée du premier bit.
L’UART, connaissant la vitesse de transfert (“Baud-Rate”, identique à celle du port COM du PC) et par conséquent la durée de chaque impulsion, peut activer un démultiplexeur, lequel, après le front de descente du bit d’arrêt (niveau logique “0”), prend, pendant une brève période, et séquentiellement sur les 8 sorties du bus parallèle, le même état logique que l’entrée RRI, reformant ainsi le byte d’origine.
En bref, pendant l’intervalle du premier bit, il relie l’entrée RRI et le buffer de la sortie RBRI, puis, pendant celui du second, il relie l’entrée RRI et la sortie RBR2 du second bit du bus parallèle, et ainsi de suite jusqu’au huitième.
Il lit aussi le bit de parité envoyé par l’ordinateur par l’intermédiaire du canal série et le compare, dans un réseau logique, à celui qu’il obtient en faisant la somme des 8 bits des données. Si les deux coïncident, le buffer de sortie s’active en permettant aux broches RBR1/RBR8 de prélever les signaux parallèles. Dans le cas contraire, il est placé en “three-state” en attendant d’être annulé dès la réception suivante (pour la précision, à la commutation “1”/”0” de la broche 18…). C’est ainsi que les données relevées et considérées non valables ne sortent pas du bus de réception RRn.
Rappelons que ce bus est relié aux entrées du réseau Darlington U3 (ULN2803) qui contrôle les relais de la façon que nous avons déjà décrite. En ce qui concerne le fonctionnement inverse, c’est-à-dire la transmission vers le PC, l’UART U5 dispose d’une seconde section qui opère essentiellement à l’envers par rapport à ce que nous venons de voir : il y a un second bus des données, cette fois composé de 8 entrées, en correspondance des broches TBR1/TBR8 (broches de 26 à 33), et d’une sortie série (TRO) reliée à la broche 25.
Le circuit intégré transmet automatiquement après avoir reçu et complété la procédure de réception : en fait, chaque cycle de RX (réception) est toujours suivi d’un cycle de TX (transmission), et ce sans l’intervention d’autres éléments externes.
Le CDP6402 prélève les données sur le bus TBRn et, à l’aide du multiplexeur interne, il les dispose une par une en file sur la ligne de transmission (broche TRO) toujours à la vitesse dictée par l’horloge externe et commune à la conversion série/parallèle, de façon à ce que l’ordinateur puisse les lire sans aucune difficulté.
Evidemment, un bit de démarrage est inséré devant le byte et un bit de parité à la fin (calculé par la logique interne sur les 8 bits transmis), suivi par un bit d’arrêt.
Une fois cette phase d’envoi terminée, l’UART s’initialise et revient automatiquement en état de réception, attendant une nouvelle impulsion de démarrage sur la broche RRI (20) pour reprendre un autre cycle.
L’UART en plus simple
Ces explications devraient suffire à comprendre, même dans les grandes lignes, le fonctionnement du circuit.
Mais si vous voulez en savoir plus, nous pouvons approfondir et voir ce qui se produit pas à pas dans le CDP6402.
En partant de la réception : les données sous forme série arrivent par le port RS232-C de l’ordinateur, à travers le convertisseur MAX232, à la broche RRI (20) puis, une fois la transmission terminée, elles rejoignent sous forme parallèle les 8 sorties RBR1/RBR8.
Pour signaler que les données ont été correctement reçues et donc transférées aux bus de sortie, la broche DR (19, Data-Ready) prend le niveau logique haut (“1”).
Nous observerons un peu plus loin l’importance déterminante de cette procédure dans le processus de fonctionnement du circuit intégré Harris qui, autrement, serait incapable à la fin de chaque cycle de réception, d’envoyer des données à l’ordinateur.
Pour préparer l’UART à recevoir un nouveau bit, il faut lui donner une impulsion d’initialisation en faisant basculer la broche DRR (18) au niveau logique “0”.
Cette opération impose le niveau logique “0” à la broche DR afin de signaler qu’aucune nouvelle donnée n’est disponible. Elle initialise également le buffer contenant les précédentes données mais, évidemment, ignore la bascule de sortie.
Le fonctionnement de la section de réception est assuré et rythmé par le signal d’horloge appliqué sur la broche RRC (17), qui doit avoir une fréquence égale à 16 fois le “Baud-Rate”, c’est-à-dire la vitesse de transfert des données, réglée par défaut à 9 600 bits/s. Pour obtenir cette valeur, il faut partir d’environ 153 kHz, obtenus grâce au compteur/diviseur U2, dont l’oscillateur principal travaille à une fréquence de 2,45760 MHz.
Remarquez que pour une question pratique, nous avons relié les broches d’entrée 40 et 17 de l’U5 (RRC et TRC) de façon à piloter avec un seul signal d’horloge les deux sections, réceptrice et émettrice, en simplifiant ainsi le circuit.
Comme le quartz oscille à 2,4576 MHz et que le 74HC4060, il a été configuré pour obtenir un facteur de division de 1/16, en divisant par 16, on obtient une horloge à exactement 153 600 Hz, valeur idéale pour le fonctionnement du canal série à 9 600 bauds (le CDP6402 nécessite justement une fréquence d’horloge de 9 600 x 16 = 153600 Hz).
Une fois la procédure de réception des données terminée, le circuit intégré se commute automatiquement en mode transmission lorsqu’il désactive le canal TX et lit l’état logique de chacune des entrées du bus (de TBR1 à TBR8).
Remarquons à présent que, suite à la connexion réalisée avec la porte “NOT” U4, l’état logique de la broche 19 influence celui des broches 18 et 23, en réalisant ainsi une sorte de boucle qui permet à l’UART d’acquérir et de transmettre les données des 8 entrées sans aucun signal externe, donc de façon autonome.
En fait, après la transition “0”/”1” logique sur la broche 19, due à la fin de la phase de réception (DR passe à l’état logique “1” quand les données sortent du bus RBRn), le circuit U4 fait basculer au niveau logique “0” les broches 18 et 23, en initialisant le registre de réception.
Une fois l’impulsion terminée, la sortie de la porte “NOT” prend à nouveau à l’état logique “1”, ce qui active la phase d’envoi des données lues sur les 8 entrées : le passage “0”/”1” sur la broche TBRL (23) permet de transférer les 8 bits dans un registre interne de l’UART appelé “Transmitter Buffer Register” (TBR), duquel ils seront transmis une fois l’envoi d’un éventuel byte précédent terminé.
Il faut observer que la broche TBRE (22) passe au niveau logique “1” lorsque le transfert du bus d’entrée au registre TBR est terminé, tandis qu’une autre broche de contrôle (24, TRE) prend l’état logique “1” après que l’opération de transmission de la broche de sortie TRO (broche 25) soit terminée.
Ces signaux que l’on vient tout juste d’évoquer à titre d’information, ne sont pas utilisés par notre montage.
Comme pour la réception, le signal d’horloge a une fréquence de 16 fois le “Baud-Rate”, il nous a semblé pratique de relier entre-elles les broches TRC et RRC.
Une fois l’envoi des données sur la ligne série terminé, l’UART s’arrête et attend l’arrivée de nouvelles impulsions (bit de démarrage) sur la broche 20. Dans ce cas-là, il démarre un nouveau cycle, toujours avec les mêmes modalités.
En ce qui concerne l’interface, la carte est connectée à l’ordinateur par l’intermédiaire d’une ligne à 2 fils plus masse, qui correspondent aux broches TXD (2), RXD (3) et GND (masse) du port série.
Le rôle du MAX 232
Etant donné que le reste du circuit fonctionne avec des niveaux TTL de type 0/5 V, le circuit intégré MAX232 procède à l’indispensable conversion: le standard EIA RS232-C prévoit que le “0” logique du canal des données (Space) soit égal à +12V, tandis que le “1” logique (Mark) soit égal à –12 V.
Le MAX232 transforme la tension négative appliquée sur sa broche 8 (comprise entre –8 et –15 V) en niveau logique haut (“1”) TTL (+5 V) et la tension positive (Space), toujours présente sur la broche 8 et dans la même gamme, en niveau logique bas (“0”) TTL (0 V).
Par contre, en transmission, le MAX232 transforme l’état logique “1” TTL de la broche 10, provenant de la broche 7, en –10 V, et il convertit donc le “0” logique sur la broche 10, toujours provenant de la broche 7, en +10 V.
Le logiciel
Le moment est venu de faire quelques observations sur la signification des données transmises par le PC et sur l’utilisation de la routine en QBasic 8180.BAS.
Fonctionnement des relais
L’état des huit relais de sortie est équivalent à celui des bits correspondants extraits du byte que l’ordinateur envoie le long de la ligne sérielle. Chacun d’eux a un poids binaire donné. Le relais correspondant sera excité si le bit vaut “1” et au repos si, au contraire, le bit vaut “0”.
Ce qui semble assez logique, considérant qu’en fait on utilise un UART et que, par conséquent, on peut avoir en forme parallèle, donc sur huit lignes différentes, un byte de 8 bits.
Ainsi, pour pouvoir activer un relais précis, il faut générer un byte qui contienne le bit correspondant à “1” logique.
Les correspondances du circuit sont les suivantes : D0 = RL1, D1 = RL2, D2 = RL3, D3 = RL4, D4 = RL5, D5 = RL6, D6 = RL7 et D7 = RL8.
Si l’on voulait, par exemple, déclencher RL8, il faudrait que le byte soit de type “10000000”, afin que le poids du “1” qui se trouve à gauche soit le plus important (le huitième bit).
Pour contrôler les sorties de la carte, le logiciel force l’ordinateur à envoyer sur le port série un nombre, exprimé en forme binaire de 8 bits, pour lequel les niveaux logiques “1” correspondent aux relais à activer et les “0”, à ceux qui, au contraire, doivent rester au repos. Evidemment, chaque relais a son propre nombre de commande, et pour en activer plusieurs, il suffit de former différentes combinaisons de bit à “1” logique.
Voici un exemple qui peut servir à clarifier les choses: le RL4, dont on sait qu’il se déclenche si la combinaison “00001000” arrive en série, est associé à un byte correspondant au nombre binaire 8, qui se compose en décimal de la somme 0 x 128 + 0 x 64 + 0 x 32 + 0 x 16 + 1 x 8 + 0 x 4 + 0 x 2 + 0 x 1 = 8, ce qui signifie que pour exciter RL4, l’ordinateur doit générer le nombre 8.
Pour citer d’autres exemples, supposons que le logiciel transmette “20”, représenté en binaire à 8 bits par “00010100”, alors, dans ce cas, les relais correspondants aux bits DB2 et DB4, donc RL3 et RL5, s’activeraient.
La combinaison “00000000”, c’est-à-dire “0” binaire, maintient tous les relais au repos, tandis que le nombre “256”, correspondant à “11111111” binaire, les fait tous se déclencher, du premier jusqu’au dernier.
En plus de produire les combinaisons déterminées par les boutons sur l’écran (les boutons carrés, numérotés de 1 à 8, qui se trouvent sur le tableau des commandes, sous Windows), la routine développée dans Qbasic (8180.BAS) effectue l’envoi du byte qui provoque le début de la conversion par l’intermédiaire de l’instruction “print#10”. Ensuite, c’est l’état des entrées qui est lu par l’intermédiaire de l’instruction “get”.
Evidemment, en raison de la structure du hardware de la carte, si l’état des relais n’est pas changé en appuyant sur l’un des boutons virtuels, l’UART ne met pas à jour en temps réel la condition des 8 entrées TTL. Toutefois, pour contourner l’obstacle et éviter cette limitation, le programme envoie continuellement le byte équivalent au dernier affichage correspondant pour les relais : ainsi, le CDP6402 est obligé d’effectuer des cycles répétés et constants de lecture/écriture.
Pour finir, avant de passer à la pratique, notez que lorsque l’UART transmet l’état des 8 entrées, il le fait en l’exprimant sous forme de 8 bits, chacun d’entre eux représentant une ligne : donc, “11111111” signifie qu’elles sont toutes ouvertes et que les broches respectives du CDP6402 se trouvent à “1”, tandis que “00000000” indique qu’elles sont toutes à masse (“0” logique). Les bits sont, bien sûr, en ordre, comme sur la table de la vérité qui se trouve dans la figure 7.
Figure 5 : Pour gérer notre interface, nous avons réalisé un logiciel spécifique en Visual Basic, dont voici représenté le menu principal.
Figure 6: En cliquant sur un bouton virtuel, on commute la sortie correspondante ainsi que le relais associé. Le voyant sur le panneau change alors de couleur. “Signal In” indique la présence ou l’absence de l’entrée digitale correspondante.
REM ****************************************************** REM File: 8I8O.BAS Data: 01.04.00 REM INTERFACE 8 ENTREES 8 SORTIES SUR PORT RS232 REM (C) 2000 E.L.M. REM ****************************************************** DIM b AS STRING * 1 OPEN “COM2:9600,N,8,1” FOR RANDOM AS #10 DO prog: a$ = “” DO WHILE a$ = “” OR VAL(a$) < 0 OR VAL(a$) > 255 CLS PRINT “Entrez une valeur de SORTIE entre 0 et 255 (A = abandonner)“; INPUT a$ LOOP IF a$ = “a” OR a$ = “A” THEN CLOSE #10 END END IF PRINT #10, CHR$(VAL(a$)); GET #10, 1, b PRINT “Entrées = “; ASC(b) SLEEP 5 LOOPListing du logiciel en QBasic destiné au contrôle de notre interface. Ce logiciel permet de gérer l’état de chacun des relais et de lire l’état logique appliqué sur les 8 entrées digitales (“input”) de la carte.
Figure 7 : Entrées/sorties : table de vérité.
Borne numéro | Numéro bit | Poids bit |
1 | 0 | 1 |
2 | 1 | 2 |
3 | 2 | 4 |
4 | 3 | 8 |
5 | 4 | 16 |
6 | 5 | 32 |
7 | 6 | 64 |
8 | 7 | 128 |
Réalisation pratique
Comme d’habitude, pour réaliser cette interface 8 entrées digitales 8 sorties relais vous commencerez par graver ou vous procurer le circuit imprimé donné à l’échelle 1 en figure 3. Ceci fait, vous pouvez commencer par monter les résistances et les diodes au silicium, en prêtant bien attention, comme toujours, à la polarité de ces dernières.
Réalisez ensuite trois straps en utilisant les restes de pattes de composants que vous venez de souder. Deux entre U1 et U5, un côté détrompeur de U4.
Installez les supports des circuits intégrés en veillant à les positionner avec leur encoche-détrompeur dirigée comme sur le schéma d’implantation des composants qui se trouve en figure 2. Passez aux condensateurs, en faisant toujours bien attention à la polarité des électrolytiques.
Insérez puis soudez le connecteur femelle DB25 (ce doit être un composant spécifique pour circuit imprimé, avec des broches à 90°) dans les trous prévus à cet effet, en l’enfonçant complètement et en soudant toutes ses broches de façon à obtenir un assemblage stable et robuste.
Vous pouvez ensuite monter, l’un après l’autre, les huit relais miniatures 12 volts, qui devront être de type ITT-MZ ou équivalent.
Poursuivez en insérant et en soudant les diodes LED, sans oublier que la cathode se trouve du côté arrondi, puis le quartz de 2,4576 MHz (sans polarité), le pont redresseur (attention à la polarité), la prise pour circuit imprimé servant à l’alimentation et le régulateur intégré 7805, qui doit être placé avec la face métallique plaquée sur le circuit imprimé.
Pour faciliter les connexions entrées/sorties et celle d’alimentation, il est préférable de monter des borniers au pas de 5 mm pour circuit imprimé. Une fois les soudures terminées, et après avoir contrôlé attentivement votre travail, vous pouvez insérer tous les circuits intégrés dans leur support, en faisant attention à faire coïncider les références et à ne pas plier les broches.
La carte est alors prête à être utilisée : il suffit pour cela de l’alimenter avec 12, 13, 14 ou 15 volts continus, en utilisant une pile ou une alimentation de secteur (de préférence, équipée d’une fiche adaptée à la prise du circuit imprimé), capable de débiter 400 milliampères.
On a également l’alternative d’appliquer aux points “IN AC”, le secondaire d’un transformateur 220 V 50 Hz, qui soit capable de fournir 9 ou 10 volts alternatif et au moins 400 mA.
Installation et branchement
Une fois l’interface montée, il faut préparer le PC à l’utiliser : pour cela, vous pouvez utiliser le logiciel en QBasic, dont le listing est donné dans ces pages. Un logiciel plus complet, avec les fenêtres telles que représentées sur les figures 5 et 6 est disponible, sur 3 disquettes, déjà prêt à être installé directement par Windows 95/98. Il suffit de cliquer sur “exécute” en spécifiant la ligne de commande “a:setup”. Le chargement du programme commence alors dans un répertoire (WIN232) créé à la racine du disque dur : lorsque toute la disquette 1 aura été chargée, on verra apparaître à l’écran la demande d’introduction de la seconde disquette, puis de la troisième.
Une fois l’installation terminée, la nouvelle fenêtre apparaît avec l’icône correspondante: pour entrer dans le programme, il faut pointer puis cliquer sur cette icône et l’écran visualise en quelques instants le panneau de contrôle avec 8 boutons pour la gestion des différents relais, un bouton (FIN) pour sortir, et huit voyants placés chacun sous l’un des boutons.
Au-dessus de ces derniers se trouvent d’autres voyants, rectangulaires cette fois, indiquant si le relais correspondant a été activé ou désactivé. Puis on trouve, en bas à gauche, la zone réservée à la sélection du port série sur lequel connecter la carte : en pointant la souris et en cliquant, on active l’un des COM disponibles (COM1 et COM2 apparaissent s’il y a 2 ports série, ou bien COM1, COM2, COM3 et COM4 s’il y en a 4).
A ce sujet, souvenez-vous qu’au départ le logiciel se prépare pour COM2. Si le port série recherché est déjà utilisé au moment de l’envoi du programme, une fenêtre apparaît, affichant “port inexistant ou déjà utilisé par un autre périphérique” et un bouton “OK” sur lequel il faut pointer pour poursuivre.
Le message apparaît également si on clique sur la case d’un autre COM et que celui-ci est occupé, par exemple par la souris (qui se trouve en général sur COM1).
Pour changer l’état d’un relais, il suffit de pointer et de cliquer sur la touche qui correspond à son chiffre : par exemple, si on voulait exciter RL2 on devrait actionner le bouton 2. L’activation est rendue visible par l’allumage du voyant rouge qui figure au dessus (carré), tandis qu’en relâchant le relais, ce voyant s’éteint et devient noir.
Bien sur, en cliquant une fois, on actionne le relais correspondant, et la fois suivante, on le remet au repos, etc. Quant aux voyants des entrées, tous sont noirs lorsque leur ligne respective est déconnectée (la broche de l’UART au niveau logique “1”) et rouges si elle est fermée à masse (la broche au niveau logique “0”).
Pour sortir du programme, il suffit de pointer la souris sur le bouton “FIN” et de cliquer : le voyant qui se trouve dessous passe du rouge au noir, et le cadre “ESC” apparaît au centre de l’écran, à l’intérieur duquel apparaît la question “Êtes-vous certain de vouloir sortir ?” et sous les boutons “Oui” (mis en évidence) et “Non” ; il suffit de cliquer sur “Oui” ou d’appuyer sur la touche ENTER du clavier pour abandonner la procédure, en revenant à la fenêtre précédente, ou bien au menu d’envoi de Windows 95/98.
Evidemment, pour essayer la carte, il faut tout d’abord l’alimenter, puis la connecter à l’ordinateur : le panneau virtuel fonctionne également, mais sans effets pratiques. Pour faire la connexion, procurez-vous un câble série ayant un connecteur femelle d’un côté et un mâle de l’autre, DB25 bien sûr.
Insérez la prise femelle du câble dans le port série libre de l’ordinateur et la prise mâle dans le connecteur qui se trouve sur la carte.
Il vaut mieux effectuer cette opération lorsque l’ordinateur est éteint afin d’éviter d’endommager la logique interne. Lors de l’utilisation, souvenez-vous que chaque relais supporte un courant de 1 ampère et peut travailler en circuits alimentés par un maximum de 250 volts continus : si l’on doit contrôler des charges qui consomment plus ou qui sont soumises à des tensions supérieures, il est possible d’utiliser chaque relais comme pilote, en excitant, grâce à leurs contacts, les bobines de relais de puissance.
Sachez que les entrées digitales peuvent acquérir des niveaux logiques provenant de plusieurs types de circuits.
Compte tenu de la présence des résistances de “pull-up”, il vous est possible:
- de connecter directement des sorties logiques standard type TTL ou CMOS.
- de relier des contacts “sec” de relais par exemple.
- de connecter des sorties à transistor de type NPN montés en “collecteur ouvert” (les résistances de “pullup” sont déjà présentes sur la carte : R11 à R18) avec émetteur à masse.
Aucun commentaire:
Enregistrer un commentaire