Vous êtes sur la page 1sur 69

Royaume du Maroc Ecole Supérieure de technologie de Casablanca Département : Génie électrique Option : Electrotechnique & Electronique Industrielle

EEttuuddee && RRééaalliissaattiioonn dduunnee ccaarrttee ddaaccqquuiissiittiioonn ddee ddoonnnnééeess àà bbaassee ddee mmiiccrrooccoonnttrrôôlleeuurr PPIICC 1166FF887766

«« RReeffaaiitt »»

Encadré par : M er AOUFOUSSI HABIB

Réalisé par

: KHALFI YOUSSEF

Année universitaire : 2007/2008

P.F.E. 2007/2008

E.S.T.C.

SSOOMMMMAAIIRREE

A-INTRODUCTION GENERALE………………………………………………………… 4

1- Objectif de la régulation & intérêt du régulateur numérique…….……………………… 2- Principe général de la régulation………………………………………………………… 4 3- Les caractéristiques du régulateur PID……………………………………………………5 3.1- Actions PID…………………………………………………………………………6

3.1.1- Action proportionnelle……………………………………………………………………………6 3.1.2- Action dérivée………………………………………………………………………………… 6 3.1.3- Action intégrale…………………………………………………………………………………6

4

3.2- Régulateur PID…………………………………………………………………….7

B-CAHIER DE CHARGE………………………………………………………………… 8

C- Conception Hardware…………………………………………………………………… 9

1-Définition du PIC…………………………………………………………………………9 2-Distinction des PIC……………………………………………………………………….10 3-Familles des PIC………………………………………………………………………… 10

4-Les trente cinq instructions du PIC 16F876………………………………………………10

5-Organisation du PIC 16F876……………………………………………………………

a- Schéma interne du PIC 16F876 ………………………………………………………….15 b- Composition interne du PIC 16F876…………………………………………………… 15

16

c- Caractéristiques communes des PIC……………………………………………………

d- Description des broches du PIC 16F876…………………………………………………17

e-Organisation de la RAM………………………………………………………………… 20

15

1- Accès à la RAM par l’adressage DIRECT

20

2- Accès à la RAM par l’adressage INDIRECT……………………………………………………………21

f- Description du convertisseur analogique-numérique (CAN)du PIC 16F876…………….24

-Résolution d’un convertisseur analogique-numérique………………………………………………………

-Échantillonnage de l’information………………………………………………………………………………25 -Détail de fonctionnement du CAN contenu dans le 16F876………………………………………………… 25 -Les registres ADRESH et ADRESL ………………………………………………………………………….26

-L’interruption “fin de conversion” associée au module CAN ……………………………………………… 29

-Déroulement d’une conversion analogique-numérique ……………………………………………………

24

30

- 2 -

P.F.E. 2007/2008

E.S.T.C.

D-Réalisation du régulateur numérique à base de PIC……………….…………………

31

1-Circuit de conversion A/N……………………………………………………………….31

1 Première démarche : circuit d’adaptation du signal d’entrée……………………………………………… 32

2 Deuxième démarche : circuit du reset du microprocesseur …………………………………………………32

3 Troisième démarche : circuit de fréquence d’horloge du microprocesseur………………………………….33

4 Quatrième démarche : circuit intégral…………………………………………………………………

2-Décodage du clavier………………………………………………………………………36

34

E-Conception Software…………………………………………………………………

37

1-Première démarche : écriture du programme & assemblage…………………………

37

2-Deuxième démarche : implantage du programme assemblé…………………………… 40

-Conversion analogique-numérique & fréquence d’échantillonnage :…………………………….42

3-Troisième démarche : essais sur un logiciel de simulation………………………………46

F- Essais……………………………………………………………………………………49

49

2-Circuit final réalisé avec les deux binômes …………………………………………….54 3-Circuit d’alimentation……………………………………………………………… …58

1-Circuit de conversion A/N……………………………………………………………

G- Conclusion…………………………………………………………………………… 60

H- Bibliographie & Annexe………………………………………………………………61

- 3 -

P.F.E. 2007/2008

E.S.T.C.

AA--IINNTTRROODDUUCCTTIIOONN GGEENNEERRAALLEE

1- Objectif de la régulation & intérêt du régulateur numérique

Réguler une grandeur, c’est obtenir d’elle un comportement donné, dans un environnement susceptible de présenter des variations.

L’intérêt de l’utilisation du régulateur numérique réside dans le fait qu’il est totalement reprogrammable à souhait, efficace, assure la continuité du processus régulé avec une très grande efficacité & précision. Ce qui lui a permis d’être utilisé souvent dans l’industrie. Le régulateur numérique est construit spécialement avec des circuits électroniques à base de microprocesseurs ou de microcontrôleurs.

2- Principe général de la régulation

Dans la plupart des appareils et installations industrielles, tertiaires et mêmes domestiques, il est nécessaire de maintenir des grandeurs physiques à des valeurs déterminées, en dépit des variations externes ou internes influant sur ces grandeurs. Le niveau d’un réservoir d’eau, la température d’une étuve, le débit d’une conduite de gaz, étant par nature variables, doivent donc être réglés par des actions convenables sur le processus considéré. Si les perturbations influant sur la grandeur

à contrôler sont lentes ou négligeables, un simple réglage (dit en

boucle ouverte) permet d’obtenir et de maintenir la valeur demandée (par exemple : action sur un robinet d’eau). Dans la majorité des cas, cependant, ce type de réglage n’est pas suffisant, parce que trop grossier ou instable. Il faut alors comparer, en permanence, la valeur mesurée de la grandeur réglée à celle que l’on souhaite obtenir et agir en conséquence sur la grandeur d’action, dite grandeur réglante. On a, dans ce cas, constitué une boucle de régulation et plus généralement une boucle d’asservissement (figure I.1). Cette boucle nécessite la mise en oeuvre d’un ensemble de moyens de mesure, de traitement de signal ou de calcul, d’amplification et de commande d’actionneur, constituant une chaîne d’éléments associés à la chaîne de régulation (ou d’asservissement). Toute chaîne de régulation (ou d’asservissement) comprend trois maillons indispensables :

L’organe de mesure, l’organe de régulation et l’organe de contrôle.

Il faut donc commencer par mesurer les principales grandeurs servant

à contrôler le processus.

L’organe de régulation récupère ces mesures et les compare aux valeurs souhaitées, plus communément appelées valeurs de consigne. En cas de non-concordance des valeurs de mesure et des valeurs de consigne, l’organe de régulation envoie un signal de commande à

- 4 -

P.F.E. 2007/2008 E.S.T.C. l’organe de contrôle (vanne, moteur, etc.), afin que celui-ci agisse sur le
P.F.E. 2007/2008
E.S.T.C.
l’organe de contrôle (vanne, moteur, etc.), afin que celui-ci agisse
sur le processus. Les paramètres qui régissent le processus sont ainsi
stabilisés en permanence à des niveaux souhaités.
FIGURE I. 1 : Schéma de principe d’une chaîne de régulation
Le choix des éléments de la chaîne de régulation est dicté par les
caractéristiques du processus à contrôler, ce qui nécessite de bien
connaître le processus en question et son comportement.
3- Les caractéristiques du régulateur PID
Le régulateur standard le plus utilisé dans l’industrie est le régulateur
PID car il permet de régler à l’aide de ses trois paramètres les
performances (amortissement, temps de réponse,
) d’un processus
modélisé par un deuxième ordre. Nombreux sont les systèmes
physiques qui, même en étant complexes, ont un comportement voisin
de celui d’un deuxième ordre. Par conséquent, le régulateur PID est
bien adapté à la plupart des processus de type industriel et est
relativement robuste par rapport aux variations des paramètres du
procédé, quand on n’est pas trop exigeant sur les performances de la
boucle fermée par rapport à celles de la boucle ouverte (par exemple,
- 5 -
P.F.E. 2007/2008 E.S.T.C. accélération très importante de la réponse ou augmentation très importante de
P.F.E. 2007/2008
E.S.T.C.
accélération très importante de la réponse ou augmentation très
importante de l’amortissement en boucle fermée).
3.1- Actions PID
3.1.1- Action proportionnelle
La sortie U (t) du régulateur proportionnel est donnée en fonction de
son entrée e (t) qui représente l’écart entre la consigne et la mesure
par la relation
Pour le cas discret, cette relation reste la même telle que :
Le rôle de l’action proportionnelle est de minimiser l’écart e entre la
consigne et la mesure et elle réduit le temps de montée et le temps de
réponse. On constate qu’une augmentation du gain K P du régulateur
entraîne une diminution de l’erreur statique et permet d’accélérer le
comportement global de la boucle fermée.
3.1.2- Action dérivée
Elle est une action qui tient compte de la vitesse de variation de l’écart
entre la consigne et la mesure, elle joue aussi un rôle stabilisateur,
contrairement à l’action intégrale.
En effet, elle délivre une sortie variant proportionnellement à la vitesse
de variation de l’écart ε :
avec Td le dosage de l’action dérivée, exprimé en minutes ou en
secondes.
L’action dérivée va ainsi intervenir uniquement sur la variation de
l’erreur ce qui augmente la rapidité du système (diminution des temps
de réponses). En pratique, il est souhaitable de limiter l’action dérivée
afin de ne pas amplifier les bruits haute fréquence et de limiter
l’amplitude des impulsions dues aux discontinuités de l’écart.
3.1.3- Action intégrale
L’action intégrale agit proportionnellement à la surface de l’écart entre
la consigne et la mesure, et elle poursuit son action tant que cet écart
n’est pas nul. On dit que l’action intégrale donne la précision statique
- 6 -
P.F.E. 2007/2008 E.S.T.C. (Elle annule l’erreur statique). L'action intégrale est conditionnée par le temps
P.F.E. 2007/2008
E.S.T.C.
(Elle annule l’erreur statique). L'action intégrale est conditionnée par le
temps d'intégrale Tiv.
Comme dans le cas de l’action proportionnelle, un dosage trop
important de l’action intégrale engendre une instabilité de la boucle de
régulation. Pour son réglage, il faut là aussi trouver un compromis
entre la stabilité et la rapidité.
Enfin, le correcteur intégral présente le défaut de saturer facilement si
l’écart ne s’annule pas rapidement ce qui est le cas des systèmes lents.
En effet, tout actionneur est limité : un moteur est limité en vitesse,
une vanne ne peut pas être plus que totalement ouverte ou totalement
fermée. Il se peut que la variable de commande amène l’actionneur à
sa limite ce qui suspend la boucle de retour et le système aura une
configuration assimilable à une boucle ouverte puisque l’actionneur
demeurera saturé indépendamment de la sortie du système.
Quand l’erreur est réduite (action intégrale non saturée), il se peut qu’il
faille un temps important pour que les valeurs des variables ne soient
correctes de nouveau : on appelle ce phénomène l’emballement du
terme intégral.
3.2- Régulateur PID
L’action conjuguée PID permet une régulation optimale en associant les
avantages de chaque action : la composante P réagit à l’apparition d’un
écart de réglage, la composante D s’oppose aux variations de la
grandeur réglée et stabilise la boucle de régulation et la composante I
élimine l’erreur statique. Et c’est pour cela que ce type de correcteur
est le plus utilisé en milieu industriel.
Dans un régulateur PID, il existe plusieurs façons d’associer les
paramètres P, I et D. En effet, le correcteur PID peut avoir une
structure série, parallèle ou mixte .
- 7 -
P.F.E. 2007/2008 E.S.T.C. BB--CCAAHHIIEERR DDEE CCHHAARRGGEE Le cahier de charge nous impose de réaliser un
P.F.E. 2007/2008
E.S.T.C.
BB--CCAAHHIIEERR DDEE CCHHAARRGGEE
Le cahier de charge nous impose de réaliser un régulateur numérique
sous forme d’une carte d’acquisition de données à base de
microcontrôleur PIC.
A nous de réaliser ; selon le schéma ci-dessous, premièrement un
circuit permettant de convertir un signal analogique en numérique via
le convertisseur A/N du PIC ; puis de réaliser un autre circuit
permettant la communication du PIC avec un clavier.
L’autre binôme devra ; entre autres, réaliser un circuit permettant la
reconversion N/A, la commande des paramètres du régulateur
numérique & l’affichage des ces différentes valeurs sur un afficheur à
cristaux liquides.
Schéma synoptique du régulateur numérique souhaité
- 8 -
P.F.E. 2007/2008 E.S.T.C. CC--CCOONNCCEEPPTTIIOONN MMAATTÉÉRRIIEELLLLEE 11 DDééffiinniittiioonn dduu PPIICC Un
P.F.E. 2007/2008
E.S.T.C.
CC--CCOONNCCEEPPTTIIOONN MMAATTÉÉRRIIEELLLLEE
11 DDééffiinniittiioonn dduu PPIICC
Un microcontrôleur est un composant électronique autonome
composé :
- d’un microprocesseur.
- de la mémoire RAM.
- de la mémoire permanente.
- des interfaces d’E/S //, série (RS232,I2C …).
- des interfaces d’E/S analogique.
- des Timer pour gérer le temps.
- d’autres modules plus au moins sophistiqués .
Il est généralement moins puissant qu’un microprocesseur en terme de
rapidité ou de taille mémoire, il se contente le plus souvent d’un bus 8
ou 16 bits. Ceci en fait un composant très bon marché parfaitement
Adapté pour piloter les applications embarquées dans de nombreux
domaines d’application :
- l’informatique (souris, modem …)
- Vidéo (Appareil photos numérique, caméra numérique …)
- Contrôle des processus industriels (régulation, pilotage)
-Appareil de mesure (affichage, calcul statistique, mémorisation)
- Automobile (ABS, injection, GPS, airbag)
-Multimédia (téléviseur, carte audio, carte vidéo, MP3)
- Téléphones (fax, portable, modem)
-Electroménager (lave-vaisselle, lave-linge, four micro-onde)
Ils intègrent en un seul circuit toutes les ressources propres à un
système minimum contrairement à un microprocesseur qui lui
nécessite des fonctionnalités extérieures.
Ils sont constitués autour d’une architecture appelée RISC (Reduced
Instruction Set Computer : Circuit à jeu d’instructions réduit à 33 ou 35
instructions).
La composition des PIC est de faible consommation avec une rapidité
accrue facilitant leur intégration dans la plupart des circuits.
Tous les PIC Mid-Range (y inclus le 16F876) ont un jeu de 35
instructions, stockent chaque instruction dans un seul mot de
programme, et exécutent chaque instruction (sauf les sauts) en 1
cycle. On atteint donc de très grandes vitesses, et les instructions sont
de plus très rapidement assimilées. L’exécution en un seul cycle est
typique des composants RISC.
L’horloge fournie au PIC est pré divisée par quatre au niveau de celle-
ci. C’est cette base de temps qui donne la durée d’un cycle. Si on utilise
par exemple un quartz de 4MHz, on obtient donc 1000000 de
cycles/seconde, or, comme le PIC exécute pratiquement 1 instruction
- 9 -
P.F.E. 2007/2008 E.S.T.C. par cycle, hormis les sauts, cela nous donne une puissance de l’ordre
P.F.E. 2007/2008
E.S.T.C.
par cycle, hormis les sauts, cela nous donne une puissance de l’ordre
de 1MIPS (1 Million d’Instructions Par Seconde).
22 DDiissttiinnccttiioonn ddeess PPIICC
Pour identifier un PIC, on utilise simplement son numéro.
Les 2 premiers chiffres indiquent la catégorie du PIC, 16 indique un PIC
Mid-Range utilisant des mots de 14 bits.
Vient ensuite parfois une lettre L : Celle-ci indique que le PIC peut
fonctionner avec une plage de tension beaucoup plus tolérante.
Ensuite, la lettre C indique que la mémoire programme est une EPROM
ou plus rarement une EEPROM ; CR pour indiquer une mémoire de
type ROM ou F pour indiquer une mémoire de type FLASH.
Donc le 16F876 sera un Mid-Range de 8 bits (largeur du bus de
données) avec une mémoire de type FLASH reprogrammable à souhait.
33 FFaammiilllleess ddeess PPIICC
La famille BaseBase-BaseBase--Line-LineLine,Line qui utilise des mots d’instructions de 12 bits, la
famille MidMid-MidMid--Range-RangeRangeRange, qui utilise des mots de 14 bits (et dont fait partie
notre PIC 16F876), et la famille HighHigh-HighHigh--End-EndEnd,End qui utilise des mots de 16
bits. Par la suite, d’autres familles sont apparues ; plus sophistiquées,
comme la EnhancedEnhancedEnhancedEnhanced familyfamilyfamilyfamily .
44 LLeess ttrreennttee cciinnqq iinnssttrruuccttiioonnss dduu PPIICC 1166FF887766
La programmation du PIC 16F876 par le logiciel MPlab de
Arizona Microchip Electronics se résume en
trente cinq instructions :
IINNSSTTRRUUCCTTIIOONNSS DD’’OOPPEERRAATTIIOONNSS SSUURR LLEESS RREEGGIISSTTRREESS((ccii--ddeessssoouuss))
- 10 -
P.F.E. 2007/2008 E.S.T.C. Instructions Descriptions Indicateurs affectés ADDLW k Additionner le contenu du registre
P.F.E. 2007/2008
E.S.T.C.
Instructions
Descriptions
Indicateurs affectés
ADDLW k
Additionner le contenu du registre
C
est mis à 1 s'il y a une retenue
W
et la valeur immédiate "k"
DC
est mis à 1si la somme des
La
somme est stockée dans W
quatre bits de poids faible est > 15
Z
est mis à 1 si le résultat est nul
ADDWF f,d
Additionner le contenu des
C
est mis à 1 s'il y a une retenue
registres W et f. La somme est
stockée suivant "d"
si d= 0 le résultat va dans le
DC
est mis à 1si la somme des
quatre bits de poids faible est > 15
Z
est mis à 1 si le résultat est nul
registre W
si d= 1 le résultat va
dans le registre f
SUBLW k
Soustraire la valeur immédiate "k"
C
est mis à 1 s'il y a une retenue
au
contenu du registre W.
DC
est mis à 1si la somme des
La
somme est stockée dans W
quatre bits de poids faible est > 15
Z
est mis à 1 si le résultat est nul
SUBWF f,d
Soustraire le contenu du registre f
C
est mis à 1 s'il y a une retenue
du
contenu du registre W.
DC
est mis à 1si la somme des
La
somme est stockée suivant "d"
quatre bits de poids faible est > 15
si d= 0 le résultat va dans le
Z
est mis à 1 si le résultat est nul
registre W
si d= 1 le résultat va
dans le registre f
ANDLW k
"ET" bit à bit entre le contenu du
registre W et la valeur immédiate
"k"
Z
est mis à 1 si le résultat est nul
Le
résultat est stockée dans W
ANDWF f,d
Z
est mis à 1 si le résultat est nul
"ET" bit à bit entre le contenu des
registres W et f. Le résultat est
stocké suivant "d"
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
IORLW k
"OU" bit à bit entre le contenu du
registre W et la valeur immédiate
"k"
Z
est mis à 1 si le résultat est nul
Le
résultat est stockée dans W
IORWF
f,d
"OU" bit à bit entre le contenu des
registres W et f. Le résultat est
stocké suivant "d"
si d= 0 le résultat va dans le
Z
est mis à 1 si le résultat est nul
registre W
si d= 1 le résultat va
dans le registre f
XORLW k
"OU exclusif" bit à bit entre le
contenu du registre W et la valeur
immédiate "k"
Z
est mis à 1 si le résultat est nul
- 11 -
P.F.E. 2007/2008 E.S.T.C. Le résultat est stockée dans W XORWF f,d "OU exclusif" bit à
P.F.E. 2007/2008
E.S.T.C.
Le résultat est stockée dans W
XORWF f,d
"OU exclusif" bit à bit entre le
contenu des registres W et f.
Z
est mis à 1 si le résultat est nul
Le résultat est stocké suivant "d"
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
COMF f,d
Complémente le contenu du
Z
est mis à 1 si le résultat est nul
registre f. Le résultat est stocké
suivant "d"
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
DECF f,d
Décrémente le contenu du registre
f. Le résultat est stocké suivant "d"
si d= 0 le résultat va dans le
Z
est mis à 1 si le résultat est nul
registre W
si d= 1 le résultat va
dans le registre f
INCF f,d
Incrémente le contenu du registre f.
Le résultat est stocké suivant "d"
si d= 0 le résultat va dans le
Z
est mis à 1 si le résultat est nul
registre W
si d= 1 le résultat va
dans le registre f
RLF f,d
Rotation à gauche du contenu du
registre f.
C
est mis à 1 si le bit 7 était à 1
avant rotation
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
RRF f,d
Rotation à droite du contenu du
registre f.
C
est mis à 1 si le bit 0 était à 1
avant rotation
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
SWAPF f,d
Échange de quartets entre le
contenu du registre f. Le résultat
est stocké suivant "d"
b7b6b5b4 b3b2b1b0 -->
b4b3b2b1b0 b7b6b5b4
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
BCF f,b
Mise à 0 du bit b du registre f
BSF f,b
Mise à 1 du bit b du registre f
- 12 -
P.F.E. 2007/2008 E.S.T.C. IINNSSTTRRUUCCTTIIOONNSS DDEE CCHHAARRGGEEMMEENNTT DDEE RREEGGIISSTTRREE Instruction
P.F.E. 2007/2008
E.S.T.C.
IINNSSTTRRUUCCTTIIOONNSS DDEE CCHHAARRGGEEMMEENNTT DDEE RREEGGIISSTTRREE
Instruction
Description
Indicateurs affectés
MOVF f,d
Copier le contenu du registre f dans
le registre spécifié suivant "d"
si d= 0 le résultat va dans le
Z est mis à 1 si le contenu du
registre R est nul
registre W
si d= 1 le résultat va
dans le registre f
MOVLW k
Charge la valeur immédiate "k"
dans le registre W
MOVWF f
Charge le contenu du registre W
dans le registre f
CLRF f
Efface le contenu du registre f
CLRW
Efface le contenu du registre W
Z mis à 1
CLRWDT
Efface le contenu du temporisateur
du chien de garde (watchdog)
TO et
PD
sont miss à 1
IINNSSTTRRUUCCTTIIOONNSS SSPPEECCIIAALLEESS
Instruction
Description
Indicateurs affectés
NOP
Aucune opération. Cette instruction
est utilisé pour passer un cycle
machine
SLEEP
Mise en veille du microcontrôleur
(Power Down mode)
TO est mis à 1
et
PD est mis à 0
- 13 -
P.F.E. 2007/2008 E.S.T.C. IINNSSTTRRUUCCTTIIOONNSS DDEE BBRRAANNCCHHEEMMEENNTT Instruction Description Indicateurs
P.F.E. 2007/2008
E.S.T.C.
IINNSSTTRRUUCCTTIIOONNSS DDEE BBRRAANNCCHHEEMMEENNTT
Instruction
Description
Indicateurs affectés
GOTO Etiquette
Branchement inconditionnel à
l’adresse du programme nommée
"Etiquette"
BTFSC f,b
Test du bit "b" du contenu du
registre f.
Saut d'une instruction s'il est à l'état
0
BTFSS f,b
Test du bit "b" du contenu du
registre f.
Saut d'une instruction s'il est à l'état
1
DECFSZ f,d
Décrémentation du contenu du
registre f et saut d'une instruction si
le résultat est nul
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
INCFSZ f,d
Incrémentation du contenu du
registre f et saut d'une instruction si
le résultat est nul
si d= 0 le résultat va dans le
registre W
si d= 1 le résultat va
dans le registre f
CALL sousprog(subroutine)
Appel du sous programme
"sousprog"
RETURN
Retour de sous programme après
l'adresse d'où il a été appelé (après
le"
CALL sousprog")
RETLW k
Se
comporte comme le "RETURN"
avec en plus le contenu du registre
W
chargée par la valeur immédiate
"k
RETFIE
Retour du programme
d'interruption vers le programme
interrompu à l'endroit de
l'interruption
L'entrée dans le sous programme
d'interruption dévalide de
nouveaux appels en interruption et
l'instruction RETFIE les revalident
- 14 -
P.F.E. 2007/2008 E.S.T.C. 55 OOrrggaanniissaattiioonn dduu PPIICC 1166FF887766 aa SScchhéémmaa iinntteerrnnee dduu
P.F.E. 2007/2008
E.S.T.C.
55 OOrrggaanniissaattiioonn dduu PPIICC 1166FF887766
aa SScchhéémmaa iinntteerrnnee dduu PPIICC 1166FF887766
bb CCoommppoossiittiioonn iinntteerrnnee dduu PPIICC 1166FF887766
- 15 -
P.F.E. 2007/2008 E.S.T.C. Le PIC 16F876 est composé de : • Une mémoire programme de
P.F.E. 2007/2008
E.S.T.C.
Le PIC 16F876 est composé de :
• Une mémoire programme de type EEPROM flash de 8K mots de 14 bits.
• Une RAM de donnée de 368 octets.
• Une mémoire EEPROM de 256 octets.
• Horloge allant jusqu'à 20 MHz, Cycle instruction 200 ns.
• Trois ports d'entrée sortie, A(6 bits), B(8 bits), C(8 bits).
• Convertisseur Analogiques numériques 10 bits à 5 canaux.
• USART, Port série universel, mode asynchrone (RS232) et mode synchrone.
• SSP, Port série synchrone supportant I2C.
• Trois TIMERS avec leurs Prescalers, TMR0, TMR1, TMR2.
• Deux modules de comparaison et Capture CCP1 et CCP2.
• Un chien de garde.
• 13 sources d'interruption.
• Générateur d'horloge, à quartz ou à Oscillateur RC.
• Protection de code.
• Fonctionnement en mode sleep pour réduction de la consommation.
• Programmation par mode ICSP(In Circuit Serial Programming) 12V ou 5V.
• Tension de fonctionnement de 2 à 5V.
• Jeux de 35 instructions.
cc CCaarraaccttéérriissttiiqquueess ccoommmmuunneess ddeess PPIICC
- 16 -

P.F.E. 2007/2008

E.S.T.C.

Les PIC de Arizona Microchip ont des caractéristiques communes permettant à autrui de suivre le développement continu de la technologie des PIC sans être nullement dépaysé dans leur programmation & que sont :

• Programmable sur site ICSP (In Circuit Serial Programming).

• Débuggable sur site ICD.

• Fréquence de fonctionnement élevée, jusqu’à 20 Mhz.

• Une mémoire vive de 192 à 368 octets.

• Une mémoire EEPROM pour sauver des paramètres de 128 à 256 octets.

• Une mémoire morte de type FLASH de 4 Kmots à 8 Kmots (1mot = 14 bits).

• Chien de garde WDT.

• Surveillance d'horloge OST.

• Surveillance de tension d’alimentation BOR.

• De 21 à 32 Entrées et sorties suivant le type de micro contrôleur.

• Chaque sortie peut sortir un courant maximum de 25mA.

• 3 Temporisateurs : TIMER0 (8 bits avec pré diviseur), TIMER1 (16 bits avec pré

diviseur avec possibilité d’utiliser une horloge externe réseau RC ou QUARTZ) et

TIMER2 (8 bits avec pré diviseur et post diviseur)

• 2 entrées de captures et de comparaison avec PWM (Modulation de largeur d’impulsions).

• Convertisseur analogique numérique 10 bits avec de 5 à 8 entrées multiplexées maximum.

• Une interface de communication série asynchrone et synchrone. (USART/SCI).

• Une interface de communication série synchrone. (SSP/SPI et I2C).

• Plusieurs modes de fonctionnements faible consommation.

• Une seule tension d'alimentation 2 ou 5V.

• Conservation des informations en mémoire vive jusqu'à 1.5V.

• Faible consommation :

• <2mA à 5V pour Fquartz=4Mhz.

• 20µA à 3V pour Fquartz à 32Khz.

• <1µA pour en mode sommeil.

dd DDeessccrriippttiioonn ddeess bbrroocchheess dduu PPIICC 1166FF887766

Le PIC 16F876 a 28 broches :

- 17 -

P.F.E. 2007/2008 E.S.T.C. Description des vingt-huit broches du PIC 16F876 : - 18 -
P.F.E. 2007/2008
E.S.T.C.
Description des vingt-huit broches du PIC 16F876 :
- 18 -
P.F.E. 2007/2008 E.S.T.C. -Le port A : désigné par PORTA est un port de 6
P.F.E. 2007/2008
E.S.T.C.
-Le port A : désigné par PORTA est un port de 6 bits (RA0 à RA5).La
broche RA4 est multiplexée avec l'entrée horloge du timer TMR0, elle
peut donc être utilisée soit comme E/S normale du port A, soit comme
entrée horloge pour le Timer TMR0. RA4 est une E/S à drain ouvert, si
on veut l'utiliser comme sortie (pour allumer une LED par exemple), il
ne faut pas oublier de mettre une résistance externe vers Vdd ; Les
- 19 -
P.F.E. 2007/2008 E.S.T.C. autres broches(RA0, RA1, RA2, RA3 et RA5) peuvent être utilisées soient comme
P.F.E. 2007/2008
E.S.T.C.
autres broches(RA0, RA1, RA2, RA3 et RA5) peuvent être utilisées
soient comme E/S numériques soient comme entrées analogiques. Au
RESET, ces E/S sont configurées en entrées analogiques.
-Le port B : désigné par PORTB est un port bidirectionnel de 8 bits
(RB0 à RB7). Toutes les broches sont compatibles TTL.
-Le port C : désigné par PORTC est un port bidirectionnel de 8 bits
(RC0 à RC7). Toutes les broches sont compatibles TTL. La configuration
de direction se fait à l'aide du registre TRISC, positionner un bit de
TRISC à 1 configure la broche correspondante de PORTC en entrée &
inversement.
Toutes les broches du port C peuvent être utilisées soit comme E/S
normales soit comme broches d'accès à différents modules comme le
timer 1, le timer 2, le port I2C ou le port série.
ee OOrrggaanniissaattiioonn ddee llaa RRAAMM dduu 1166ff887766
L’espace mémoire RAM adressable est de 512 positions de 1 octet
chacune :
- 96 positions sont réservées au SFR (Special Function Registers) qui sont les
registres de configuration du PIC.
- Les 416 positions restantes constituent les registres GPR (General Propose
Registers) ou RAM utilisateur. Sur le 16F876 et 16F877, 3 blocs de 16 octets
chacun ne sont pas implantés physiquement d’où une capacité de RAM utilisateur
de 368 GPR.
Pour accéder à la RAM, on dispose de deux modes d’adressage :
1- Accès à la RAM par adressage DIRECT
Avec ce mode d’adressage, on précise dans l’instruction la valeur de
l’adresse à laquelle on veut accéder. Par exemple, pour copier le
contenu de l'accumulateur W dans la case mémoire d'adresse 50, on
utilise l'instruction MOVWF 50. Cette instruction sera codée sur 14 bits,
la partie adresse est codée sur 7 bits ce qui va poser quelques petits
problèmes. En effet, 7 bits permettent d’adresser seulement 128
positions. Pour pouvoir adresser les 512 positions accessibles, il faut 9
bits d’adresse. Pour avoir ces 9 bits, le PIC complète les 7 bits venant
de l’instruction par deux bits situés dans le registre de configuration
STATUS. Ces bits sont appelés RP0 et RP1 et doivent être positionnés
correctement avant toute instruction qui accède à la RAM par
l’adressage direct.
- 20 -
P.F.E. 2007/2008 E.S.T.C. La RAM apparaît alors organisée en 4 banks de 128 octets chacun.
P.F.E. 2007/2008
E.S.T.C.
La RAM apparaît alors organisée en 4 banks de 128 octets chacun.
L'adresse instruction permet d'adresser à l'intérieur d'un bank alors que
les bits RP0 et RP1 du registre STATUS permettent de choisir un bank.
La Figure II.1 montre l’organisation de la RAM avec les zones allouée
au SFR et aux GPR.
Les zones hachurées ne sont pas implantées physiquement. Si on
essaye d’y accéder, on est aiguillé automatiquement vers la zone
[70h,7Fh] appelée zone commune.
Même si on précise une adresse supérieure à 127 (+ de 7 bits) dans
une instruction, elle est tronquée à 7 bits puis complétée par les bits
RP0 et RP1 pour former une adresse 9 bis. Par exemple, pour copier
l’accumulateur W dans la case mémoire d’adresse 1EFh, il faut d’abord
placer les bits RP0 et RP1 à 1 (bank 3), ensuite on utilise soit
l’instruction MOVWF 6Fh soit l’instruction MOVWF 1EFh, qui donne le
même résultat. En effet, que l’on écrive 6Fh = 0110 1111 ou 1EFh =
0001 1110 1111, le PIC ne prend que 7 bits soit : 1101111 = 6Fh et
complète avec les bits RP1,RP0 pour obtenir 11 1101111 = 1EFh
2- Accès à la RAM par l’adressage INDIRECT
Pour accéder à une position de la RAM en utilisant l’adressage indirect,
on passe toujours par une position fictive appelée INDF. Exemple :
- 21 -
P.F.E. 2007/2008 E.S.T.C. l’instruction CLRF INDF signifie : mettre à zéro la case mémoire d’adresse
P.F.E. 2007/2008
E.S.T.C.
l’instruction CLRF INDF signifie : mettre à zéro la case mémoire
d’adresse INDF. Mais quelle est l’adresse de cette position appelée
INDF ? INDF est la case mémoire pointée par le registre (pointeur) FSR
Cela signifie que si on place 74h dans le registre FSR et ensuite on
exécute l’instruction CLRF INDF, cela va remettre à zéro la case
mémoire d’adresse 74h.
Ceci n’est pas tout à fait complet car (comme pour l’adressage direct)
on va avoir un problème de capacité d’adressage. En effet, comme tous
les registres, le registre de pointage FSR est un registre 8 bits, il peut
donc adresser au maximum 256 positions mémoire (de 00h à FFh),
c’est seulement la moitié de la RAM don on dispose. Il nous manque un
bit pour avoir les 9 bits nécessaires. On utilise le bit IRP qui se trouve
dans le registre STATUS.
Donc en résumé, chaque fois que le PIC rencontre le mot INDF dans un
programme, il sait qu’il s’agit de la case mémoire dont l’adresse (9
bits) se trouve dans le registre FSR complété par le bit IRP du registre
STATUS
- 22 -
P.F.E. 2007/2008 E.S.T.C. - 23 -
P.F.E. 2007/2008
E.S.T.C.
- 23 -
P.F.E. 2007/2008 E.S.T.C. ff DDeessccrriippttiioonn dduu ccoonnvveerrttiisssseeuurr
P.F.E. 2007/2008
E.S.T.C.
ff DDeessccrriippttiioonn dduu ccoonnvveerrttiisssseeuurr aannaallooggiiqquuee--nnuumméérriiqquuee
((CCAANN))dduu PPIICC 1166FF887766
Le 16F876 est constitué d'un
module convertisseur à 5
entrées pour le boîtier 28
broches .
Les 5 premières entrées sont
sur le Port A en PA0, PA1,
PA2, PA3 et PA5.
Le résultat de la conversion
est codé sur 10 bits. C'est
une valeur comprise entre
h'000' et h'3FF'.
Les tensions de référence
haute et basse peuvent être
choisies par programmation
parmi: VDD ou la broche PA3
pour VREF+ et VSS ou la broche
PA2 pour VREF- .
Les 4 registres utilisés par le module convertisseur A/D sont :
- ADRESH en h'1E' page 0 : MSB des 10 bits du résultat.
- ADRESL en h'9E' page 1 : LSB des 10 bits du résultat.
- ADCON0 en h'1F' page 0 : registre de contrôle n°0 du convertisseur.
- ADCON1 en h'9F' page 1 : registre de contrôle n°1 du convertisseur.
Le principe de la conversion analogique-numérique est d’attribuer une
grandeur numérique correspondant à un état physique. Le CAN
convertit donc une tension dite analogique en une valeur numérique.
Le PIC 16F876 utilisé pour le calcul de la correction P.I.D. intègre un
convertisseur 10 bits. Il ne sera donc pas nécessaire d’utiliser un circuit
supplémentaire pour la conversion analogique-numérique.
Résolution d’un convertisseur analogique-numérique
La résolution d’un CAN correspond à la plus petite mesure réalisable
- 24 -
P.F.E. 2007/2008 E.S.T.C. par le CAN, autrement dit la précision du CAN. Par exemple, si
P.F.E. 2007/2008
E.S.T.C.
par le CAN, autrement dit la précision du CAN.
Par exemple, si on utilise un CAN 8 bits, ce CAN ne pourra fournir que
255 valeurs différentes. La plus petite différence de tension mesurable
à ses bornes va être fonction de la plage de mesure en tension utilisée.
Si la tension est comprise entre 0 et 5V, la mesure minimale
correspond à : 5/255 = 19,6mV. On dira que la résolution d’un CAN 8
bits pour une tension de plage de mesure de 5V est de 19,6mV.
D’une façon générale, la résolution est égale à la plage de tension de la
mesure divisée par le nombre de bits du CAN :
plage
_
de
_
mesure
Résolution =
Nombre
_
de
_
bits
_
du
_
CAN
Par conséquent, pour augmenter la résolution d’un système, on a 2
possibilités :
- soit augmenter le nombre bits du CAN utilisé
- soit diminuer la plage de mesure
On utilise dans ce projet un CAN 10 bits (celui contenu dans le PIC
16F876) pour convertir le signal d’entrée. Néanmoins un CAN 8 bits
aurait suffi car on néglige les deux bits les moins significatif lors de la
correction effectuée par le PIC.
Échantillonnage de l’information
La première étape du processus de numérisation est l’échantillonnage.
Cela consiste à passer d'un signal à temps continu (un signal électrique
en l’occurrence), en une suite discrète de valeurs (valeurs mesurées à
intervalles réguliers). Cet échantillonnage est de l’ordre de la dizaine de
microsecondes.
Une relation existe entre la fréquence maximale du signal d’entrée et la
fréquence échantillonnage. En effet, pour éviter le phénomène de
recouvrement spectral il faut respecter le théorème de Shannon : Fe >
2.Fmax
Détail de fonctionnement du CAN contenu dans le 16F876
- 25 -
P.F.E. 2007/2008 E.S.T.C. Le microcontrôleur 16F876 intègre un module de conversion analogique-numérique qui est
P.F.E. 2007/2008
E.S.T.C.
Le microcontrôleur 16F876 intègre un module de conversion
analogique-numérique qui est associé à un multiplexeur analogique
multivoie des entrées. Autrement dit on peut réaliser des mesures sur
plusieurs voies d’entrée analogiques (jusqu’à 5). Ces voies analogiques
correspondent aux broches du port A.
Module CAN 10 bits implique que le résultat de la conversion est un
nombre de 10 bits, c'est-à-dire compris entre 000H et 3FFH (11 1111
1111 en binaire ou 1023 en décimal). Ceci correspond donc à 1023
niveaux de mesure, ce qui pour 5V donne une résolution de 4,8mV,
précision largement suffisante.
Le temps de conversion de ce module est de l’ordre de : 40µs ce qui
permet en pratique de réaliser jusqu’à 25000 mesures par seconde.
Les registres ADRESH et ADRESL
Le convertisseur Analogique Numérique est 10 bits et par conséquent 1
octet (=8 bits) ne suffit pas pour contenir le résultat de la mesure.
- 26 -
P.F.E. 2007/2008 E.S.T.C. C’est pour cela que 2 registres sont nécessaires et sont donc utilisés.
P.F.E. 2007/2008
E.S.T.C.
C’est pour cela que 2 registres sont nécessaires et sont donc utilisés.
De fait 6 bits restent inutilisés sur les 16 disponibles. Il est possible de
définir la « justification » du résultat au sein de ces 2 octets à l’aide
d’un bit du registre ADCON1 : le bit ADFM. Voici la disposition des bits
de résultats dans les 2 octets en fonction de la valeur du bit ADFM :
Le registre ADCON0 :
Ce premier registre de contrôle contient plusieurs bits qui configurent
le fonctionnement du module CAN :
- Bits ADCS1, ADCS0 : bits de sélection de l’horloge utilisée pour le
module CAN.
- Bits CHS2, CHS1, CHS0 : les bits de sélection du canal analogique à
mesurer.
Avant toute conversion, il faut définir quel est le canal qui va être
utilisé pour cette conversion. Ceci se fait grâce à ces 3 bits selon le
tableau suivant :
- Bit GO/DONE : Le bit de lancement de la conversion et témoin de la
fin de conversion.
- 27 -
P.F.E. 2007/2008 E.S.T.C. Ce bit n’est actif que si le bit ADON=1, c'est-à-dire si le
P.F.E. 2007/2008
E.S.T.C.
Ce bit n’est actif que si le bit ADON=1, c'est-à-dire si le module CAN
est actif. Il sert à lancer la conversion : en mettant ce bit à 1, on lance
la conversion à partir de la voie analogique sélectionnée par les bits
CHS2, CHS1 et CHS0.
Une fois que la conversion est terminée, ce bit passe à 0
automatiquement. Il sera donc possible d’utiliser ce bit pour attendre la
fin de la conversion en cours.
- Bit ADON : Le bit “d’allumage” du module CAN.
Ce bit sert à “allumer” le module CAN. Si ADON=0, le module CAN est
inactif. Si le bit ADON=1, le module est opérationnel.
Le registre ADCON0 :
Ce second registre de contrôle contient plusieurs bits qui configurent le
fonctionnement du module CAN :
- Bit ADFM : Configuration du format du résultat.
Ce bit sert à configurer le résultat au sein des 2 registres ADRESL et
ADRESH selon le tableau qui suit :
Les cases vertes représentent le résultat sur 10 bits, X0 correspond au
bit de poids faible et X9 au bit de poids fort.
- Bits PCFG0 , CFG1, PCFG2 et PCFG3 : Bits de configuration des ports
A (en analogique ou numérique).
Les broches des ports A (à l’exception de PA4) peuvent être
configurées soit en analogique soit en numérique.
Lorsqu’une broche de ce port est configurée en analogique, elle devient
un des canaux de mesure utilisables par le CAN. Lorsqu’elle est
configurée en numérique, elle est une broche E/S comme les autres
broches des autres ports.
- 28 -
P.F.E. 2007/2008 E.S.T.C. La configuration de la nature des broches du port A est décrite
P.F.E. 2007/2008
E.S.T.C.
La configuration de la nature des broches du port A est décrite dans le
tableau suivant :
L’interruption “fin de conversion” associée au module CAN
Il existe également une source d’interruption liée au module CAN : la
fin de conversion. Comme toute interruption, celle-ci doit être activée
pour être opérationnelle ce qui se fait par les bits :
- PEIE=1 (activation des interruptions périphériques)
- ADIE=1 (activation de l’interruption fin de conversion)
Le bit de drapeau associé à cette interruption est ADIF. Il faudra le
mettre à 0 avant toute activation de l’interruption. Ce dernier est
automatiquement mis à 1 en fin de conversion si l’interruption est
activée.
Cette interruption est intéressante uniquement si l’on souhaite
optimiser la vitesse de conversion au maximum.
- 29 -
P.F.E. 2007/2008 E.S.T.C. Tableau de synthèse issu de la datasheet du 16F876 : Déroulement d’une
P.F.E. 2007/2008
E.S.T.C.
Tableau de synthèse issu de la datasheet du 16F876 :
Déroulement d’une conversion analogique-numérique
Étudions comment le module CAN 10 bits réalise une conversion
analogique numérique. Le schéma suivant résume la séquence d’une
conversion analogique-numérique par le module utilisé :
1. L’ensemble de la conversion est lancé lorsque le bit GO/Done est mis à 1 par
l’utilisateur.
2. S’en suit un temps de latence interne lié à la présence d’un condensateur
interne.
3. Puis la conversion commence avec le “calcul” des 10 bits
4. Lorsque la conversion analogique-numérique est terminée :
a. le résultat est stocké dans les registres ADRESL et ADREH
b. le bit GO/Done est mis à 0 automatiquement témoignant de la fin de la
conversion
c. le drapeau de l’interruption “fin de conversion” est mis à 1 (si cette
interruption est activée comme expliqué précédemment)
- 30 -
P.F.E. 2007/2008 E.S.T.C. DD--RRééaalliissaattiioonn dduu rréégguullaatteeuurr nnuumméérriiqquuee àà bbaassee
P.F.E. 2007/2008
E.S.T.C.
DD--RRééaalliissaattiioonn dduu rréégguullaatteeuurr nnuumméérriiqquuee àà bbaassee ddee PPIICC
Dans cette partie, on va se focaliser sur la réalisation du régulateur.
Dans les premières séances du projet de fin d’études on s’est concentré
sur une idée de réalisation, on l’a développée jusqu’à sa réalisation
dans une maquette d’essai & après de nombreuses expérimentations
on a trouvé une faille dans le circuit réalisé puisqu’il ne permettait pas
de convertir le signal analogique d’entrée puis de le mettre sur le port
C sous forme d’un signal numérique.
Cette première expérimentation fut vite abandonnée.
11 CCiirrccuuiitt ddee ccoonnvveerrssiioonn AA//NN
Premier circuit réalisé
- 31 -
P.F.E. 2007/2008 E.S.T.C. Premier circuit réalisé abandonné On a eu donc recours à une nouvelle
P.F.E. 2007/2008
E.S.T.C.
Premier circuit réalisé abandonné
On a eu donc recours à une nouvelle conception beaucoup plus efficace
dont la description sera relatée.
1- Première démarche : circuit d’adaptation du
signal d’entrée
Au début il faut penser à adapter le signal
d’entrée analogique pour le convertisseur
analogique-numérique intégré au PIC
16F876.
Pour cela on a pensé à utiliser un pont de
diodes de référence 1N4148(en vert dans
l’image) au lieu des amplificateurs
opérationnels utilisés dans notre première
conception du régulateur.
Le graphe ci-dessous montre clairement
l’adaptation de la tension :
- 32 -
P.F.E. 2007/2008 E.S.T.C. 2- Deuxième démarche : circuit du reset du microprocesseur Le circuit du
P.F.E. 2007/2008
E.S.T.C.
2- Deuxième démarche : circuit du reset du microprocesseur
Le circuit du reset du PIC est constitué d’une
résistance,d’un bouton poussoir,d’un
condensateur & d’une diode.
3- Troisième démarche : circuit de fréquence d’horloge du
microprocesseur
Le circuit de fréquence d’horloge du PIC est constitué
d’un quartz & de deux cendensateurs.
- 33 -

P.F.E. 2007/2008

4- Quatrième démarche : circuit intégral

E.S.T.C.

En réunissant le tout on obtient notre circuit de régulateur numérique :

- 34 -

P.F.E. 2007/2008 E.S.T.C. - 35 -
P.F.E. 2007/2008
E.S.T.C.
- 35 -
P.F.E. 2007/2008 E.S.T.C. 22 DDééccooddaaggee dduu ccllaavviieerr Le clavier doit permettre la saisie et la
P.F.E. 2007/2008
E.S.T.C.
22 DDééccooddaaggee dduu ccllaavviieerr
Le clavier doit permettre la saisie et la modification des paramètres du
correcteur PID : Kp, Ki, Kd et la limite d’intégration.
Ce circuit va permettre la communication du PIC avec le clavier pour
permettre à l’autre binôme de changer les valeurs du régulateur P.I.D.
Il est constitué de trois boutons-poussoirs avec une capacité de
découplage en parallèle pour limiter le phénomène de rebonds.
- 36 -
P.F.E. 2007/2008 E.S.T.C. EE--CCOONNCCEEPPTTIIOONN LLOOGGIICCIIEELLLLEE Le régulateur ainsi réalisé nécessite un
P.F.E. 2007/2008
E.S.T.C.
EE--CCOONNCCEEPPTTIIOONN LLOOGGIICCIIEELLLLEE
Le régulateur ainsi réalisé nécessite un programme qu’il va exécuter,
donc il faut écrire le programme, le compiler & le transférer vers la
mémoire du PIC 16F876.
1- Première démarche : écriture du
programme & assemblage
Comme le PIC est un composant très
utilisé dans l’électronique grand-public &
professionnelle, Arizona Microchip
donc a mis gratuitement à disposition
des utilisateurs de PIC un logiciel
MPLAB propriétaire ;constamment mis
à jour, d’écriture & d’assemblage de
programme acheminé vers le PIC
16F876.
Quelques fenêtres de ce logiciel :
On sélectionne le logiciel via son raccourci dans le menu ‘démarrer’ qui
est mplab ide.
- 37 -
P.F.E. 2007/2008 E.S.T.C. La fenêtre du logiciel MPlab se représente sous cette forme. On crée
P.F.E. 2007/2008
E.S.T.C.
La fenêtre du logiciel MPlab se représente sous cette forme.
On crée un nouveau projet via les manipulations présentes sur l’image.
- 38 -
P.F.E. 2007/2008 E.S.T.C. On nomme le nouveau projet puis on définie sa location. On ajoute
P.F.E. 2007/2008
E.S.T.C.
On nomme le nouveau projet puis on définie sa location.
On ajoute le fichier texte vierge avec une extension *.asm ou on
ajoute un fichier *.asm fait d’office avec un logiciel d’édition de
texte.
- 39 -
P.F.E. 2007/2008 E.S.T.C. Après insertion du fichier *.asm on l’assemble via la manipulation ci- dessus.
P.F.E. 2007/2008
E.S.T.C.
Après insertion du fichier *.asm on l’assemble via la manipulation ci-
dessus.
Finalement une fenêtre indique si l’opération d’assemblage c’est bien
déroulée.
2- Deuxième démarche : implantage du programme assemblé
- 40 -
P.F.E. 2007/2008 E.S.T.C. Dans le répertoire de sauvegarde du projet, le fichier *.HEX (en hexadécimale)
P.F.E. 2007/2008
E.S.T.C.
Dans le répertoire de sauvegarde du projet, le fichier *.HEX (en
hexadécimale) a été créer (image ci-dessus). Ce fichier sera
implanté dans la mémoire flash du 16f876 via un autre
software nommé ‘ICPROG’(ce n’est pas le seul qui existe
Icprog.lnk
mais c’est le plus répandu dans la communauté des PIC, le
plus sûr aussi).
On ouvre le fichier *.hex puis on l’injecte vers le 16f876.
- 41 -

P.F.E. 2007/2008

E.S.T.C.

Conversion analogique-numérique & fréquence d’échantillonnage :

Cette routine réalise l’échantillonnage sur une entrée analogique. La conversion se fait en plusieurs étapes :

- la valeur de l’échantillon précédent est mémorisée (car elle est nécessaire au calcul du PID),

- le convertisseur est activé par la mise à ‘1’ de « ADON »,

- attente de la fin de l’acquisition (le convertisseur intégré au PIC a un temps d’acquisition Tacq = 19,7µs),

- la conversion analogique numérique débute lors de la mise à ‘1’ de « GO »,

- attente de la fin de la conversion (le convertisseur intégré au PIC a un temps de conversion Tad = 3,2µs),

- lecture de la valeur de l’échantillon. Chaque échantillon est stocké sur 10 bits dans la paire de registres « ADRESH » et « ADRESL ». La justification étant faite à gauche, et pour des raisons de commodité, on n’exploite que les 8 bits de poids fort que l’on trouve dans le registre « ADRESH ». Le registre « ADCON1 » permet de choisir le nombre d’entrées analogiques ainsi que le type de justification. Nous avons besoin d’une seule entrée de ce type d’où la valeur des bits de configuration du port : PCFGx = ‘1110’. Le convertisseur intégré

dans le PIC effectue une conversion sur 10 bits. Le résultat est stocké sur 2 octets :

« ADRESH » (octet de poids fort) et « ADRESL » (octet de poids faible). Le

processeur ayant une architecture RISC 8 bits, il serait inutile, et assez complexe, de conserver et d’exploiter ce résultat sur 10 bits. Nous faisons donc abstraction des

deux bits les moins significatifs. Il suffit de choisir une justification à gauche (ADFM = 0), ainsi les 8 bits de poids forts de la conversion sont stockés dans le registre

« ADRESH ». Il ne reste plus qu’à le lire.

Le registre « ADCON0 » permet de définir la fréquence d’échantillonnage du PIC, et de choisir la pin sur laquelle sera effectuée la conversion. L’oscillateur utilisé étant

fixé à 4MHHz, la fréquence d’échantillonnage maximum que l’on puisse choisir est de 500KHz (ADCSx = ‘01’). Pour terminer la configuration du module de conversion analogique–numérique, il reste à définir le canal d’entrée. Nous choisissons la pin RAO du PORTA qui correspond au canal « A/D 0 » (CHSx =

‘000’).

Une relation existe entre la fréquence maximale du signal d’entrée et la fréquence échantillonnage. En effet, pour éviter le phénomène de recouvrement spectral il faut respecter le théorème de Shannon : Fe > 2.Fmax.

- 42 -

P.F.E. 2007/2008 E.S.T.C. ;************************************************************** ; Ecole Supérieure de
P.F.E. 2007/2008
E.S.T.C.
;**************************************************************
; Ecole Supérieure de Technologie de Casablanca 2007/2008
; Projet de fin d'études : Conversion analogique/numérique
; Fait par /Hecho por : KHALFI YOUSSEF
; Encadrant: Monsieur El Aoufoussi habib
;**************************************************************
list p=16f876
#include <P16f876.INC>
ERRORLEVEL
-302
;SUPPRESS BANK SELECTION MESSAGES
;**********************************************************
; Variable utilisée
wait
EQU
0x20
;Commencement initialisation
init
; Préparation du PortB
bsf
STATUS, RP0
movlw
B'00000000'
; Bank 1 forcer le bit d'un emplacement mémoire à 1
; PortB en sortie uniquement
movwf
TRISB
bcf
STATUS, RP0
; forcer le bit d'un emplacement mémoire à 0
clrf
PORTB
; ADC ON
BSF
ADCON0, 0
; ADON=1
; ADC-ACCES AN0 Selection
BCF
ADCON0, 5
; ADCHS2=0
BCF
ADCON0, 4
; ADCHS1=0
BCF
ADCON0, 3
; ADCHS0=0
BSF
ADCON0, 7
; ADCS1=1
BCF
ADCON0, 6
; ADCS0=0
BSF
STATUS,RP0
; Bank1
BCF
ADCON1, 7
; ADFM=0
BCF
STATUS,RP0
; Bank0
;**********************************************************
; Programme principal
Main
BSF
ADCON0, 2
; ADC On
loop
BTFSC
ADCON0, 2
GOTO
loop
Stockage des 8 bits du résultat dans le registre ADRESH sur 8 bits
movfw ADRESH
end
*;**********************************************************
Le programme écrit sur MPlab pour la Conversion
analogique/numérique.
- 43 -
P.F.E. 2007/2008 E.S.T.C. ; Ecole Supérieure de Technologie de Casablanca 2007/2008 ; Projet de fin
P.F.E. 2007/2008
E.S.T.C.
; Ecole Supérieure de Technologie de Casablanca 2007/2008
; Projet de fin d'études : Décodage d'un clavier
; Fait par /Hecho por : KHALFI YOUSSEF
; Encadrant: Monsieur El Aoufoussi habib
; On réalise un décodage de clavier sur les broches RB0 à RB5
; Le port A est programmé en sortie les broches RA0 à RA3 renvoient le code binaire
; de la touche appuyée.
; Les touches sont mémorisées en E²PROM ainsi on peut configurer n' importe quel clavier.
;------------ Directive d' assemblage pour MPLAB
---------------
list p=16f876
#include <P16f876.INC>
ERRORLEVEL
-302
;SUPPRESS BANK SELECTION MESSAGES
;------------
Définition des registres temporaires
---------------
retard1
EQU
0x0C
retard2
EQU
0x0F
colonne
EQU
0x14
tampon
EQU
0x10
rang
EQU
0x11
key
EQU
0x12
; le registre temporaire retard1 se trouve à l' adresse 0C
; le registre temporaire retard2 se trouve à l' adresse 0F
; le registre colonne est à l'adresse 14
; le registre tampon est à l'adresse 10
; le registre rang est à l'adresse 11
; le registre key est à l'adresse 12
;------------
Mise en E²PROM du clavier utilisé ---------------
org H'2100'
; Données EEPROM les 16 touches sont mémorisées
; selon le type de clavier
DE
0x01,0x02,0x03,0x0A
DE
0x04,0x05,0x06,0x0B
DE
0x07,0x08,0x09,0x0C
DE
0x0E,0x00,0x0F,0x0D
; 1 ere rangée ( 1,2,3,A )
; 2 eme rangée ( 4,5,6,B )
; 3 eme rangée ( 7,8,9,C )
; 4 eme rangée ( E,0,F,D )
;------------ Init des ports A et B
---------------
ORG 0
bsf STATUS,5
; on met à 1 le 5eme bit du registre status pour accéder
; à la 2eme page mémoire ( pour trisa et trisb )
MOVLW B'11000011'
MOVWF TRISB
; on met C3 dans le registre W
; on met C3 dans le port B il est programmé partiellement en E/S
MOVLW 0x00
MOVWF TRISA
; on met 00 dans le registre W
; on met 00 dans le port A il est programmé en sortie
bcf STATUS,5
; on remet à 0 le 5eme bit du registre status pour accéder
; à la 1eme page mémoire
;------------
Init ---------------
MOVLW 0x00
MOVWF PORTA
; on met 00 dans le registre W
; on met 00 sur le port A ( leds eteintes )
init
MOVLW 0x00
MOVWF tampon
MOVWF PORTB
; on met 00 dans le registre W
; on met 00 dans le registre tampon
; on met W sur le port B
- 44 -

P.F.E. 2007/2008

E.S.T.C.

MOVLW

04

; on met 4 dans le registre W

MOVWF

rang

; on met W rang ( 1 ere rangée scrutée )

;--------------------

Programme principal

----------------------

debut

movf rang,w

; on met rang dans W

MOVWF PORTB

; on met W sur le port B ( N° rang= N° ligne alimentée )

MOVLW 0x00

; on met 00 dans le registre W

MOVWF colonne

; on met 00 dans la variable colonne

BTFSC PORTB,6

; on teste le bit RB6 si = 0 on saute la prochaine instruction

call sauve

; appel du sous programme si la touche est appuyée

MOVLW 0x01

; on met 01 dans le registre W

MOVWF colonne

; on met 01 dans la variable colonne

BTFSC PORTB,7

; on teste le bit RB7 si = 0 on saute la prochaine instruction

call sauve

MOVLW 0x02

; on met 02 dans le registre W

MOVWF colonne

; on met 02 dans la variable colonne

BTFSC PORTB,1

; on teste le bit RB1 si = 0 on saute la prochaine instruction

call sauve

MOVLW 0x03

; on met 03 dans le registre W

MOVWF colonne

; on met 03 dans la variable colonne

BTFSC PORTB,0

; on teste le bit RB0 si = 0 on saute la prochaine instruction

call sauve

movf rang,W

; on met rang dans W

SUBLW 0x20

; W - 32 -> W

BTFSC STATUS,2

; on teste le bit Z si Z=0 on saute la prochaine instruction

GOTO init

movf rang,W ADDWF rang, F

; on met rang dans W ; on additionne rang + rang

MOVLW 0x04 ADDWF tampon, F

; on met 4 dans le registre W ; on additionne tampon + 4

GOTO debut

;------------

Détermination de la touche appuyée

---------------

sauve

movf PORTB,W

; on met le port B (clavier) dans W

MOVWF key

; on sauve W dans key

MOVF tampon, W addwf colonne,W

; on met tampon dans W ; tampon + colonne --> W

MOVWF EEADR

; on met W sur EEADR ( adresse E²PROM )

; on met 01 dans le registre W

bsf STATUS,5

; on met à 1 le 5eme bit du registre status pour accéder

MOVLW 0x01

; à la 2eme page mémoire ( EECON1 )

MOVWF EECON1

; on met 01 dans le registre EECON1

bcf STATUS,5

; on remet à 0 le 5eme bit du registre status

MOVF EEDATA, W MOVWF PORTA

CALL tempo

; on met la donnée E²PROM dans W ; on met W sur le port A

; appel du sous programme de temporisation

- 45 -

P.F.E. 2007/2008 E.S.T.C. ;---------------- test de l'appui maintenu --------------------- appui BTFSC PORTB,6 ;
P.F.E. 2007/2008
E.S.T.C.
;---------------- test de l'appui maintenu ---------------------
appui
BTFSC PORTB,6
; on teste le bit RB6 si = 1 on va à appui
GOTO appui
BTFSC PORTB,7
; on teste le bit RB7 si = 1 on va à appui
GOTO appui
BTFSC PORTB,1
; on teste le bit RB1 si = 1 on va à appui
GOTO appui
BTFSC PORTB,0
; on teste le bit RB0 si = 1 on va à appui
GOTO appui
return
;------------
Programme de temporisation
---------------
tempo
MOVLW 0xff
MOVWF retard1
MOVWF retard2
; on met ff dans le registre W
; on met W dans le registre retard1
; on met W dans le registre retard2
attente
DECFSZ retard1,F
GOTO attente
; on décrémente retard1 et on saute la prochaine instruction si
; le registre retard1 = 0 sinon retour à tempo
movlw 0xFF
; on recharge retard1
movwf retard1
DECFSZ retard2,F
GOTO attente
; on décrémente retard2 et on saute la prochaine instruction si
; le registre retard2 = 0 sinon retour à tempo
RETURN
; retour au programme principal après l 'instruction CALL
END
3- Troisième démarche : essais sur un logiciel de simulation
Avant de faire la réalisation,il faut vérifier le bon fonctionnement du
circuit & de la validité du programme.
Pour cela, on va utiliser un logiciel de simulation pour satisfaire ces
conditions.
Proteus ;logiciel de simulation & de réalisation se présente à nous de
part sa simplicité ,efficacité & sa performance.
- 46 -
P.F.E. 2007/2008 E.S.T.C. Les fenêtres de ce logiciel : Isis professional 7 - 47 -
P.F.E. 2007/2008
E.S.T.C.
Les fenêtres de ce logiciel :
Isis professional 7
- 47 -
P.F.E. 2007/2008 E.S.T.C. ares professional 7 - 48 -
P.F.E. 2007/2008
E.S.T.C.
ares professional 7
- 48 -
P.F.E. 2007/2008 E.S.T.C. FF--EEssssaaiiss Comme dit dans le cahier de charge, notre tâche consiste à
P.F.E. 2007/2008
E.S.T.C.
FF--EEssssaaiiss
Comme dit dans le cahier de charge, notre tâche consiste à réaliser
deux circuits permettant d’une part la conversion analogique
numérique & d’autre le décodage d’un clavier.
1-Circuit de conversion A/N
Comme L’essai se fera sur le logiciel Isis Professional 7, le circuit
devra adapter le signal analogique à l’entrée pour le véhiculer vers le
convertisseur A/N du 16f876 , ce dernier va le numériser & le mettre
sur le port C du PIC ; pour une exploitation par l’autre binôme.
Le schéma réalisé est le suivant.
- 49 -
P.F.E. 2007/2008 E.S.T.C. - 50 -
P.F.E. 2007/2008
E.S.T.C.
- 50 -
P.F.E. 2007/2008 E.S.T.C. - 51 -
P.F.E. 2007/2008
E.S.T.C.
- 51 -
P.F.E. 2007/2008 E.S.T.C. L’essai est concluant le signal est numérisé puis mis sur le port
P.F.E. 2007/2008
E.S.T.C.
L’essai est concluant le signal est numérisé puis mis sur le port B
comme montré sur les images ci-dessus.
Le signal A en jaune représente le signal d’entrée qui va être numérisé.
Le signal B en bleu représente le signal adapté pour la conversion A/N.
Le signal C en rouge représente le signal numérisé & mis dans le port
B.
Le signal D en vert représente le signal numérisé & mis dans le port B.
Différents schémas du circuit ainsi imprimé
- 52 -
P.F.E. 2007/2008 E.S.T.C. - 53 -
P.F.E. 2007/2008
E.S.T.C.
- 53 -
P.F.E. 2007/2008 E.S.T.C. 2-Circuit final réalisé avec les deux binômes : - 54 -
P.F.E. 2007/2008
E.S.T.C.
2-Circuit final réalisé avec les deux binômes :
- 54 -
P.F.E. 2007/2008 E.S.T.C. - 55 -
P.F.E. 2007/2008
E.S.T.C.
- 55 -
P.F.E. 2007/2008 E.S.T.C. - 56 -
P.F.E. 2007/2008
E.S.T.C.
- 56 -
P.F.E. 2007/2008 E.S.T.C. Le signal A en jaune représente le signal d’entrée qui va être
P.F.E. 2007/2008
E.S.T.C.
Le signal A en jaune représente le signal d’entrée qui va être numérisé.
Le signal B en bleu représente le signal adapté pour la conversion A/N.
Le signal C en rouge représente le signal final de tout le circuit après
conversion A/N & reconversion N/A puis adaptation(fait par l’autre
binôme) .
L’essai est concluant ; le circuit met en pratique ce qui a été demandé
dans le cahier de charges à savoir la conversion & le décodage de
clavier via un PIC.
Schéma du circuit final des deux binômes ainsi imprimé :
- 57 -
P.F.E. 2007/2008 E.S.T.C. 3120-Circuit d’alimentation Pour alimenter les différents composants de notre circuit
P.F.E. 2007/2008
E.S.T.C.
3120-Circuit d’alimentation
Pour alimenter les différents composants de notre circuit final ;à savoir
en +15v,-15v ,+5v , on a besoin de réaliser la carte d’alimentation ci-
dessous :
- 58 -
P.F.E. 2007/2008 E.S.T.C. Schéma du circuit d’alimentation des deux binômes ainsi imprimé : - 59
P.F.E. 2007/2008
E.S.T.C.
Schéma du circuit d’alimentation des deux binômes ainsi
imprimé :
- 59 -
P.F.E. 2007/2008 E.S.T.C. GG--CCoonncclluussiioonn La réalisation du projet de fin d’études était une occasion
P.F.E. 2007/2008
E.S.T.C.
GG--CCoonncclluussiioonn
La réalisation du projet de fin d’études était une occasion tant espérée
de se familiariser avec le régulateur PID à base de PIC, d’acquérir les
notions d’avoir un projet à réaliser : l’environnement de travail, les
démarches à suivre dans un temps compté.
Ainsi ; dans l’acquisition de ces notions fondamentales, nous serons
plus aptes dans le marché de travail.
- 60 -

P.F.E. 2007/2008

E.S.T.C.

HH--BBiibblliiooggrraapphhiiee && AAnnnneexxee

Nombreux sont les sites Internet & les ouvrages qui se focalisent notamment sur l’univers du PIC ,ceux qui nous sont les plus captifs sont :

- http://www.sprut.de (riche en informations & réalisations mais en allemand)

- http://www.bh-automation.fr/Ressources/Automaticiens/#Sakli-MOUADH

- datasheet du16F876.

- programmation 16f876 par Bigonoff(il exagère tellement).

- www.abcelectronique.com

- kudelsko.free.fr

- fribotte.free.fr/bdtech/PidSurPic/PidSurPic1.html

- perso.wanadoo.fr/yves.heilig/ElecRob/page1.htm

- moteurs de recherches : Altavista ,google.

- memotech électronique.

- Projets de fin d’études des années précédentes.

- 61 -

P.F.E. 2007/2008 E.S.T.C. - 62 -
P.F.E. 2007/2008
E.S.T.C.
- 62 -
P.F.E. 2007/2008 E.S.T.C. - 63 -
P.F.E. 2007/2008
E.S.T.C.
- 63 -
P.F.E. 2007/2008 E.S.T.C. - 64 -
P.F.E. 2007/2008
E.S.T.C.
- 64 -
P.F.E. 2007/2008 E.S.T.C. - 65 -
P.F.E. 2007/2008
E.S.T.C.
- 65 -
P.F.E. 2007/2008 E.S.T.C. - 66 -
P.F.E. 2007/2008
E.S.T.C.
- 66 -
P.F.E. 2007/2008 E.S.T.C. - 67 -
P.F.E. 2007/2008
E.S.T.C.
- 67 -
P.F.E. 2007/2008 E.S.T.C. - 68 -
P.F.E. 2007/2008
E.S.T.C.
- 68 -

Nom du document :

RAPPORT PFE REFAIT

Répertoire :

C:\youssef

Modèle :

C:\Documents and Settings\a.EVO\Application

Data\Microsoft\Modèles\Normal.dot

Titre :

projet de fin d'études

Sujet :

PIC

Auteur :

Khalfi youssef

Mots clés :

pic

Commentaires :

te odio Kawtar!

Date de création :

30/05/2008 22:10:00

N° de révision :

57

Dernier enregistr. le : 07/06/2008 14:03:00 Dernier enregistrement par : a

Temps total d'édition :162 Minutes

Dernière impression sur :

Tel qu'à la dernière impression

07/06/2008 14:20:00

Nombre de pages :

Nombre de mots : 8 439 (approx.)

Nombre de caractères :

68

46 419 (approx.)