ExpEYES, une interface d'expérimentation pour les sciences de la nature (mais surtout pour la physique)
ExpEyes est une interface de mesure et d'expérimentation à brancher sur un port USB d'un ordinateur ; elle est en principe utilisable avec tous les systèmes d'exploitation (Linux, MS-Windows, Mac).
Les principales caractéristiques informatiques sont décrites ci-dessous.
Le fichier des pilotes contient un pilote pour Windows, réalisé en PureBasic, et un pilote pour Linux, réalisé en FreePascal. Il y a un problème pour Linux, car le pilote PureBasic renvoyait des résultats aberrants (il ne récupérait pas tous les caractères envoyés par l'appareil), et le pilote FreePascal ne supporte pas que l'on charge un autre pilote à la suite du premier (par exemple, Mensurasoft-PB et Mensurasoft-LZ plantent lorsqu'on veut déclarer un pilote de sortie analogique après avoir chargé le pilote pour les entrées analogiques). Je serais très heureux si quelqu'un pouvait réaliser un meilleur pilote pour Linux.
Une manip très classique en physique est l'étude de la charge et de la décharge d'un condensateur. On peut la faire avec ExpEyes et le logiciel Mensurasoft-LZ : un fichier descriptif est ici.
Comparaison avec Arduino :
La communication entre l'ordinateur et l'appareil se fait aussi par un convertisseur USB-série.
Arduino est programmable, et les codes de commande pour échanger avec l'ordinateur varient selon le programme qui a été implanté dans l'appareil. Au contraire, ExpEYES est préprogrammé, et les codes de commandes sont fixes.
La vitesse de communication d'ExpEYES est 38400 bauds, alors que la vitesse d'Arduino est variable selon le programme implanté. ExpEYES nécessite un signal de parité paire ("e"), alors qu'Arduino n'a pas de signal de parité ("n") ; le résultat est que dans la pratique, certains langages de programmation n'arrivent pas à avoir de bonne communication avec ExpEYES, alors qu'ils communiquent sans problème avec Arduino.
Sous Windows, lorsqu'on branche Arduino (et que le pilote d'Arduino a été installé), il apparaît un port série supplémentaire (par exemple Com5:). C'est la même chose avec ExpEYES, sauf que le numéro du port série est beaucoup plus élevé (Com13:) : le résultat est que certains langages de programmation ne peuvent pas communiquer avec des ports de numéro si élevé. Sous Linux, le problème est différent, car ExpEYES apparaît comme /dev/ttyUSB0, ce qui est beaucoup plus standard, alors que les Arduinos apparaissent avec des identificateurs pouvant varier selon le type d'Arduino.
La conversion numérique-analogique (et inversement) d'ExpEYES est sur 12 bits, c'est à dire que les valeurs pour des mesures entre 0 et 5V sont entre 0 et 4095, ce qui aboutit à une précision de 1,25 mV (ou 2,5 mV pour les mesures entre -5V et +5V). Arduino a un convertisseur analogique-numérique sur 10 bits (entre 0 et 1023) pour des mesures entre 0 et 5V, ce qui fait une précision de 5 mV ; la conversion numérique-analogique par les sorties PWM est sur 8 bits, comme la sortie Pulse d'ExpEYES.
Les dispositifs électroniques d'Arduino sont plus simples qu'ExpEYES (pas d'amplificateurs opérationnels, pas de signaux carrés ou sinusoïdaux), mais les voies de mesure sont plus nombreuses (6 entrées analogiques, et 14 entrées et sorties logiques, dont plusieurs peuvent être utilisées en sorties analogiques PWM).
Principales fonctions d'ExpEYES utilisables facilement pour des échanges de données avec l'ordinateur
Ici, il ne sera pas question des fonctions d'amplification électronique d'ExpEYES, mais seulement des fonctions d'entrée et de sortie directes, c'est à dire sans stockage de nombreuses données dans l'appareil.
Entrées binaires
ID0 (borne 1) et ID1 (borne 2) : état 1 lorsque la borne est sous tension, état 0 lorsque la borne est hors tension.
Sorties binaires
OD0 (borne 3) est une sortie amplifiée pouvant fournir jusqu'à 100 mA ; OD1 (borne 4) n'est pas amplifiée et peut fournir jusqu'à 5 mA.
Ces deux bornes peuvent facilement allumer des diodes lumineuses (brancher la patte longue à la borne, et la patte courte à la masse).
OD0 peut fournir une plus forte alimentation, juste suffisante pour alimenter un petit servo-moteur commandé par "Pulse" (borne 10).
Entrées analogiques
A0 (borne 26) et A1 (borne 25) sont des entrées bipolaires, mesurant entre -5V et + 5V.
A2 (borne 24) est une entrée unipolaire, mesurant entre 0 et +5V.
SEN (borne 23) permet une mesure de résistance branchée entre cette borne et la masse. Pour les phototransistors, brancher le collecteur à la borne 23 et l'émetteur à la base. On peut y brancher directement des photorésistances, photodiodes, phototransistors, thermistances...
Sorties analogiques
UPV (borne 31) est une sortie unipolaire (entre 0 et +5V).
BPV (borne 30) est une sortie bipolaire (entre -5V et +RV).
IV est équivalent à BPV, mais à travers une résistance de 1kΩ.
Codes de commande
Ils sont utilisables après avoir initialisé la sortie série à 38400 bauds, 8 bits de données, 1 bit de stop, parité paire, pas de signaux de reconnaissance.
Entrées binaires
Il faut envoyer chr(2) : le 2e octet renvoyé par l'appareil donne l'état des entrées binaires.
S'il vaut 11 ou 9, ID0 vaut 1 et sinon ID0 vaut 0. S'il vaut 11 ou 10, ID1 vaut 1 et sinon ID1 vaut 0.
Sorties binaires
Il faut envoyer chr(56), puis un nombre correspondant à l'état des deux sorties.
(OD0=1) et (OD1=1) : envoyer 3
(OD0=1) et (OD1=0) : envoyer 1
(OD0=0) et (OD1=1) : envoyer 2
(OD0=0) et (OD1=0) : envoyer 4
Entrées analogiques
Envoyer chr(43) puis le numéro de l'entrée à lire (0 pour A0, 1 pour A1, 2 pour A2, 4 pour SEN).
L'appareil renvoie 3 octets, dont les deux derniers correspondent à la valeur lue : 256*(octet 3) + (octet 2).
Sorties analogiques
Pour BPV et UPV : envoyer chr(121) puis le numéro de la sortie (0 pour BPV et 1 pour UPV), puis l'octet de poids léger, puis l'octet de poids lourd (octet lourd = valeur div 256, et octet léger = valeur - (octet lourd * 256).
Pour la sortie Pulse, .envoyer chr(58) puis un octet entre 0 et 255.
Dernière modification le 14/08/2012