580 likes | 815 Views
Stage. “Système complet d'acquisition de données”. Lycée Clos Banet Perpignan ( 2 et 9 février 2005 ) Lycée Joffre Montpellier (SAMS) ( 6 et 7 avril 2005 ). Animateur : Christian BISSIERES ( Professeur de Physique Appliquée ) Responsable pédagogique : Jean-Claude REBEYROLE ( IA IPR ).
E N D
Stage “Système complet d'acquisition de données” • Lycée Clos Banet Perpignan ( 2 et 9 février 2005 ) • Lycée Joffre Montpellier (SAMS) ( 6 et 7 avril 2005 ) Animateur : Christian BISSIERES ( Professeur de Physique Appliquée )Responsable pédagogique : Jean-Claude REBEYROLE ( IA IPR )
Utilisation d'une chaîne complète d'acquisition de données"du capteur à l'ordinateur" Pilotage de la carte directement avec Excel Visual Basic (VBA)
Mini-carte d’acquisitionautoalimentée par le port série RS232(version 2003)
Système complet d’acquisitionpilotable par le port série RS232(version 2004)
Objectifs du stage 1- Utilisation du port série RS232 pour communiquer avec des montages électroniques à l'aide d'Excel (Visual basic). 2- Pilotage de la mini-carte d’acquisition (version 2003). 3- Utilisation du système complet d'acquisition pour mesurer des températures avec une simple diode mais aussi avec un LM335.
Déroulement du stage 1. Utilisation du port série RS 232 à l'aide d'Excel (Visual Basic) 1. 1. Utiliser Visual Basic (présent avec Excel) pour faire de la programmation sous Windows. 1. 2. Savoir déclarer et utiliser, avec Visual Basic, les fonctions et procédures d’une DLL donnée. 1. 3. Utiliser les fonctions de pilotage du port série avec la DLL “port.dll” pour piloter une maquette de feux tricolores.
1.1. Utilisation de Visual Basic (VBA) 1- Basculer vers la fenêtre Visual Basic Editor Le travail à faire est indiqué par . Le code à écrire ou déjà écrit est indiqué en vert et les commentaire sont précédés par le caractère ' . Pour basculer entre la feuille Excel et la fenêtre Visual Basic il faut faire Alt + F11. Pour se placer dans la fenêtre Visual Basic Editor, effectuer les manipulations ci-dessous: Démarrer Excel. Sélectionner le menu Outils / Macro / Visual Basic Editor. Dans la fenêtre Projet – VBA Project, faire un double-clic sur Feuil1. La fenêtre où sera inséré le code du programme relatif à la feuille 1 apparaît sur la droite de l’écran :
1.1. Utilisation de Visual Basic (VBA) 2- Remplir des cellules directement depuis VBA Il faut tout d’abord donner un nom au programme : Dans la fenêtre relative aux programmes de la feuille 1, insérer le code :Sub sinusoide() 'début et nom du programmeEnd Sub 'fin du programme Entre Sub et End Sub, insérer le code suivant:Cells(2, 2) = "Tension(Volts)" 'texte dans cellule B2 Cells(4, 2) = 12 'valeur 12 dans cellule B4 Cells(5, 2) = 5 'valeur 5 dans cellule B5 Appuyer sur le bouton Exécuter, sélectionner le programme "Sub sinusoide()" (macro) à exécuter et le résultat sera visible dans la feuille Excel (Faire Alt + F11 pour basculer de Excel vers Visual Basic). Résultat
1.1. Utilisation de Visual Basic (VBA) 3- Tracer une sinusoïde réglable en amplitude et en fréquence Nous allons remplir automatiquement 101 points (temps et valeur) d'un sinusoïde d'amplitude et defréquence déterminée. Modifier le code relatif à Sub sinusoide() de la façon suivante :Sub sinusoide() 'début et nom du programmeCells(1, 1)="t (ms)" 'préparation du tableauCells(1, 2)= "sinus (volt)"pi = 3.14159 'définition des constantestmax = 0.001amplitude = 5frequence = 2000For n = 0 To 100 'debut de la boucle des 101 points t = tmax / 100 * n 'découpage du temps entre 0 et tmax Cells(n + 2 , 1) = t * 1000 'affichage du temps sinus = amplitude * Sin(2* pi * frequence * t) 'création et affectation de la variable sinus Cells(n + 2, 2) = sinus 'affichage des valeurs de la variable sinusNext n 'retour ou fin de la boucleEnd Sub 'fin du programme Exécuter le programme Sub sinusoïde et vérifier le résultats dans Excel
Partie duprogrammemodifiée 3- Tracer une sinusoïde réglable en amplitude et en fréquence (suite et fin) Nous allons améliorer le programme en offrant la possibilité de régler l'amplitude et la fréquence à l'aide de barres de défilement. Revenir à Excel et faire Affichage / Barres d’outils / Boite à outils contrôles. Sélectionner le contrôle Barre de défilement et le dessiner horizontalement sur la feuille (amplitude). Faire un clic droit sur la barre pour afficher la fenêtre propriétés et les modifier (Min : 0 ; Max : 12). Dessiner aussi la barre de défilement relative à la fréquence (Min : 500 ; Max : 5000). Faire un double clic sur la 1° barre de défilement; on doit maintenant se retrouver dans VBA avec un nouveau programme Scrollbar1_Change. Ecrire simplement le code sinusoide à l’intérieur du programme pour appeler la programme sinusoide à chaque changement de position du curseur. Refaire le pour la 2° barre de défilement. Il faut modifier légèrement le code du programme sinusoïde. Pour tester le programme, il faut désactiver le mode "création" qui a été activé pour créer les contrôles.
1.2. Déclaration et utilisation d'une DLL 1- Pourquoi utiliser une DLL ? Pour piloter les montages proposés, il nous faut des fonctions qui exécutent les tâches suivantes : Ouvrir le port "COM" ( COM1 , COM2 , … au choix ). Refermer le port "COM" après usage. Commander les 3 lignes de sorties du port série ( 0 logique -11V et 1 logique +11V ). Lire l’état des 4 lignes d’entrée du port série ( tension < 1V 0 logique et tension > 2V 1 logique ). Générer des fonctions temporelles ( compteurs et temporisations ). Ces fonctions ne sont pas disponibles dans VBA, nous allons donc utiliser les fonctions suivantesproposées par "port.dll" : OPENCOM Exemple : OPENCOM(" COM2 , 1200 ,N , 8 ,1 ") permet d'ouvrir "COM2" avec 1200 bauds, pas de bit de parité, 8 bits de données et 1 bit de stop. CLOSECOM permet de refermer le dernier port ouvert. DTR, RTS et TXD commande des lignes de sortieExemple : DTR 1 permet de mettre à "1" la ligne de sortie DTR (+11V). CTS, DSR, RI, DCD Exemple : lecture = DSR place la valeur DSR (0 ou 1) dans la variable lecture. DELAY Exemple : DELAY 100 introduit une pause de 100ms dans le programme. DELAYUS même fonction que DELAY mais en microsecondes.
1- Pourquoi utiliser une DLL ? (suite et fin) TIMEINIT Mise à zéro et démarrage du compteur des millisecondes. TIMEREAD Lecture du compteur des millisecondes.Exemple 1 : While TIMEREAD < 1000 Wend la boucle WHILE .. WHEND reste "bloquée" tant que le compteur n'a pas dépassé 1000 ms.Exemple 2 : For n = 1 to 10 WHILE TIMEREAD < n*100 Wend Cells ( n , 1 ) = Mesure Next n on mesure 10 points avec un intervalle de 100ms et on place les points dans le tableur. TIMEINITUS et TIMEREADUS Mêmes fonctions que TIMEINIT et TIMEREAD mais en microsecondes. Remarques : Pour des déclenchements temporels (acquisitions), il ne faut pas utiliser les fonctions DELAY ou DELAYUS car elles ne dépendent pas d'un compteur, elles introduisent uniquement des "pauses". Le compteur continue à "compter" même après une instruction TIMEREAD. REALTIME Cette fonction rend le programme prioritaire par rapport à toutes les tâches que gère Windows. Exemple : REALTIME Trueactivation de la priorité temporelle.
1.2. Déclaration et utilisation d'une DLL 2- Déclaration des fonctions de la DDL (port.dll) Important : La DLL devra être placée dans le répertoire du programme ou dans le dossier Windows\System. Avant de faire appel aux fonctions proposées par la DLL, il faut indiquer à notre programme que l'on va utiliser ces fonction. Voici le code qu'il faudra inscrire au début du programme pour déclarer les fonctions de la DLL qu'on vient de décrire : Declare Function OPENCOM Lib "Port" (ByVal A$) As Integer Declare Sub CLOSECOM Lib "Port" () Declare Sub DTR Lib "Port" (ByVal b%) Declare Sub RTS Lib "Port" (ByVal b%) Declare Sub TXD Lib "Port" (ByVal b%) Declare Function CTS Lib "Port" () As Integer Declare Function DSR Lib "Port" () As Integer Declare Function RI Lib "Port" () As Integer Declare Function DCD Lib "Port" () As Integer Declare Sub DELAY Lib "Port" (ByVal b%) Declare Sub TIMEINIT Lib "Port" () Declare Sub TIMEINITUS Lib "Port" () Declare Function TIMEREAD Lib "Port" () As Long Declare Function TIMEREADUS Lib "Port" () As Long Declare Sub DELAYUS Lib "Port" (ByVal l As Long) Declare Sub REALTIME Lib "Port" (ByVal i As Boolean)
1.2. Déclaration et utilisation d'une DLL 3- Réalisation d'un programme de feux tricolores On va utiliser une petite plaque de test pour connecter une LED rouge sur RTS, une LED orange sur DTR et une LED verte sur TXD. Remarque : on peut brancher directement une LED entre une sortie du port série et la masse car les sorties possèdent une résistance interne de 450 environ ( ce qui donnera 20mA pour la diode ). La déclaration des fonctions peut se faire "une fois pour toutes" en chargeant un module qui contient le Code relatif aux déclarations. Ouvrir un nouveau fichier Excel. Faire un clic droit dans la fenêtre project VBAProject et sélectionner Importer un fichier… . Le fichier se nomme port_dll.bas et est placé dans le répertoire de travail du stage. Une fois le fichier importé, faire un double clic dessus et constater qu'il contient le code relatif aux déclarations. Remarque : La DLL contient aussi d'autres fonctions ( carte son, port de jeux …). Résultat Clic droit
3- Réalisation d'un programme de feux tricolores (suite) Revenir au classeur Excel (Alt+F11) et faire Affichage / Barre d'outils / boite à outils Contrôles. Placer le Bouton de commande et la Barre de défilement(min=1 et max=10) comme indiqué ci-dessous (les autres composants ne sont que des "dessins"): Barre de défilement Bouton de commande
3- Réalisation d'un programme de feux tricolores (suite) Faire un double clic sur le bouton de commande, on se retrouve alors dans VBA avec le programme vide CommandButton1_Click (vide) à compléter entre Private Sub et End Sub: Private Sub CommandButton1_Click()OPENCOM ("COM2,1200,N,8,1") 'Initialisation port comRTS 1 'allumage du rougeDTR 0TXD 0tempo = ScrollBar1.Value * 100 'tempo en 10° de secondes -> msTIMEINITFor n = 1 To 5 '5 cycles d'allumage des feux tricolores While TIMEREAD < (10 * n - 5) * tempo 'attente 5*tempo Wend RTS 0 DTR 0 TXD 1 'vert While TIMEREAD < (10 * n - 1) * tempo 'attente 4*tempo Wend RTS 0 DTR 1 'orange TXD 0 While TIMEREAD < (10 * n) * tempo 'attente 1*tempo Wend RTS 1 'rouge DTR 0 TXD 0 Next n CLOSECOMEnd Sub
3- Réalisation d'un programme de feux tricolores (suite) Revenir à Excel, désactiver le mode création, brancher la maquette et tester le programme.
2. Pilotage de la mini-carte d'acquisition 2. 1. Présentation de la carte. 2. 2. Programme "voltmètre". 2. 3. Programme "acquisition lente". 2. 3. Programme "acquisition rapide".
CS 2.1. Présentation de la carte 1- Le composant TLC549 Le TLC549 est un convertisseur 8 bits à sortie série. Le schéma ci-dessus représente son boîtier DIL08 avec les broches suivantes : REF+ et REF- : tensions de référence du CAN; ANALOG IN : entrée analogique (mesure); VCC et GND : alimentation et masse; : lorsque cette ligne passe du niveau "1" au niveau "0", le bit de poids fort B7 est envoyé sur la ligne DATA OUT; I/O CLOCK : lorsque cette ligne passe du niveau "1" au niveau "0", le bit suivant B6 est envoyé sur la ligne DATA OUT et ainsi de suite jusqu'au bit B0; DATA OUT : sortie numérique "bit par bit". La figure ci-contre résume le protocole de communication :
CS 5 255 2.1. Présentation de la carte 2- Liaison avec le port série RS232 Le TLC549 est directement relié au port série (seules des résistances et diodes "zener" adaptent les niveaux de tensions). Les liaisons sont les suivantes : La sortie TXD est reliée à VCC à travers un régulateur "5V"; La sortie RTS est reliée à ; La sortie DTR est reliée à I/O CLOCK; L'entrée DSR est reliée à DATA OUT. 3- Relation donnant Ve en fonction de N(10) La broche REF+ est reliée à VCC (5V) et la broche REF- est reliée à la masse (0V). Le TLC549 donne le tableau ci-contre : La relation est donc : Ve = N(10)
2.1. Présentation de la carte 4- Schéma du montage
2.1. Présentation de la carte 5- Typon + implantation
2-2- Programme "voltmètre" 1- Présentation L'utilisateur du programme devra d'abord activer le Port COM avant de faire les mesures successives. Un clic sur le bouton "mesurer" lancera la mesure et l'affichera dans une étiquette puis dans la cellule active du tableur. Après chaque mesure, la cellule active se décale vers le bas. Pour réaliser cette interface "Voltmètre", on utilisera un contrôle "Bouton bascule" pour activer le Port COM, un contrôle "Bouton de commande" pour lancer la mesure et une "Etiquette" pour l'affichage de la mesure. Bouton de commande Bouton bascule Intitulé (Label)
2-2- Programme "voltmètre" 2- Réalisation du programme Le travail à faire est indiqué par . Le code à écrire ou déjà écrit est indiqué en vert et les commentaire sont précédés par le caractère ' . Pour basculer entre la feuille Excel et la fenêtre Visual Basic il faut faire Alt + F11. Préparation du fichier Excel Ouvrir un nouveau fichier Excel, se placer dans la fenêtre Visual Basic et importer le module Port_dll.bas. Revenir dans Excel et placer les 3 contrôles.Faire un double clic sur le bouton bascule pour se retrouver dans la fenêtre VisualBasic. Procédure ToggleButton1_Click() Le programme relatif au clic sur le bouton bascule apparaître vide comme indiqué ci-dessous : Private Sub CommandButton1_Click() End Sub
2- Réalisation du programme (suite) Procédure ToggleButton1_Click() (suite et fin) Compléter la procédure ToggleButton1_Click() avec les indications ci-dessous : Private Sub ToggleButton1_Click() If ToggleButton1.Value = True Then '***** Test Bouton "enfoncé" ***** . . . à deviner . . . 'Ouverture du Port COM2 . . . à deviner . . . 'Alimentation carte par TXD CommandButton1.Enabled = True 'Activation du Bouton de mesure ToggleButton1.Caption = "Désactiver Port COM" 'Changement texte dans bouton ToggleButton1.BackColor = &HFF& 'Changement couleur de bouton Else '***** Test Bouton "tiré" ****** . . . à deviner . . . 'Fermeture du Port COM CommandButton1.Enabled = False 'Désactivation du Bouton de mesure ToggleButton1.Caption = "Activer Port COM" 'Changement texte dans bouton ToggleButton1.BackColor = &HC000& 'Changement couleur de bouton Label1.Caption = "" 'effacement voltmètre End If 'fin du test End Sub
2- Réalisation du programme (suite) Procédure CommandButton1_Click() Revenir dans Excel, faire un double clic sur le bouton de commande (on se retrouve dans VisualBasic) et compléter la procédure CommandButton1_Click() avec les indications ci-dessous : Private Sub CommandButton1_Click() Lecture = 0 'initialisation variable lecture . . . à deviner . . . 'priorité temporelle maximum . . . à deviner . . . 'CS"barre" à 1 . . . à deviner . . . 'attente de 20 microsecondes . . . à deviner . . . 'CS"barre" à 0 . . . à deviner . . . 'attente de 2 mirosecondes Lecture = Lecture + 128 * DSR 'récupération du bit de poids "7" . . . à deviner . . . 'Clock à 1 . . . à deviner . . . 'Clock à 0 . . . à deviner . . . 'récupération du bit de poids "6" . . . plusieurs lignes à deviner . . . 'récupération bits de poids "5" à "1" Lecture = Lecture + 1 * DSR 'récupération du bit de poids "0" . . . à deviner . . . 'Clock à 1 . . . à deviner . . . 'fin de la priorité temporelle maximum Mesure = Lecture * . . . à deviner . . . 'Transformation Nombre -> Tension Label1.Caption = Format(Mesure, "0.000") & " volts" 'affichage mesure dans Label1 ActiveCell.Value = Mesure 'Affectation mesure cellule active ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate 'décalage cellule active vers le bas End Sub
2- Réalisation du programme (suite et fin) Connexion de la carte au port série et essai du programme Connecter la carte électronique au port série COM2.Se placer dans le classeur (Alt + F11), désactiver le mode création et tester le programme avec une source de tension et un voltmètre précis pour vérifier les mesures. Si ça fonctionne (cela serait étonnant du 1° coup), plus rien à faire.... Si ce n'est pas le cas il faut voir pourquoi ? (erreur de frappe, protocole de travail mal suivi, le TP est mal expliqué ...). Amélioration de l'aspect :Il ne reste plus qu'à afficher le bon texte dans le bouton de commande.Dans VisualBasic, faire un clic droit sur le contrôle CommandBUtton1 pour afficher ses propriétés.Changer la propriété Caption (texte affiché).D'autres propriétés sont modifiables (Font, BackColor ...). Fin de la manipulation sur le programme "voltmètre".
2-3- Programme "acquisition lente" 1- Présentation Le programme devra lancer des mesures de façon automatique avec déclenchement par l'utilisateur: Réglage de la durée entre deux points d'acquisition (en secondes entières). Choix du nombre de points à mesurer. Un bouton de commande permettra d'afficher la fenêtre "Acquisition lente" :
2-3- Programme "acquisition lente" 2- Réalisation du programme "acquisition lente" Préparation du fichier Excel Le travail à faire est indiqué par . Le code à écrire ou déjà écrit est indiqué en vert et les commentaire sont précédés par le caractère ' . Pour basculer entre la feuille Excel et la fenêtre Visual Basic il faut faire Alt + F11. Rester dans le même fichier Excel "carte TLC549.xls ", se placer sur la feuille 2, faire afficher la "boite à outils contrôles" et placer un "bouton de commande" sur la feuille.Faire un double clic sur le bouton pour se retrouver dans la fenêtre VisualBasic. Le programme relatif au clic sur le bouton doit être complété et apparaître ainsi :Private Sub CommandButton1_Click()UserForm1.Show 'affichage de la fenêtreEnd Sub Il faut maintenant créer la fenêtre UserForm1 en faisant un clic droit dans cette zone et sélectionner Insersion / UserForm.Revenir dans Excel et tester l'affichage de la fenêtre en cliquant sur le bouton (il faut d'abord désactiver le mode création).
2- Réalisation du programme "acquisition lente" (suite) Préparation de la fenêtre UserForm1 Il faut maintenant ajouter des contrôles à la fenêtre UserForm1. Faire un double clic sur UserForm1 icipour afficher la fenêtre (vide). Placer les contrôles dans le fenêtre comme indiquéci-dessous (les textes dans les contrôles seront ajoutés plus tard): à placer en 1° Intitulé (affichage de texte uniquement) Zone de texte (texte modifiable par l'utilisateur) en 2° Bouton de commande
2- Réalisation du programme "acquisition lente" (suite) Programmation des procédures et de la fonction MesurePoint Plusieurs procédures doivent être créées pour dialoguer avec le composant. Faire un clic droit sur UserForm1 iciet sélectionner Code, on se retrouve alors dansla fenêtre de programme (vide) relative à UserForm1 Ecrire le code de la procédure UserForm_InitializePrivate Sub UserForm_Initialize(). . . à deviner . . . 'Ouverture du Port COM2. . . à deviner . . . 'Alimentation de la carte par la ligne TXD. . . à deviner . . . 'CS"barre" à 1 (repos). . . à deviner . . . 'attente de 20µs (conversion)End Sub Ecrire le code de la procédure UserForm_DeactivatePrivate Sub UserForm_Deactivate(). . . à deviner . . . 'Fermeture du Port COMEnd Sub
2- Réalisation du programme "acquisition lente"(suite) Programmation des procédures et de la fonction MesurePoint (suite) Ecrire le code de la fonction MesurePoint qui sera appelée par la procédure CommandButton1.Click Function MesurePoint() As Single Lecture = 0 'initialisation variable lecture . . . à deviner . . . 'CS"barre" à 0 . . . à deviner . . . 'attente de 2 mirosecondes Lecture = Lecture + 128 * DSR 'récupération du bit de poids "7" . . . à deviner . . . 'Clock à 1 . . . à deviner . . . 'Clock à 0 . . . à deviner . . . 'récupération du bit de poids "6" . . . plusieurs lignes à deviner . . . 'récupération bits de poids "5" à "1" Lecture = Lecture + 1 * DSR 'récupération du bit de poids "0" . . . à deviner . . . 'Clock à 1 . . . à deviner . . . 'CS"barre" à 1 . . . à deviner . . . 'attente de 20 µs MesurePoint = Lecture * 5 / 255 'Affectation du résultat à la fonction MesurePoint End Function
2- Réalisation du programme "acquisition lente"(suite) Programmation des procédures et de la fonction MesurePoint (suite et fin) Ecrire le code de la procédure CommandButton1_Click Private Sub CommandButton1_Click() intervalle = TextBox1.Value * 1000 'intervalle en ms chargé avec TextBox1 nombrepoints = TextBox2.Value 'nombrepoints chargé avec TextBox2 Columns("A:B").ClearContents 'effacement cellules Cells(1, 1) = "t (s)" 'affichage de texte Cells(1, 2) = "Tension (V)" 'affichage de texte . . . à deviner . . . 'activation priorité temporelle . . . à deviner . . . 'mise à zéro du compteur "ms" For i = 0 To nombrepoints 'boucle de mesure des N+1 points While TIMEREAD <= i * intervalle 'boucle d'attente entre deux points Wend Cells(i + 2, 1) = i * intervalle / 1000 'affichage temps dans le tableur Cells(i + 2, 2) = MesurePoint 'affichage du résultat de la fonction 'MesurePoint dans le tableur Next i 'fin de la boucle des N+1 points . . . à deviner . . . 'désactivation priorité temporelle UserForm1.Hide 'effacement de la fenêtre End Sub
2- Réalisation du programme "acquisition lente" (suite et fin) Connexion de la carte au port série et essai du programme Connecter la carte électronique au port série COM2.Se placer dans le classeur (Alt + F11), désactiver le mode création et tester le programme avec une source de tension réglable pour faire varier la tension pendant les mesures. Si ça fonctionne (cela serait étonnant du 1° coup), plus rien à faire.... Si ce n'est pas le cas il faut voir pourquoi ? (encore le TP qui est mal expliqué ...). Amélioration de l'aspect :Il ne reste plus qu'à améliorer l'aspect des contrôles (bouton d'affichage de la fenêtre et contrôles dans la fenêtre). Fin de la manipulation sur le programme "acquisition lente"... Ouf !!!!!
2-4- Programme "acquisition rapide" 1- Présentation Le programme devra lancer des mesures de façon automatique avec déclenchement par seuil: Réglage de la durée totale de l'acquisition (choix parmi des valeurs prédéfinies). Choix du nombre de points à mesurer (choix parmi des valeurs prédéfinies). Un bouton de commande permettra d'afficher la fenêtre "Acquisition lente" :
2-4- Programme "acquisition rapide" 2- Réalisation du programme "acquisition rapide" Préparation du fichier Excel Le travail à faire est indiqué par . Le code à écrire ou déjà écrit est indiqué en vert et les commentaire sont précédés par le caractère ' . Pour basculer entre la feuille Excel et la fenêtre Visual Basic il faut faire Alt + F11. Rester dans le même fichier Excel "carte TLC549.xls ", se placer sur la feuille 3, faire afficher la "boite à outils contrôles" et placer un "bouton de commande" sur la feuille.Faire un double clic sur le bouton pour se retrouver dans la fenêtre VisualBasic. Le programme relatif au clic sur le bouton doit être complété et apparaître ainsi :Private Sub CommandButton1_Click()UserForm2.Show 'affichage de la fenêtreEnd Sub Il faut maintenant créer la fenêtre UserForm2 en faisant un clic droit dans cette zone et sélectionner Insersion / UserForm.Revenir dans Excel et tester l'affichage de la fenêtre en cliquant sur le bouton (il faut d'abord désactiver le mode création).
2- Réalisation du programme "acquisition rapide" (suite) Préparation de la fenêtre UserForm2 Il faut maintenant ajouter des contrôles à la fenêtre UserForm2. Faire un double clic sur UserForm2 icipour afficher la fenêtre (vide). Placer les contrôles dans la fenêtre comme indiquéci-dessous (les textes dans les contrôles seront ajoutés plus tard): Intitulé Zone de texte modifiable Bouton d'option Cadre Cadre Bouton de commande
2- Réalisation du programme "acquisition rapide" (suite) Préparation de la fenêtre UserForm2 (suite) Il faut maintenant ajouter un nom et un texte d'affichage aux boutons d'option (à l'intérieur d'un cadre,un seul bouton d'option pourra être activé). Faire un clic droit sur ce bouton d'optionet sélectionner Propriétés. La propriété Name doit être : Duree1m. La propriété Caption doit être : 1 ms. Reprendre le avec les 20 boutons d'option restants en utilisant le schéma suivant pour la propriété Caption et en utilisant les indications du schéma en dessous pour la propriété Name.Remarque : Les textes en bleun'apparaissent pas sur le fenêtre, ils sont là à titre indicatif. Duree1m Duree2m Duree5m Nombre10 Nombre20 Nombre50 Duree10m Duree20m Duree50m Nombre100 Nombre200 Nombre500 Duree100m Duree200m Duree500m Duree1 Duree2 Duree5 Duree10 Duree20 Duree50
2- Réalisation du programme "acquisition rapide" (suite) Programmation des procédures et de la fonction MesurePoint Les procédures UserForm_Initialize, UserForm_Deactivateet la fonction MesurePoint sont identiques à celles programméespour le programme "acquisition lente". Faire un clic droit sur UserForm2 iciet sélectionner Code, on se retrouve alors dansla fenêtre de programme (vide) relative à UserForm2 Ecrire le code de la procédure UserForm_InitializeUtiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la procédure UserForm_DeactivateUtiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la fonction mesurePoint.Utiliser un copier-coller depuis UserForm1 "acquisition lente".
2- Réalisation du programme "acquisition rapide" (suite) Programmation des procédures et de la fonction MesurePoint (suite) Il reste maintenant à programmer la procédure CommanButton1_Click Ecrire le code de la procédure CommanButton1_Click avec les indications ci-dessous : Private Sub BoutonAcquisition_Click() ' Test du bouton "durée" sélectionné et affectation à la variable "durée" (µs) If Duree1m.Value = True Then duree = 1000 . . . . autres lignes à deviner pour les 14 autres boutons d'option relatifs à 'Durée" . . . . ' Test du bouton " nombre points" sélectionné et affectation à la variable "nombre" If Nombre10.Value = True Then nombre = 10 . . . . autres lignes à deviner pour les 5 autres boutons d'option relatifs à "nombre" . . . . intervalle = CLng(duree / nombre)/1000 'calcul de l'intervalle en ms Seuil = TextBox1.value 'affectation variable seuil (déclenchement) Dim tableau(501) As Single 'déclaration du tableau . . . à deviner . . . 'priorité temporelle maximum While MesurePoint <= seuil 'Attente déclenchement test fonction "MesurePoint" Wend . . . à deviner . . . 'mise à zéro du compteur des ms Suite du programme à la diapo suivante ...
2- Réalisation du programme "acquisition rapide" (suite) Programmation des procédures et de la fonction MesurePoint (suite et fin) Suite du code de la procédure CommanButton1_Click For i = 0 To nombre 'boucle de mesure des N+1 points While TIMEREAD <= i * intervalle 'attente entre deux points (compteur ms) Wend tableau(i) = MesurePoint 'rangement des mesures dans un tableau Next i 'fin de la boucle de mesure des N+1 points . . . à deviner . . . 'désactivation de la priorité temporelle Columns("A:C").ClearContents 'effacement et préparation des cellules Excel Cells(1, 1) = "Points" Cells(1, 2) = "Temps (ms)" Cells(1, 3) = "Tension (volts)" For i = 0 To nombre 'remplissage des N+1 cellules Excel Cells(i + 3, 1) = i Cells(i + 3, 2) = i * intervalle / 1000 Cells(i + 3, 3) = tableau(i) Next i UserForm2.Hide 'fermeture fenêtre pour libérer le tableur End Sub 'fin de la procédure CommandButton1_Click
2- Réalisation du programme "acquisition rapide" (suite et fin) Connexion de la carte au port série et essai du programme Connecter la carte électronique au port série COM2.Se placer dans le classeur (Alt + F11), désactiver le mode création et tester le programme avec un GBF en débutant par des fréquences faibles (insérer un graphe "nuage de points" pour la visualisation du signal).Remarque : la fréquence d'échantillonnage maximale du TLC549 est de 40kHz. Augmenter progressivement la fréquence pour atteindre les limites du système (durée minimale et nombre de points maximum).Remarque : sur un "vieux PC" de type AMD Duron 700Mhz, on arrive à une durée de 10ms avec 50 points mesurés (échantillonnage max : 5kHz). Amélioration de l'aspect :Il ne reste plus qu'à améliorer l'aspect des contrôles (bouton d'affichage de la fenêtre et contrôles dans la fenêtre). Amélioration de la rapidité :Pour augmenter la rapidité de l'application et s'approcher des performances du TLC549, il faut écrire le programme en "C" ou en "Delphi" par exemple ... à suivre ... Fin de la manipulation sur le programme "acquisition rapide"... Ouf !!!!!
3. Utilisation du système complet d'acquisition 3. 1. Présentation de la carte. 2. 2. Mesure de température avec une simple diode comme capteur. 2. 3. Mesure de température avec un LM335.
3.1. Présentation de la carte 1- Description générale des fonctions Le schéma ci-dessous illustre l'ensemble des fonctions présentes dans une chaîne de mesure informatisée: Fonction 1.1 Alimentationen tension Fonction 2 Fonction 3 Fonction 4 Fonction 5 Fonction 6 Capteur Suiveurdifférentiel Soustracteur Amplificateuravec décalagedu zéro CAN TLC549+ liaisonport série Fonction 1.2 Alimentationen courant Sortie différentielle(2 tensions) -15V +0V +15V Cavaliersde liaisondes fonctions Réglageamplification Capteurquadripôle Réglagetension Sélection alim.Tensionou courant Capteurdipôle Réglagedécalage Réglagecourant Réglage VrefCAN Bornes noires : masse (0V)
3.1. Présentation de la carte 2- Fonction 1.1 : Alimentation en tension Cette fonction assure l'alimentation en tension du capteur.C'est une source de tension réglable de 2V à 14V en agissant sur le potentiomètre (ajustable multitour). valim Réglage tension2V < valim < 14V Masse
3.1. Présentation de la carte 2- Fonction 1.1 : Alimentation en tension (suite et fin) Le schéma électronique de l'alimentation en tension est représenté ci-dessous :
3.1. Présentation de la carte 3- Fonction 1.2 : Alimentation en courant Cette fonction assure l'alimentation en courant des capteurs de type "dipôle".C'est une source de courant constant réglable de 0,1mA à 10mA en agissant sur le potentiomètre (ajustable multitour). Ialim Réglage courant0,1mA < Ialim < 10mA Masse
3.1. Présentation de la carte 3- Fonction 1.2 : Alimentation en courant (suite et fin) Le schéma électronique de l'alimentation en courant est représenté ci-dessous :
3.1. Présentation de la carte 4- Fonction 2 : Capteur Cette fonction assure la transformation "intensité du phénomène Physique" "tension".Deux familles de capteurs peuvent être connectés sur la platine (schémas ci-dessous): Emplacement pour capteur de type "quadripôle" (alimentation en tension) Emplacement pour capteur de type "dipôle" (alimentation en courant) Valim Ialim Vs+capteur Masse Vs-capteur Masse