Mesures Physiques et Informatique, ports logiques d'une carte d'acquisition

Page modifiée le 5 / 5 / 2005
Contenu : Ports logiques d'une carte d'acquisition, programmation, exercices, propriétés de la carte Candibus, un exemple d'utilisation du logiciel Synchronie pour mesurer une pression

0. Remarque importante


Sous prétexte d'une illusoire sécurité, Windows XP bloque le fonctionnement de nombreux logiciels. De nouvelles versions de nos logiciels sont donc proposées sur ce site. Mais le pilotage des cartes Candibus pose problème, car XP interdit certaines fonctions Assembleur (In, Out, Cli, Sti...). A suivre... Question de Ring 0...

1. Introduction


Note importante : Le programme de MPI, BO n° 6 du 31 Août 2000 indique dans Partie thématique (environ 18 heures) : Elle pourra être l'occasion ...d'utiliser quelques notions de programmation (algorithme élémentaire : analyse d'un problème simple, instruction conditionnelle alternative ; langage de programmation associé au tableur utilisé en classe.).

Vous trouverez quelques pages plus loin des informations concernant l'usage d'un tableur, destinées aux scientifiques, avec des exemples d'applications.
Je suggère cependant de proposer aux bons élèves la réalisation, à l'aide de Delphi, de petits logiciels d'acquisition personnalisés. Cela n'est possible que si Delphi est complété par une bibliothèque ou un composant pilotant simplement les cartes d'acquisition dont vous disposez.
Ce site propose cela pour les cartes Candibus ; il serait souhaitable qu'une collaboration s'instaure entre collègues, pour que d'autres composants, pilotant d'autres cartes soient réalisés.

Vous pourrez modifier les exercices proposés (qui seront affinés au fur et à mesure des expérimentations), par exemple en remplaçant la réalisation de logiciels sur mesure, par l'emploi de logiciels d'acquisition commerciaux.
 

2. Les ports logiques d'une carte d'acquisition


Souvent, une carte d'acquisition comporte des ports logiques. Un port correspond à huit bornes qui peuvent être configurées soit en entrée, soit en sortie. Sur chaque borne en sortie, on peut recueillir une tension de 0 ou 5 V, correspondant à une variable logique valant 0 ou 1. La carte Candibus comporte trois ports appelés A, B et C.
Le composant PhyJiC pour Delphi pilotant cette carte configure automatiquement le port A en sortie et B et C en entrée. D'autres configurations sont possibles (voir l'aide en ligne ou d'autres pages de ce site.).

Si on écrit, sur le port A configuré en sortie, le nombre, de type Byte ou octet, 255, toutes ses bornes seront à une tension de 5 V. Si des diodes électroluminescentes y sont raccordées (à l'aide d'amplificateurs), elles seront allumées.
 

Haut de cette page ? 
 

3. Exercice 1


Notions abordées : État logique, port, liaison ordinateur - composants extérieurs.
Rédigez en Delphi un programme allumant la diode électroluminescente 3 branchée sur le port A ; testez votre réalisation.
Remarque : Souvent en informatique, la numérotation commence à zéro. La diode 3 est sans doute la quatrième.

Réponse : Voici son code source, ainsi que celui des exercices 2, 3 et 5 (de la page suivante).

Applications : commande de divers systèmes, par exemple, coupure du courant alimentant un électroaimant, ce qui permet de libérer une bille en acier, afin d'étudier la chute de celle-ci. ATTENTION : Si vous commandez des circuits à caractère inductif (bobine, moteur, voir programme de terminale), ceux-ci peuvent, lors de l'annulation du courant qui les traverse, engendrer une surtension capable de détruire votre ordinateur. Prévoyez une protection par condensateur ou diode.

Haut de cette page ? 
 

4. Exercice 2


Notions abordées : tirage d'un nombre au hasard, masque, fonctions logiques ET, OU appliquées à un octet, variable globale.
Dans un premier temps, votre programme doit allumer les huit diodes électroluminescentes au hasard. Un clic sur un bouton doit allumer la diode 3 (qu'elle soit éteinte ou allumée avant cela) ; un clic sur un autre bouton doit la forcer à s'éteindre. Tout cela sans modifier l'état allumé ou éteint des autres diodes.

Réponse : Voici son code source.

Applications : Commande indépendante d'un circuit, sans modifier l'état des autres, paramétrage des composants internes d'un ordinateur, voir par exemple dans le code source du composant fourni sur ce site pour piloter les cartes Candibus, comment est réglée l'horloge n° 2 du PC.

Haut de cette page ? 
 

5. Exercice 3


Notions abordées : Instruction conditionnelle alternative, test logique et l'éternel problème de l'informatique : comment ne pas sortir des intervalles de valeurs prévus.

Réalisez un chenillard, allumant les diodes l'une après l'autre. Vous emploierez un composant Timer, utiliserez son événement OnTimer. Vous aurez aussi besoin d'une déclaration de variable du style : Const x : Byte = 1. Lorsque tout fonctionnera comme attendu, vous ajouterez deux boutons, marche et arrêt, qui agiront sur la propriété Enabled du Timer, pour le mettre en service ou l'arrêter.

Réponse : Voici son code source.
 

Haut de cette page ? 
 

6. Propriétés de la carte Candibus

6.1. Candi logique

 
Constitution
Cette carte comporte 3 ports logiques, dont voici les noms et les adresses :
 
A B C
$28C $28D $28E
et une adresse de configuration, d'adresse $28F.
Chaque port est constitué de 8 cases (1 case = 1 bit, 8 bits = 1 octet, ou Byte), par exemple pour le port A :
 
A7 A6 A5 A4 A3 A2 A1 A0
               
A chaque bit arrive un fil électrique, porté au potentiel + 5 V si le bit vaut 1, 0 V si le bit vaut 0.

 
 
Fonctionnement
Chaque port doit être configuré en entrée ou en sortie ; cela se fait en écrivant un nombre, octet ou Byte, à l'adresse de configuration, $28F.
 
Nombre à écrire à l'adresse $28F Résultat
155 - 16 A en sortie, B et C en entrée
155 - 2 B en sortie, A et C en entrée
etc. ...

 
 
Programmation
Configurez les ports en entrée ou en sortie ; écrire ou lire un byte dans le port. Pour cela, votre version de Delphi, 3, 4 ou 5 est dotée d'un composant pilotant les cartes Candibus. Ce composant est programmé en langage d'Assembleur, dans Delphi. Il vous propose les procédures ou fonctions : Configurer (par défaut existe une configuration automatique, lisible dans l'inspecteur d'objets), EcrireDansA (ou B ou C), LireA (ou B ou C). Cela évite d'éventuelles erreurs d'adresses qui en Assembleur peuvent être fatales. Il faut naturellement placer sur votre fenêtre Form, un composant de la classe TPhyJiC, composant non visuel, pilotant la carte Candibus. Ce composant propose beaucoup d'autres procédures et fonctions dont la description figure dans son aide en ligne.

6.2. Candi analogique

 
Constitution
Candi analogique comporte deux entrées, la voie 1 (borne verte) et la voie 2 (borne rouge). La tension appliquée entre une entrée et la masse (borne noire) est convertie par un convertisseur analogique numérique. Une tension réelle devient un nombre entier écrit sur 12 bits, aux adresses $280 (et $281) pour la voie 1, et 282 pour la voie 2. L'entier est converti en un réel approché, par le composant TPhyJiC. La carte est paramétrée pour convertir sur 12 bits toute tension comprise entre -5,12 V et +5,12 V. Un montage à base de diodes Zener protège les entrées contre les petites erreurs de branchement.

 
 
Fonctionnement, programmation
Les 2 voies ne fonctionnent qu'en entrée. Il est donc inutile de les configurer. Pour lancer l'échantillonnage suivi d'une conversion analogique -> numérique, il faut écrire un nombre (255) à l'adresse $280 ou $282. Le composant TPhyJiC vous propose plusieurs méthodes : Lancer l'échantillonnage, attendre un peu, puis lire le résultat de la conversion, par LancerEchantNumVoie1 (ou Voie2), une boucle destinée à perdre du temps, puis LireVoie1 qui est une fonction. Une méthode plus simple consiste à faire AcquerirMoyenne(1, 15700) qui lance l'échantillonnage, fait une mesure, et en calcule la moyenne disponible dans TensionVoie1 (ou Voie2). En faisant la moyenne d'un plus grand nombre de points de mesure, il est possible d'améliorer les résultats. Une autre possibilité existe, Acquerir(256, 15700) qui remplit dans cet exemple un tableau, avec 256 mesures effectuées à 15700 Hz. Cela a été fait pour pallier à l'affligeante médiocrité de la gestion de l'horloge interne du PC, par Windows (pas plus de 20 Hz et au moins 5 % d'erreur sur une seconde).

Haut de cette page ? 
 

7. Exercice 4


L'exemple de commande vocale (une véritable commande vocale, avec reconnaissance des mots prononcés), proposé page 1 de ce chapitre, peut être considéré comme à la limite de ce programme, compte tenu de sa difficulté.
Il est éprouvant pour le professeur, car la chaîne de commande est complexe, ce qui multiplie les risques de panne.
Il plaît beaucoup aux élèves.

A vous de voir.

Haut de cette page ? 

8. Un exemple d'utilisation du logiciel Synchronie pour mesurer une pression

8.0. Matériel utilisé

Nous allons employer une carte d'acquisition Fastlab, pilotée par le logiciel Synchronie. Le capteur de pression a été acquis chez Jeulin et délivre une tension de sortie fonction affine de la pression. Il est possible d'employer un capteur Motorola de 0 à 1 bar, donnant en sortie 4 V pour 1 bar.

8.1. Objectif

Nous voulons mesurer la pression atmosphérique, avec le matériel précédent, en obtenant la meilleure sensibilité possible. Si celle-ci est suffisante, notre capteur de pression peut devenir un altimètre.

8.2. Montage

Raccordez le capteur à la carte d'acquisition et lancez la mesure sous Synchronie. Le capteur Jeulin et son électronique de conditionnement délivrent une tension qui varie de -2,5 V à +2,5 V, pour une pression variant de 0 à 200 000 Pa.
Dans Synchronie, faites :
Paramètres | Entrées | 0 | Automatique
Paramètres | Acquisition | 500 points (par exemple)
Paramètres | Calibre | -10 V, +10 V (par exemple)
ainsi que :
Moyenne 1
courbe remplacer
échantillon 20 ms (par exemple)
mode non permanent

8.3. Test du montage


Pour 500 points de mesure, choisissez une durée de mesure de 10 secondes. Quelle est la période d'échantillonnage ? Raccordez un tuyau souple à la sonde, lancez une acquisition par F10, faites varier la pression à la bouche et assurez-vous que tout fonctionne.

8.4. Observations


Pour 500 points de mesure, choisissez une période d'échantillonnage de 20 ms. Vous constatez des fluctuations sur la courbe. A quoi sont-elles dues ? Estimez leur valeur en volt. A quelle valeur de variation de pression correspondent-elles ? Comment pourriez-vous diminuer les erreurs de mesure dues à ces fluctuations ?
// Réponse partielle : Les parasites proviennent du capteur, des fils de liaison, de la carte d'acquisition. Ils peuvent être diminués en blindant le montage et les fils, en torsadant les fils, en envoyant sur la carte d'acquisition deux tensions opposées, fonctions affines de la pression (en supposant que la carte échantillonne deux voies simultanément)... Choisir une sensibilité d'entrée de la carte d'acquisition plus grande, calibre -2,5 V +2,5 V.

8.5. Conversion tension -> pression


En anticipant sur la discussion suivante, nous allons calculer la tension moyenne mesurée, en déduire la pression et afficher celle-ci.

Calcul | tensionMoy = moy(EA0)
press = 1000 * tensionMoy (choisissez la bonne valeur des coefficients)
T -> Commentaire | La pression est de {press} hectopascals

8.6. Améliorations des mesures

8.6.1. Erreur systématique de mesure


Une technique simple d'amélioration de la sensibilité de mesure consiste à faire la moyenne de plusieurs mesures.
Cette méthode ne permet pas de supprimer les erreurs systématiques de mesure. En effet, supposez que le capteur soit mal étalonné (mal, ou pas parfaitement) ; la multiplication des mesures n'y changera rien.
Pour vous en persuader, notez sur votre compte-rendu les valeurs de la pression atmosphérique données par l'ensemble des capteurs utilisés en classe. Que proposez-vous pour améliorer la situation ?
// On pourrait faire la moyenne des indications de tous les capteurs, ce qui suppose qu'ils ont été correctement étalonnés, avec une fluctuation autour de la bonne valeur. On pourrait aussi effectuer une mesure comparative, à l'aide d'un baromètre à mercure.
 

8.6.2. Erreur aléatoire de mesure


Les mesures fluctuent autour de la "bonne" valeur, à cause de différents "parasites". Il apparaît assez naturel qu'en calculant la moyenne des mesures successives, nous pourrons diminuer l'effet de ces "parasites".
Des études mathématiques que nous n'aborderons pas montrent que si les causes d'erreur sont en nombre infini, chacune ayant une influence faible, alors la répartition des résultats de mesure, autour de la "bonne" valeur, suit une loi mathématique connue (loi de Gauss, ou loi de Poisson...). Nous en resterons là.
La fluctuation des mesures autour de leur valeur moyenne est donnée par s, l'écart quadratique moyen ou écart-type.
// Racine carrée de la moyenne des carrés des écarts à la moyenne. Usage de la calculatrice.

8.6.3. Influence des parasites liés à la tension du secteur électrique


Quelle est dans cette salle de travail pratique la cause principale de parasites électromagnétiques ?
Quelle est la fréquence de la tension électrique sinusoïdale délivrée par EDF ? Quelle est sa période ? Que se passe-t-il si les mesures s'effectuent pendant un nombre entier de périodes du courant du secteur, et si on en fait la moyenne ?

8.6.4. Mesures


Vous devrez effectuer les mesures demandées et compléter le tableau suivant, puis réfléchir aux résultats obtenus.

nombre de mesures période d'échantillonnage durée de mesure tension moyenne en V écart de tension en V Sur 10 séries de mesures moyenne en V écart en V
100   20 ms          
100   10 ms          
10000 20 ms            

Vous devez constater que les mesures individuelles fluctuent beaucoup plus autour de leur moyenne, que ces 10 moyennes autour de leur propre moyenne. Evaluez l'amélioration.
Les mesures s'étalant sur une durée de 20 ms (une période de la tension du secteur EDF) doivent moins fluctuer que celles s'étalant sur 10 ms.

8.7. Le montage peut-il servir d'altimètre ?

Calculez la variation de la pression atmosphérique lorsque on s'élève de 1 mètre.
Elle est numériquement égale au poids de 1 m3 d'air. Vous supposerez que le volume molaire est à Pontarlier de 24 L . mol-1 et que la masse molaire moyenne des composants de l'air est de 29 g . mol-1. Question complémentaire : Pourquoi cette valeur de 29 g . mol-1.

A quelle variation d'altitude correspondent les fluctuations observées précédemment ?
Trouvez la formule permettant d'afficher la variation d'altitude du capteur, par rapport à une position de référence.

8.8. Améliorations possibles

Torsader les fils de connexion.
Envoyer +u et -u sur 2 entrées de la carte d'acquisition, efficace si celle-ci échantillonne simultanément les deux entrées, car +u + e - (-u + e) = 2 u.
Faire en sorte (ce qui est le cas ici) que la durée totale de mesure couvre un nombre entier de périodes de la tension du secteur 50 Hz, qui est la principale source de parasites électromagnétiques dans notre salle de travail. Comparez les fluctuations obtenues pour des moyennes calculées sur 1000 points à 10 ms et 1000 points à 20 ms, qui correspondent à une demi, puis une période de la tension alternative du secteur.

Haut de cette page ?