Title: Stage
1Stage
Composants électroniquesmodernes
- Lycée Joffre Montpellier ( 5 et 12 janvier
2005 ) - Lycée Clos Banet Perpignan ( 16 et 23 mars
2005 )
Animateur Christian BISSIERES ( Professeur de
Physique Appliquée )Responsable pédagogique
Jean-Claude REBEYROLE ( IA IPR )
2Mise en œuvre de capteurs de température à sortie
numérique directe.
Programme du stage
Utilisation d'un potentiomètre à commande
numérique.
3Le capteur "2 wire" DS 1621relié au port
série.( pilotage avec Excel )
4Le fichier Excel relatif à la mesure de
température
5Le capteur "1 wire" DS 1820relié au port série.
6Le logiciel fournit avec le capteur
DS1820(lecture de la température)
7Le capteur autonome"1 wire"DS 1921.
8Le logiciel fournit avec le capteur
DS19B21(programmation d'une acquisition
automatique et autonome)
9Le potentiomètre numériqueDS 1803 relié au port
série.
10Le programme autonome de pilotage du
potentiomètre réalisé avec DELPHI
11Déroulement du stage
1. Utilisation du port série RS 232 pour
communiquer avec les composants
- 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 dune 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.
122. Les capteurs numériques de température
- 2. 1. Présentation générale des capteurs à
sortie numérique directe. - 2. 2. Mise en œuvre du capteur "2 wire"
DS1621et pilotage avec Excel. - 2. 3. Mise en oeuvre du capteur "1 wire" DS1820
avec logiciel spécialisé. - 2. 4. Mise en oeuvre du capteurs autonôme "1
wire" DS1921 avec logiciel spécialisé.
133. Le potentiomètre numérique
- 3. 1. Présentation générale des potentiomètres
numériques. - 3. 2. Mise en œuvre du potentiomètre numérique
DS1803 avec Excel. - 3. 3. Réalisation d'une application Windows avec
Delphi pour piloter le potentiomètre.
14 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
15 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 - ?? Entre Sub et End Sub, insérer le code
suivantCells(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
16 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
boucle End Sub 'fin du programme - ?? Exécuter le programme Sub sinusoïde et
vérifier le résultats dans Excel
17- 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. - ?? 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 à 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. - ?? Pour tester le programme, il faut désactiver
le mode "création" qui a été activé pour créer
les contrôles.
18 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 lt 1V ? 0 logique et tension gt 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
sortie Exemple 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.
19- 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 lt
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 lt n100 Wend Cell
s ( 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 True activation de la
priorité temporelle.
20 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" ()
21 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.
Résultat
Clic droit
22- 3- Réalisation d'un programme de feux tricolores
(suite) - ?? Revenir au classeur Excel (AltF11) et faire
Affichage / Barre d'outils / boite à outils
Contrôles. - ?? Placer le Bouton de commande et la Barre de
défilement comme indiqué ci-dessous (les autres
composants ne sont que des "dessins")
Barre de défilement
Bouton de commande
23- 3- Réalisation d'un programme de feux tricolores
(suite et fin) - ?? 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 -gt msTIMEINITFor n
1 To 5 '5 cycles
d'allumage des feux tricolores While TIMEREAD lt
(10 n - 5) tempo 'attente
5tempo Wend RTS 0 DTR 0 TXD 1
'vert While TIMEREAD lt (10
n - 1) tempo 'attente 4tempo Wend RTS
0 DTR 1
'orange TXD 0 While TIMEREAD lt (10 n)
tempo 'attente 1tempo Wend RTS 1
'rouge DTR 0 TXD
0 Next n CLOSECOMEnd Sub - ?? Revenir à Excel, désactiver le mode création,
brancher la maquette et tester le programme.
24 2. 1. Les capteurs de température numériques
- Généralités
- La mesure moderne de température se fait à l'aide
de capteurs à sortie numérique directe. - La transmission de données numériques est fiable
car peu sensible aux parasites. - Le capteur donne sa mesure sous forme d'un nombre
binaire transmis en série. Il faut donc respecter
le protocole de communication avec le composant
pour récupérer la mesure avec du matériel
numérique (ordinateur ou microcontrôleur). - Le montage électronique autour du composant est
en général très réduit (schéma ci-dessous)
Capteur Dallas DS820 relié à une ligned'un
microcontrôleur
Capteur Dallas DS1621 relié au port série
25 2. 2. Le capteur "2 wire" DS1621
- 1- Description
- Les caractéristiques générales de ce capteur sont
les suivantes - ? Boîtier DIL 08 ( 4 et 8 alimentation 1 et 2
communication 5, 6 et 7 adresse physique
et 3 thermostat ) - ? Plage de mesure de -55C à 125C avec une
précision de 0,5C (1 mesure par seconde). - ? Protocole de communication sur 2 fils (2 wire)
nommé protocole I2C. - ? Format de mesure de température sur 9 bits.
- ? Possibilité de brancher 8 capteurs
simultanément.
26 2. 2. Le capteur "2 wire" DS1621
- 1- Description (suite et fin)
- Les capteur transmet la mesure à l'aide de 2
octets - ? Seul le bit de poids fort du premier octet
contient une information (1/2C) - ? Le deuxième octet représente la mesure en C
entiers (si négatif complément à 2). - Le tableau ci-dessous donne quelques exemples de
conversion.
27 2. 2. Le capteur "2 wire" DS1621
- 2- Liaison au port série RS232
- Le capteur DS1621 sera connecté au port série du
PC ce qui permettra de dialoguer avec le capteur
mais aussi de l'alimenter. - Le Schéma ci-dessous détaille le branchement de 2
capteurs DS1621 sur le port série RS232 - ? La ligne de sortie TXD sera reliée à l'entrée
du régulateur 5V (alimentation du capteur). - ? La ligne de sortie RTS sera reliée à l'horloge
SCL. - ? La ligne de sortie DTR sera reliée à SDA pour
l'envoi de données. - ? La ligne d'entrée CTS sera reliée à SDA pour la
réception de données.
Régulateur
Capteur 1d'adresse "000"
Capteur 2d'adresse "001"
Diodes zener 5,1V(11V ? 5V et -11V ? 0V)
28 2. 2. Le capteur "2 wire" DS1621
- 2- Liaison au port série RS232 (schéma)
29 2. 2. Le capteur "2 wire" DS1621
- 2- Liaison au port série RS232 (implantation)
30 2. 2. Le capteur "2 wire" DS1621
- 2- Liaison au port série RS232 (suite et fin)
- L'image ci-dessous représente la carte
électronique de liaison du capteur avec le port
série RS232. - On repère facilement le capteur fixe (capteur 1)
et le capteur déporté (capteur 2). - Les deux capteurs sont connectés sur les mêmes
lignes SCL-SDA.
Capteur 1 (fixe)
Capteur 2 (déporté)
31 2. 2. Le capteur "2 wire" DS1621
- 3- Pilotage directement avec Excel
(présentation) - Classeur Excel en "attente" de paramétrage de
l'acquisition
Bouton d'affichagede la fenêtre de paramétrage
desmesures
32 2. 2. Le capteur "2 wire" DS1621
- 3- Pilotage directement avec Excel
(présentation) - Affichage de la fenêtre de réglages et saisie des
paramètres
Zones de saisiede paramètres
Bouton de départdes mesures
33 2. 2. Le capteur "2 wire" DS1621
- 3- Pilotage directement avec Excel
(présentation) - Acquisition terminée
Tableau rempliautomatiquement
Attente d'unenouvelle acquisition
Graphe relatifaux mesures
34 2. 2. Le capteur "2 wire" DS1621
- 4- Présentation du protocole I2C
- L'objectif de ce stage n'étant pas l'étude
détaillée du protocole I2C, nous nous limiterons
aux seules commandes utiles pour dialoguer avec
le composant. - Nous allons devoir envoyer des commandes au
capteur mais aussi lire les données venant du
capteur. - ? L'électricité du bus I2C
- Le bus I2C comprend deux "fils", un pour
l'horloge SCL et un pour la transmission des
données SDA. - Dans notre cas, le maître (l'ordinateur) génère
le signal d'horloge et envoie un ou plusieurs
octets vers l'esclave (capteur). Ensuite
l'esclave transmet un ou plusieurs octets vers le
maître qui génère toujours l'horloge.
35 2. 2. Le capteur "2 wire" DS1621
- 4- Présentation du protocole I2C (suite)
- ? Exemple d'écriture d'un octet
- Au repos, les lignes du bus sont au niveau "1"
soit 5V. - Le maître signale le début de la transmission par
une condition de départ (start) SCL doit être à
"1" et SDA passe de "1" à "0", ensuite SCL passe
à "0". - Ensuite, le maître place le bit de poids fort de
l'octet sur SDA ("0" ou "1") et force SCL à "1"
puis replace SCL à "0" (la donnée doit être
stable tant que SCL est à "1"). - De la même manière, le maître place les 7 autres
bits de l'octet. - Après avoir transmis le dernier bit, le maître
replace SDA à "1" et l'esclave accuse réception
de l'octet en forçant SDA à 0. Le maître place
SCL à "1" puis à "0" pour lire ce bit nommé
"ACKnowlage" (ce neuvième coup d'horloge avec
lecture ou non du bit ACK est obligatoire). - Le maître signale la fin de la transmission par
une condition d'arrêt (stop) SCL passe à "1" et
SDA passe de "0" à "1", la ligne se retrouve
ainsi au repos. - Le chronogramme ci-dessous résume l'écriture d'un
octet avec le neuvième bit ACK.
36 2. 2. Le capteur "2 wire" DS1621
- 4- Présentation du protocole I2C (suite)
- ? Exemple d'écriture d'une donnée
- Pour écrire un ou plusieurs octets dans
l'esclave, il faut respecter le protocole suivant
- ? Le maître transmet l'octet d'adresse de
l'esclave (octet dont le bit de poids faible est
"0" pour une écriture) puis attend la
confirmation ACK (9 coup d'horloge). - ? Le maître transmet le premier octet avec
attente confirmation ACK. Les éventuels autres
octets seront transmis à la suite. - Le chronogramme ci-dessous résume la procédure
d'écriture d'une donnée (un octet)
37 2. 2. Le capteur "2 wire" DS1621
- 4- Présentation du protocole I2C (suite)
- ? Exemple de lecture d'une donnée
- La lecture d'un ou plusieurs octets émis par
l'esclave se fait de la manière suivante - ? Le maître transmet l'octet d'adresse de
l'esclave (octet dont le bit de poids faible est
"1" pour une lecture) puis attend la
confirmation ACK (9 coup d'horloge). - ? L'esclave place l'octet à transmettre en
maintenant les "bits" stables durant le niveau
haut de l'horloge SCL cadencée par le maître. - ? Pour recevoir d'autres octets, c'est maintenant
au maître d'accuser la réception du 1 en mettant
SDA à "0" lors du niveau haut de SCL. - ? Si le maître ne veut pas lire d'autres octets,
il met SDA à "1" lors du niveau haut de SCL puis
place la condition d'arrêt. - Le chronogramme ci-dessous illustre la procédure
de lecture d'une donnée (un octet)
38 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel
- ? Utilisation de fonctions I2C déjà programmées
- Pour le protocole I2C, nous allons utiliser des
fonctions "préprogrammées" qui se trouvent dans
le module I2C_RS232.bas qu'il faudra importer.
Examinons ces fonctions ? I2CInit Sub
I2CInit() - RTS 1 'SCL 1 (ligne SCL au
repos) DTR 1 'SDA 1 (ligne SDA au
repos) End Sub ? Depart Sub Depart() RTS 1
' SCL 1 (mise au repos du bus, au cas
où ...) DTR 1 ' SDA 1 DTR 0
' SDA 0 (passage de "1" vers "0" et RTS
reste à 1) End Sub - ? Arret Sub Arret() RTS 1 ' SCL
0 DTR 0 ' SDA 0 DTR 1
' SDA 1 (passage de "0" vers "1" et RTS
reste à 1) End Sub
39- ? Utilisation de fonctions I2C déjà programmées
(suite) - ? SortieFunction Sortie(Valeur As Byte) As
Boolean - Sortie True '
Initialisation de l'erreur de transmission - ValeurBit 128 '
traitement du bit de poid fort en 1 - RTS 0
- For n 1 To 8
- If (Valeur And ValeurBit) ValeurBit Then
' masque de sélection des bits - DTR 1 ' SDA1
transmission d'un "1" - Else
- DTR 0 ' SDA0
transmission d'un "0" - End If
- RTS 1 ' SCL1
- DELAYUS 10 '
temporisation 10µs - RTS 0 ' SCL0
- DELAYUS 10 '
temporisation 10µs - ValeurBit ValeurBit \ 2 ' passage
au bit de rang inférieur - Next n
- DTR 1 ' SDA1
- RTS 1 ' SCL1
40- ? Utilisation de fonctions I2C déjà programmées
(suite) - ? LectureFunction Lecture() As Byte
- DTR 1 '
SDA"1" - ValeurBit 128 '
traitement du bit de poids fort en 1 - Valeur 0 '
initialisation variable Valeur - For n 1 To 8
- RTS 1 '
SCL"1" - DELAYUS 10 '
temporisation 10µs - Valeur Valeur ValeurBit CTS '
lecture CTS transmis par l'esclave - RTS 0 '
SCL"0" - DELAYUS 10 '
temporisation 10µs - ValeurBit ValeurBit \ 2 '
passage au bit de rang inférieur - Next n
- Lecture Valeur '
affectation de l'octet reçu à la fonction - ' SCL reste à "0"
- End Function
41- ? Utilisation de fonctions I2C déjà programmées
(suite) - ? Confirmer (attente d'un autre octet)Sub
Confirmer() - DTR 0 ' SDA "0"
- RTS 1 ' SCL "1"
- DELAYUS 10 ' Attente 10µs
- RTS 0 ' SCL 0
- End Sub
- ? Sans Confirmer (pas d'autre octet à lire)Sub
SansConfirmer() - DTR 1 ' SDA "1"
- RTS 1 ' SCL 1
- DELAYUS 10 ' Attente 10µs
- RTS 0 ' SCL 0
- DTR 0 ' préparation condition d'arrêt
- RTS 1 ' préparation condition d'arrêt
42 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel (suite)
- ? Commandes pour la communication avec le capteur
- Pour communiquer avec le capteur, il faut
utiliser les commandes suivantes - ? Adressage des capteurs en écriture (dernier
bit à "0") Sortie (H90) ' capteur 1 Sortie
(H92) ' capteur 2 ? Adressage des capteurs en
lecture (dernier bit à "1") Sortie (H91) '
capteur 1 Sortie (H93) ' capteur
2 ? Registre de configuration Sortie (HAC) '
écriture dans le registre de configuration - Sortie (H02) ' conversion en continu
- ? Début des conversions Sortie (HEE) '
Demande de conversions - ? Demande lecture Sortie (HAA) ' demande de
lecture d'une mesure
43 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel (suite)
- ? 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. - ?? Ouvrir un nouveau fichier Excel , 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 'affich
age 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). - ?? Revenir dans Visual Basic et importer les deux
fichiers( port_dll.bas et I2C_RS232.bas ) depuis
le dossierrelatif au stage en faisant un clic
droit dans cette zoneet en sélectionnant
Importer un fichier ... -
44 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel (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)
Intitulé (affichage de texte uniquement)
Zone de texte (texte modifiable par l'utilisateur)
en 1
en 2
Bouton de commande (sélection du ou des capteurs)
A placer en 1
en 2
en 3
45 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel (suite)
- ? Programmation des fonctions
- Plusieurs fonctions 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
Capteur1InitSub Capteur1Init()REALTIME
True 'activation priorité temporelleDepart Sort
ie (H90) 'adresse capteur1
écriture Sortie (HAC) 'écriture dans
registre de configuration Sortie (H2)
'conversions en continueDepart Sortie (H90)
'adresse capteur1 écriture Sortie (HEE)
'commande de début des conversionsArretRE
ALTIME FalseEnd Sub
46 2. 2. Le capteur "2 wire" DS1621
- 5- ? Programmation des fonctions (suite)
- ?? Ecrire, à la suite et de la même manière, le
code de la procédure Capteur2InitSub
Capteur2Init()......................... 'activat
ion priorité temporelle.........................
......................... 'adresse capteur2
écriture ......................... 'écriture
dans registre de configuration ..................
....... 'conversions en continue.................
........ ......................... 'adresse
capteur2 écriture ......................... 'c
ommande de début des conversions.................
........ ......................... End Sub - ?? On peut maintenant écrire le code de la
procédure qui va se déclencher dès l'activation
de la fenêtrePrivate Sub UserForm_Activate()OPEN
COM ("COM2,9600,N,8,1") ' ouverture du
port COMTXD 1
' alimentation de la carteDELAY
100I2CInit ' initialisation (mise au repos des
lignes)Capteur1Init
' configuration capteur1Capteur2Init
' configuration
capteur2End Sub
47 2. 2. Le capteur "2 wire" DS1621
- 5- ? Programmation des fonctions (suite)
- ?? Code relatif à la fermeture de la
fenêtrePrivate Sub UserForm_Deactivate()CLOSECOM
' fermeture de l'accès au port série après
utilisationEnd Sub - ?? Création de la fonction MesureCapteur1
Function MesureCapteur1() As SingleREALTIME
TrueDepart
' début transmission Sortie (H90) '
sélection capteur1 en écriture Sortie (HAA)
' demande lecture
mesureDepart
' début transmission Sortie (H91)
' sélection capteur1 en
lecture OctetPoidFort Lecture '
lecture 1 octet de mesure Confirmer
' confirmation
réception OctetPoidFaible Lecture '
lecture 2 octet de mesure SansConfirmer
' pas d'autre octet à
lireArret
' fin transmissionREALTIME Falsemesure
OctetPoidFort (OctetPoidFaible / 256)
'récupération mesureMesureCapteur1
CDec(mesure) ' transformation au format
décimal et affectation mesure - End Function
48 2. 2. Le capteur "2 wire" DS1621
- 5- ? Programmation des fonctions (suite et fin)
- ?? Création de la fonction MesureCapteur2
Function MesureCapteur2() As Single............
............. .........................
' début transmission ..........
............... ' sélection capteur2 en
écriture ......................... ' demande
lecture mesure.........................
' début transmission ........
................. ' sélection capteur2 en
lecture ......................... ' lecture 1
octet de mesure .........................
' confirmation réception ...............
.......... ' lecture 2 octet de
mesure .........................
' pas d'autre octet à lire......................
... ' fin
transmission......................... ..........
............... 'récupération
mesure......................... '
transformation au format décimal et affectation
mesure - End Function
49 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel (suite)
- ? Programmation des fonctions relatives aux clic
sur les boutons .... àprès c'est fini ... ou
presque ! - ?? Faire afficher UserForm1 et faire un double
clic sur le bouton 1 (capteur1), la procédure
apparaît vide, il ne reste plus qu'à la
compléterPrivate Sub CommandButton1_Click()Colum
ns("AC").ClearContents Cells(1, 1) "t
(s)" 'péparation du tableau (écriture de
texte) Cells(1, 2) "T Capteur1
(C)"Intervalle TextBox1.Value 1000
' intervalle en ms (lecture du
TexBox1)Nombrepoints TextBox2.Value
' nombre de points (lecture du
TexBox2)TIMEINITFor n 0 To Nombrepoints 'déb
ut de la boucleWhile TIMEREAD lt n Intervalle
' attente déclenchement temporel
(compteur)WendCells(n 3, 1) n Intervalle
/ 1000 ' affichage "temps"Cells(n 3, 2)
MesureCapteur1 ' affichage
mesureNext n ' retour ou fin de la
boucleUserForm1.Hide ' fermeture de la
fenêtre après acquisitionEnd Sub
50 2. 2. Le capteur "2 wire" DS1621
- 5- ? Programmation des fonctions relatives aux
clic sur les boutons (c'est presque la fin !) - ?? Faire afficher UserForm1 et faire un double
clic sue le bouton 2 (capteur2), la procédure
apparaît vide, il ne reste plus qu'à la compléter
comme pour CommandButton1_ClickPrivate Sub
CommandButton2_Click() .........................
......................... 'péparation du
tableau (écriture de texte) ....................
..... ......................... ' intervalle
en ms (lecture du TexBox1) ......................
... ' nombre de points (lecture du TexBox2)
......................... ......................
... 'début de la boucle ......................
... ' attente déclenchement temporel
(compteur) .........................
......................... ' affichage "temps"
......................... ' affichage mesure
......................... ' retour ou fin de la
boucle ......................... ' fermeture
de la fenêtre après acquisitionEnd Sub
51 2. 2. Le capteur "2 wire" DS1621
- 5- ? Programmation des fonctions relatives aux
clic sur les boutons (là c'est fini ... promis !) - ?? Faire afficher UserForm1 et faire un double
clic sue le bouton 3 (capteurs 1 et 2), la
procédure apparaît vide, il ne reste plus qu'à la
compléter ... tout seul.Private Sub
CommandButton3_Click() .......................
.. .........................
......................... ......................
... etc ... etc ... .........................
......................... ....................
..... End Sub
52 2. 2. Le capteur "2 wire" DS1621
- 5- Pilotage directement avec Excel (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 le capteur 1, puis le capteur 2
puis les deux capteurs. - Créer un graphique pour visualiser les
variations de température. - ?? 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é ...). - ?? Il ne reste plus qu'à afficher le bon texte
dans les boutons et dans les intitulés.Dans
VisualBasic, faire un clic droit sur le contrôle
CommandBUtton1 pour afficher ses
propriétés.Changer la propriété Caption (texte
affiché).Faire de même pour les deux autres
boutonsainsi que les deux intitulés.D'autres
propriétés sont modifiables (Font, BackColor
...). - Fin de la manipulation sur le capteur DS1621.
53 2. 3. Le capteur "1 wire" DS1820
- 1- Description
- Les caractéristiques générales de ce capteur sont
les suivantes - ? Boîtier TO92 (1 masse 2 communication et 3
alimentation). - ? Plage de mesure de -55C à 125C avec une
précision de 0,0625C (1 mesure en 750ms). - ? Protocole de communication sur 1 fil (1 wire)
nommé protocole iButton. - ? Format de mesure de température sur 9, 10, 11
ou 12 bits. - ? Possibilité de brancher, en théorie, une
infinité - de capteurs simultanément.
54 2. 3. Le capteur "1 wire" DS1820
- 2- Liaison à un microcontrôleur
- ? Liaison "3fils"
- Le capteur se branche à un
- microcontrôleur avec seulement
- une résistance de rappel. L'alimentation et la
masse occupe les deux autres broches - ? Liaison "2fils"
- Le capteur se branche à un microcontrôleur avec
seulement une résistance et un transistor
à effet de champ (résistance commandée par une
tension). La broche d'alimentation est reliée à
la masse pour ne faire qu'un fil.
55 2. 3. Le capteur "1 wire" DS1820
- 3- Liaison au port série RS232
- Le circuit DS9097U (Dallas) permet de relier tous
les composants "1 Wire" au port série RS232. - Le capteur DS18B20 sera directement branché à
l'interface (liaison "2fils"). -
56 2. 3. Le capteur "1 wire" DS1820
- 4- Utilisation du logiciel "iButton Viewer"
- Le logiciel iButton Viewer permet de dialoguer
avec tous les composants "1 Wire" à travers
l'interface série RS232 (DS9097U). - Ce programme se télécharge directement depuis le
site www.ibutton.com à la rubrique "Software
Developper's Tools / 1-wire for Windows / 1-wire
drivers / download version 3.32 (ou ultérieure). - A l'installation du logiciel (exécution de
"tm321b3_32.exe"), il faut ignorer les messages
relatifs à l'USB. - Après installation du logiciel, il suffit de
connecter l'interface RS232 (et le capteur) au
port série et de lancer l'application "ibutton
viewer". -
Numéro de série(8octets) del'interface RS 232
Numéro de série(8octets) du capteurconnecté.
57 2. 3. Le capteur "1 wire" DS1820
- 4- Utilisation du logiciel "iButton Viewer"
(suite et fin) - Dans "iButton Viewer", un double clic sur le
numéro de série du capteur permet de lancer le
programme "Touch Thermometer". - Ce programme permet de visualiser la température
mesurée par le capteur connecté (DS18B20).
Possibilité de paramétrerune alarme
(températurehaute et basse)
58 2. 4. Le capteur "1 wire" DS1921
- 1- Présentation
- Le capteur de température DS1921 est un capteur
autonome se présentant sous la forme d'une pile
bouton. - Après avoir été programmé, il réalise seul les
mesures de températures sans aucune connexion
électrique. - Pour consulter l'ensemble des mesures ou pour
reprogrammer une mission, il faut le connecter à
un circuit spécialisé. -
Numéro de sérieunique sur 8 octets
59 2. 4. Le capteur "1 wire" DS1921
- 2- Liaison au port série RS232
- Le circuit DS9097U (Dallas) permet de relier tous
les composants "1 Wire" au port série RS232. - Le Kit complet capteur DS1921 interface
DS9097U cordon ne coûte que 30 (distributeur
Farnell). -
60 2. 4. Le capteur "1 wire" DS1921
- 3- Utilisation du logiciel "iButton Viewer"
- Le logiciel ibutton viewer sera naturellement
utilisé puisqu'il permet de dialoguer avec tous
les composants "1 Wire" à travers l'interface
série RS232 (DS9097U). - Après avoir connecté le capteur au port série à
travers l'interface, il suffit de lancer le
logiciel et la fenêtre suivante apparaît -
61 2. 4. Le capteur "1 wire" DS1921
- 4- Utilisation du logiciel "Thermochron Viewer"
- Dans "iButton Viewer", un double clic sur le
numéro de série du capteur permet de lancer le
programme "Thermochron Viewer". - Ce programme permet de définir une "mission" de
mesure pour le capteur DS1921. - ? Programmation de la mission
Programmationde la mission.
62 2. 4. Le capteur "1 wire" DS1921
- 4- Utilisation du logiciel "Thermochron Viewer"
(suite) - ? Vérification de l'état de la mission
Récapitulatif desparamètres dela mission
63 2. 4. Le capteur "1 wire" DS1921
- 4- Utilisation du logiciel "Thermochron Viewer"
(suite et fin) - ? Consultation des mesures
Récapitulatif desmesures
Consultation desrésultats de lamission
Téléchargement desmesures stockées dansle
capteur.
64 3.1. Présentation générale des potentiomètres
numériques
- 1- Généralités
- La position du curseur d'un potentiomètre
"traditionnel" se commande de façon mécanique
(position angulaire ou linéaire) avec, en
théorie, une infinité de positions.Le schéma
ci-dessous illustre le principe d'un
potentiomètre de résistance totale R en notant
"x" la position du curseur (0 ? x ? 1) - Pour un potentiomètre numérique, le curseur ne
peut prendre qu'un nombre fini de positions.La
commande de la position du curseur se fait de
façon électronique (signaux numériques).Le
schéma ci-dessous illustre les N1 positions
possibles du curseur pour un potentiomètre
numérique de résistance totale R
C
0
1
x
A
B
x.R
(1-x).R
C
R/N
R/N
R/N
R/N
R/N
R/N
A
B
0
1
2
3
N-3
N-2
N-1
N
65 3.1. Présentation générale des potentiomètres
numériques
- 2- Caractéristiques
- Le schéma général d'un potentiomètre numérique
est le suivant - La commande numérique de la position du curseur
entraîne les propriétés suivantes - ? La position du curseur peut être volatile ou
non volatile (conservation après coupure de
l'alimentation). - ? La commande peut être de type incrémental ou
décrémental (augmentation ou diminution de la
position du curseur).
VDD
A
C
Commandeposition curseur
Multiplexeur
B
66 3.2. Mise en œuvre du potentiomètre DS1803
- 1- Caractéristiques du DS1803
- Le DS1803 a les caractéristiques suivantes
- - double potentiomètre POT-0 et POT-1 (seul le
P0T-0 sera utilisé pour notre application) - - 256 positions volatiles par potentiomètre
- - commande absolue par bus I2C avec possibilité
de lire la position (confirmation). - Extrait de la documentation constructeur (Dallas
Semiconductor)
Borne B "255"
Borne A "0"
Curseur C
67 3.2. Mise en œuvre du potentiomètre DS1803
- 2- Les différentes commandes
- Les commandes pour utiliser le potentiomètre sont
précisées ci-dessous (POT-0 a été câblé avec
l'adresse physique (a2,a1,a0) (0,0,0) - - Ecriture
- - Lecture
-
68 3.2. Mise en œuvre du potentiomètre DS1803
- 3- Le montage relié au port série RS232 (schéma)
69 3.2. Mise en œuvre du potentiomètre DS1803
- 3- Le montage relié au port série RS232
(implantation)
70 3.2. Mise en œuvre du potentiomètre DS1803
- 3- Le montage relié au port série RS232 (photo du
montage)
71 3.2. Mise en œuvre du potentiomètre DS1803
- 4- Pilotage directement depuis Excel
- L'interface utilisateur du fichier Excel de
pilotage du potentiomètre est représenté
ci-dessous
Intitulés (affichage de texte fixe)
Label2 (Intitulé)
Label1 (Intilulé)
ScrollBar1
72- 4- Pilotage directement depuis Excel (suite)
- La réalisation du programme VBA devra passer par
les étapes suivantes (rappel) - ? Insertion du bouton de commande dans Excel
pour l'affichage de la fenêtre de dialogue. - ? Création de la procédure CommandButton1_Click(
) dans VBA pour afficher la fenêtre. - ? Insertion de la fenêtre dans VBA (insertion
UserForm). - ? Importation des fichiers Port_dll.bas et
I2C_RS232.bas. - ? Placement des contrôles dans la fenêtre (barre
de défilement et intitulés). - ? Création des procédures UserForm_Activate() et
Userform_Deactivate(). - ? Création de la procédure ScrollBar1_Change()
qui contiendra le dialogue avec le composant et
l'affichage sur les intitulés (c'est le programme
principal qui se déclenche à chaque changement de
position de la barre de défilement).
73- 4- Pilotage directement depuis Excel (suite et
fin) - ? Réaliser l'application complète pour piloter
le potentiomètre (la procédure contenant le
programme principal est indiquée ci-dessous) - Private Sub ScrollBar1_Change()
- Position ScrollBar1.Value ' création et
affectation de la variable "Position" - Label1.Caption Position ' affichage de la
position commandée dans le 1 Label - REALTIME True ' activation priorité temporelle
- Depart ' début protocole I2C
- Sortie (H50) ' adresse POT_0 en écriture
- Sortie (HA9) ' commande d'écriture position
- Sortie (CByte(Position)) ' écriture de la
position de POT_0 (transformation texte en
octet 8 bits - Arret ' fin protocole I2C
- Depart ' début protocole I2C
- Sortie (H51) ' adresse POT_0 en lecture
74 3.3. Présentation d'une application Delphi pour
piloter le potentiomètre
- 1- Limitations de VBA (VisualBasic Excel)
- Avantages de VBA
- - Elaboration "visuelle" de l'application
(placement des objets par dessin, propriétés
affectées par défaut, sélection automatique des
procédures, pas de déclarations initiales des
variables et fonctions ...). - - Affichage direct des données dans Excel
(création de graphiques, traitement des
données...). - Limitations de VBA
- - VBA ne peut fonctionner qu'avec une application
Office (Word, Excel, ...). - - La vitesse d'exécution est beaucoup plus lente
que pour un programme autonome ( .exe). - Il existe de nombreux logiciels pour élaborer des
applications autonomes (fichier .exe) - - Visual Basic (identique à VBA mais toujours un
problème de lenteur d'exécution). - - Langage C C CBuilder Visual C
(langage de programmation très performant mais
demande un long apprentissage). - - Delphi (langage de programmation Pascal,
apprentissage aisé et vitesse d'exécution
rapide). - Le programme pilotant le potentiomètre sera donc
réalisé avec Delphi.
75 3.3. Présentation d'une application Delphi pour
piloter le potentiomètre
- 2- Présentation de l'interface
- L'interface utilisateur de l'application autonome
PotNum.exe est représentée ci-dessous
76 3.3. Présentation d'une application Delphi pour
piloter le potentiomètre
- 2- Présentation de l'unité Port_dll.pas
- Le code source de l'unité Port_dll.pas est
similaire à celui du module Port_dll.bas (extrait
ci-dessous) - unit Port_dll
- interface
- uses windows
- const THEDLL'PORT.DLL'
- Procedure DELAY(iWORD) stdcall external
THEDLL - Procedure TIMEINIT stdcall external THEDLL
- Function TIMEREAD DWORD stdcall external
THEDLL - Procedure DELAYUS(iDWORD) stdcall external
THEDLL - Procedure TIMEINITUS stdcall external THEDLL
- Function TIMEREADUS DWORD stdcall external
THEDLL - Procedure OUTPORT(PortAddrWord Databyte)
stdcall external THEDLL - Function INPORT(PortAddrWord)Bytestdcall
external THEDLL - Function OPENCOM(SPCHAR)Integerstdcall
external THEDLL - Procedure CLOSECOMstdcall external THEDLL
- Function READBYTEIntegerstdcall external
THEDLL
77- 2- Présentation de l'unité Port_dll.pas (suite et
fin) - Function CTSIntegerstdcall external
THEDLLFunction DSRIntegerstdcall external
THEDLLFunction RIIntegerstdcall external
THEDLLFunction DCDIntegerstdcall external
THEDLLProcedure REALTIME(dBOOLEAN)stdcall
external THEDLLFunction SOUNDSETRATE(RateDWORD)
DWORD stdcall external THEDLLFunction
SOUNDGETRATEDWORD stdcall external
THEDLLFunction SOUNDBUSYBoolean stdcall
external THEDLLFunction SOUNDISBoolean
stdcall external THEDLLProcedure
SOUNDIN(PufferPcharSizeDWORD) stdcall
external THEDLLProcedure SOUNDOUT(PufferPcharS
izeDWORD) stdcall external THEDLLFunction
SOUNDGETBYTESDWORD stdcall external
THEDLLFunction SOUNDSETBYTES(BDWORD)DWORD
stdcall external THEDLLProcedure SOUNDCAPIN
stdcall external THEDLLProcedure SOUNDCAPOUT
stdcall external THEDLLFunction
JOYXDWORDstdcall external THEDLLFunction
JOYYDWORDstdcall external THEDLLFunction
JOYZDWORDstdcall external THEDLLFunction
JOYRDWORDstdcall external THEDLLFunction
JOYBUTTONDWORDstdcall external
THEDLLimplementation - end.
78 3.3. Présentation d'une application Delphi pour
piloter le potentiomètre
- 3- Présentation de l'unité I2C_RS232.pas
- Le code source de l'unité I2C_RS232.pas est
similaire à celui du module I2C_RS232.bas
(extrait ci-dessous) - unit I2C_RS232
- interface
- uses Port_dll, Windows
- Procedure I2C_Init
- Procedure Start
- Procedure Stop
- Procedure Confirmer
- Procedure SansConfirmer
- Function Sortie (Valeur Byte) Boolean
- Function Lecture Byte
- implementation
79- 3- Présentation de l'unité I2C_RS232.pas (suite)
- procedure Start
- begin
- RTS(1) DTR(1) DTR(0)
- end
- procedure Stop
- begin
- RTS(1) DTR(0) DTR(1)
- end
- procedure Confirmer
- begin
- DTR(0) RTS(1)
- Delayus (10) Temporisation
10µs - RTS(0)
- end
80- 3- Présentation de l'unité I2C_RS232.pas (suite)
- Function Sortie (Valeur Byte) Boolean
- var ValeurBit, n Byte
- begin
- Sortie true
- ValeurBit 128
- RTS(0)
- for n 1 to 8 do begin
- if (Valeur and ValeurBit) ValeurBit then
DTR(1) - else DTR(0) Positionner
SDA - RTS(1) SCL1
- Delayus (10)
Temporisation 10µs - RTS(0) SCL0
- Delayus (10)
Temporisation 10µs - ValeurBit ValeurBit div 2
- end
- DTR(1) SDA1
- RTS(1) SCL1, lire
SDA
81- 3- Présentation de l'unité I2C_RS232.pas (suite
et fin) - function Lecture Byte
- var ValeurBit, Valeur, n Byte
- begin
- DTR(1) SDA1
- ValeurBit 128
- Valeur 0
- for n 1 to 8 do begin
- RTS(1) SCL1, lire
SDA - Delayus (10) Temporisation
10µs - Valeur Valeur ValeurBit CTS
- RTS(0) SCL0
- Delayus (10) Temporisation
10µs - ValeurBit ValeurBit div 2
- end
- Lecture Valeur
- end