1 039 vues
FaibleMoyenInteressantBienExcellent (Pas de votes)
Loading ... Loading ...

La Liaison RS-232

La liaison RS-232 est issue de la norme du même nom qui permet l’envoi de données via une chaîne de niveaux logiques envoyés en série (d’où le nom du port du PC). Elle permet de faire dialoguer deux systèmes (et seulement deux) entre eux. Les données sont envoyées par trames de 5, 6, 7 ou 8 bits soit autant de niveaux logiques. Par la suite je travaillerai exclusivement avec une liaison sur 8 bits qui est la plus couramment utilisée.

Cette liaison est de type asynchrone c’est à dire qu’elle n’envoie pas de signal d’horloge pour synchroniser les deux intervenants de la liaison, il est donc nécessaire que ces derniers soient configurés de la même manière (vitesse de transmission, nombre de bits par trame etc.). La vitesse de transmission s’exprime en bauds (bds = bits par seconde) les valeurs les plus courantes sont 2400, 4800 et 9600 bauds.

Comment ça fonctionne ?

La transmission :
Les niveaux logiques ont une grande marge d’erreur ce qui permet à la liaison RS-232 de n’être que peu sensible aux perturbations et donc de pouvoir être mise en place sur de longues distances. En effet le niveau logique “zéro” est représenté par une tension comprise entre +3 et +15V et le niveau logique “un” est représenté par une tension comprise entre -3 et -15V.

Au repos, lorsqu’aucun caractère n’est transmis, la ligne de transmission est au niveau logique 1. Lorsque l’un des systèmes veut commencer à communiquer, il prévient le système à l’autre bout de la liaison par une mise de la ligne au niveau 0, c’est le bit de Start. Viennent ensuite les bits de données au nombre de 8, ils sont soit au niveau 1 soit au niveau 0 en fonction des données, le bit de poids faible est envoyé en premier et on termine par le bit de poids fort. Un dernier bit peut être ajouté, il s’agit du bit de parité qui ne joue pas du tout le même rôle. On distingue la parité paire et la parité impaire : en effet en parité pair le bit de parité est mis au niveau 1 ou 0 de telle manière que le nombre de bits à 1 soit toujours pair, s’il y a trois bits au niveau 1 dans les bits de données le bit de parité est mis à un pour permettre qu’au final il y ait un nombre pair de bit à 1; et réciproquement pour la parité impaire. Ainsi le système qui reçoit les données peut vérifier s’il y a eu une erreur de transmission due à des interférences en comparant le nombre de bits à 1 et le bit de parité, s’il y a erreur alors le receveur peut demander à l’émetteur de renvoyer les données. Remarque : Si deux erreurs se produisent le receveur ne pourra pas les détecter puisque alors le nombre de bits au niveau 1 est en accord avec le bit de parité et si trois erreurs se produisent le receveur n’en verra qu’une etc. Enfin après ce bit de parité viennent un ou deux bits de Stop qui signalent au receveur que la trame est terminée.

Voilà un exemple de trame avec un bit de parité et un bit de Stop.

Voilà un exemple de trame avec un bit de parité et un bit de Stop.

Physiquement on la fait comment cette liaison?

La prise :
Les prises utilisées sur les ordinateurs pour le port RS-232 (port Série) sont de type DB9 ou DB25. Aujourd’hui, les ordinateurs ne sont plus équipés que de prises DB9 pour le port série, mais si vous possédez un vieux système vous pourrez certainement trouver une prise DB25. Je ne vais me préoccuper ici que le la prise DB9, dont voici un schéma et une photo:

schema_db9photo_db9Pour une liaison RS-232 simple (ou full duplex) seules trois broches de la prise sont utilisées; dans la majorité des cas, les systèmes en communication ne nécessitent guère plus que ce type de liaison. Je ne vous présenterai donc que celui-ci, car c’est celui que j’utilise dans mes montages électroniques.

Alors ces broches ?

* La broche N°5 sert à mettre la masse des deux systèmes en commun pour être certain que le point de référence des niveaux logiques est le même; ainsi on peut être sûr que ce qui est un niveau 1 pour l’un des systèmes est bien un niveau 1 pour l’autre.
* La broche N°2, c’est par l&eagrave; que le système reçoit les données c’est l’entrée du signal.
* La broche N°3, c’est la broche par laquelle le système envoie les données.

Donc pour faire dialoguer deux systèmes, il faut mettre en commun les broches N°5 des deux systèmes et croiser les broches N°2 et N°3. C’est à dire que la broche N°2 du premier système doit être reliée à la broche N°3 du second, et vice-versa.
Ensuite, si l’un des systèmes est un ordinateur, il faudra néanmoins le tromper car les PC n’aiment pas les liaisons simples. Pour cela il faudra relier les broches N°1, N°4 et N°6 ensemble, ainsi que les broches N°7 et N°8 ensemble du côté du câble oéugrave; se trouve l’ordinateur (si vous reliez deux ordinateurs, il faudra faire ça des deux côtés du câble). En fait, les ordinateurs utilisent une liaison complète qui comporte des signaux de contrôle sur les différentes broches de la prise : il faut donc leurrer le système en lui renvoyant ses propres signaux, mais je passe sur ces détails. Le résultat est donc le schéma suivant :
cable_croise_RS232Voilà : vous savez relier deux systèmes utilisant la norme RS-232. Vous savez même comment ils font pour communiquer.

Comment je peux m’en servir de cette liaison?

Bon : on va maintenant voir comment créer son propre système supportant cette norme.
Je vous rappelle que tout à l’heure, nous avons remarqué que la norme RS-232 travaille avec des tensions de +3 à +15V et de -3 et -15V (En général, on trouve des tensions de +12 et -12V). Et si on veut créer un circuit électronique capable de communiquer en utilisant cette norme, il va falloir utiliser un microcontrôleur supportant les communications série. Or, ce genre de microcontrôleur ne supporte pas de tension supérieure à +5V.
Et là : on a un problème huh: car si on branche directement le microcontrôleur sur une prise série d’un ordinateur d’une part, le microcontrôleur n’est pas capable d’envoyer des signaux en -5V; et d’autre part, si le PC essaie d’envoyer un signal au microcontrôleur, celui-ci risque de ne pas apprécier du tout la tension délivrée par le port série du PC, et nous claquer entre les mains. Mais que personne ne panique, j’ai la solutionlangue. En fait, il existe un petit circuit intégré pas cher, que l’on trouve partout, qui permet de faire l’adaptation entre les signaux RS-232 et les signaux TTL du microcontrôleur. Ce circuit, c’est le MAX232 (oui : je pense qu’ils n’ont pas choisi le nom par hasard).

Alors… le fameux MAX232… Pour ceux que ça intéresse, la documentation technique fournie par le fabriquant est disponible ici (440ko). Le MAX232 est donc un petit circuit intégré qui, couplé à cinq condensateurs, permet de faire l’adaptation entre les signaux TTL d’un microcontrôleur et les signaux RS-232 de votre ordinateur. Il vous suffit donc de câbler ce composant avec ses condensateurs de 1µF, comme ceci :

MAX232Il ne vous reste ensuite qu’à faire transiter vos signaux de communication par ce circuit, et c’est gagné. Les signaux venant du microcontrôleur sont mis à la patte 10 du MAX, et ressortent au format RS-232 à la patte 7 ; les signaux RS-232 venant du PC, quant à eux, sont mis à la patte 8 du MAX232, et ressortent au format TTL (signaux microcontrôleur) à la patte 9 de ce dernier. Comme le montre bien le schéma ci-dessus, il est possible de convertir deux autres signaux grâce aux pattes 11 et 14 pour la conversion en RS-232, et aux pattes 13 et 12 pour le sens inverse.

Et voilà vous savez désormais comment utiliser l’interface RS-232 de votre ordinateur il ne vous reste plus qu’à apprendre un language de programmation pour microcontrôleur et le tour est joué : vous pouvez faire ce que vous voulez.

Source: vostock.cliranet.com – CC