Cette unité périphérique à relais, offre la possibilité de commander jusqu’à huit appareils et de lire autant de lignes digitales, ainsi que deux lignes analogiques, en utilisant le port sériel de n’importe quel ordinateur compatible PC.
Le développement à grande échelle des systèmes d’automatisation de toutes sortes, à fait apparaître dans les foyers, dans les lieux de travail et même dans les lieux publics, des télécommandes IR, des radiocommandes, des claviers en tous genres, de petites centrales destinées à la commande de toutes sortes d’appareils électriques, des serrures motorisés, des commandes d’alarmes, d’éclairages, de chauffages, etc.
Pour plus de commodité, pour chacun des appareils, il y a un contrôle, un fils, un activateur, tant est si bien, qu’il devient de plus en plus difficile de les gérer tous.
Confronté à ce problème, la meilleure solution est de confier le contrôle à un seul élément et qu’existe-t-il de mieux que l’ordinateur personnel (PC) ?
En fait, dotant cet ordinateur d’un programme approprié, il devient la centrale de commande de tous les automatismes de la maison, sans pour autant être monopolisé par cette tâche.
Naturellement, le PC ne peut pas effectuer ces opérations tout seul. Par l’intermédiaire d’un des deux ports de communication, il peut analyser les données nécessaires et intervenir en conséquence, de façon automatique ou assistée par l’utilisateur.
Le pourquoi et le comment !
Le projet que nous vous proposons dans ces lignes est une interface générique pour PC. Elle est équipée de 8 sorties sur relais et de 8 entrées TTL, actives au 0 logique. Par ailleurs, elle dispose de deux canaux analogiques, capables de lire des tensions continues d’une valeur comprise entre 0 et 5 volts.
Toutes les phases de contrôle et d’acquisition se font pratiquement en temps réel, grâce à une routine du programme, qui gère l’ordinateur en le faisant communiquer avec le périphérique par l’intermédiaire d’un des deux ports sériels.
Notre carte, dispose de deux entrées analogiques gérées par un convertisseur A/D interne au microcontrôleur PIC16F876-MF357 qui préside au fonctionnement de la totalité du système.
Le programme implanté dans le microcontrôleur, permet de se passer d’un UART, employé pour la communication, comme c’était le cas dans la précédente version (ELM numéro 13, page 37 et suivantes).
Le microcontrôleur permet donc de détecter l’arrivée d’un octet sur la ligne série, de présenter ce dernier sur les 8 sorties relatives aux relais, puis de répondre en lisant les entrées TTL et en envoyant à l’ordinateur, un octet contenant leurs états, puis un autre, qui exprime la sortie du convertisseur A/D, relatif à la mesure de la première entrée analogique, enfin, le dernier octet, qui contient la lecture (toujours sur 8 bits) de la seconde entrée analogique.
Quant au programme, 3 modes de fonctionnement ont été prévus. Deux, sont les émulations pour la carte E/S générique avec UART (ELM 13) et pour un prototype, non décrit, disposant d’une unique entrée analogique et d’un UART.
Le troisième mode est celui qui est appelé “Option Sécurité”. Il s’applique tout particulièrement à l’interface, objet de cet article.
Dans ce dernier mode, à la différence des deux premiers, le transfert de l’octet reçu par la ligne d’entrée, n’est pas inconditionnel. En effet, il ne peut être accepté que s’il est précédé et suivi par une “clef”, utilisée comme contrôle d’identification de la commande.
Cette option introduit un concept de sécurité, n’existant pas dans les autres modes.
La communication entre le PC et la carte, s’effectue par un protocole simple, qui empêche les erreurs de communication (il ne s’agit pas d’un système de haute sécurité, mais qui permet toutefois d’éviter les faux messages).
Ceci est rendu nécessaire lorsque, par exemple, la carte est interfacée avec un modem.
En fait, ce dernier possède son protocole de communication et, de plus, il permet une communication bidirectionnelle, formée de commandes et de réponses d’accusé de réception.
Il pourrait aussi répondre simplement à une commande provenant du port RS232C en la répétant (fonction écho), ce qui fait que la carte pourrait avoir, après un cycle, ses relais positionnés non pas comme cela est demandé par le modem, mais de manière correspondant aux entrées TTL.
Nous allons essayer d’éclairer un peu ce concept.
Lorsque la carte reçoit un octet sur le canal sériel, elle l’envoie au bus parallèle du microcontrôleur, puis, de celui-ci, aux 8 lignes de sortie afin que les relais prennent la position correspondant aux commandes.
Immédiatement après, une réponse lit la condition logique des 8 entrées TTL et des 2 entrées analogiques et les envoie par l’intermédiaire du port sériel.
Si le modem permet la fonction écho, il répond pour confirmation, en émettant de nouveau sur la ligne RS232C, l’octet reçu, ainsi, l’unité se retrouve destinataire d’un nouvel octet, qui est l’image de la position des entrées.
De ce fait, les relais sont positionnés en conséquence et non comme cela a été demandé au cours du premier envoi.
En imposant un contrôle, une sorte de code qui précède l’envoi des données, il est possible d’exclure les situations équivoques, comme celle citée en exemple, garantissant ainsi que notre carte ne recevra que les commandes directes lui étant effectivement destinées.
Cela permet à la carte de rester insensible à tous ce que l’ordinateur, le modem ou un autre terminal de communication peut générer sur le port sériel, aussi bien comme réponse que comme erreur de communication.
Le schéma électrique
Le coeur de tout le circuit est le microcontrôleur U3 avec son programme MF357 qui permet de remplacer l’UART utilisé pour la conversion série/parallèle et vice-versa, de gérer les temporisations et d’effectuer, en plus, la conversion analogique/numérique relative aux deux entrées AD1 et AD2 (voir figure 1).
Le microcontrôleur, peut en outre fonctionner en exécutant trois sous-programmes différents (voir figure 2). le premier reçoit l’état des relais et transmet l’état de ses propres entrées TTL. Le second fait de même, mais envoie la valeur (sur 8 bits) de la première entrée analogique. Le troisième, dialogue, en envoyant soit les entrées TTL, soit les deux entrées analogiques, seulement après avoir effectué un contrôle sur le format des données (voir figure 3).
En ce qui concerne strictement le programme, nous pouvons dire que l’interface sérielle est obtenue par l’intermédiaire d’un circuit intégré très connu, le MAX232, qui contient deux drivers et deux récepteurs.
En fait, se sont des sections, qui procèdent respectivement à la conversion des niveaux TTL en RS232C et vice-versa.
Dans notre application, nous utiliserons évidemment, un driver et un récepteur.
Le premier ayant comme entrée la broche 10 et pour sortie la broche 7 et le second piloté par la ligne RS232C par la broche 8, restitue les niveaux 0/5 volts sur la broche 9.
Le connecteur série (SERIAL), à sa broche 3 (TXD) connectée directement à la broche 8 d’entrée (entrée signal RS232C) de U2. La broche 2 (RXD) est raccordée à la broche 7 (sortie des données au format RS232C). La masse est sur la broche 5.
Les canaux respectifs TX et RX (TTL) du MAX232 sont connectés à la broche 4 (RA2) et à la broche 5 (RA3), qui sont les deux bits du registre A, utilisés par le microcontrôleur U3 pour dialoguer avec l’ordinateur.
Les condensateurs électrolytiques C4, C5, C6 et C7, servent à filtrer les tensions requises pour le fonctionnement interne du MAX232.
Il s’agit des tensions (environ 10 volts positifs et négatifs) qui permettent l’émission des niveaux logiques au standard RS232C et qui sont fabriquées à partir des 5 volts avec lesquels est alimenté le composant (sur les broches 15 et 16).
Les entrées analogiques, sont AD1 et AD2, toutes les deux référencées à la masse (GND) et sont protégées par les résistances R20 et R21, qui limitent le courant consommé par les diodes de protection interne au microcontrôleur, au cas où une tension inverse lui serait appliquée.
Rappelons, que le système peut lire des tensions continues de 0 à 5 volts et que la conversion analogique/numérique (A/D) est effectuée avec une résolution de 8 bits, donc sur 256 niveaux.
C’est un degré de précision, qui nous semble plus que suffisant pour la majorité des applications.
Toujours à propos des entrées, les entrées numériques, se font aux broches 11 à 18 du microcontrôleur (en somme, les 8 E/S du port RC) et, au repos, elles sont toutes maintenues au niveau haut, par l’intermédiaire des résistances de tirage (pull-up) R12 à R19.
Les diodes zener DZ1 à DZ8 protègent le microcontrôleur contre d’éventuelles surtensions et garantissent une protection efficace, même dans le cas où la tension serait appliquée avec une polarité inversée.
Dans l’ensemble des cas, les résistances R4 à R11, limitent le courant dans les diodes précitées à des valeurs de sécurité.
Pour la structure de la section des entrées numériques, chaque ligne accepte des niveaux TTL (0/5 volts) et est activée lorsqu’elles sont positionnées au zéro logique.
Il reste entendu que l’octet envoyé en réponse de la carte, contient l’état logique des huit lignes telles qu’elles sont. De ce fait, au repos nous avons 11111111, étant donné que toutes les entrées sont maintenues au niveau haut par les résistances de pull-up.
Voyons à présent la section de sortie.
Les lignes sur lesquelles le microcontrôleur transfère l’octet envoyé de l’ordinateur, sont celles du registre RB (broches 21 à 28). Dans cet octet, le bit le plus significatif correspond à la broche 28 (RB0).
Chaque fois que le PC transmet un octet, le microcontrôleur se comporte comme un UART et il convertit les données sérielles au format parallèle, présentant le mot correspondant, en binaire, sur les 8 sorties.
Dans ces sorties, nous avons placé un driver ULN2803 (U4), pour amplifier les niveaux logiques, donc, pour fournir aux bobines des relais, le courant nécessaire à leur alimentation.
Chaque état haut présent sur une entrée de ce circuit intégré détermine le zéro (quelques centaines de millivolts) sur la sortie correspondante.
En fait, l’ULN2803, contient 8 transistors darlington NPN, les bases de ces derniers, sont reliées sur les entrées (broches 1 à 8) par des résistances de limitation de courant et les collecteurs sont reliés aux sorties (broches 11 à 18).
Les émetteurs, sont tous reliés ensemble au négatif de l’alimentation (broche 9).
De ce fait, il est évident qu’en polarisant la base avec une impulsion positive, chaque transistor est saturé, portant ainsi le potentiel du collecteur à un niveau très peu supérieur à celui de la masse.
Toujours en regardant le driver U4, observez que celui-ci pilote les bobines des relais, sans aucune diode externe de suppression des pics de courant et des tensions induites inverses. Cela vient du fait que ce circuit intégré dispose, en interne, des diodes nécessaires à ces protections.
En fait, chaque sortie est connectée à la broche positive (10), par une diode de protection.
L’activation de chaque relais est signalée par l’allumage d’une diode LED qui lui est associée.
Complétons l’analyse du programme, avec les lignes RA4 et RA5 (broches 6 et 7 du microcontrôleur), chacune d’elles est connectée à une résistance de pull-up et à un micro-interrupteur de DS1.
Le dip-switch DS1 permet de sélectionner le mode de fonctionnement du programme implanté dans le microcontrôleur.
Pour plus de détails, reportez-vous au tableau de la figure 4.
Il faut noter que le micro-interrupteur 1 du dip-switch DS1 est lu par le programme principal, par contre le microinterrupteur 2 est lu à chaque connexion sérielle, ceci, au terme de chaque cycle réception/transmission (voir l’organigramme du programme).
Figure 1 : Schéma électrique de l’interface E/S commandée par PC.
Figure 2 : Organigramme du programme MF357.
Le microcontrôleur qui assure la gestion de notre interface dispose d’un mode de fonctionnement que nous avons nommé “Option Sécurité”. Dans ce mode, l’octet de commande des relais est précédé de deux astérisques et suivi d’un dièse. Le programme du microcontrôleur est également en mesure de faire fonctionner l’interface décrite dans le numéro 13 de la revue.
Ce sont les micro-interrupteurs de DS1 qui déterminent le mode choisi.
Figure 3 : Le protocole en mode “Option Sécurité”.
Le protocole de communication, procède à l’envoi de 4 octets subdivisés de la manière suivante :
[*][*][donnée][#]
Les deux astérisques représentent les deux octets de départ (start) et servent pour synchroniser la transmission avec la réception.
L’octet [données] contient les huit bits relatifs à l’état dans lequel on souhaite positionner les relais et le dièse, indique la fin de la commande. En réponse, la carte envoie les trois octets relatifs à la configuration des entrées.
Les modes de fonctionnement
Lorsque, à la lecture de DS1, le microinterrupteur 1 est fermé (DIP1 = ON) et le micro-interrupteur 2 est ouvert (DIP2 = OFF), la carte fonctionne de la même manière que celle proposée dans le numéro 13 d’ELM, normalement, elle est au repos et prête à la réception d’un octet.
Lorsqu’elle reçoit un octet série, elle le présente sur le bus de sortie, commande en conséquence les 8 relais, donnant à chacun d’eux, une condition correspondante aux bits de l’octet reçu.
Le second mode (DIP1 et DIP 2 = ON) n’est pas utilisé. Il est réservé à un prototype à une seule entrée analogique.
Si vous placez par erreur le dip-switch dans ce mode, seule AD1 sera lue et l’option de sécurité de transmission ne sera pas activée.
Pour éviter les problèmes dérivant d’erreurs ou de perturbations sur la ligne de transmission, nous avons prévu deux modes “Option Sécurité”, dans lesquels le microcontrôleur ne se contente pas de recevoir un octet et d’agir en conséquence, mais attend une trame de 4 octets contenant un code de départ (2 octets), la donnée elle-même (1 octet) et un code de stop (1 octet). La figure 3 explique la chose en détail.
Dans ces modes, la carte ne reçoit que les commandes du programme de contrôle étudié spécialement pour elle.
Evidemment, l’octet de données est lu et transféré au format parallèle au registre RB et cela uniquement si le message commence et se termine de façon correcte.
Le protocole de communication prévoit comme code de départ, deux astérisques (**), l’octet contenant l’état des relais, puis la trame est fermée par un code d’arrêt représenté par un dièse (#).
Certes, c’est un protocole simple, mais qui permet tout de même d’éviter la majeure partie des problèmes de communications.
Une autre caractéristique de la carte, présente uniquement dans les modes “Option Sécurité”, consiste à pouvoir définir quel sera l’état des relais au retour de la tension secteur après une coupure.
Dans le mode “Option Sécurité” normal (DIP1 = OFF, DIP2 = ON), lorsque la tension d’alimentation vient à manquer, les relais se désactivent. Au retour de l’alimentation, ils restent dans cette condition, indépendamment du dernier octet reçu avant la coupure.
Par contre, dans le mode “Option Sécurité” avancé (DIP1 et DIP2 = OFF), les relais sont remis dans l’état, dans lequel ils se trouvaient avant la coupure de l’alimentation.
Pour cela, le microcontrôleur enregistre en EEPROM la situation des relais puis, dès le retour de l’alimentation, il contrôle l’état du drapeau de rétablissement et, s’il est actif, il positionne les relais comme ils se trouvaient avant la coupure de l’alimentation.
Figure 4 : Les modes de fonctionnement.
Note : DIP1 est lu à la mise sous tension uniquement. Par contre, DIP2 est lu à chaque transmission avec le port sériel.
La carte décrite dans ces pages, permet d’utiliser les routines de programme prévues pour l’unité présentée dans ELM numéro 13. En outre, elle dispose d’un mode de fonctionnement propriétaire appelé “Option Sécurité”. Dans ce mode, l’activation des relais est subordonnée à la transmission, de la part de l’ordinateur, d’une trame au format adéquat, dans laquelle l’octet contenant l’état des huit sorties doit être précédé de deux octets de départ et suivi d’un octet de stop. Les différents modes sont paramétrés avant la mise sous tension, par l’intermédiaire de deux micro-interrupteurs DIP1 et DIP2 contenus dans le dip-switch DS1, suivant les modalités indiquées dans le tableau suivant.
Figure 5 : Schéma d’implantation des composants de l’interface 8 E/S.
Figure 6 : Photo d’un des prototypes de l’interface.
Figure 7 : Dessin, à l’échelle 1, du circuit imprimé de l’interface.
Liste des composants de l’interface
R1 = 1 kΩ
R2-R3 = 10 kΩ
R4 à R11 = 390 Ω
R12 à R19 = 3,3 kΩ
R20-R21 = 100 Ω
R22 = 4,7 kΩ
R23-R30 = 1 kΩ
C1 = 1 000 μF 25 V électrolytique
C2-C3 = 100 nF multicouche
C4÷C7 = 1 μF 16 V électrolytique
C8-C9 = 22 pF céramique
D1 = Diode 1N4007
DZ1 à DZ8 = Zener 5,1 V
LD1 à LD8 = LED rouges 5 mm
LD9 = LED rouge 5 mm
U1 = Régulateur 7805
U2 = Intégré MAX232
U3 = μC PIC16F876-MF357
U4 = Intégré ULN2803
Q1 = Quartz 8 MHz
RL1-RL8 = Relais 12 V 1 RT
DS1 = Dip-switch 2 micro-inters
Divers :
12 Borniers 3 pôles
1 Support 2 x 8 broches
1 Support 2 x 9 broches
1 Support 2 x 14 broches
1 Connecteur DB9 pour ci
1 Circuit imprimé réf. S357
Figure 8 : Vue sur les relais, leurs diodes et leurs borniers de sortie.
Figure 9 : Une vue de l’interface côté prise DB9.
Figure 10 : Un exemple d’utilisation de l’interface 8 E/S.
Un exemple d’utilisation de notre carte pourrait être représenté par un système de chauffage avec contrôle de la température.
Il suffit de relier le capteur de température à la première entrée analogique (AD1) et la commande du chauffage sur la première sortie relais (OUT1) avec un contact normalement ouvert (NO).
Par l’intermédiaire du programme, il est très simple d’activer le chauffage pour obtenir la température désirée.
Une variante pourrait être celle de relier l’installation de climatisation à la seconde sortie relais (OUT2) et, éventuellement, un capteur d’humidité sur la seconde entrée analogique (AD2).
Le logiciel de l’interface
Voyons comment on utilise le programme de gestion, sous Windows, pour contrôler notre interface sérielle.
Un écran, permet d’accéder aux commandes de chaque sortie, de lire l’état des entrées digitales et des entrées analogiques.
Le programme, écrit en Visual Basic, est réalisé pour pouvoir être utilisé dans un environnement Windows 95/98, acceptant les commandes à l’aide de la souris.
Mais avant d’entrer dans le vif du sujet, il est intéressant de rappeler brièvement la structure et le fonctionnement de l’interface à relais.
C’est un dispositif qui permet d’activer ou de désactiver jusqu’à 8 relais, de lire l’état logique d’autant de lignes d’entrées TTL et une tension (comprise entre 0 et 5 volts) continue, présente aux bornes des deux autres entrées, analogiques cette fois.
Le tout est géré directement par un ordinateur, utilisant le port sériel RS232-C (un de ceux restant libres).
Le fonctionnement de l’unité est conceptuellement simple, normalement le système est paramétré en réception et attend l’arrivée d’une trame contenant les données concernant l’affectation des charges (les 8 relais).
Dès qu’une trame est reçue, la commande est exécutée et les relais correspondants sont activés ou désactivés.
Le circuit répond alors avec une trame de 3 octets, contenant l’état logique des huit entrées digitales TTL, la valeur de la première entrée analogique et celle de la seconde entrée analogique, puis tout retourne au repos et le système se positionne dans l’attente d’une nouvelle trame de commande.
Chaque commande émise par l’ordinateur est formée par une trame de 4 octets, contenant un code de start et un de stop.
De cette façon, la carte à relais, ne recevra que les commandes du programme de contrôle décrit dans ces pages. Evidemment l’octet central contient toujours l’état des relais et il est lu et transféré sous un format parallèle au registre de sortie, seulement si le message commence avec un bit de start.
La réponse est composée d’un octet de start, d’un autre contenant l’état des 8 entrées digitales, d’un autre indiquant la lecture du convertisseur A/D sur la première entrée analogique, d’un troisième indiquant la lecture du convertisseur A/D sur la seconde entrée analogique et d’un quatrième de stop.
Le logiciel est structuré de manière à générer des commandes et à recevoir des réponses dans les formats que nous avons décrits.
Une fois installée et activée, son interface graphique apparaît, c’est l’écran à partir duquel il est possible d’exécuter toutes les opérations souhaitées (voir figure 12).
Pour cela, nous trouvons 8 boutons On/Off, chacun d’eux marqué par un nom (inter. 1, inter. 2, etc.) et couplé à une “touche” rectangulaire.
Sous chacune des touches, nous avons un “voyant lumineux”, marqué “Signal In”.
A gauche de l’écran, nous avons deux cadrans équipés, chacun d’une aiguille, indiquant la lecture de la tension sur l’une des entrées analogiques.
En bas, nous trouvons les boutonsradio permettant la sélection du port sériel utilisé et le “touche” “Quit” (sortie), utile pour quitter le programme.
En haut, nous trouvons l’unique menu déroulant (File), qui contient l’unique commande de sortie, une voie qui permet d’obtenir exactement le même effet qu’un “clic” sur la touche “Quit”.
La première chose à faire, après avoir connecté la platine au port sériel de l’ordinateur, est de sélectionner le port COM à utiliser, à l’aide d’un des boutons-radio prévus à cet effet.
Pour intervenir sur les relais, il faut pointer et cliquer avec la souris, sur les boutons On/Off.
La première fois, on active le relais, la seconde fois, on le fait passer au repos.
Les voyants d’état “Signal In”, donnent en permanence l’état mis à jour des entrées TTL.
Les deux instruments virtuels placés sur le côté gauche de l’écran, visualisent les tensions lues, par l’intermédiaire du convertisseur A/D sur les entrées analogiques AD1 et AD2.
Note : Le programme fonctionne si la liaison est effectuée sur le port COM2.
Si ce port n’est pas disponible, changez le numéro du port COM dans la première ligne de code (OPEN COM2:…).
La routine en Basic que nous vous proposons ici, est un exemple de la façon de gérer l’interface E/S en mode “Option Sécurité”. Nous vous rappelons que pour gérer la carte en mode “compatible”, il suffit de régler les micro-interrupteurs de DS1 comme indiqué en figure 0J.
En analysant le listing, nous notons qu’après l’ouverture du port série (OPEN COM2:…), le cycle DO…LOOP commence et se termine seulement lorsque l’on tape la lettre “A” au clavier (…EXIT DO…). A l’intérieur du cycle, il est demandé de rentrer une valeur de OUTPUT comprise entre 0 et 255 (taper “A” pour abandonner) qui représente l’état des relais de sortie.
Après l’insertion d’une valeur convenable, le programme l’envoie sur le port sériel, en le faisant précéder par deux astérisques et suivre d’un dièse (…PRINT #10, “**” + CHR$(VAL(a$)) + “#”;…). A ce moment, il attend les données relatives aux entrées pour les afficher (…PRINT “Entrées…) après quoi, il attend 5 secondes (…SLEEP 5…) et reprend depuis le début le cycle DO…LOOP.
Figure 12 : L’écran de gestion de l’interface tel qu’il apparaîtra au lancement du programme.
La réalisation
Maintenant que nous savons comment fonctionnent la carte d’interface et son programme, nous pouvons nous concentrer sur l’aspect pratique du projet.
En premier lieu, il vous faut vous procurer ou réaliser le circuit imprimé de la figure 7 à l’aide du tracé reproduit à l’échelle 1/1. Il faut également réunir tous les composants de la liste.
Ceci fait, en vous aidant du schéma d’implantation de la figure 5 et de la photo de la figure 6, vous pouvez monter tous les composants, en commençant par les plus bas (résistances, diodes, supports des circuits intégrés et dip-switch) et en terminant par les plus hauts (condensateurs, en faisant attention à la polarité des électrolytiques, LED, que vous disposerez toutes à la même hauteur, en vous rappelant que la cathode est la patte la plus courte, etc.).
Montez à présent les petits relais, qui doivent être du type ITT-MZ ou avec un brochage identique (voir figure 8).
Quant au régulateur intégré, il est placé avec la partie métallique de son boîtier orientée vers le condensateur C2.
Pour les connexions des relais, ainsi que de celles des entrées TTL et analogique, utilisez des borniers à vis pour circuit imprimé au pas de 5 mm.
Le quartz peut être monté sans se préoccuper de sa polarité, car il n’a pas de sens de montage particulier.
Tous les composants en place, il faut se préoccuper de l’alimentation et de la liaison série.
Pour l’alimentation, utilisez une prise pour circuit imprimé avec le “+” au centre. Pour le raccordement à l’ordinateur, utilisez un connecteur DB9 femelle, également pour circuit imprimé.
Contrôlez une dernière fois que tout soit correctement soudé, après quoi, il ne vous reste qu’à insérer les circuits intégrés dans leurs supports respectifs en veillant attentivement à l’orientation de leur repère détrompeur en U.
Maintenant, la carte est prête à l’emploi.
La figure 9 est une photo d’un des prototypes vue côté DB9. La figure 10 est un exemple d’utilisation pour la commande d’une chaudière.
La mise au point
Il faut d’abord relier le câble 9 broches mâles 9 broches femelles de la carte à l’ordinateur, puis alimenter l’interface avec une alimentation de 12 à 15 volts, pouvant délivrer un courant de 400 milliampères.
Un bloc alimentation du commerce fera parfaitement l’affaire.
La diode D1 protège le circuit contre les inversions de polarité.
Si vous voulez faire un test complet, activez le terminal de Windows 3.x ou l’hyper-terminal de Windows 9x, en ouvrant le port COM relatif à la connexion et en déclarant les paramètres suivants : 9600,n,8,1. Placez ensuite les micro-interrupteurs de DS1 pour sélectionner le mode dans lequel le système commande les relais sans contrôle et lit l’état des entrées TTL.
En pratique, le micro-interrupteur 1 doit être sur OFF et le 2 sur ON.
Cela fait, sur le terminal, appuyez sur une touche quelconque et vérifiez que la position des relais change.
Immédiatement, sur l’écran, doit apparaître la réponse qui, dans le cas où les entrées seraient toutes ouvertes, est un rectangle (255 ASCII).
Si vous voulez travailler avec le programme prévu pour l’interface décrite dans le numéro 13 d’ELM, vous pouvez le faire (évidemment, après avoir positionné le dip-switch en conséquence).
Si, au lieu de cela, vous voulez travailler en mode avancé, protégé, tapez les quelques lignes de listing que vous trouverez dans la figure 11, en utilisant l’interpréteur BASIC de Microsoft (QBASIC).
Sur l’écran, doit apparaître le texte indiquant : “entrez la valeur de sortie de 0 à 255 (A=abandonner) ?”.
Vous pouvez immédiatement entrer un nombre compris dans l’intervalle demandé, suivi d’un appui sur “enter”.
A ce moment, il doit apparaître les lectures, soit des entrées TTL, soit des entrées du convertisseur A/D.
Nous vous rappelons que le listing gère le port COM2 du PC. Si rien ne fonctionne, essayez de changer le port sériel en modifiant la ligne “OPEN COM2…” avec “OPEN COM1…”.
Le développement à grande échelle des systèmes d’automatisation de toutes sortes, à fait apparaître dans les foyers, dans les lieux de travail et même dans les lieux publics, des télécommandes IR, des radiocommandes, des claviers en tous genres, de petites centrales destinées à la commande de toutes sortes d’appareils électriques, des serrures motorisés, des commandes d’alarmes, d’éclairages, de chauffages, etc.
Pour plus de commodité, pour chacun des appareils, il y a un contrôle, un fils, un activateur, tant est si bien, qu’il devient de plus en plus difficile de les gérer tous.
Confronté à ce problème, la meilleure solution est de confier le contrôle à un seul élément et qu’existe-t-il de mieux que l’ordinateur personnel (PC) ?
En fait, dotant cet ordinateur d’un programme approprié, il devient la centrale de commande de tous les automatismes de la maison, sans pour autant être monopolisé par cette tâche.
Naturellement, le PC ne peut pas effectuer ces opérations tout seul. Par l’intermédiaire d’un des deux ports de communication, il peut analyser les données nécessaires et intervenir en conséquence, de façon automatique ou assistée par l’utilisateur.
Le pourquoi et le comment !
Le projet que nous vous proposons dans ces lignes est une interface générique pour PC. Elle est équipée de 8 sorties sur relais et de 8 entrées TTL, actives au 0 logique. Par ailleurs, elle dispose de deux canaux analogiques, capables de lire des tensions continues d’une valeur comprise entre 0 et 5 volts.
Toutes les phases de contrôle et d’acquisition se font pratiquement en temps réel, grâce à une routine du programme, qui gère l’ordinateur en le faisant communiquer avec le périphérique par l’intermédiaire d’un des deux ports sériels.
Notre carte, dispose de deux entrées analogiques gérées par un convertisseur A/D interne au microcontrôleur PIC16F876-MF357 qui préside au fonctionnement de la totalité du système.
Le programme implanté dans le microcontrôleur, permet de se passer d’un UART, employé pour la communication, comme c’était le cas dans la précédente version (ELM numéro 13, page 37 et suivantes).
Le microcontrôleur permet donc de détecter l’arrivée d’un octet sur la ligne série, de présenter ce dernier sur les 8 sorties relatives aux relais, puis de répondre en lisant les entrées TTL et en envoyant à l’ordinateur, un octet contenant leurs états, puis un autre, qui exprime la sortie du convertisseur A/D, relatif à la mesure de la première entrée analogique, enfin, le dernier octet, qui contient la lecture (toujours sur 8 bits) de la seconde entrée analogique.
Quant au programme, 3 modes de fonctionnement ont été prévus. Deux, sont les émulations pour la carte E/S générique avec UART (ELM 13) et pour un prototype, non décrit, disposant d’une unique entrée analogique et d’un UART.
Le troisième mode est celui qui est appelé “Option Sécurité”. Il s’applique tout particulièrement à l’interface, objet de cet article.
Dans ce dernier mode, à la différence des deux premiers, le transfert de l’octet reçu par la ligne d’entrée, n’est pas inconditionnel. En effet, il ne peut être accepté que s’il est précédé et suivi par une “clef”, utilisée comme contrôle d’identification de la commande.
Cette option introduit un concept de sécurité, n’existant pas dans les autres modes.
La communication entre le PC et la carte, s’effectue par un protocole simple, qui empêche les erreurs de communication (il ne s’agit pas d’un système de haute sécurité, mais qui permet toutefois d’éviter les faux messages).
Ceci est rendu nécessaire lorsque, par exemple, la carte est interfacée avec un modem.
En fait, ce dernier possède son protocole de communication et, de plus, il permet une communication bidirectionnelle, formée de commandes et de réponses d’accusé de réception.
Il pourrait aussi répondre simplement à une commande provenant du port RS232C en la répétant (fonction écho), ce qui fait que la carte pourrait avoir, après un cycle, ses relais positionnés non pas comme cela est demandé par le modem, mais de manière correspondant aux entrées TTL.
Nous allons essayer d’éclairer un peu ce concept.
Lorsque la carte reçoit un octet sur le canal sériel, elle l’envoie au bus parallèle du microcontrôleur, puis, de celui-ci, aux 8 lignes de sortie afin que les relais prennent la position correspondant aux commandes.
Immédiatement après, une réponse lit la condition logique des 8 entrées TTL et des 2 entrées analogiques et les envoie par l’intermédiaire du port sériel.
Si le modem permet la fonction écho, il répond pour confirmation, en émettant de nouveau sur la ligne RS232C, l’octet reçu, ainsi, l’unité se retrouve destinataire d’un nouvel octet, qui est l’image de la position des entrées.
De ce fait, les relais sont positionnés en conséquence et non comme cela a été demandé au cours du premier envoi.
En imposant un contrôle, une sorte de code qui précède l’envoi des données, il est possible d’exclure les situations équivoques, comme celle citée en exemple, garantissant ainsi que notre carte ne recevra que les commandes directes lui étant effectivement destinées.
Cela permet à la carte de rester insensible à tous ce que l’ordinateur, le modem ou un autre terminal de communication peut générer sur le port sériel, aussi bien comme réponse que comme erreur de communication.
Le schéma électrique
Le coeur de tout le circuit est le microcontrôleur U3 avec son programme MF357 qui permet de remplacer l’UART utilisé pour la conversion série/parallèle et vice-versa, de gérer les temporisations et d’effectuer, en plus, la conversion analogique/numérique relative aux deux entrées AD1 et AD2 (voir figure 1).
Le microcontrôleur, peut en outre fonctionner en exécutant trois sous-programmes différents (voir figure 2). le premier reçoit l’état des relais et transmet l’état de ses propres entrées TTL. Le second fait de même, mais envoie la valeur (sur 8 bits) de la première entrée analogique. Le troisième, dialogue, en envoyant soit les entrées TTL, soit les deux entrées analogiques, seulement après avoir effectué un contrôle sur le format des données (voir figure 3).
En ce qui concerne strictement le programme, nous pouvons dire que l’interface sérielle est obtenue par l’intermédiaire d’un circuit intégré très connu, le MAX232, qui contient deux drivers et deux récepteurs.
En fait, se sont des sections, qui procèdent respectivement à la conversion des niveaux TTL en RS232C et vice-versa.
Dans notre application, nous utiliserons évidemment, un driver et un récepteur.
Le premier ayant comme entrée la broche 10 et pour sortie la broche 7 et le second piloté par la ligne RS232C par la broche 8, restitue les niveaux 0/5 volts sur la broche 9.
Le connecteur série (SERIAL), à sa broche 3 (TXD) connectée directement à la broche 8 d’entrée (entrée signal RS232C) de U2. La broche 2 (RXD) est raccordée à la broche 7 (sortie des données au format RS232C). La masse est sur la broche 5.
Les canaux respectifs TX et RX (TTL) du MAX232 sont connectés à la broche 4 (RA2) et à la broche 5 (RA3), qui sont les deux bits du registre A, utilisés par le microcontrôleur U3 pour dialoguer avec l’ordinateur.
Les condensateurs électrolytiques C4, C5, C6 et C7, servent à filtrer les tensions requises pour le fonctionnement interne du MAX232.
Il s’agit des tensions (environ 10 volts positifs et négatifs) qui permettent l’émission des niveaux logiques au standard RS232C et qui sont fabriquées à partir des 5 volts avec lesquels est alimenté le composant (sur les broches 15 et 16).
Les entrées analogiques, sont AD1 et AD2, toutes les deux référencées à la masse (GND) et sont protégées par les résistances R20 et R21, qui limitent le courant consommé par les diodes de protection interne au microcontrôleur, au cas où une tension inverse lui serait appliquée.
Rappelons, que le système peut lire des tensions continues de 0 à 5 volts et que la conversion analogique/numérique (A/D) est effectuée avec une résolution de 8 bits, donc sur 256 niveaux.
C’est un degré de précision, qui nous semble plus que suffisant pour la majorité des applications.
Toujours à propos des entrées, les entrées numériques, se font aux broches 11 à 18 du microcontrôleur (en somme, les 8 E/S du port RC) et, au repos, elles sont toutes maintenues au niveau haut, par l’intermédiaire des résistances de tirage (pull-up) R12 à R19.
Les diodes zener DZ1 à DZ8 protègent le microcontrôleur contre d’éventuelles surtensions et garantissent une protection efficace, même dans le cas où la tension serait appliquée avec une polarité inversée.
Dans l’ensemble des cas, les résistances R4 à R11, limitent le courant dans les diodes précitées à des valeurs de sécurité.
Pour la structure de la section des entrées numériques, chaque ligne accepte des niveaux TTL (0/5 volts) et est activée lorsqu’elles sont positionnées au zéro logique.
Il reste entendu que l’octet envoyé en réponse de la carte, contient l’état logique des huit lignes telles qu’elles sont. De ce fait, au repos nous avons 11111111, étant donné que toutes les entrées sont maintenues au niveau haut par les résistances de pull-up.
Voyons à présent la section de sortie.
Les lignes sur lesquelles le microcontrôleur transfère l’octet envoyé de l’ordinateur, sont celles du registre RB (broches 21 à 28). Dans cet octet, le bit le plus significatif correspond à la broche 28 (RB0).
Chaque fois que le PC transmet un octet, le microcontrôleur se comporte comme un UART et il convertit les données sérielles au format parallèle, présentant le mot correspondant, en binaire, sur les 8 sorties.
Dans ces sorties, nous avons placé un driver ULN2803 (U4), pour amplifier les niveaux logiques, donc, pour fournir aux bobines des relais, le courant nécessaire à leur alimentation.
Chaque état haut présent sur une entrée de ce circuit intégré détermine le zéro (quelques centaines de millivolts) sur la sortie correspondante.
En fait, l’ULN2803, contient 8 transistors darlington NPN, les bases de ces derniers, sont reliées sur les entrées (broches 1 à 8) par des résistances de limitation de courant et les collecteurs sont reliés aux sorties (broches 11 à 18).
Les émetteurs, sont tous reliés ensemble au négatif de l’alimentation (broche 9).
De ce fait, il est évident qu’en polarisant la base avec une impulsion positive, chaque transistor est saturé, portant ainsi le potentiel du collecteur à un niveau très peu supérieur à celui de la masse.
Toujours en regardant le driver U4, observez que celui-ci pilote les bobines des relais, sans aucune diode externe de suppression des pics de courant et des tensions induites inverses. Cela vient du fait que ce circuit intégré dispose, en interne, des diodes nécessaires à ces protections.
En fait, chaque sortie est connectée à la broche positive (10), par une diode de protection.
L’activation de chaque relais est signalée par l’allumage d’une diode LED qui lui est associée.
Complétons l’analyse du programme, avec les lignes RA4 et RA5 (broches 6 et 7 du microcontrôleur), chacune d’elles est connectée à une résistance de pull-up et à un micro-interrupteur de DS1.
Le dip-switch DS1 permet de sélectionner le mode de fonctionnement du programme implanté dans le microcontrôleur.
Pour plus de détails, reportez-vous au tableau de la figure 4.
Il faut noter que le micro-interrupteur 1 du dip-switch DS1 est lu par le programme principal, par contre le microinterrupteur 2 est lu à chaque connexion sérielle, ceci, au terme de chaque cycle réception/transmission (voir l’organigramme du programme).
Figure 1 : Schéma électrique de l’interface E/S commandée par PC.
Figure 2 : Organigramme du programme MF357.
Le microcontrôleur qui assure la gestion de notre interface dispose d’un mode de fonctionnement que nous avons nommé “Option Sécurité”. Dans ce mode, l’octet de commande des relais est précédé de deux astérisques et suivi d’un dièse. Le programme du microcontrôleur est également en mesure de faire fonctionner l’interface décrite dans le numéro 13 de la revue.
Ce sont les micro-interrupteurs de DS1 qui déterminent le mode choisi.
Figure 3 : Le protocole en mode “Option Sécurité”.
Le protocole de communication, procède à l’envoi de 4 octets subdivisés de la manière suivante :
Les deux astérisques représentent les deux octets de départ (start) et servent pour synchroniser la transmission avec la réception.
L’octet [données] contient les huit bits relatifs à l’état dans lequel on souhaite positionner les relais et le dièse, indique la fin de la commande. En réponse, la carte envoie les trois octets relatifs à la configuration des entrées.
Les modes de fonctionnement
Lorsque, à la lecture de DS1, le microinterrupteur 1 est fermé (DIP1 = ON) et le micro-interrupteur 2 est ouvert (DIP2 = OFF), la carte fonctionne de la même manière que celle proposée dans le numéro 13 d’ELM, normalement, elle est au repos et prête à la réception d’un octet.
Lorsqu’elle reçoit un octet série, elle le présente sur le bus de sortie, commande en conséquence les 8 relais, donnant à chacun d’eux, une condition correspondante aux bits de l’octet reçu.
Le second mode (DIP1 et DIP 2 = ON) n’est pas utilisé. Il est réservé à un prototype à une seule entrée analogique.
Si vous placez par erreur le dip-switch dans ce mode, seule AD1 sera lue et l’option de sécurité de transmission ne sera pas activée.
Pour éviter les problèmes dérivant d’erreurs ou de perturbations sur la ligne de transmission, nous avons prévu deux modes “Option Sécurité”, dans lesquels le microcontrôleur ne se contente pas de recevoir un octet et d’agir en conséquence, mais attend une trame de 4 octets contenant un code de départ (2 octets), la donnée elle-même (1 octet) et un code de stop (1 octet). La figure 3 explique la chose en détail.
Dans ces modes, la carte ne reçoit que les commandes du programme de contrôle étudié spécialement pour elle.
Evidemment, l’octet de données est lu et transféré au format parallèle au registre RB et cela uniquement si le message commence et se termine de façon correcte.
Le protocole de communication prévoit comme code de départ, deux astérisques (**), l’octet contenant l’état des relais, puis la trame est fermée par un code d’arrêt représenté par un dièse (#).
Certes, c’est un protocole simple, mais qui permet tout de même d’éviter la majeure partie des problèmes de communications.
Une autre caractéristique de la carte, présente uniquement dans les modes “Option Sécurité”, consiste à pouvoir définir quel sera l’état des relais au retour de la tension secteur après une coupure.
Dans le mode “Option Sécurité” normal (DIP1 = OFF, DIP2 = ON), lorsque la tension d’alimentation vient à manquer, les relais se désactivent. Au retour de l’alimentation, ils restent dans cette condition, indépendamment du dernier octet reçu avant la coupure.
Par contre, dans le mode “Option Sécurité” avancé (DIP1 et DIP2 = OFF), les relais sont remis dans l’état, dans lequel ils se trouvaient avant la coupure de l’alimentation.
Pour cela, le microcontrôleur enregistre en EEPROM la situation des relais puis, dès le retour de l’alimentation, il contrôle l’état du drapeau de rétablissement et, s’il est actif, il positionne les relais comme ils se trouvaient avant la coupure de l’alimentation.
Figure 4 : Les modes de fonctionnement.
Note : DIP1 est lu à la mise sous tension uniquement. Par contre, DIP2 est lu à chaque transmission avec le port sériel.
La carte décrite dans ces pages, permet d’utiliser les routines de programme prévues pour l’unité présentée dans ELM numéro 13. En outre, elle dispose d’un mode de fonctionnement propriétaire appelé “Option Sécurité”. Dans ce mode, l’activation des relais est subordonnée à la transmission, de la part de l’ordinateur, d’une trame au format adéquat, dans laquelle l’octet contenant l’état des huit sorties doit être précédé de deux octets de départ et suivi d’un octet de stop. Les différents modes sont paramétrés avant la mise sous tension, par l’intermédiaire de deux micro-interrupteurs DIP1 et DIP2 contenus dans le dip-switch DS1, suivant les modalités indiquées dans le tableau suivant.
Figure 5 : Schéma d’implantation des composants de l’interface 8 E/S.
Figure 6 : Photo d’un des prototypes de l’interface.
Figure 7 : Dessin, à l’échelle 1, du circuit imprimé de l’interface.
Liste des composants de l’interface
R1 = 1 kΩ
R2-R3 = 10 kΩ
R4 à R11 = 390 Ω
R12 à R19 = 3,3 kΩ
R20-R21 = 100 Ω
R22 = 4,7 kΩ
R23-R30 = 1 kΩ
C1 = 1 000 μF 25 V électrolytique
C2-C3 = 100 nF multicouche
C4÷C7 = 1 μF 16 V électrolytique
C8-C9 = 22 pF céramique
D1 = Diode 1N4007
DZ1 à DZ8 = Zener 5,1 V
LD1 à LD8 = LED rouges 5 mm
LD9 = LED rouge 5 mm
U1 = Régulateur 7805
U2 = Intégré MAX232
U3 = μC PIC16F876-MF357
U4 = Intégré ULN2803
Q1 = Quartz 8 MHz
RL1-RL8 = Relais 12 V 1 RT
DS1 = Dip-switch 2 micro-inters
Divers :
12 Borniers 3 pôles
1 Support 2 x 8 broches
1 Support 2 x 9 broches
1 Support 2 x 14 broches
1 Connecteur DB9 pour ci
1 Circuit imprimé réf. S357
Figure 8 : Vue sur les relais, leurs diodes et leurs borniers de sortie.
Figure 9 : Une vue de l’interface côté prise DB9.
Figure 10 : Un exemple d’utilisation de l’interface 8 E/S.
Un exemple d’utilisation de notre carte pourrait être représenté par un système de chauffage avec contrôle de la température.
Il suffit de relier le capteur de température à la première entrée analogique (AD1) et la commande du chauffage sur la première sortie relais (OUT1) avec un contact normalement ouvert (NO).
Par l’intermédiaire du programme, il est très simple d’activer le chauffage pour obtenir la température désirée.
Une variante pourrait être celle de relier l’installation de climatisation à la seconde sortie relais (OUT2) et, éventuellement, un capteur d’humidité sur la seconde entrée analogique (AD2).
Le logiciel de l’interface
Voyons comment on utilise le programme de gestion, sous Windows, pour contrôler notre interface sérielle.
Un écran, permet d’accéder aux commandes de chaque sortie, de lire l’état des entrées digitales et des entrées analogiques.
Le programme, écrit en Visual Basic, est réalisé pour pouvoir être utilisé dans un environnement Windows 95/98, acceptant les commandes à l’aide de la souris.
Mais avant d’entrer dans le vif du sujet, il est intéressant de rappeler brièvement la structure et le fonctionnement de l’interface à relais.
C’est un dispositif qui permet d’activer ou de désactiver jusqu’à 8 relais, de lire l’état logique d’autant de lignes d’entrées TTL et une tension (comprise entre 0 et 5 volts) continue, présente aux bornes des deux autres entrées, analogiques cette fois.
Le tout est géré directement par un ordinateur, utilisant le port sériel RS232-C (un de ceux restant libres).
Le fonctionnement de l’unité est conceptuellement simple, normalement le système est paramétré en réception et attend l’arrivée d’une trame contenant les données concernant l’affectation des charges (les 8 relais).
Dès qu’une trame est reçue, la commande est exécutée et les relais correspondants sont activés ou désactivés.
Le circuit répond alors avec une trame de 3 octets, contenant l’état logique des huit entrées digitales TTL, la valeur de la première entrée analogique et celle de la seconde entrée analogique, puis tout retourne au repos et le système se positionne dans l’attente d’une nouvelle trame de commande.
Chaque commande émise par l’ordinateur est formée par une trame de 4 octets, contenant un code de start et un de stop.
De cette façon, la carte à relais, ne recevra que les commandes du programme de contrôle décrit dans ces pages. Evidemment l’octet central contient toujours l’état des relais et il est lu et transféré sous un format parallèle au registre de sortie, seulement si le message commence avec un bit de start.
La réponse est composée d’un octet de start, d’un autre contenant l’état des 8 entrées digitales, d’un autre indiquant la lecture du convertisseur A/D sur la première entrée analogique, d’un troisième indiquant la lecture du convertisseur A/D sur la seconde entrée analogique et d’un quatrième de stop.
Le logiciel est structuré de manière à générer des commandes et à recevoir des réponses dans les formats que nous avons décrits.
Une fois installée et activée, son interface graphique apparaît, c’est l’écran à partir duquel il est possible d’exécuter toutes les opérations souhaitées (voir figure 12).
Pour cela, nous trouvons 8 boutons On/Off, chacun d’eux marqué par un nom (inter. 1, inter. 2, etc.) et couplé à une “touche” rectangulaire.
Sous chacune des touches, nous avons un “voyant lumineux”, marqué “Signal In”.
A gauche de l’écran, nous avons deux cadrans équipés, chacun d’une aiguille, indiquant la lecture de la tension sur l’une des entrées analogiques.
En bas, nous trouvons les boutonsradio permettant la sélection du port sériel utilisé et le “touche” “Quit” (sortie), utile pour quitter le programme.
En haut, nous trouvons l’unique menu déroulant (File), qui contient l’unique commande de sortie, une voie qui permet d’obtenir exactement le même effet qu’un “clic” sur la touche “Quit”.
La première chose à faire, après avoir connecté la platine au port sériel de l’ordinateur, est de sélectionner le port COM à utiliser, à l’aide d’un des boutons-radio prévus à cet effet.
Pour intervenir sur les relais, il faut pointer et cliquer avec la souris, sur les boutons On/Off.
La première fois, on active le relais, la seconde fois, on le fait passer au repos.
Les voyants d’état “Signal In”, donnent en permanence l’état mis à jour des entrées TTL.
Les deux instruments virtuels placés sur le côté gauche de l’écran, visualisent les tensions lues, par l’intermédiaire du convertisseur A/D sur les entrées analogiques AD1 et AD2.
REM***********************************************************REM File:IO232.BAS Data:30/08/2000REM CONTROL 8 OUT 8 IN DIGITAL AND 2 IN A/D W/PORT RS 232REM (C) 2000 ELMREM***********************************************************OPEN “COM2:9600,N,8,1,rs,cs0,ds0” FOR RANDOM AS #10DO a$ = “” DO WHILE a$ = “” OR VAL(a$) < 0 OR VAL(a$) > 255 CLS PRINT “Entrez la valeur de OUTPUT de 0 à 255 (A=abandonner)”; INPUT a$ LOOP IF a$ = “a” OR a$ = “A” THEN CLOSE #10 EXIT DO END IF PRINT #10, “**” + CHR$(VAL(a$)) + “#”; digital$ = INPUT$(1, #10) ad1$ = INPUT$(1, #10) ad2$ = INPUT$(1, #10) PRINT “Entrée =”; ASC(digital$) PRINT “Convertisseur A/D 1 =”; ASC(ad1$) PRINT “Convertisseur A/D 2 =”; ASC(ad2$) SLEEP 5LOOPENDFigure 11 : Programme “Option Sécurité” en Basic.
Note : Le programme fonctionne si la liaison est effectuée sur le port COM2.
Si ce port n’est pas disponible, changez le numéro du port COM dans la première ligne de code (OPEN COM2:…).
La routine en Basic que nous vous proposons ici, est un exemple de la façon de gérer l’interface E/S en mode “Option Sécurité”. Nous vous rappelons que pour gérer la carte en mode “compatible”, il suffit de régler les micro-interrupteurs de DS1 comme indiqué en figure 0J.
En analysant le listing, nous notons qu’après l’ouverture du port série (OPEN COM2:…), le cycle DO…LOOP commence et se termine seulement lorsque l’on tape la lettre “A” au clavier (…EXIT DO…). A l’intérieur du cycle, il est demandé de rentrer une valeur de OUTPUT comprise entre 0 et 255 (taper “A” pour abandonner) qui représente l’état des relais de sortie.
Après l’insertion d’une valeur convenable, le programme l’envoie sur le port sériel, en le faisant précéder par deux astérisques et suivre d’un dièse (…PRINT #10, “**” + CHR$(VAL(a$)) + “#”;…). A ce moment, il attend les données relatives aux entrées pour les afficher (…PRINT “Entrées…) après quoi, il attend 5 secondes (…SLEEP 5…) et reprend depuis le début le cycle DO…LOOP.
Figure 12 : L’écran de gestion de l’interface tel qu’il apparaîtra au lancement du programme.
La réalisation
Maintenant que nous savons comment fonctionnent la carte d’interface et son programme, nous pouvons nous concentrer sur l’aspect pratique du projet.
En premier lieu, il vous faut vous procurer ou réaliser le circuit imprimé de la figure 7 à l’aide du tracé reproduit à l’échelle 1/1. Il faut également réunir tous les composants de la liste.
Ceci fait, en vous aidant du schéma d’implantation de la figure 5 et de la photo de la figure 6, vous pouvez monter tous les composants, en commençant par les plus bas (résistances, diodes, supports des circuits intégrés et dip-switch) et en terminant par les plus hauts (condensateurs, en faisant attention à la polarité des électrolytiques, LED, que vous disposerez toutes à la même hauteur, en vous rappelant que la cathode est la patte la plus courte, etc.).
Montez à présent les petits relais, qui doivent être du type ITT-MZ ou avec un brochage identique (voir figure 8).
Quant au régulateur intégré, il est placé avec la partie métallique de son boîtier orientée vers le condensateur C2.
Pour les connexions des relais, ainsi que de celles des entrées TTL et analogique, utilisez des borniers à vis pour circuit imprimé au pas de 5 mm.
Le quartz peut être monté sans se préoccuper de sa polarité, car il n’a pas de sens de montage particulier.
Tous les composants en place, il faut se préoccuper de l’alimentation et de la liaison série.
Pour l’alimentation, utilisez une prise pour circuit imprimé avec le “+” au centre. Pour le raccordement à l’ordinateur, utilisez un connecteur DB9 femelle, également pour circuit imprimé.
Contrôlez une dernière fois que tout soit correctement soudé, après quoi, il ne vous reste qu’à insérer les circuits intégrés dans leurs supports respectifs en veillant attentivement à l’orientation de leur repère détrompeur en U.
Maintenant, la carte est prête à l’emploi.
La figure 9 est une photo d’un des prototypes vue côté DB9. La figure 10 est un exemple d’utilisation pour la commande d’une chaudière.
La mise au point
Il faut d’abord relier le câble 9 broches mâles 9 broches femelles de la carte à l’ordinateur, puis alimenter l’interface avec une alimentation de 12 à 15 volts, pouvant délivrer un courant de 400 milliampères.
Un bloc alimentation du commerce fera parfaitement l’affaire.
La diode D1 protège le circuit contre les inversions de polarité.
Si vous voulez faire un test complet, activez le terminal de Windows 3.x ou l’hyper-terminal de Windows 9x, en ouvrant le port COM relatif à la connexion et en déclarant les paramètres suivants : 9600,n,8,1. Placez ensuite les micro-interrupteurs de DS1 pour sélectionner le mode dans lequel le système commande les relais sans contrôle et lit l’état des entrées TTL.
En pratique, le micro-interrupteur 1 doit être sur OFF et le 2 sur ON.
Cela fait, sur le terminal, appuyez sur une touche quelconque et vérifiez que la position des relais change.
Immédiatement, sur l’écran, doit apparaître la réponse qui, dans le cas où les entrées seraient toutes ouvertes, est un rectangle (255 ASCII).
Si vous voulez travailler avec le programme prévu pour l’interface décrite dans le numéro 13 d’ELM, vous pouvez le faire (évidemment, après avoir positionné le dip-switch en conséquence).
Si, au lieu de cela, vous voulez travailler en mode avancé, protégé, tapez les quelques lignes de listing que vous trouverez dans la figure 11, en utilisant l’interpréteur BASIC de Microsoft (QBASIC).
Sur l’écran, doit apparaître le texte indiquant : “entrez la valeur de sortie de 0 à 255 (A=abandonner) ?”.
Vous pouvez immédiatement entrer un nombre compris dans l’intervalle demandé, suivi d’un appui sur “enter”.
A ce moment, il doit apparaître les lectures, soit des entrées TTL, soit des entrées du convertisseur A/D.
Nous vous rappelons que le listing gère le port COM2 du PC. Si rien ne fonctionne, essayez de changer le port sériel en modifiant la ligne “OPEN COM2…” avec “OPEN COM1…”.
Aucun commentaire:
Enregistrer un commentaire