Date de création: 21.07.2001
Rubrique du:
Auteur(s): hpbaby
Navigation: precedent principal suivant
Version:     FR

Voir en: 1024*768

LA THEORIE SIMPLIFIEE

En règle général, les signaux issus des ports de communication ne sont pas exploitables directement, il est nécessaire d'adjoindre une interface d'adaptation. On parle à cet effet de   drivers de ligne. Il faut bien comprendre que l'interface n'a rien à voir avec les encodeurs/décodeurs de trames RS232  (UART, registre à décalage, microcontrôleur,...).

1)  Les systèmes RS232

      Ils comportent une interface et un émetteur/récepteur.

  • A - Les Interfaces RS232
  •  
    • a) Le Max232

      max232.gif (6438 bytes)
    • C'est un circuit assez "magique" puisqu'à partir d'une simple alimentation 5V, il est capable de générer un signal Rs232 +9/-9V (il comporte un élévateur et inverseur de tensions d'où la nécessité d'adjoindre 4 capacité de 10uF).
  1. b)Le  quadruple récepteur / transmetteur de ligne

    1. Si l'on a qu'un sens d'échange à gérer , il est tout à fait acceptable d'utiliser un driver de ligne RS232 monodirectionnel type:

ds14c89.gif (2438 bytes)                              ds14c88.gif (2441 bytes)

  1.  
  2. Driver de ligne

    Adaptation

    Fonction

    Requière

    DS14C89 4 * RS232->TTL Convertit les signaux +3/-3 en 0/5V compatibles TTL Alimentation simple 5V
    DS14C88 4*
    TTL->RS232
    Convertit les signaux
    TTL en +3/-3V min
    Alimentation double
    + 6V# /- 5V
  1. Ces circuits comme pour le max232 sont inverseurs. En ce qui concerne le circuit DS14C88, il lui faut au moins 6V pour fonctionner correctement.   Le plus simple est d'utiliser un simple transistor PNP comme suit:

  2.  
  3. TTLtoRS.gif (2485 bytes) Ceci comporte quand même un inconvénient : il faut une alimentation symétrique +5/-5V.

     

    Si au niveau du montage, rien ne pousse à avoir du -5V alors, il vaut mieux utiliser un max232.


    B- Encodeur/décodeurs RS232

     

    1. Les liaisons séries peuvent être synchrones (lié à une horloge de cadencement des envois/réception = 1 fil de plus) ou asynchrones (les trames arrivent aléatoirement dans le temps et sont traitées au fil de l'eau). Comme la RS232 est une liaison asynchrone, la HP48 doit être à l'écoute permanente de son port d'entrée série au cas où une trame lui serait adressée.
    2.  
    3. Il existe deux méthodes de scrutation, la scrutation active (on attend qu'une rame arrive et on ne fait rien d'autre) et la scrutation passive (c'est soit un circuit externe qui s'y colle type UART - Universal Asynchronous Receiver Transmitter soit une Interruption qui est amorcée pour que le processeur vienne vite voir ce qui se passe et traite la trame).
    4.  
    5. Si l'on veut récupérer les 8 bits de données de notre trame série que notre HP nous a empaqueter entre le bit start et le bit stop, on peut donc utiliser un circuit spécialisé de la gamme des UART. Malheureusement, la mise en oeuvre de tels circuits , étant donné qui doivent être initialisés par logiciel et configurés est loin d'être à la portée de tous. L'idée est de trouver une UART qui se configure matériellement parlant en affectant certains niveaux logique sur ses pattes pour lui définir la vitesse de transfert, le nombre de bits à transférer.
    6.  
    7. Ce circuit, je l'ai trouvé et mis en oeuvre (voir Lab48) c'est l' AY3-1015D (150F) - certes pas facile à obtenir puisque c'est sans doute l'une des premières UART contenues dans les clavier PC. Que nombreux se rassurent déjà, j'ai maintenant la solution de remplacement et beaucoup plus économique: le PIC16C84 (64F) programmable en C par le port série du PC à un coût dérisoire 50F grâce au fabuleux programmateur pip02 de JDM.- solution que j'exposerais bientôt dans mon projet Hpdomotic.
    8.  
    9. Le principe des UART est de synchroniser sur le front montant du bit start, de lire l'état au milieu de chacun  8 bits de données (nécessite une horloge de 2*Tbaud au moins - dans la HP c'est une horloge 16 fois plus rapide qu'y s'en occupe) et de mémoriser l'ensemble dans un registre 8bit de réception  dont le contenu peut être accessible directment sur les broches du circuit ou peut être consulté en dynamique par un microcontrolleur. 
    10.  

2)  Les systèmes Infrarouges

  • A - Interfaces IR:

     

    • a) Solution intermédiaire en logique cablée

    • J'ai récupéré sur internet une solution en logique câblée de Tony Duel. Je n'ai pas pu la  tester car les éléments principaux sont introuvables mais bon, je vous la donne tout de même sous sa forme ASCII-ART.

irhp_logique_cablee.gif (7307 bytes)

où le phototransistor est un Maplin YY66W (Infra Red Sensor) = TIL78
et la LED infrarouge une led Maplin YH70M (Infre-Red Emitter) = TIL38

En fait, ce montage où l'on retrouve un bon vieux max232, transforme  la trame  IR  pour la rendre compatible RS232 mais ne résouds pas pour autant  le  problème lié à la désencapsulation ni des trames série, ni des trames infrarouges.

b) Mes interfaces IR

La solution des problèmes réside souvent dans le bon choix des éléments d'un montage. Qui de mieux que HP pouvait apporter la solution surtout dans le domaine de l'optoélectronique? Je me suis intéressé, il y a déjà deux ans, aux liaisons Irda.(transfert PC <-> portables). Il existe chez Temic comme chez Hp, des modules d'émission / réception prêts à l'emploi, les "Infrared IrdA Compliant Transceiver". J'en ai acheté un de chaque, j'ai tenté ma chance et cela a été payant.

Le circuit HSDL-1001 (disponible chez radiospares pour 30 f environ) comportant ni plus ni moins qu' une photodiode de réception et d'une diode infrarouge (avec filtre UV) et des buffers TTL , est adapté aux  transmissions pouvant aller jusqu'à 115kbit/s avec une longueur d'onde comprise entre 850 et 900 (les diodes infrarouges de la  hp48 sont calées à 880nm ).

irhp_receiver.gif (5340 bytes)

Tout le secret de ce montage réside dans l'allongement de la durée des pulses. Le circuit NE555 est monté en monostable redéclenchable : à chque fois qu'une impulsion négative est envoyée sur l'entrée TR (trigger), on obtient en sortie une tension calibrée de durée :

   Tw= R3*C3* ln3

Ce qui dans notre cas donne: Tw=297 microsecondes  qui doit forcément être de durée inférieure à celle  entre deux pulses ( 416.7 microsecondes). Ainsi, nous aurons le temps de lire correctement le niveau du pulse qui est le complément du bit envoyé.(0= un pulse au  niveau 1 de durée 267 microsecondes, 1 = pas de pulse donc un niveau 0 de durée 416.7 microsecondes).

Le circuit HSDL-1001 ne peut hélas pas être utilisé pour l'émission car selon la documentation technique, la durée maximale de la pulsation autorisée est seulement de 2.15 microsecondes (durée typique Irda) alors qu'il nous faudrait 52 microsecondes. Qu'à cela ne tienne, nous allons utiliser un amplificateur à transistor (Q2= BD139) pour notre émetteur infrarouge:

irhp_emitter.gif (3332 bytes)

B - Encodeur / décodeur  IR:

Le choix s'est porté sur le circuit 16C84 de Microchip étant donné qu'il est reprogrammable à volonté et les outils pour le programmer quasi gratuits et facile à mettre en oeuvre. Il s'agit d'un microcontrôleur 8 bits avec 1024k de flash programmable en C , il est transformable en UART série et décodeur IR pour la HP.

pic16f84.gif (8001 bytes)

Les signaux Clock , prog et data sont issus du programmateur. Il faut savoir que le programmateur Pip02 de JDM ne permet pas la programmation in situ comme affiché par contre, il est universel et facile à construire. Je tiens à remercier JDM pour son super travail et pour le fait de le divulguer sur internet.

Je me suis inspiré de celui d'électronique pratique en optimisant certaines parties de schéma pour en créer un qui puisse le faire. Je vous donnerais biensûr mes plans dans la rubrique Hpdomotic  une fois construite. 

 

 

Système de base:
La hp48 (S/SX/G/GX)
Les ports d' Entrée/Sortie
1) Le port série RS232C
2) Le port Infrarouge
3) Les cartes d'extensions
Interfaces d'adaptation:
1) RS232
2) IR
Dialogue : Les commandes
1) RPL de base
Matériel requis :
1) La boîte à outils