Joystick de pilotage

Pour pouvoir déplacer le laparoscope en mode piloté, on peut utiliser un joystick constitué de plusieurs boutons tout ou rien et de deux potentiomètres.

Ce joystick possède une carte électronique qui traite les signaux et les envoie à la carte de pilotage et d'acquisition par un protocole I2C.

Ces informations sont utilisées pour le fonctionnement du laparoscope mais sont également tracées dans le logiciel.

Un appui sur le bouton du joystick permet de

Le déplacement du joystick par l'intermédiaire du levier permet de contrôler la vitesse de déplacement des deux parallélogrammes et donc l'azimut et l'élévation.

L'I2C

Le bus I2C (Inter Integrated Circuit) a été développé au début des années 80 par Philips semiconductors pour permettre de relier facilement à un microprocesseur les différents circuits d'un téléviseur moderne. Le bus I2C permet de faire communiquer entre eux des composants électroniques très divers grace à seulement trois fils : un signal de données (SDA), un signal d'horloge (SCL), et un signal de référence électrique (Masse).

Les données sont transmises en série à 100Kbits/s en mode standard et jusqu'à 400Kbits/s en mode rapide (Fast Mode). Le nombre de composants qu'il est ainsi possible de relier est essentiellement limité par la charge capacitive des lignes SDA et SCL : 400 pF.

Afin de d'éviter les conflits électriques les Entrées/Sorties synchrones SDA et SCL sont de type "Collecteur Ouvert". Plusieurs circuits pouvant être branchés en même temps sur le même bus, il a été nécessaire d'instaurer un protocole entre eux, afin d'éviter les problèmes dues à une prise de parole simultanée de différents modules. C'est le protocole I2C.

Le protocole I2C définit la succession des états logiques possibles sur SDA et SCL, et la façon dont doivent réagir les circuits en cas de conflit.

Pour prendre le controle du bus, il faut que celui-ci soit au repos ( SDA et SCL à '1'). Pour transmettre des données sur le bus, il faut donc surveiller deux conditions particulières :

  • La condition de départ. ( SDA passe à '0' alors que SCL reste à '1' )

  • La condition d'arrèt. ( SDA passe à '1' alors que SCL reste à '1' )

Lorsqu'un circuit, aprés avoir vérifié que le bus est libre, prend le controle de celui-ci, il en devient le maître. C'est toujours le maître qui génère le signal d'horloge.

Pour transmettre un octet, les étapes sont les suivantes.

  • Après avoir imposé la condition de départ, le maître applique sur SDA le bit de poid fort D7. Il valide ensuite la donnée en appliquant pendant un instant un niveau '1' sur la ligne SCL.

  • Lorsque SCL revient à '0', il recommence l'opération jusqu'à ce que l'octet complet soit transmis.

  • Il envoie alors un bit ACK à '1' tout en scrutant l'état réel de SDA. L'esclave doit alors imposer un niveau '0' pour signaler au maître que la transmission s'est effectuée correctement. Les sorties de chacuns étant à collecteurs ouverts, le maître voie le '0' et peut alors passer à la suite.

Le nombre de composants qu'il est possible de connecter sur un bus I2C étant largement supérieur à deux, il est nécessaire de définir pour chacun une adresse unique. L'adresse d'un circuit, codée sur sept bits, est défini d'une part par son type et d'autre part par l'état appliqué à un certain nombre de ces broches . Cette adresse est transmise sous la forme d'un octet au format particulier. On remarque ici que les bits D7 à D1 représentent les adresse A6 à A0, et que le bit D0 et remplacé par le bit de R/W qui permet au maître de signaler s'il veut lire ou écrire une donnée. Le bit d'acquitement ACK fonctionne comme pour une donnée, ceci permet au maître de vérifier si l'esclave est disponible.