Un convertisseur bidirectionnel RS232/RS485

L’interface, dont nous vous proposons ici la réalisation, permet des communications sur de longues distances, dépassant les limites imposées par les classiques ports RS232-C des PC. Il suffit, pour raccorder deux ordinateurs éloignés, de deux cartes reliées par une paire torsadée pour données. Un mini réseau économique !


Lorsqu’il est nécessaire de relier deux ou plusieurs ordinateurs, on les met en réseau, cela constitue un réseau local (réseau Ethernet), en installant des cartes appropriées puis en les interconnectant avec un câble soit coaxial soit en paire torsadée selon que leurs sorties sont en 10 base T ou en RJ45.

On pose le problème
Si, au lieu de cela, notre besoin se limite à devoir relier entr’eux deux PC ou un PC et un périphérique, nous pouvons éviter le réseau local et avoir recours au port série en réalisant le système appelé Interlink. Avec un câble série “nul-modem” nous relions les ports “COM”, puis nous activons la communication en utilisant un logiciel spécifique qui permet le transfert des données à travers le port série.
Toutefois, si la liaison doit être réalisée sur une grande distance, le port RS232-C ne peut plus être utilisé car il ne fonctionne plus correctement avec des câbles dont la longueur excède 15 à 20 mètres.
N’abordons même pas le côté coût d’un tel câble !
Bien entendu, il est toujours possible d’utiliser deux modems, mais cela implique la disponibilité de deux lignes téléphoniques et de payer les communications. Il est également possible de relier les deux modems entr’eux par une simple paire téléphonique mais il faut savoir les programmer pour cette utilisation. On peut encore réaliser une liaison série via radio, en utilisant deux émetteurs et deux récepteurs, donc deux transceivers capables de travailler avec des signaux numériques à 2400, 4800 ou 9 600 bauds.

Et on propose une solution
Si, au lieu de ces solutions compliquées ou coûteuses, nous avons la possibilité de tirer une simple paire torsadée entre les deux unités, nous pouvons alors utiliser l’interface RS485. Avec cette interface, il est possible d’atteindre une distance d’un kilomètre environ, tout en bénéficiant d’une bonne immunité contre les parasites et sans avoir recours à des circuits trop sophistiqués comme le laisse apparaître le schéma électrique visible en figure 1.
Notre dispositif représente une unité de transmission qui fonctionne en convertisseur RS232-C/RS485-A et vice-versa. Il est donc bidirectionnel, dans le sens qu’il permet de transmettre des donnés à partir d’un ordinateur et de les recevoir par le port série.
Il peut communiquer en simplex, en activant ou désactivant la section réception ou celle d’émission.
Il s’agit, en somme, du dispositif idéal pour résoudre les problèmes de connexions à distance entre PC et périphérique. Le système est pratique par la simplicité des inter faces et parce qu’il fournit un bus le long duquel on peut relier non seulement deux, mais jusqu’à 30 appareils, en activant au fur et à mesure ceux dont on a besoin.

L’interface RS485-A
Avant d’étudier le schéma électrique de l’unité RTX, il nous semble utile de faire quelques allusions à la théorie de fonctionnement de l’interface RS485-A en commençant par dire qu’elle est destinée aux communications séries.
L’échange des données nécessite une ligne équilibrée composée de deux conducteurs (“A” et B) plus une masse.
L’immunité optimale contre les parasites provient du fait qu’à la différence de la simple RS232-C, les niveaux logiques voyagent équilibrés et, partant de ça, en réception, la lecture est effectuée par un étage différentiel, capable d’annuler presque complètement les interférences.
Pour comprendre le pourquoi de cet avantage, il suffit de savoir comment se déroulent les communications équilibrées.
Le niveau logique haut (mark) est généré en forçant, sur le canal “A”, une impulsion négative par rapport au conducteur de masse (commun) et, sur le B, une autre impulsion, positive cette fois, par rapport à la masse.
Pour le niveau logique bas (space), les conditions s’inversent : sur “A” est générée l’impulsion positive et sur B l’impulsion négative, obtenant ainsi une différence de tension.
Le résultat est que le fait de relier les canaux “A” et B à l’entrée d’un amplificateur différentiel, le premier sur l’entrée non-inverseuse et l’autre sur l’entrée inverseuse, la sortie passe à 0 dans le cas d’un niveau logique haut et à 1 dans le cas d’un niveau logique bas.
Si, durant le parcours d’une unité à l’autre, des perturbations électromagnétiques étaient introduites dans les câbles et, en supposant que leur amplitude demeure égale entre chaque conducteur et la masse, l’amplificateur différentiel procède théoriquement à leurs annulations : en fait, en envoyant aux entrées inverseuse et non-inverseuse d’un amplificateur opérationnel deux signaux identiques en phase et en amplitude, ce dernier les additionne algébriquement, et la sortie reste nulle.
Dans la pratique, les choses ne se passent pas tout à fait comme ça et l’atténuation d’une perturbation captée par la ligne dépend du CMRR (taux de réjection du mode commun), en fait, de la capacité dont dispose l’étage différentiel d’amplifier de manière égale, un unique signal appliqué simultanément à ces entrées inverseuse (–) et non-inverseuse (+).
Ceci étant éclairci, nous pouvons dire qu’une interface émettrice RS485-A est structurée de manière que lorsqu’elle reçoit un niveau logique haut TTL (+5 volts) elle produit sur les deux fils de sortie, et par rapport à la masse, deux impulsions d’égale amplitude et de polarité opposée (une positive, l’autre négative). Avec un niveau bas, les polarités sont inversées entre les fils “A” et B.
Dans le standard commun à toutes les communications série, pour les données, le 1 logique (mark) correspond à une tension différentielle négative (“A”B).
En ce qui concerne la partie réceptrice, c’est seulement un amplificateur différentiel avec une sortie compatible TTL, réalisé de telle sorte que, lorsque “A” est positif par rapport à “B”, un niveau bas est généré en sortie et si “A” est négatif par rapport à “B”, c’est un niveau haut qui sera généré.
Ceci est valable pour les dispositifs convertisseurs TTL/RS485-A qui sont les plus courants et que l’on trouve sous forme intégrée.



Etude rapide du standard RS485-A

Pour les communications série à grande distance le classique port RS232, dont sont équipés la plupart de nos ordinateurs et certains autres instruments, ne suffit pas, car il ne garantit qu’une portée de 20 mètres maximum. C’est pour cette raison que le standard RS485-A a été mis au point. Avec lui, on peut réaliser des liaisons jusqu’à 1 kilomètre ! Il est en outre possible de construire un bus ou bien de relier par un seul câble, non seulement deux, mais trois unités ou plus (jusqu’à un maximum de 32) activant au fur et à mesure une seule unité en transmission et une ou plusieurs unités en réception de données.
Pour comprendre ce qu’est l’interface RS485-A, nous devons commencer par dire qu’elle est destinée aux communications série. L’échange de données nécessite une ligne équilibrée composée de deux fils seulement.
L’immunité optimale en présence de perturbations, caractéristique fondamentale de la RS485-A, provient du fait qu’a la différence de la simple liaison RS232-C, les niveaux logiques “voyagent” équilibrés et, à la réception, l’étage qui permet de les lire est différentiel. Cet étage est capable d’éliminer, du moins en théorie, les interférences. Le pourquoi de cela se comprend en sachant comment se déroulent les communications équilibrées.
En présence d’un niveau logique haut (mark), sur le fil “A” se trouve une impulsion négative par rapport au conducteur de masse (commun) et sur le fil “B”, une impulsion positive.
En présence d’un niveau logique opposé (0 = space) les conditions s’inversent : “A” devient positif et “B” devient négatif.
Si nous envoyons les impulsions à l’entrée d’un amplificateur différentiel, “A” sur l’entrée non-inverseuse et “B” sur l’entrée inverseuse, cela aura pour résultat le passage de la sortie à l’état 0 dans le premier cas et à 1 dans le second cas.
Si, durant le parcours d’une unité à l’autre, des perturbations électromagnétiques sont induites dans le câble et, en supposant que leur amplitude soit égale entre chacun des deux conducteurs et la masse, l’étage différentiel procède théoriquement à leur annulation.
En fait, lorsqu’on envoie aux entrées d’un amplificateur différentiel deux signaux identiques en phase et en amplitude, ce dernier les additionne algébriquement. La sortie est alors égale à zéro.
Dans la pratique, les choses ne sont pas aussi simples et l’atténuation d’une perturbation captée par la ligne dépend du CMRR, en fait de la capacité dont dispose l’étage différentiel à amplifier de manière égale un signal appliqué simultanément à ses entrées inverseuses et non-inverseuses.
Cela étant éclairci, nous pouvons dire que l’interface de transmission RS485-A est structurée de façon à ce que, lorsqu’elle reçoit un niveau logique haut TTL (+5 V), elle produise, sur ses deux fils de sortie et par rapport à la masse, les deux impulsions d’égale amplitude et de polarité opposée (une positive et une négative).
Avec le niveau 0 TTL, il en est de même, mais les polarités sont inversées entre le fil “A” et “B”.
Dans le standard commun à toutes les transmissions séries (TTY, RS232-C, RS422 et 423) pour les données, le 1 logique (mark) correspond à une tension différentielle négative (“A”<”B”) et le zéro (space) équivaut à une tension positive (“A”>”B”).
Quant à la partie réceptrice, c’est tout simplement un étage différentiel avec une sortie compatible TTL, réalisé de telle sorte que lorsque “A” est positif par rapport à “B” en sortie nous avons un 0 logique. Par contre, avec “A” négatif et “B” positif, nous obtenons un 1 logique lors de la comparaison.
Ceci est valable pour les dispositifs convertisseurs TTL/RS485-A intégrés. L’utilisation de câbles blindés pour données (une paire torsadée + blindage) permet, dans les meilleures conditions, de communiquer sur une distance maximale de 1 200 mètres, à une vitesse de presque 10 Mbits/s.

Connexions au bus RS485-A ou comment réaliser un réseau à peu de frais…

Un des intérêts de l’interface RS485-A est celui de pouvoir disposer de plus d’une unité sur une ligne unique, en parallèle, de manière à mettre en commun les signaux qui y transitent.
L’avantage par rapport à une liaison traditionnelle entre deux appareils éloignés est qu’un seul canal de données peut être constitué de plusieurs ordinateurs, instruments, ou imprimantes série, simplement en reliant sur deux fils “A” et “B” les borniers des convertisseurs.
Vraiment pour simplifier, pour ceux qui voudraient réaliser un “réseau” RS485-A sans vouloir, pour autant, entrer dans le détail, on peut résumer en disant que chaque interface dispose de deux borniers sur lesquels les signaux sont en parallèle entr’eux. Il suffit ainsi de sortir du bornier correspondant avec un câble 4 conducteurs allant au bornier correspondant de l’unité suivante et ainsi de suite.
L’unique recommandation est de fermer la terminaison R2 (JP3) sur les deux interfaces les plus éloignées.
L’illustration montre une connexion en bus de 4 inter faces : entre les deux unités les plus éloignées, il peut y avoir jusqu’à 30 unités.
Notez que les deux cartes terminales (celles entre lesquelles la distance est la plus importante) doivent fermer la ligne en la chargeant avec la résistance R2. Pour cela, il faut fermer JP3, qui doit par contre être ouvert dans les autres unités. La connexion est réalisée avec un câble à 4 fils pour permettre à l’unité maître d’alimenter les trois unités esclaves.

Notre circuit
Dans notre projet, nous utilisons le circuit intégré SN75176 de Texas Instruments.
Notre interface étant destinée à transformer, en émission, les niveaux logiques RS232-C en RS485-A et, en réception, les signaux RS485-A en RS232-C, il faut un second circuit intégré, nécessaire pour convertir les niveaux fournis par le port série de l’ordinateur en TTL et vice-versa. Ce dernier circuit intégré est le très populaire MAX232 de chez Maxim.
Ainsi notre dispositif est un double convertisseur TTL/RS232-C et viceversa et RS485-A/TTL et vice-versa.
Le schéma électrique montre la simplicité du dispositif. Il suffit, en effet, de deux circuits intégrés associés à un régulateur de tension et à quelques composants passifs et le tour est joué.
U1 est le convertisseur MAX232, il est relié au port série de l’ordinateur que nous avons sélectionné pour la liaison.
U2 est le circuit intégré qui procède à la conversion RS485-A et, donc, à la retransmission des données le long de la ligne “A”-”B”. Enfin, U3 est le régulateur de tension 7805 qui permet d’obtenir les +5 volts nécessaires au fonctionnement des circuits intégrés.
Procédons dans l’ordre et voyons que, sur le circuit intégré U1, trois des quatre canaux sont utilisés : deux RS232-C/TTL et un TTL/RS232-C. Ce dernier sert pour la transmission vers l’ordinateur (RXD du port série) des données reçues sur le bus RS485-A, par contre, le récepteur situé entre les broches 13 (IN) et 12 (OUT) reçoit, du PC, les informations à transmettre en RS485-A.
L’autre récepteur, la partie du MAX232 comprise entre les broches 8 et 9, est utilisé pour gérer l’exploitation par le DTR (Data Terminal Ready) de l’activité du circuit U2, dès lors que l’on désire que ce soit l’ordinateur local qui contrôle l’alternat des phases de réception et d’émission.
Le canal marqué RXD sur le connecteur 9 broches est la sortie des données qui proviennent de la broche 1 (R) du SN75176 (sortie des données converties du format RS485-A au format TTL).
Les impulsions envoyées par l’ordinateur sur la broche TXD, transformées en TTL par le MAX232, arrivent sur la broche 4 (D) et, de là, sortent vers la ligne RS485 (“A” et “B”).
Le circuit intégré U2 fonctionne simplement et est constitué d’un canal émetteur et d’un canal récepteur pouvant être activés ou désactivés séparément.
La sortie et l’entrée des données du bus RS485 sont communes et sont connectées aux points “A” et “B” (respectivement broche 6 et 7). Ainsi, le circuit intégré peut transmettre et recevoir à chaque instant.
Pour inhiber l’une ou l’autre partie, nous utilisons les broches 3 (DE) et 2 (/RE) qui fonctionnent de la façon suivante :
- la broche 3 regarde l’habilitation du transmetteur et est active au niveau haut,
- la broche 2 est le signal d’activation de la réception et est actif au niveau bas.
Par l’intermédiaire des cavaliers JP1 et JP2 il est possible de paramétrer la platine dans le mode qui nous convient le mieux (voir l’encadré).
La condition de réception et d’émission peut fonctionner en automatique et être gérée par le PC à travers la ligne DTR.
Dans ce cas, il est nécessaire de réaliser un programme spécialement étudié pour gérer le DTR, de manière à le positionner au niveau haut (+12 V) lorsque l’ordinateur doit recevoir et au niveau bas (–12 V) durant les périodes de transmission.
Sur le circuit, vous trouvez deux positions pour le cavalier JP1 et deux autres pour JP2.
En positionnant JP1 dans la position marquée sur le schéma électrique avec “JP1 A” et JP2 en “JP2 B”, on dispose la platine de manière à contrôler le flux des données en réception/transmission via l’ordinateur.
En faisant le contraire (cavaliers insérés en “JP1 B” et “JP2 A”), on force le mode de fonctionnement automatique.
En fait, en fermant JP1 sur “B” (broche 3 du SN75176 au +5 volts), on valide le circuit intégré à la transmission.
En fermant JP2 sur “A” (broche /RE à la masse), nous validons également la section réceptrice. Pour cela, chaque couple d’impulsions qui arrive sur les fils “A” et “B” sort transformé en format 0/5 V de la broche 1 (R).
L’ensemble du montage est alimenté avec une tension comprise entre 8 et 15 volts, appliquée entre le +V et la masse.
Ainsi, le régulateur U3 délivre les +5 volts qui servent à alimenter U1 et U2.
Le MAX232 dispose, en interne, d’un circuit élévateur de tension pour fabriquer les ±10 volts nécessaires pour piloter les deux drivers de ligne RS232-C.
L’élévateur fonctionne par charge de capacité, utilisant comme composants externes les condensateurs C1, C2, C4 et C5 (le condensateur C3 filtre l’alimentation des résidus de commutations).
Le circuit intégré U2 dispose d’un driver de sortie en pont, capable d’inverser la polarité entre les broches 6 et 7 en transmission. En pratique, il peut rendre “A” positif par rapport à “B” et vice-versa, simplement avec quatre transistors connectés en pont.
En regardant l’interface côté RS485, vous notez la présence de la résistance R2. Celle-ci est mise en action grâce au cavalier JP3, lorsque la platine est la dernière d’un bus, ainsi que dans le cas où l’on utilise deux unités pour une liaison série entre deux ordinateurs.
Par contre, si nous interconnectons sur le bus une quantité importante de platines, celles en tête et en fin de ligne (les plus éloignées) doivent avoir la résistance R2 connectée (JP3 fermé).
Les autres platines, celles qui se trouvent entre celles de tête et de fin de ligne doivent avoir la résistance R2 déconnectée (JP3 ouvert).

Figure 1 : Schéma électrique de l’interface RS232/RS485.

Figure 2 : Plan d’implantation des composants.



Figure 3 : Dessin du circuit imprimé à l’échelle 1.

Liste des composants
R1 = 2,2 kΩ
R2 = 220 Ω
C1 = 1 μF 100 V électrolytique
C2 = 1 μF 100 V électrolytique
C3 = 100 nF polyester
C4 = 1 μF 100 V électrolytique
C5 = 1 μF 100 V électrolytique
C6 = 100 nF polyester
C7 = 10 μF 63VL électrolytique
C8 = 470 μF 25 V électrolytique
C9 = 100 nF polyester
C10 = 100 nF polyester
U1 = Intégré MAX232
U2 = Intégré SN75176BP
U3 = Régulateur 5 V 7805
FUS = Fusible 1 A rapide

Divers :
1 Support 2 x 8 broches
1 Support 2 x 4 broches
1 Bornier 2 pôles
2 Borniers 3 pôles
1 Connecteur DB9 90° pour ci
1 Porte fusible 5 x 20 pour ci
2 Connecteurs 3 broches pour ci
1 Connecteur 2 broches pour ci
3 Cavaliers pour connecteurs ci
1 Circuit imprimé réf. L040.


La même carte peut être utilisée comme transmetteur ou comme récepteur.


Le circuit intégré SN75176BP utilisé comme transmetteur, convertit, à chaque impulsion de validation (DE), le signal présent sur l’entrée D (série RS232-C) en signal RS485-A, présent sur les broches “A” et “B”.


Le circuit intégré SN75176BP utilisé comme récepteur fait varier sa sortie (R) en fonction de la différence de potentiel présente entre “A” et “B” comme cela est indiqué dans le tableau ci-dessus.

En pratique
Après avoir décortiqué le fonctionnement, nous pouvons voir maintenant comment construire notre convertisseur.
Il ne faut pas oublier que pour communiquer, il faut disposer d’au moins deux exemplaires !
Sur le circuit imprimé, commencez par monter toutes les résistances et les deux supports pour les circuits intégrés.
Passez ensuite au montage des condensateurs polyesters et des condensateurs électrolytiques en faisant attention à leur polarité. Monter le connecteur DB9 femelle coudé en l’appuyant bien contre le circuit imprimé.
Pour les connexions des lignes, nous avons prévu 2 borniers à vis à 4 plots pour circuit imprimé afin de faciliter la réalisation d’un bus. Ainsi, il n’est pas nécessaire de devoir réunir deux conducteurs dans un même plot.
Un troisième bornier, cette fois à 2 plots (mais toujours au pas de 5 mm), sert pour relier l’alimentation de l’unité.
N’oubliez pas le porte-fusible de 5 x 20 pour circuit imprimé, dans lequel, une fois la soudure terminée, vous insérerez le fusible 1 A rapide.
Enfin, pour les cavaliers, insérez et soudez une paire de picots à trois broches au pas de 2,54 mm pour JP1, JP2 et JP3 du même modèle que ceux utilisés sur les cartes mères des ordinateurs.
Terminez le montage par la mise en place du régulateur U3, qui sera positionné le côté métallique dirigé vers les borniers.
Veillez à ne pas oublier les trois straps présents sur le circuit imprimé.
Contrôlez une dernière fois la totalité du circuit afin de déceler une éventuelle erreur puis, insérez les circuits intégrés MAX232 et SN75176 dans leur support respectif en faisant attention à leur orientation déterminée par le repère-détrompeur en “U”.
Voilà, à présent votre inter face est prête à être utilisée.
Pour l’alimentation, il suffit d’utiliser un petit bloc secteur délivrant entre 8 et 15 volts avec un courant d’au moins 100 milliampères. Il faut que le positif soit relié au bornier marqué +V et le négatif au bornier marqué –V (masse).
Si vous voulez réaliser un bus avec plusieurs unités ou bien insérer une seule carte sur un bus RS485, il faut procéder de la façon suivante : Prendre un câble pour données (une paire torsadée plus blindage), connecter ce dernier au plot de masse de l’un des deux borniers à quatre pôles. Au point “A” et “B” du même bornier, vous relierez respectivement “A” et “B” de la ligne (les fils internes du câble que vous aurez préalablement repérés).

Figure 4 : Brochage du SN75176BP.


Schéma logique du transmetteur différentiel de bus SN75176BP de Texas Instruments.


Le circuit intégré de Texas Instruments permet de relier entr’eux un maximum de 32 unités par l’intermédiaire d’une simple paire de conducteurs.
La longueur du câble ne doit, néanmoins, pas dépasser 1 200 mètres.

La mise en place des dip-switchs JP1 et JP2


Par l’intermédiaire des cavaliers JP1 et JP2, il est possible de configurer la carte de façon à ce qu’elle fonctionne en automatique et que la condition de réception ou de transmission soit gérée par le PC à travers la ligne DTR.
En insérant les deux cavaliers dans la position “A”-”C” (JP1) et “B”-”C” (JP2), on prédispose la carte de manière à contrôler le flux des données en réception/transmission via l’ordinateur.
Dans ce cas, le logiciel doit gérer le signal DTR de façon à le faire passer au niveau haut lorsque l’on veut recevoir et au niveau bas pour la transmission.
Si, par contre, les cavaliers JP1 et JP2 sont insérés respectivement entre “B”-”C”, et entre “A”-”C”, le SN75176 se comporte en mode automatique, aussi bien en réception, qu’en transmission.
Dans ce mode de fonctionnement, il est nécessaire de gérer avec attention le logiciel de communication qui doit prévoir un maître qui s’occupe “d’interroger” les périphériques esclaves par l’intermédiaire d’un protocole spécifique. Les esclaves, à leur tour, ne communiquent avec le maître que lorsqu’ils reconnaissent le message qui leur est destiné.

0 commentaires:

Enregistrer un commentaire

Related Posts Plugin for WordPress, Blogger...