La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Stage Système complet d'acquisition de données Animateur : Christian BISSIERES ( Professeur de Physique Appliquée ) Responsable pédagogique : Jean-Claude.

Présentations similaires


Présentation au sujet: "Stage Système complet d'acquisition de données Animateur : Christian BISSIERES ( Professeur de Physique Appliquée ) Responsable pédagogique : Jean-Claude."— Transcription de la présentation:

1 Stage Système complet d'acquisition de données Animateur : Christian BISSIERES ( Professeur de Physique Appliquée ) Responsable pédagogique : Jean-Claude REBEYROLE ( IA IPR ) Lycée Clos Banet Perpignan ( 2 et 9 février 2005 ) Lycée Clos Banet Perpignan ( 2 et 9 février 2005 ) Lycée Joffre Montpellier (SAMS) ( 6 et 7 avril 2005 ) Lycée Joffre Montpellier (SAMS) ( 6 et 7 avril 2005 )

2 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)

3 Mini-carte dacquisition autoalimentée par le port série RS232 (version 2003)

4 Système complet dacquisition pilotable par le port série RS232 (version 2004)

5 Programme "voltmètre"

6 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 dacquisition (version 2003). 3-Utilisation du système complet d'acquisition pour mesurer des températures avec une simple diode mais aussi avec un LM335.

7 Déroulement du stage 1. 1.Utiliser Visual Basic (présent avec Excel) pour faire de la programmation sous Windows Savoir déclarer et utiliser, avec Visual Basic, les fonctions et procédures dune DLL donnée Utiliser les fonctions de pilotage du port série avec la DLL port.dll pour piloter une maquette de feux tricolores. 1.Utilisation du port série RS 232 à l'aide d'Excel (Visual Basic)

8 1.1. Utilisation de Visual Basic (VBA) 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. Démarrer Excel. Sélectionner le menu Outils / Macro / Visual Basic Editor. Sélectionner le menu Outils / Macro / Visual Basic Editor. Dans la fenêtre Projet – VBA Project, faire un double-clic sur Feuil1. 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 :

9 1.1. Utilisation de Visual Basic (VBA) 1.1. Utilisation de Visual Basic (VBA) 2- Remplir des cellules directement depuis VBA Il faut tout dabord 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 programme End Sub'fin du programme Dans la fenêtre relative aux programmes de la feuille 1, insérer le code : Sub sinusoide()'début et nom du programme End Sub'fin du programme Entre Sub et End Sub, insérer le code suivant: Cells(2, 2) = "Tension(Volts)"'texte dans cellule B2 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). 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

10 1.1. Utilisation de Visual Basic (VBA) 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 de fréquence déterminée. Modifier le code relatif à Sub sinusoide() de la façon suivante : Sub sinusoide()'début et nom du programme Cells(1, 1)="t (ms)"'préparation du tableau Cells(1, 2)= "sinus (volt)" pi = 'définition des constantes tmax = amplitude = 5 frequence = 2000 For 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 sinus Next n'retour ou fin de la boucle End Sub'fin du programme Modifier le code relatif à Sub sinusoide() de la façon suivante : Sub sinusoide()'début et nom du programme Cells(1, 1)="t (ms)"'préparation du tableau Cells(1, 2)= "sinus (volt)" pi = 'définition des constantes tmax = amplitude = 5 frequence = 2000 For 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 sinus Next n'retour ou fin de la boucle End Sub'fin du programme Exécuter le programme Sub sinusoïde et vérifier le résultats dans Excel Exécuter le programme Sub sinusoïde et vérifier le résultats dans Excel

11 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 doutils / Boite à outils contrôles. Revenir à Excel et faire Affichage / Barres doutils / Boite à outils contrôles. Sélectionner le contrôle Barre de défilement et le dessiner horizontalement sur la feuille (amplitude). 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). 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). 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 à lintérieur du programme pour appeler la programme sinusoide à chaque changement de position du curseur. Refaire le pour la 2° barre de défilement. 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 à linté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. 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. Pour tester le programme, il faut désactiver le mode "création" qui a été activé pour créer les contrôles. Partie du programme modifiée

12 1.2. Déclaration et utilisation d'une DLL 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 dentrée du port série ( 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 suivantes proposées par "port.dll" : OPENCOMExemple : 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. OPENCOMExemple : 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. CLOSECOMpermet de refermer le dernier port ouvert. CLOSECOMpermet de refermer le dernier port ouvert. DTR, RTS et TXDcommande des lignes de sortie Exemple : DTR 1 permet de mettre à "1" la ligne de sortie DTR (+11V). DTR, RTS et TXDcommande des lignes de sortie Exemple : DTR 1 permet de mettre à "1" la ligne de sortie DTR (+11V). CTS, DSR, RI, DCDExemple : lecture = DSR place la valeur DSR (0 ou 1) dans la variable lecture. CTS, DSR, RI, DCDExemple : lecture = DSR place la valeur DSR (0 ou 1) dans la variable lecture. DELAYExemple : DELAY 100 introduit une pause de 100ms dans le programme. DELAYExemple : DELAY 100 introduit une pause de 100ms dans le programme. DELAYUSmême fonction que DELAY mais en microsecondes. DELAYUSmême fonction que DELAY mais en microsecondes.

13 1- Pourquoi utiliser une DLL ? (suite et fin) TIMEINITMise à zéro et démarrage du compteur des millisecondes. TIMEINITMise à zéro et démarrage du compteur des millisecondes. TIMEREADLecture 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. TIMEREADLecture 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 TIMEREADUSMêmes fonctions que TIMEINIT et TIMEREAD mais en microsecondes. TIMEINITUS et TIMEREADUSMê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. REALTIMECette fonction rend le programme prioritaire par rapport à toutes les tâches que gère Windows. REALTIMECette fonction rend le programme prioritaire par rapport à toutes les tâches que gère Windows. Exemple : REALTIME True activation de la priorité temporelle.

14 1.2. Déclaration et utilisation d'une DLL 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)

15 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. 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. 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. 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 …) Déclaration et utilisation d'une DLL 1.2. Déclaration et utilisation d'une DLL Clic droit Résultat

16 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. 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"): 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"): Bouton de commande Barre de défilement

17 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: 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 com RTS 1 'allumage du rouge DTR 0 TXD 0 tempo = ScrollBar1.Value * 100 'tempo en 10° de secondes -> ms TIMEINIT For n = 1 To 5 '5 cycles d'allumage des feux tricolores While TIMEREAD ms TIMEINIT For 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 CLOSECOM End Sub

18 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. Revenir à Excel, désactiver le mode création, brancher la maquette et tester le programme.

19 2. 1.Présentation de la carte Programme "voltmètre" Programme "acquisition lente" Programme "acquisition rapide". 2.Pilotage de la mini-carte d'acquisition

20 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; REF+ et REF- : tensions de référence du CAN; ANALOG IN : entrée analogique (mesure); ANALOG IN : entrée analogique (mesure); VCC et GND : alimentation et masse; 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; : 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; 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". DATA OUT: sortie numérique "bit par bit". La figure ci-contre résume le protocole de communication : CS

21 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 TXD est reliée à VCC à travers un régulateur "5V"; La sortie RTS est reliée à ; La sortie RTS est reliée à ; La sortie DTR est reliée à I/O CLOCK; La sortie DTR est reliée à I/O CLOCK; L'entrée DSR est reliée à DATA OUT. 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) Ve N (10) REF-0 REF CS 2.1. Présentation de la carte

22 4-Schéma du montage 2.1. Présentation de la carte

23 5-Typon + implantation 2.1. Présentation de la carte

24 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 Intitulé (Label) Bouton bascule

25 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 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. 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. 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() 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-2- Programme "voltmètre"

26 2-Réalisation du programme (suite) Procédure ToggleButton1_Click() (suite et fin) Procédure ToggleButton1_Click() (suite et fin) Compléter la procédure ToggleButton1_Click() avec les indications ci-dessous : 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

27 2-Réalisation du programme (suite) Procédure CommandButton1_Click() 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 : 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 * 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

28 2-Réalisation du programme (suite et fin) Connexion de la carte au port série et essai du programme 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. 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é...). 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...). 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".

29 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). Réglage de la durée entre deux points d'acquisition (en secondes entières). Choix du nombre de points à mesurer. Choix du nombre de points à mesurer. Un bouton de commande permettra d'afficher la fenêtre "Acquisition lente" :

30 2-3- Programme "acquisition lente" 2-3- Programme "acquisition lente" 2- Réalisation du programme "acquisition lente" Préparation du fichier Excel 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. 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être End Sub 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être End 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). 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).

31 2- Réalisation du programme "acquisition lente" (suite) Préparation de la fenêtre UserForm1 Préparation de la fenêtre UserForm1 Il faut maintenant ajouter des contrôles à la fenêtre UserForm1. Faire un double clic sur UserForm1 ici pour afficher la fenêtre (vide). Faire un double clic sur UserForm1 ici pour 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 les contrôles dans le fenêtre comme indiqué ci-dessous (les textes dans les contrôles seront ajoutés plus tard): Bouton de commande Intitulé (affichage de texte uniquement) Zone de texte (texte modifiable par l'utilisateur) à placer en 1° en 2°

32 2- Réalisation du programme "acquisition lente" (suite) Programmation des procédures et de la fonction MesurePoint 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 ici et sélectionner Code, on se retrouve alors dans la fenêtre de programme (vide) relative à UserForm1 Faire un clic droit sur UserForm1 ici et sélectionner Code, on se retrouve alors dans la fenêtre de programme (vide) relative à UserForm1 Ecrire le code de la procédure UserForm_Initialize Private 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_Initialize Private 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_Deactivate Private Sub UserForm_Deactivate()... à deviner... 'Fermeture du Port COM End Sub Ecrire le code de la procédure UserForm_Deactivate Private Sub UserForm_Deactivate()... à deviner... 'Fermeture du Port COM End Sub

33 2- Réalisation du programme "acquisition lente" (suite) Programmation des procédures et de la fonction MesurePoint (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 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 * 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

34 2- Réalisation du programme "acquisition lente" (suite) Programmation des procédures et de la fonction MesurePoint (suite et fin) Programmation des procédures et de la fonction MesurePoint (suite et fin) Ecrire le code de la procédure CommandButton1_Click 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 While TIMEREAD <= i * intervalle 'boucle d'attente entre deux points Wend Wend Cells(i + 2, 1) = i * intervalle / 1000'affichage temps dans le tableur 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 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

35 2-Réalisation du programme "acquisition lente" (suite et fin) Connexion de la carte au port série et essai du programme 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. 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é...). 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). 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 !!!!!

36 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). 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). 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" :

37 2-4- Programme "acquisition rapide" 2-4- Programme "acquisition rapide" 2- Réalisation du programme "acquisition rapide" Préparation du fichier Excel 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. 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être End Sub 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être End 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). 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).

38 2- Réalisation du programme "acquisition rapide" (suite) Préparation de la fenêtre UserForm2 Préparation de la fenêtre UserForm2 Il faut maintenant ajouter des contrôles à la fenêtre UserForm2. Faire un double clic sur UserForm2 ici pour afficher la fenêtre (vide). Faire un double clic sur UserForm2 ici pour 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): Placer les contrôles dans la fenêtre comme indiqué ci-dessous (les textes dans les contrôles seront ajoutés plus tard): Bouton de commande Intitulé Zone de texte modifiable Cadre Bouton d'option

39 2- Réalisation du programme "acquisition rapide" (suite) Préparation de la fenêtre UserForm2 (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'option et sélectionner Propriétés. La propriété Name doit être : Duree1m. La propriété Caption doit être : 1 ms. Faire un clic droit sur ce bouton d'option et 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é et en utilisant les du schéma en dessous pour la propriété. Remarque : Les textes en n'apparaissent pas sur le fenêtre, ils sont là à titre indicatif. 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 bleu n'apparaissent pas sur le fenêtre, ils sont là à titre indicatif. Duree1mDuree2mDuree5m Duree10mDuree20mDuree50m Duree100mDuree200mDuree500m Duree1Duree2Duree5 Duree10Duree20Duree50 Nombre10Nombre20Nombre50 Nombre100Nombre200Nombre500

40 2- Réalisation du programme "acquisition rapide" (suite) Programmation des procédures et de la fonction MesurePoint Programmation des procédures et de la fonction MesurePoint Les procédures UserForm_Initialize, UserForm_Deactivate et la fonction MesurePoint sont identiques à celles programmées pour le programme "acquisition lente". Faire un clic droit sur UserForm2 ici et sélectionner Code, on se retrouve alors dans la fenêtre de programme (vide) relative à UserForm2 Faire un clic droit sur UserForm2 ici et sélectionner Code, on se retrouve alors dans la fenêtre de programme (vide) relative à UserForm2 Ecrire le code de la procédure UserForm_Initialize Utiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la procédure UserForm_Initialize Utiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la procédure UserForm_Deactivate Utiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la procédure UserForm_Deactivate Utiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la fonction mesurePoint. Utiliser un copier-coller depuis UserForm1 "acquisition lente". Ecrire le code de la fonction mesurePoint. Utiliser un copier-coller depuis UserForm1 "acquisition lente".

41 2- Réalisation du programme "acquisition rapide" (suite) Programmation des procédures et de la fonction MesurePoint (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 : 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 = 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 = 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...

42 2- Réalisation du programme "acquisition rapide" (suite) Programmation des procédures et de la fonction MesurePoint (suite et fin) 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 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

43 2-Réalisation du programme "acquisition rapide" (suite et fin) Connexion de la carte au port série et essai du programme 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. 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). 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 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... 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 !!!!!

44 3. 1.Présentation de la carte Mesure de température avec une simple diode comme capteur Mesure de température avec un LM Utilisation du système complet d'acquisition

45 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: Alimentation en tension Capteur Suiveur différentiel Soustracteur Amplificateur avec décalage du zéro CAN TLC549 + liaison port série Sortie différentielle (2 tensions) Fonction 1.1 Fonction 2Fonction 3Fonction 4Fonction 5Fonction 6 Alimentation en courant Fonction 1.2 Bornes noires : masse (0V) +15V-15V+0V Réglage amplification Réglage décalage Réglage tension Réglage courant Réglage Vref CAN Sélection alim. Tension ou courant Cavaliers de liaison des fonctions Capteur quadripôle Capteur dipôle

46 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). Réglage tension 2V < v alim < 14V Masse v alim

47 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 :

48 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). Réglage courant 0,1mA < I alim < 10mA Masse I alim

49 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 :

50 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): Masse V alim Emplacement pour capteur de type "quadripôle" (alimentation en tension) Emplacement pour capteur de type "quadripôle" (alimentation en tension) Emplacement pour capteur de type "dipôle" (alimentation en courant) Emplacement pour capteur de type "dipôle" (alimentation en courant) V s + capteur V s - capteur Masse I alim

51 3.1. Présentation de la carte 5- Fonction 3 : Suiveur différentiel Cette fonction assure l'adaptation d'impédance entre le capteur et le soustracteur (impédance d'entrée infinie et impédance de sortie nulle). Il s'agit de deux suiveurs indépendants. L'inverseur en amont permet de sélectionner le capteur (quadripôle ou dipôle). Masse Inverseur (en position quadripôle) Ve+Ve+ Masse Ve-Ve- Vs+Vs+ Vs-Vs- Cavalier de connexion ou d'isolation des fonctions

52 3.1. Présentation de la carte 5- Fonction 3 : Suiveur différentiel (suite et fin) Le schéma électronique du suiveur différentiel est représenté ci-dessous :

53 3.1. Présentation de la carte 6- Fonction 4 : Soustracteur Cette fonction réalise la soustraction (V s + - V s - ) des tensions en sortie du suiveur. Masse Ve+Ve+ Ve-Ve- VsVs

54 3.1. Présentation de la carte 6- Fonction 4 : Soustracteur (suite et fin) Le schéma électronique du soustracteur est représenté ci-dessous :

55 3.1. Présentation de la carte 7- Fonction 5 : Décalage et amplification Cette fonction réalise d'abord un décalage réglable de la tension en sortie du soustracteur puis une amplification réglable. Le décalage consiste à ajouter une tension ajustable entre -15V et +15V par potentiomètre. L'amplification est réglable de 0,5 à 10 ou de 5 à 100 (sélection par cavaliers et réglage par potentiomètre). Masse VeVe VsVs Réglage du décalage de -15V à +15V Cavalier "x100" Cavalier "x10" Réglage de l'amplification de 0,5 à 10 ou de 5 à 100 Cavalier de sélection : décalage réglable (haut) ou décalage = 0 (bas)

56 3.1. Présentation de la carte 7- Fonction 5 : Décalage et amplification (suite et fin) Le schéma électronique de la fonction "décalage + amplificateur" est représenté ci-dessous :

57 3.1. Présentation de la carte 7- Fonction 6 : CAN 8 bits à sortie série RS232 Cette fonction réalise la conversion analogique numérique de la tension en sortie de l'amplificateur avec transmission de la conversion (8 bits) à un outil informatique via le port série RS232. Un bouton poussoir relié à l'entrée "DCD" permet, entre autre, de stopper une acquisition (à prévoir dans le programme). Masse VeVe Réglage précis de la tension V ref du CAN Sortie par câble RS232 Sub D9 mâle femelle (non croisé) Bouton poussoir relié à "DCD" pour interruption matérielle de l'acquisition

58 3.1. Présentation de la carte (fin) 7- Fonction 6 : CAN 8 bits à sortie série RS232 (suit et fin) Le schéma électronique de la fonction "CAN 8 bits" est représenté ci-dessous :


Télécharger ppt "Stage Système complet d'acquisition de données Animateur : Christian BISSIERES ( Professeur de Physique Appliquée ) Responsable pédagogique : Jean-Claude."

Présentations similaires


Annonces Google