Professional Documents
Culture Documents
Thème
2009/2010
SOMMAIRE
Introduction générale………………………………………………………………………………………………………….1
Introduction………………….………………………………………………………………………………………………2
8. Horloge ……………………………………………………………………………….……………………………………11
9. TIMER0……………………………………………………………………………………………………………………..12
Introduction.……………………………………………………………………………………………..………………..15
Introduction ………….……………………………………………………………………………..……………………..19
2. Fonction de signe………………………………………………………………………………………………………21
3. Fonction d’affichage………………………………………………………………………………………………….22
Conclusion générale………..…………………….……………………………………………………………………………………..25
Bibliographie.
Annexe.
Introduction générale
Les possibilités offertes par l’utilisation de système à base de microprocesseur ont permis de traiter
les signaux issus des capteurs numériquement (linéarisation et conversion). Ceci à conduit à des
appareils précis et bon marché. Les systèmes à base de microcontrôleurs constituent la solution la
plus attractive.
Dans ce travail nous avons fait la conception d’un thermomètre à base de PIC 16F877 de Micro
chip. Notre thermomètre utilise un capteur intégré LM335 pour la mesure de température. Les
calculs et la conversion nécessaires sont confiés au microcontrôleur, et l’affichage sur des afficheurs
7 segments.
1
Chapitre I
Introduction : [1]
La température est une grandeur physique mesurée à laide d’un thermomètre et étudiée en
thermométrie. Dans la vie courante, elle est reliée aux sensations de froid et de chaud, provenant
du transfert de chaleur entre le corps humain et son environnement. En physique, elle se définit de
plusieurs manières, comme fonction croissante du degré d’agitation thermique des particules, par
l’équilibre des transferts thermiques entre plusieurs systèmes. La température est une variable
importante dans d’autres disciplines. Il existe plusieurs méthodes de mesure de température parmi
ces méthodes la méthode électrique.
En se basant sur la variation thermique de la valeur d’une résistance, sur l’effet Seebeck ou sur la
sensibilité thermique de la fréquence d’oscillation d’un quartz.
Le fonctionnement des thermomètres à résistance et des thermistances est basé sur un même
phénomène physique, à savoir la variation de la résistance électrique d’un conducteur avec la
température.
Thermomètres à résistance :
D’une façon générale la résistivité d’un métal ou d’un alliage dépend de la température :
ρ=ρ0(1+α(T-T0)) (I.1)
ρ0 : résistivité du matériau.
α : sensibilité thermique. α=
R(T)=R(0)(1+AT+BT2+CT3) (I.2)
Thermomètres à thermistance :
Une thermistance est un agglomérat d’oxydes métalliques frittés, c’est-à-dire rendus compacts
par haute pression exercée à température élevée, de l’ordre de 150 bars et 1000 °C.
Il existe deux types de thermistance. Les CTN à coefficient de température négatif, et les CTP à
coefficient de température positif.
2
Chapitre I thermométrie et différents capteurs de température
Relation résistance-température :
3000°K<B<5000°K.
Principe de thermocouple :
L’un des thermocouples le plus utilisé est le Chromel-Alumel ou thermocouple de type K.il possède
une plage de mesure étendue (-100 à +1370 °C), une force électromotrice importante (41310 µV à
1000 °C avec soudure froide à 0°C) et une courbe linèariser pour obtenir sur toute l’étendue de
mesure des précisions meilleures que 0.2%.
Il peut fonctionner de -40°C à 100°C sous un courant constant pouvant varier de 400µA à 5mA. La
tension à ces bornes est de 2,98V à 25°C, le montage le plus utilisé pour ce composant est donnée
par figure (I.1).
3
Chapitre I thermométrie et différents capteurs de température
10mV/°K
Figure (I.1)
LM335
Figure (1.3)
4
Chapitre II
La famille Baseline : qui utilise des mots d’instructions codés sur 12 bits.
La famille Mid-range : utilise des mots d’instructions codés sur 14 bits.
La famille High performance : utilise des mots d’instructions codés sur 16 bits.
5
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
Figure (II.1)
La mémoire du programme est sur 8 K mots, ce qui permet d’écrire un programme contenant
1024x8 instructions puisque la taille d’un mot mémoire et la même celle de l’instruction, 14 bites,
ces instructions circulent dans un bus de 14 bites. La RAM contient 368 octets et la mémoire de
données contient 256 octets ces données circulent dans un bus de 8 bits. Il ya aussi 33 pins d’entrées
/sorties configurés par l’utilisateur, quelques pins sont multiplexées par d’autres fonctions, telle que
les interruptions et l’horloge externe pour le TIMR0, TIMER1. Le µc possède une UAL (unité
arithmétique et logique) qui est chargée des opérations arithmétiques et logiques, le résultat de ces
opérations est stocké temporairement dans le registre W (registre sur 8 bits).
6
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
C’est de la mémoire d’accès rapide, mais labile (c'est-à-dire qu’elle s’efface lorsqu’elle n’est plus
sous tension) cette mémoire contient les registres de configuration du PIC ainsi que les différents
registres de données. Elle contient également les variables utilisées par le programme.
C’est la mémoire programme proprement dite. Chaque case mémoire unitaire fait 14 bits.
Mémoire EEPROM
Cette mémoire est de 256 octets, elle est électriquement effaçable, réinscriptible et stable. Elle est
utilisée pour sauver des paramètres.
Le µc 16F877 dispose 5 ports (A, B, C, D, E). Tous les ports d’entrées /sorties sont bidirectionnels est
la plupart des lignes de port ont une double fonction.
Le port A
Le port A est formé de six pins donc six entrées /sorties numérotées de RA0 à RA5 qui peuvent être
utilisé comme des entrées pour le convertisseur analogique numérique ou utilisé pour le TIMER0,
dans ce dernier cas la broche RA4 sera utilisé comme entrée pour configurer TOCKI.
Le port B
Le port B est formé de huit pins entrées/sorties numérotées de RB0 à RB7. Il peut être configuré
pour générer une interruption sur un changement d’état des broches RB4 à RB7.
Le port C
Le port D
Le port D possède huit pins entées/sorties numérotées de RD0 à RD7. Il peut être configuré comme
port parallèle esclave.
Le port E
7
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
Le port E possède trois pins entrée/sorties numérotées RE0 à RE2, il est utilisé comme entrées au
convertisseur analogique numériques.
Figure(II.2)
Le CAN convertit le signal analogique présent sur une de ses 8 entrées en son équivalent
numérique, codé sur 10 bits. Le signal numérique peut donc prendre 1024 valeurs possibles. Les
pattes AN2 et AN3 peuvent être utilisées comme références de tension ou comme entrées
analogiques standard. Les références de tension étant dans ce dernier cas prises sur les tensions
d’alimentations du PIC :Vdd et Vss.(Vdd pour Vref+ et Vss pour Vref-) .
La conversion se passe en 2 temps :
1er temps le signal à convertir est appliqué sur l’entrée à convertir, ce signal doit être présent
au moins pendant le temps Tacq(temps d’acquisition environ 20µS pour 5V ).
2éme temps la conversion, approximations successives. Le temps de conversion minimum est
de 12 TAD (TAD c’est le temps de conversion dépendant de l’horloge interne, typiquement
1,6µS).
Valeurs représentées :
Les relations qui lient les valeurs analogiques et les représentations numériques sont :
8
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
VIN analogique=((Val/1023)*(Vref+-Vref-))+Vref-
Le convertisseur donne un résultat sur 10 bits, ce résultat sera sauvegardé dans deux registres
ADRESL et ADRESH. Ces deux registres contiennent 16 bits, et que nous n’en utilisons que 10 bits, on
peut soit justifier le résultat à gauche ou à droite. Le choix de la méthode s’effectue à l’aide du bit 7
du registre ADCON1.
Registre ADCON1 :
Il permet de déterminer le rôle de chacune des pins AN0 à AN7. Il permet donc de choisir si un pin
sera utilisé comme entrée analogique, ou comme tension de référence. Il permet également de
décider de la justification du résultat.
1=justifié à droite. Les 6 bits de poids fort du registre ADRESH sont lus comme « 0 ».
0= justifié à gauche. Les 6 bits de poids faible du registre ADRESL sont lus
comme « 0 ».
9
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
NB :
D: I/O Digitale A : Entrée analogique VREF+: tension de référence maximale. VREF- : tension de
référence minimale
Registre ADCON0 :
00=FOSC/2
00=FOSC/8
00=FOSC/32
000=canal 0, (RA0/AN0)
001=canal 1, (RA1/AN1)
010=canal 2, (RA2/AN2)
10
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
011=canal 3, (RA3/AN3)
100=canal 4, (RA5/AN4)
101=canal 5, (RE0/AN5)
110=canal 6, (RE1/AN6)
111=canal 7, (RE2/AN7)
Si ADON=1 :
0=conversion A/D pas en cours (ce bit est automatiquement effacé par le matériel lorsque
II.8.Horloge : [6]
Le PIC 16F877 peut fonctionner en 4 modes d’oscillateur, la sélection de l’un de ces modes est
obtenue par la configuration des bits FOSC1 et FOSC0.
11
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
Figure (II.8.1)
Dans l’un de ces modes de fonctionnement, le microcontrôleur peut avoir une horloge externe
connectée à la broche OSC1/CLKIN.
Figure (II.8.2)
II.8.2.Oscillateur RC :
La fréquence de l’oscillation dépend du voltage, des valeurs de R et C et de la température de
fonctionnement.
Figure (II.8.3)
II.9.TIMER0 : [7]
12
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
Figure (II.9.1)
Le mode temporisateur est sélectionné en mettant à 0 le bit T0CS du registre OPTION. Ce mode de
fonctionnement est assuré par l’horloge interne, le timer0 est incrémenté à cycle d’instruction (sans
le prediviseur).
Le mode compteur est sélectionné en mettant à 1 le bit T0CS du registre OPTION. L’horloge dans ce
cas est externe, en mettant à 1 le bit T0SE le TMR0 est incrémenté à chaque front montant de la
patte RA4/T0CKL, et à chaque front descendant si T0SE à 0.
Prescaler (prédiviseur) :
Un compteur 8 bits est disponible comme un prédiviseur pour le TMR0, ce prédiviseur ne peut être ni
lus ni écrit.
Il fonctionne sur le même principe que le TIMER0, mais il est plus moderne dans sa conception.
C’est un compteur à 16 bits.
Le bit TMR1CS permet de choisir l’horloge soit interne (Fosc/4), externe T1CKI ou un oscillateur à
quartz connecté sur les broches T1OSO et T1OSI.
Figure (II.10.1)
13
Chapitre II description et mise en œuvre du Microcontrôleur PIC 16F877
Les bits T1CKPS1 et T1CKPS0 permettent de choisir la valeur de la pré division à appliquer à
l’horloge choisie, de 1 à 8.
Le bit T1SYNC permet de choisir si l’horloge de sortie du prédiviseur doit être synchrone avec
l’horloge du microcontrôleur.
Le bit TMR1ON active ou désactive le TIMER1. Si ce bit est à 1 alors le TIMER1 est en
fonctionnement et les registres TMR1H :TMR1L son incrémentés à chaque coup d’horloge.
II.11.TIMER2 : [7]
C’est un compteur 8 bits, sont horloge ne peut être que l’horloge interne devisée par 4 (Fosc/4).
Figure (II.11.1)
Il est incrémenté par l’horloge interne (Fosc/4) pré divisée ou non. Les bits T2CKPS1 et T2KPS0
permettent de choisir la valeur de la pré division (1,4 ou 16)
Le contenu du registre incrémenté TMR2 et il est comparé au registre PR2, si ces deux registres sont
égaux alors une impulsion d’horloge est générée et le contenu de TMR2 est remis à 00h. Celle-ci peu
servir d’horloge pour piloter les liaisons I2C et SPI du module SSP ou encore être divisée par un post
diviseur appelé : POSTSCALER.
Les bits T2OUTPS0, T2OUTPS1, T2OUTPS2, T2OUTPS3, permettent de choisir la valeur de la post
division 1,2……,16.
14
Chapitre III
Introduction :
Dans ce chapitre nous allons expliquer les différentes opérations et traitements effectues sur la
tension issus du capteur de température(LM335) pour la convertir en une valeur numérique égale à
la valeur de la température à afficher.
P
I
C
1
Capteur de 6
Température F
8
7
7
Fig. (III.1)
La tension issue du LM335 qui est une conversion d’une température en une tension, qui sera
appliqué à l’entrée du µcontrôleur. Ce dernier est programmé pour générer et afficher le résultat des
grandeurs mesurées sur afficheur à 7 segments.
Pour affiché le résultat des grandeurs mesurées on utilise des décodeurs BCD (décodeur
binaire/décimale) est des afficheurs à 7 segments à diodes électroluminescentes.
15
Chapitre III Etude et conception du thermomètre
Ils sont constitués de 7 diodes électroluminescentes dont les cathodes sont reliées entre elles. Une
résistance doit être placée en série avec chacune des DEL compte –tenu de leurs tensions de
fonctionnement.
Les cathodes communes doivent être reliées au potentiel le plus bas c'est-à-dire à 0.
Il faudra donc un niveau logique actif 1 pour commander un afficheur à cathodes communes.
Ils sont constitués de 7 diodes électroluminescentes dont les anodes sont reliées entre elles.
Une résistance doit être placée en série avec chacune des DEL compte-tenu de leurs tensions de
fonctionnement.
Les anodes communes doivent être reliées au potentiel le plus haut du circuit. Il faudra donc un
niveau logique actif 0 pour commander un afficheur à anodes communes.
Dans notre réalisation en utilisent un afficheur à anodes communes nécessitant un niveau logique
« 0 »on utilisera le décodeur 74LS47.
LT « Lamp Test » qui permet de vérifier le fonctionnement de l’afficheur en allument tous les
segments si BI est à « 1 ».
BI/RBO « Blanking Input » qui permet l’effacement des segments de l’afficheur quelque soit l’état des
autres entrées.
RBI « Ripple Blanking Input » qui permet l’effacement des « 0 » à gauche si A, B, C, D sont à « 0 ».
Tous les bloques du circuit sont alimentées par une tension +5V. Cette tension est générée à partir
du réseau 220V par le circuit suivant.
7805
1 3
VI VO 5V
GND
2
C1 C2
C3
220V 9V
0V
16
Chapitre III Etude et conception du thermomètre
Etage abaisseur : contient le transformateur abaisseur 9V, qui permet de passer d’une
tension sinusoïdale de valeur élevée à une tension de même forme mais de valeur plus
faible.
Etage redresseur : contient le pont de Greatz constitué par quatre diodes qui sert à gardé
que la partie positive (ou négative) de la sinusoïde d’entrée.
Etage de filtrage : formé de C1 (C1=2200µF) à pour rôle de maintenir la tension de sortie
supérieure à une certaine valeur. Les condensateurs (C2=220nF, C3=10µF) sont conseillées
par le constructeur pour réduire les bruits HF et éviter tout risque d’oscillation parasite du
régulateur.
Etage de régulation : contient le régulateur de tension 7805, qui assure de gardé la tension
de sortie constante quelque soit le courant demandé.
III.2.3. Capteur de température :
Pour mesurer une température, nous avons le choix entre de nombreux capteurs : résistances à
coefficient de température positif ou négatif, thermocouple, etc.
L’inconvénient de la plupart de ces capteurs est que leur tension de sortie ne varie pas
linéairement en fonction de la température, ce qui oblige à une correction pour connaitre avec
précision la température exacte.
Aujourd’hui, il existe des capteurs à semi-conducteur de grande précision et à sortie linéaire, bon
marché et faciles d’emploi. Exemple, le circuit LM335.
Figure (III.2.3)
17
Chapitre III Etude et conception du thermomètre
A 25°C est avec un courant de 1mA circulant dans le capteur(LM335), la valeur typique de la tension
est de 2,98V. La valeur minimum est de 2,92V et la valeur maximum est de 3,04V
La valeur de la résistance R4 doit être calculée en fonction de +Vcc pour que le capteur soit
parcouru par un courant de 1mA. Voici la formule à utilisé pour le calcul de R4.
R4=(Vcc-2,98)/1mA (III.1)
VT=VT0+0,01(T-T0) (III.2)
T : température ambiante
VT0 : tension de référence pour une température T0. Pour T0=25° C, VT0=2,98V on obtient :
T(°C)=100xVT-273,15 (III.3)
18
Chapitre IV
22
Chapitre IV programmation du PIC et simulation
Introduction :
Le programme principal est appelé à partir de l’adresse 0000. Il commence par l’initialisation des
PORTs.
Pour les afficheurs à 7 segments les pins du PORTB, PORTC et le PORTD sont configurées en
sorties. Les pins B0 àB3 pour affiché la lettre « C », et les pins B4 à B7 pour affiché l’unité, et le pin C4
pour affiché le signe «-», et les pins D0 à D3 pour affiché les dizaines et les pins D4 à D7 pour affiché
les centaines.
Pour le CAN on a configuré le PORTA en entrée analogique. Le pin RA0 est utilisé pour la tension
issue de l’étage du LM335.
Le PIC 16F877 possède un convertisseur analogique numérique sur 10 bit avec 8 canaux d’entrés
analogiques. Seulement un entre eux utilisé(RA0). Le convertisseur à 10 bits ceci donne un nombre
de pas de mesure égale à 1024. Les tensions de références minimale et maximale sont Vss et Vdd .
Le résultat de mesure est justifié à droite par le positionnement du bit ADFM du registre ADCON1 à1.
Ce qui implique que le registre ADRESL à 8 bits significatifs et contient l’octet le moins significatif du
résultat de conversion, par contre le registre ADRESH aura seulement 2 bits significatifs, qui sont les
bits de poids fort du résultat de conversion (valeur numérique de la tension à convertir).
Le choix de la fréquence d’horloge du CAN s’effectue par les deux bits ADCS0-1(ADCON0). La
configuration qu’on à utilisée est celle qui donne une fréquence d’horloge délivrée de l’oscillateur
RC interne. Le bit ADON du registre ADCON1 permet la mise en route du CAN.
Le choix des entrées analogiques et des tensions de référence est effectué par le positionnement
des bits PCFG3-0. Pour que, seulement l’entrée RA0 soit configurée en entrée analogique on prend
pour ces bits la valeur (0010b).
19
Chapitre IV programmation du PIC et simulation
Début
FIN
Figure(IV.1.1) : Organigramme du programme
20
Chapitre IV programmation du PIC et simulation
Debut
Oui Non
T>=273
T=T-273 T=273-T
s=s+1 s=s
Fin
Le PORT C est utilisé pour affiché le signe «-» si le résultat est négatif, on utilise que le pin C4.
PORTC=s*16+0.
21
Chapitre IV programmation du PIC et simulation
Début
Non
vv>=100
c=c+1
Oui
=100
c=c+1 vv=vv-100
Non
vv>=10
Oui
d=d+1 vv=vv-10
u=vv
FIN
Le PORTS B est utilisé pour affiché les unités il est utilisé comme suit : B0 à B3 pour affiché la lettre
« C » et B4 à B7 pour affiché l’unité. Donc le PORT B reçoit la valeur suivante.
22
Chapitre IV programmation du PIC et simulation
Le PORT D est utilisé pour affiché les dizaines et les centaines il est utilisé comme suit : D0 à D3
pour affiché les dizaines et D4 à D7 pour affiché les centaines. Donc le PORT D reçoit la valeur
suivante.
PORTD=c*16+d.
Le programme à été réalisé et compilé sous C afin de générer deux fichiers qui contiennent le
programme codé en hexadécimal qui sert à programmer le µC sous Isis, et un en assembleur qui sert
comme source pour Isis.
Résultat de la simulation
U1
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
1 35
MCLR/Vpp/THV RB2
36
RB3/PGM
2 37
RA0/AN0 RB4
3 38
RA1/AN1 RB5
4 39
RA2/AN2/VREF- RB6/PGC
5 40
RA3/AN3/VREF+ RB7/PGD
6
RA4/T0CKI
7 15
RA5/AN4/SS RC0/T1OSO/T1CKI
16
RC1/T1OSI/CCP2
8 17
RE0/AN5/RD RC2/CCP1
9 18
RE1/AN6/WR RC3/SCK/SCL
10 23
RE2/AN7/CS RC4/SDI/SDA
24
RC5/SDO
25
RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7
PIC16F877
3
5
4
6
2
1
7
3
5
4
6
2
1
7
3
5
4
6
2
1
7
3
5
4
6
2
1
7
LT
LT
LT
LT
RBI
RBI
RBI
RBI
D
C
B
A
D
C
B
A
D
C
B
A
D
C
B
A
BI/RBO
BI/RBO
BI/RBO
BI/RBO
74LS47 74LS47 74LS47 74LS47
QG
QG
QG
QG
QD
QC
QD
QC
QD
QC
QD
QC
QE
QB
QA
QE
QB
QA
QE
QB
QA
QE
QB
QA
QF
QF
QF
QF
14
15
10
11
12
13
14
15
10
11
12
13
14
15
10
11
12
13
14
15
10
11
12
13
9
9
(COM)
23
Chapitre IV programmation du PIC et simulation
5V
U1
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
R4 1
MCLR/Vpp/THV RB2
35
36
RB3/PGM
2 37
RA0/AN0 RB4
3 38
RA1/AN1 RB5
4 39
RA2/AN2/VREF- RB6/PGC
2 5 40
RA3/AN3/VREF+ RB7/PGD
6
RA4/T0CKI
7 15
V+
RA5/AN4/SS RC0/T1OSO/T1CKI
16
RC1/T1OSI/CCP2
1
P 8
9
RE0/AN5/RD RC2/CCP1
17
18
ADJ RE1/AN6/WR RC3/SCK/SCL
10 23
RE2/AN7/CS RC4/SDI/SDA
24
RC5/SDO
25
V-
RC6/TX/CK
26
RC7/RX/DT
3
LM335 19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
5V RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
C3 RD7/PSP7
PIC16F877
3
VO
7805
2
3
5
4
6
2
1
7
3
5
4
6
2
1
7
3
5
4
6
2
1
7
3
5
4
6
2
1
7
GND
LT
LT
LT
LT
RBI
RBI
RBI
RBI
D
C
B
A
D
C
B
A
D
C
B
A
D
C
B
A
BI/RBO
BI/RBO
BI/RBO
BI/RBO
74LS47 74LS47 74LS47 74LS47
VI
C2
1
C1
QG
QG
QG
QG
QD
QC
QD
QC
QD
QC
QD
QC
QE
QB
QA
QE
QB
QA
QE
QB
QA
QE
QB
QA
QF
QF
QF
QF
14
15
10
11
12
13
14
15
10
11
12
13
14
15
10
11
12
13
14
15
10
11
12
13
9
9
TR
5V
24
Conclusion
générale
Conclusion générale
Conclusion :
Le LM335 utilisé pour la mesure à une caractéristique linaire sur un grand intervalle de
température. Ce dernier a un temps de réponse très grand.
Nous espérons avoir apporté une contribution au domaine de la programmation du PIC 16F877.
25
Bibliographie
[1] http://fr.wikipedia.org/wiki/Temp%C3%A9rature
[7]phILIPPE LETENNEUR-GRANVILLE-2003-
[10] http://premiumorange.com/daniel.robert9/Digit/Pratique/Digit_14PS3.html
Annexe
PIC 16F877
74LS47
Annexe