Etude-Realisation-d’une-carte-d’acquisition-de-donnees-a-base-de-microcontroleur-PIC-16F876

Share Embed Donate


Short Description

Download Etude-Realisation-d’une-carte-d’acquisition-de-donnees-a-base-de-microcontroleur-PIC-16F876...

Description

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

Etude & Réalisation d’une carte d’acquisition de données à base de microcontrôleur PIC 16F876 « Refait »

Encadré par : Mer AOUFOUSSI HABIB Réalisé par : KHALFI YOUSSEF

Année universitaire : 2007/2008

P.F.E. 2007/2008

E.S.T.C.

SOMMAIRE A-INTRODUCTION GENERALE…………………………………………………………..4 1- Objectif de la régulation & intérêt du régulateur numérique…….………………………...4 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

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……………………………………………………………...15 a- Schéma interne du PIC 16F876 ………………………………………………………….15 b- Composition interne du PIC 16F876……………………………………………………..15 c- Caractéristiques communes des PIC……………………………………………………...16 d- Description des broches du PIC 16F876…………………………………………………17 e-Organisation de la RAM…………………………………………………………………..20 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………………………………………………………....24 -É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 ……………………………………………………....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…………………………………………………………………..........34

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

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 1-Circuit de conversion A/N……………………………………………………………....49 2-Circuit final réalisé avec les deux binômes …………………………………………….54 3-Circuit d’alimentation………………………………………………………………..…58 G- Conclusion……………………………………………………………………………..60

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

-3-

P.F.E. 2007/2008

E.S.T.C.

A-INTRODUCTION GENERALE 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 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 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 KP 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 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.

B-CAHIER DE CHARGE 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.

C-CONCEPTION MATÉRIELLE

1.

Définition du PIC

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 celleci. 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 de 1MIPS (1 Million d’Instructions Par Seconde).

2.

Distinction des PIC

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.

3.

Familles des PIC

La famille BaseBase-Line, Line qui utilise des mots d’instructions de 12 bits, la famille MidMid-Range, qui utilise des mots de 14 bits (et dont fait partie notre PIC 16F876), et la famille HighHigh-End, End qui utilise des mots de 16 bits. Par la suite, d’autres familles sont apparues ; plus sophistiquées, comme la Enhanced family .

4.

Les trente cinq instructions du PIC 16F876

La programmation du PIC 16F876 par le logiciel MPlab de

Arizona Microchip Electronics se résume en trente cinq instructions :

INSTRUCTIONS D’OPERATIONS SUR LES REGISTRES(ci-dessous)

- 10 -

P.F.E. 2007/2008

E.S.T.C.

Instructions

Descriptions

Indicateurs affectés

ADDLW k

Additionner le contenu du registre W et la valeur immédiate "k" La somme est stockée dans W

C est mis à 1 s'il y a une retenue DC est mis à 1si la somme des quatre bits de poids faible est > 15 Z est mis à 1 si le résultat est nul

ADDWF f,d

Additionner le contenu des registres W et f. La somme est stockée suivant "d" si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f

C est mis à 1 s'il y a une retenue DC est mis à 1si la somme des quatre bits de poids faible est > 15 Z est mis à 1 si le résultat est nul

SUBLW k

Soustraire la valeur immédiate "k" au contenu du registre W. La somme est stockée dans W

C est mis à 1 s'il y a une retenue DC est mis à 1si la somme des 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 du contenu du registre W. La somme est stockée suivant "d" si d= 0 le résultat va dans le registre W si d= 1 le résultat va dans le registre f

C est mis à 1 s'il y a une retenue DC est mis à 1si la somme des quatre bits de poids faible est > 15 Z est mis à 1 si le résultat est nul

ANDLW k

"ET" bit à bit entre le contenu du registre W et la valeur immédiate "k" Le résultat est stockée dans W

Z est mis à 1 si le résultat est nul

Z est mis à 1 si le résultat est nul

ANDWF f,d "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" Le résultat est stockée dans W

Z est mis à 1 si le résultat est nul

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 registre W si d= 1 le résultat va dans le registre f

Z est mis à 1 si le résultat est nul

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 à 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

Z est mis à 1 si le résultat est nul

COMF f,d

Complémente le contenu du 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

Z est mis à 1 si le résultat est nul

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 registre W si d= 1 le résultat va dans le registre f

Z est mis à 1 si le résultat est nul

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 registre W si d= 1 le résultat va dans le registre f

Z est mis à 1 si le résultat est nul

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.

INSTRUCTIONS DE CHARGEMENT DE REGISTRE

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 registre W si d= 1 le résultat va dans le registre f

Z est mis à 1 si le contenu du registre R est nul

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

INSTRUCTIONS SPECIALES

Instruction

Description

NOP

Aucune opération. Cette instruction est utilisé pour passer un cycle machine

SLEEP

Mise en veille du microcontrôleur (Power Down mode)

Indicateurs affectés

TO est mis à 1 et PD est mis à 0

- 13 -

P.F.E. 2007/2008

E.S.T.C.

INSTRUCTIONS DE BRANCHEMENT Instruction

Description

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

RETFIE

Indicateurs affectés

- 14 -

P.F.E. 2007/2008

5.

E.S.T.C.

Organisation du PIC 16F876 a. Schéma interne du PIC 16F876

b. Composition interne du PIC 16F876

- 15 -

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.

c. Caractéristiques communes des PIC - 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 : • 2.Fmax.

- 42 -

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 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' movwf TRISB bcf STATUS, RP0 clrf PORTB ; ADC ON BSF

ADCON0, 0

; ADC-ACCES AN0 Selection BCF ADCON0, 5 BCF ADCON0, 4 BCF ADCON0, 3

; Bank 1 forcer le bit d'un emplacement mémoire à 1 ; PortB en sortie uniquement ; forcer le bit d'un emplacement mémoire à 0

; ADON=1

; ADCHS2=0 ; ADCHS1=0 ; ADCHS0=0

BSF BCF

ADCON0, 7 ADCON0, 6

; ADCS1=1 ; ADCS0=0

BSF BCF BCF

STATUS,RP0 ADCON1, 7 STATUS,RP0

; Bank1 ; ADFM=0 ; 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 movfw ADRESH

8 bits

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 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 ERRORLEVEL

-302

;SUPPRESS BANK SELECTION MESSAGES

;------------ Définition des registres temporaires --------------retard1 retard2 colonne tampon rang key

EQU EQU EQU EQU EQU EQU

0x0C ; le registre temporaire retard1 se trouve à l' adresse 0C 0x0F ; le registre temporaire retard2 se trouve à l' adresse 0F 0x14 ; le registre colonne est à l'adresse 14 0x10 ; le registre tampon est à l'adresse 10 0x11 ; le registre rang est à l'adresse 11 0x12 ; 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 DE DE DE

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

0x01,0x02,0x03,0x0A 0x04,0x05,0x06,0x0B 0x07,0x08,0x09,0x0C 0x0E,0x00,0x0F,0x0D

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

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

init

- 44 -

P.F.E. 2007/2008 MOVLW 04 MOVWF rang

E.S.T.C. ; on met 4 dans le registre W ; on met W rang ( 1 ere rangée scrutée )

;-------------------- Programme principal ---------------------debut movf rang,w MOVWF PORTB

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

MOVLW 0x00 MOVWF colonne BTFSC PORTB,6 call sauve

; on met 00 dans le registre W ; on met 00 dans la variable colonne ; on teste le bit RB6 si = 0 on saute la prochaine instruction ; appel du sous programme si la touche est appuyée

MOVLW 0x01 MOVWF colonne BTFSC PORTB,7 call sauve

; on met 01 dans le registre W ; on met 01 dans la variable colonne ; on teste le bit RB7 si = 0 on saute la prochaine instruction

MOVLW 0x02 MOVWF colonne BTFSC PORTB,1 call sauve

; on met 02 dans le registre W ; on met 02 dans la variable colonne ; on teste le bit RB1 si = 0 on saute la prochaine instruction

MOVLW 0x03 MOVWF colonne BTFSC PORTB,0 call sauve

; on met 03 dans le registre W ; on met 03 dans la variable colonne ; on teste le bit RB0 si = 0 on saute la prochaine instruction

movf rang,W SUBLW 0x20 BTFSC STATUS,2 GOTO init

; on met rang dans W ; W - 32 -> W ; on teste le bit Z si Z=0 on saute la prochaine instruction

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 MOVWF key

; on met le port B (clavier) dans W ; on sauve W dans key

MOVF tampon, W addwf colonne,W

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

MOVWF EEADR bsf STATUS,5

MOVLW 0x01 MOVWF EECON1 bcf STATUS,5

MOVF EEDATA, W MOVWF PORTA CALL tempo

; on met W sur EEADR ( adresse E²PROM ) ; on met à 1 le 5eme bit du registre status pour accéder ; à la 2eme page mémoire ( EECON1 ) ; on met 01 dans le registre W ; on met 01 dans le registre EECON1 ; on remet à 0 le 5eme bit du registre status

; 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 GOTO appui BTFSC PORTB,7 GOTO appui BTFSC PORTB,1 GOTO appui BTFSC PORTB,0 GOTO appui

; on teste le bit RB6 si = 1 on va à appui ; on teste le bit RB7 si = 1 on va à appui ; on teste le bit RB1 si = 1 on va à appui ; on teste le bit RB0 si = 1 on va à 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 movlw 0xFF movwf retard1

; on décrémente retard1 et on saute la prochaine instruction si ; le registre retard1 = 0 sinon retour à tempo ; on recharge 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.

ares professional 7

- 48 -

P.F.E. 2007/2008

E.S.T.C.

F-Essais 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.

- 51 -

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.

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.

- 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 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 final ;à savoir en +15v,-15v ,+5v , on a besoin de réaliser la carte d’alimentation cidessous :

- 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.

G-Conclusion 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.

H-Bibliographie & Annexe 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.

- 63 -

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.

- 66 -

P.F.E. 2007/2008

E.S.T.C.

- 67 -

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 : 07/06/2008 14:20:00 Tel qu'à la dernière impression Nombre de pages : 68 Nombre de mots : 8 439 (approx.) Nombre de caractères : 46 419 (approx.)

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF