Root » Serveurs » Chauffage » Technique » TTL et RS-232
Processus industriels
Protocoles de communication
TTL <-> RS-232
Le protocole de communication RS-232 est bien connu. Il était par exemple utilisé pour connecter un modem à un ordinateur, plus tard il sera utilisé dans un environnement industriel pour envoyer des données d'un point à un autre (automates programmables industriels).
-

-

Niveaux électriques

La communication sérielle a été définie avec des tensions assez spécifiques: un niveau "1" est indiqué par une ligne à un potentiel de -3V à -15V. Au repos, la ligne est également à ce potentiel. Un "0" est codé par une tension de +3V à +15V. La zone entre -3V et +3V n'est pas définie.

Mais beaucoup d'appareils modernes travaillent avec des niveaux de 0V et 5V (niveaux TTL standard). Il s'agit par exemple d'écrans LCD ou d'un arduino. Si vous utilisez un arduino, la communication vers une imprimante parallèle est difficile à réaliser: il faut réserver 8 ports numériques.

Certains appareils récents utilisent des niveaux TTL (0 et 5V). Il s'agit de communication locale, par exemple d'un microcontrolleur à un écran LCD. Notez que ces niveaux sont inverse des niveaux série: au repos la ligne se trouve à +5V et un "1" est indiqué par un niveau haut (logique positive).

La communication série TTL est limitée à une communication locale. Pour transmettre des données à plus longue distance, il faut utiliser une vraie communication RS-232. Grâce aux niveaux plus élevés, la communication est mieux à l'abri des parasites. Mais malgré tout, la distance maximale admissible est d'environ 15m.

Convertisseur de niveaux

Les convertisseurs de niveau permettent d'adapter les niveaux, par exemple un ordinateur avec port COM qui utilise les niveaux standards et un écran LCD qui utilise les niveaux TTL. Ces circuits ont un inconvénient; ils nécessitent une alimentation séparée et dans certains cas produisent des parasites (oscillateur pour produire le -5V à partir du +5V).

A droite le petit schéma d'un convertisseur de niveaux. Il se compose d'un seul transistor qui reçoit son signal en provenance d'un port numérique de l'arduino. Au repos, la tension TTL est de 5V et le niveau RS-232 est d'environ -5V (généralement chaque ligne entrante est reliée via une résistance de 5kΩ à la masse pour absorber les réflections). Quand la tension TTL va à 0V, le transistor entre en conduction et le niveau RS-232 passe à +5V. Ce sont des tensions parfaitement valables.

La conversion inverse est tout aussi aisée. Nous voulons par exemple controler l'état de la ligne CTS (clear to send) pour savoir si l'imprimante est prête à recevoir des données. La ligne passe à 0 quand elle n'est pas prête (mémoire tampon remplie, plus de papier,...). La ligne CTS est une façon simple de prévoir un flow control, attention certaines imprimantes utilisent d'autres pins.

La ligne 8 du port sériel reçoit une résistance de 4.7kΩ, suivi de deux diodes 1N4148 qui vont empècher que la tension ne passe au dessus de la tension d'alimentation ou en dessous de 0V. Le signal est ensuite envoyé à un port numérique. Le niveau est bas quand l'imprimante est prête. Attention, le protocole ne permet pas de controler si l'imprimante est alimentée!

Dans certains cas extrèmes, quand l'imprimante ne fournit que du +3V et l'arduino a du mal a détecter un "1" avec cette tension, il faut utiliser une entrée analogique. Normalement un arduino voit un "1" dès que la tension atteint 0.6 × la tension du processeur, donc 3V.


Ci dessus à quoi ressemble une communication avec des niveaux TTL. La tension varie entre zéro et 5V avec 5V au repos. Le code binaire transmis est 01001000 ou 18 en décimal (il s'agit d'un code de controle ASCII). Le bit de poids le plus faible est transmis d'abord. Le code est précédé d'un bit de démarrage (bas) et terminé par un bit d'arrêt (haut). Le bit stop peut directement être suivi d'un bit start, il ne faut pas obligatoirement laisser de temps mort.

Imprimantes sérielles

Il n'y a plus tellement d'imprimantes qui ont encore une entrée sérielle, mais il y en a encore. Ces imprimantes sont par exemple utilisées pour enregistrer les données d'un processus industriel. Ces processus sont commandés par des automates programmables, qui ont généralement des capacités limitées.

Une autre possibilité est d'utiliser des imprimantes pour tickets: certaines versions ont encore une entrée sérielle, très utiles pour certains points de vente qui ont un terminal aux possibilités réduites. Le protocole sériel est tellement simple que le terminal le plus basic peut communiquer en utilisant ce protocole.

Une imprimante moderne que vous pouvez utiliser est l'imprimante Zebra LP2824 Plus. Cette imprimante peut être équipée de différentes entrées: parallèle, USB, série ou réseau. C'est évidemment la version avec port série qui nous interesse. L'imprimante peut imprimer des étiquettes (ce qui nous interesse peu ici), mais peut également travailler avec du papier thermique normal.

L'imprimante peut travailler en mode graphique (ZPL), dans ce mode de fonctionnement elle n'est pratiquement pas utilisable. L'imprimante utilise alors des caractères "true type" comme ceux utilisés sur les ordinateurs à écran graphique. Heureusement elle peut être commutée en mode texte (EPL), la commutation est même automatique. Mais ce mode est malgré tout assez complexe. Il est possible de passer du mode EPL en "line mode" en envoyant le code OEPL1 à l'imprimante. Ce code ne doit être envoyé qu'une seule fois, le mode de fonctionnement est gardé en mémoire permanente. Le line mode permet malgré tout un controle limité de l'imprimante, et notament la taille des caractères.

Quelques liens interessants:

Imprimante sérielle commandée par arduino
Il s'agit d'une application pratique où l'arduino est utilisé pour imprimer des températures. Vous trouverez également sur la page un petit circuit pour générer du -3V à partir du +5V.

Le protocole de communication série
La base, avec les niveaux éléctriques valables et le timing, le connecteur et l'attribution des différentes pins.

Les modems
Le protocole série était principalement utilisé pour commander des modems. Cette page explique tout sur la modulation, à partir des premiers modems accoustiques jusqu'aux modems qui permettent l'accès rapide à l'internet.

Inverseur de niveau
Les modules LCD sériels travaillent avec des niveaux TTL et n'ont pas besoin de conversion de niveau. Mais un inverseur de niveau permet de commander individuellement deux écrans LCD à partir d'une seule ligne d'un arduino (et ce circuit a encore un autre avantage).

Publicités - Reklame

-