You are on page 1of 38

AOUINA NOURALLAH Technologue à ISET de BIZERTE

Institut Supérieur des Etudes Technologiques de Bizerte


Département GE (A.U : 2014– 2015)

ATELIER D’ELECTRONIQUE NUMERIQUE

TRAVAUX PRATIQUES

TPN°1 Développement des applications à base de


microcontrôleur (Gestion des entrées /sorties)

Date : ----------------------------- Classe : -------------------- Durée : 3h

Nom & Prénom : AB/PR BB/AS Mot/Part TP N° Total

1 -------------------------- /4 /6 /10 /20

2 ---------------------------- /4 /6 /10 /20

3 ----------------------------- /4 /6 /10 /20

4 ---------------------------- /4 /6 /10 /20

Objectifs du TP :
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------

Conditions de réalisation et moyens :


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

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

TP ELECTRONIQUE NUMERIQUE 1
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Objectifs :
Se familiariser avec l’environnement de développement du MikroC
Effectuer la gestion des entrées sorties par un PIC 16F628A.
Programmer un microcontrôleur PIC 16F628A.
Simuler et tester le programme sur le matériel.

I- Introduction :
Un microcontrôleur est un circuit intégré qui rassemble les éléments essentiels d'un ordinateur :
processeur, mémoires (mémoire morte pour le programme, mémoire vive pour les données), unités
périphériques et interfaces d'entrées-sorties. Les microcontrôleurs se caractérisent par un plus haut
degré d'intégration, une plus faible consommation électrique (quelques milliwatts en
fonctionnement, quelques nano watts en veille), une vitesse de fonctionnement plus faible (quelques
mégahertz) et un coût réduit par rapport aux microprocesseurs polyvalents utilisés dans les
ordinateurs personnels.

Par rapport à des systèmes électroniques à base de microprocesseurs et autres composants séparés
(comme par exemple les ordinateurs ou les automates), les microcontrôleurs permettent de diminuer
la taille, la consommation électrique et le coût des produits. Ils ont ainsi permis de démocratiser
l'utilisation de l'informatique dans un grand nombre de produits et de procédés.

Les microcontrôleurs sont fréquemment utilisés dans les systèmes embarqués, comme les
contrôleurs des moteurs automobiles, les télécommandes, les appareils de bureau, l'électroménager,
les jouets, la téléphonie mobile, etc.

Le microcontrôleur à utiliser est le pic 16f628A« Peripheral


Interface Controller » est un microcontrôleur à 18 broches
fabriqué par la Société américaine MICROCHIP Technology
Inc. - Arizona – USA

Il contient, 2 ko de mémoire flash, 224 de mémoire de


donnée, 128 de mémoire EEPROM de donnée 16
entrée/sortie.

Les outils de développement des applications à base de PIC sont :

MIKROC pour la création des programmes


ISIS de proteus pour la simulation
ICPROG ou PICKIT2 pour la programmation

TP ELECTRONIQUE NUMERIQUE 2
AOUINA NOURALLAH Technologue à ISET de BIZERTE

II- Développement des applications à base de PIC

Activité 1 : Diode clignotante


Etape 1 : Cahier des charges
On désire commander une diode électroluminescente « LED » selon le chronogramme suivant :

Choix de microcontrôleur : PIC 16F628A


Choix du pin pour la commande de la diode « LED» : PIN 6 (RB0)

Etape 2 : Programmation sur mikroC

Lancer le logiciel mikroC et créer un nouveau projet (Project --> New Projet)

TP ELECTRONIQUE NUMERIQUE 3
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Le nouveau projet est nommé (Project Name) Diode_LED dans le répertoire (Project folder)
C:\Atelier_Labo_I06\Diode_LED\,on choisi le pic16F628A (Device Name) et un quartz de 4Mhz
(DeviceClock).

TP ELECTRONIQUE NUMERIQUE 4
AOUINA NOURALLAH Technologue à ISET de BIZERTE

TP ELECTRONIQUE NUMERIQUE 5
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Saisir le programme suivant.


void main() {
TRISB= 0b11111110 ; // b7 b6 b5 b4b3 b2 b1 b0
// 1 1 1 1 1 1 1 0
// Entrées Sortie
while (1) // boucle infini
{
PORTB = 0b1111111 ; // la diode LED est allumée
delay_ms(1000) ; // temporisation d'une seconde
PORTB = 0b11111110 ; //la diode LED est éteinte
delay_ms(1000) ; // temporisation d'une seconde
} //Fin de boucle infini
} //Fin de programme
Remarque :
Pour programmer un seul pin du PORTB, on peut utiliser la syntaxe suivant : RB0_bit ou
PORTB.F0
Compiler le programme

Pour compiler votre programme, allez vers l’onglet Build Build ou utiliser l’icône , ou bien
Ctrl+F9.

Après compilation s'il n’y a pas


d’erreurs, le fichier
Diode_LED.hex est créé

TP ELECTRONIQUE NUMERIQUE 6
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Etape3 : Simulation en utilisant le logiciel ISIS

Réaliser le circuit ci-contre à l’aide du logiciel ISIS.

Sur ISIS, en mode composant, cliquer sur P,


une boite de dialogue apparaît permettant le
choix du composant dans la bibliothèque
disponible

Choix du composant dans la bibliothèque disponible

Dans Keywords saisissez pic16F628A


double cliqué sur le composant
choisi pour le mettre dans la liste des
composants procéder de la même
façon pour choisir le quartz
(CRYSTAL) ,la résistance (RES) , la
capacité (CAP) , potentiomètre
(POT_LIN), LED , Afficheur 7
segment (7seg) ...

TP ELECTRONIQUE NUMERIQUE 7
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Choix des bornes

Cliquer sur l’icône terminal, la liste des terminaux disponible apparaît

INPUT borne pour signal entrant


OUTPUT borne pour signal sortant
BIDIR signal bidirectionnel
POWER borne d’aimantation
GROUND la masse
BUS bus de plusieurs signaux

Placement des différents composants

Placer les différents composants


ainsi que les bornes d'alimentations.
Relier les pour former le circuit de
base.
Remarque : on n’a pas besoin
d’alimenter le pic. Isis le fait
automatiquement.
Éditer le label de vcc en double
cliquant sur la borne d'alimentation
power (on change les valeurs d'un
composant en éditant ses propriétés
par un double clic gauche)

Cliquer sur PIC16F628A (bouton droit puis gauche et ajouter le fichier diode_LED.hex
dans program file et fixer l’horloge à 4Mhz)

TP ELECTRONIQUE NUMERIQUE 8
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Lancer la simulation du circuit (cliquer sur play du panneau de contrôle de l'animation en bas à

gauche)

Etape 4 : Transfert du fichier exécutable

Transférer le fichier exécutable diode_LED.hex vers la mémoire programme du


microcontrôleur PIC16F628A

TP ELECTRONIQUE NUMERIQUE 9
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Placer le PIC16F628A dans la carte de programmation (programmateur)

Relier le programmateur au PC par le câble de liaison série.

Utiliser le logiciel Ic-Prog pour transférer votre ficher diode_LED.hex vers le PIC
Lancer le logiciel IC-Prog et choisir PIC16F628A

TP ELECTRONIQUE NUMERIQUE 10
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Ouvrir votre fichier dont le nom est Diode_LED.hex

TP ELECTRONIQUE NUMERIQUE 11
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Pour programmer le PIC16F628A cliquer sur program all

Implanter le schéma électronique sur la plaque d’essai et tester son fonctionnement

Structure interne d’une plaque d’essai

TP ELECTRONIQUE NUMERIQUE 12
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Exemple de câblage sur plaque d’essai

Pour en savoir plus !


La compilation d’un code permet de détecter seulement les erreurs de syntaxe, par contre, une
syntaxe correcte ne signifie pas un programme correct.
En cas où le code est bien écrit, mais l’application n’est pas conforme au cahier des charges, ISIS
nous offre la possibilité d’exécuter le programme en mode pas à pas (Debug mode) pour
déterminer les erreurs de programmation.
Pour utiliser ce mode, on doit générer d’abord un fichier semblable au fichier *.hex mais qui
contient plus d’information pour utiliser le mode de débogage, c’est le fichier .COFF
Pour générer ce fichier, dans MikroC, aller dans l’onglet Tools Options Output settings
puis cocher l’option « Generate COFF file »

TP ELECTRONIQUE NUMERIQUE 13
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Dans ISIS, charger ce fichier dans le PIC au lieu du ficher .hex puis lancer le mode Debug.

On peut voir dans ce mode l’exécution


du code ligne par ligne, le contenu des
registres, le contenu de la mémoire
RAM, etc.

En suivant l’exécution du programme et


cohérence du résultat, on peut
déterminer les erreurs de
programmation non détectées par le
compilateur.

TP ELECTRONIQUE NUMERIQUE 14
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Activité 2 : Feu de croisement

Figure N°1 : Schéma électronique de feu de croisement

1. Cahier des charges


On désire automatiser la gestion d’un feu de croisement Figure N°1 , réglant la circulation d’un
carrefour à deux voies. Le cahier des charges stipule la possibilité de modifier les temporisations
par l’opérateur en fonction de la densité de la circulation. L’étude se limitera à un seul feu. Le
fonctionnement normal est décrit par le chronogramme suivant :

Etapes V O R Durée de l’étape 1 : 10s


1 0 0 1 Durée de l’étape 2 : 2s

2 0 1 0 Durée de l’étape 3 : 10s

3 1 0 0 Durée de l’étape 4 : 2s

4 0 1 0
1- Ecrire et compiler un programme qui correspond auchronogramme ci-dessus avec
MiKroC.
2- Saisir et simuler le schéma électronique ci-dessus sous ISIS.
3- Implémenter le programme dans la mémoire du PIC : Transférer le fichier.hex dans la
mémoire programme du PIC à l'aide du programmateur.
4- Mettre le PIC dans son montage final et valider les résultats de simulation en pratique

TP ELECTRONIQUE NUMERIQUE 15
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Activité 3 : Compteur modulo 10 :

Figure N°2 : Schéma électronique d’un compteur modulo 10

Figure N°3 : les différents chiffres créés par l’afficheur sept segments
Un afficheur sept segments est constitué de sept segments (a, b, c, d, e, f, g), chaque segment
contient une diode LED qui sera allumée ou éteinte pour former un chiffre, figure N°3. Exemple
Si (a=b=c=1) et (g=d=e=f=0) le chiffre créé est sept.
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0 Code en Code HEX en
- g f e d c b a hexadécimal miKroC

0 0 0 0 0 1 1 1 07 0x07

Pour trouver le code de chaque chiffre soit en


hexadécimal ou décimal, lancer miKroC, cliquer sur
Tools puis cliquer sur Seven Segment Editor, la
fenêtre suivante s’ouvrira :

TP ELECTRONIQUE NUMERIQUE 16
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Cliquer sur les segments (a, b, c, d, e, g) pour créer le chiffre voulue, dans notre application on
prendra le code du chiffre pour un afficheur sept segments à cathode commune (exemple : le
chiffre créé est 7, son code en HEX est 0x07).
1- Ecrire puis compiler un programme qui décrit le fonctionnement d’un compteur modulo 10
qui compte de 0 à 9 en utilisant mikroC.
2- Saisir et simuler le schéma électronique ci-dessus sous ISIS.
3- Implémenter le programme dans la mémoire du PIC : Transférer le fichier.hex dans la
mémoire programme du PIC à l'aide du programmateur.
4- Mettre le PIC dans son montage final et valider les résultats de simulation en pratique.
5- Pour réaliser un compteur/décompteur on ajoute deux interrupteurs (switch) aux bornes
RA0, RA1 du PORTA
Si RA0=0 Le montage fonctionne en compteur/décompteur
Si RA0=1 remise à zéro (RAZ)
Si RA1=0 comptage de 0 à 9
Si RA1=1 décomptage de 9 à 0
On demande de réfère les questions de 1 à 4.

TP ELECTRONIQUE NUMERIQUE 17
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Activité 4 : Moteur pas à pas à 2 sens de rotation :


La figure suivante décrit le câblage d’un moteur pas à pas, commandé par le PIC 16F628A. Le
circuit ULN2803A est un circuit d’adaptation entre l’étage de commande et l’étage de puissance.
Dans ISIS, On trouve le moteur PAP sous le nom ‘STEPPER’. Donner la tension d’alimentation du
moteur et préciser le pas de rotation.

Pour commander le moteur PAP, il suffit de suivre les séquences de commutation indiquées dans le
tableau suivant :

Pour inverser le sens de rotation il suffit d’inverser les séquences de commutation.


En associant les modes 1 et 2, on obtient un fonctionnement en demi-pas. Pour fixer la vitesse de
rotation du moteur, il suffit de fixer le temps de commutation entre les séquences.
1- Ecrire puis compiler un programme qui décrit le fonctionnement du moteur PAP utilisant
mikroC.
2- Saisir et simuler le schéma électronique ci-dessus sous ISIS.
3- Implémenter le programme dans la mémoire du PIC : Transférer le fichier.hex dans la
mémoire programme du PIC à l'aide du programmateur.
4- Mettre le PIC dans son montage final et valider les résultats de simulation en pratique.
5- Pour ajouter le deuxième sens de rotation, ajouter un switch sur le pin RA0 pour choisir entre
le sens avant et le sens arrière :
Si RA0 = 0 rotation en sens avant
Si R10 = 1 rotation en sens arrière

TP ELECTRONIQUE NUMERIQUE 18
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Institut Supérieur des Etudes Technologiques de Bizerte


Département GE (A.U : 2014– 2015)

ATELIER D’ELECTRONIQUE NUMERIQUE

TRAVAUX PRATIQUES

TPN°2 Développement des applications à base de


microcontrôleur (Gestion d’afficheur LCD)

Date : ----------------------------- Classe : -------------------- Durée : 3h

Nom & Prénom : AB/PR BB/AS Mot/Part TP N° Total

1 -------------------------- /4 /6 /10 /20

2 ---------------------------- /4 /6 /10 /20

3 ----------------------------- /4 /6 /10 /20

4 ---------------------------- /4 /6 /10 /20

Objectifs du TP :
-------------------------------- --------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------

Conditions de réalisation et moyens :


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

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

TP ELECTRONIQUE NUMERIQUE 19
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Objectifs :
Mettre en œuvre un afficheur LCD commandé par un PIC 16F628A, 16F877A.
I- Principe :

Figure 1 : interface 4 bits

L’afficheur LM016L possède :

• 3 bornes d'alimentation (nommées VSS, VDD et VEE)


• 3 entrées de contrôle (nommées RS, RW et E)
• 8 entrées de données (nommées D0, D1, D2, D3, D4, D5, D6 et D7)

Voici le rôle de chacune des 3 bornes d'alimentation de l'afficheur LM016L :

• VSS doit être reliée à la borne moins d'une alimentation de 5 V


• VDD doit être reliée à la borne plus d'une alimentation de 5 V
• VEE permet de modifier l'éclairage et le contraste de l'afficheur

On peut gagner une broche en reliant R/W à la masse (R/W = 0 : mode écriture)

Le tableau suivant permet de décrire la fonction de chaque broche

Broche Nom fonction


1 Vss Masse
2 Vdd Alimentation positive +5V
Cette tension permet, en la faisant varier entre 0 et +5V,
3 VEE
le réglage du contraste de l'afficheur.
entre une commande et une donnée. Un niveau bas
4 RS indique une commande et un niveau haut indique une
donnée (affichage).
Lecture ou écriture (Read/Write)
5 R/W 0 : Écriture

TP ELECTRONIQUE NUMERIQUE 20
AOUINA NOURALLAH Technologue à ISET de BIZERTE

1 : Lecture (le contrôleur nous offre la possibilité de lire


certain paramètres interne à l'afficheur.)

C'est l'horloge de l'afficheur, celle-ci va cadencer et valider


touts l’échange (transfert d'instruction ou bien pour
6 E
l'affichage d'un caractère).
D0 à Données en code ASCII (D0 à D4 possèdent de plus
7 à 14
D7 d’autres fonctions)
15 A Anode rétroéclairage (+5V)

16 K Cathode rétroéclairage (masse)

Le tableau suivant présente le différent caractère affichable par LCD en


code ASCII.

TP ELECTRONIQUE NUMERIQUE 21
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Figure 2 : brochage LCD

Les différentes PIN du LCD seront commandés par le microcontrôleur. Chaque variable doit être
affectée à un pin du µC.
Exemple :
Register Select line. sbit LCD_RS at RB4_bit;

Sa pin de commande est donnée par :


sbit LCD_RS_Direction at
Register Select direction pin
TRISB4_bit;

De même pour les autres variables et leurs commandes:


Enable line sbit LCD_EN…

Data 7 line sbit LCD_D7…

……… ……….

Les fonctions de base:

Prototype Description

void Lcd_Init (); Initializes Lcd module.

Prints text on Lcd starting from specified position. Both


string variables and literals can be passed as a text.
void Lcd_Out (char row, char
Parameters :
column, char *text);
• row: starting position row number
• column: starting position column number
• text: text to be written
Prints text on Lcd at current cursor position. Both string
variables and literals can be passed as a text.
void Lcd_Out_Cp (char *text);
Parameters :

• text: text to be written

TP ELECTRONIQUE NUMERIQUE 22
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Prints character on Lcd at specified position. Both variables


and literals can be passed as a character.
void Lcd_Chr (char row, char
Parameters :
column, char out_char);
• row: writing position row number
• column: writing position column number
• out_char: character to be written
Prints character on Lcd at current cursor position. Both
void Lcd_Chr_Cp (char variables and literals can be passed as a character.
out_char); Parameters :

• out_char: character to be written


Sends command to Lcd.
void Lcd_Cmd (char out_char);
Parameters :

• out_char: command to be sent

Les commandes :

Lcd Command Purpose

_LCD_FIRST_ROW Move cursor to the 1st row

_LCD_SECOND_ROW Move cursor to the 2nd row

_LCD_THIRD_ROW Move cursor to the 3rd row

_LCD_FOURTH_ROW Move cursor to the 4th row

_LCD_CLEAR Clear display

_LCD_RETURN_HOME Return cursor to home position, returns a shifted display to


its original position. Display data RAM is unaffected.

_LCD_CURSOR_OFF Turn off cursor

_LCD_UNDERLINE_ON Underline cursor on

_LCD_BLINK_CURSOR_ON Blink cursor on

_LCD_MOVE_CURSOR_LEFT Move cursor left without changing display data RAM

_LCD_MOVE_CURSOR_RIGHT Move cursor right without changing display data RAM

_LCD_TURN_ON Turn Lcd display on

_LCD_TURN_OFF Turn Lcd display off

TP ELECTRONIQUE NUMERIQUE 23
AOUINA NOURALLAH Technologue à ISET de BIZERTE

_LCD_SHIFT_LEFT Shift display left without changing display data RAM

_LCD_SHIFT_RIGHT Shift display right without changing display data RAM

1. Travail demandé :

On propose de réaliser un programme à l’aide d’un pic 16F628A qui permet de gérer un afficheur
alphanumérique de 2 lignes de 16 caractères en mode 4 bits, afin d’écrire les textes suivants :

txt1[] = "ISETB de Bizerte";


txt2[] = "Atelier_Labo_I06";
txt3[] = "Microcontrôleur";
txt4[] = "PIC16F628A";

- RB4/RB7 sont connectées à D4/D7 de l’afficheur


- RB3 commande la pin « E » de l’afficheur
- RB2 commande la pin « RS » de l’afficheur

Le schéma électronique ci-dessous présente un afficheur LCD contrôlé par PIC16F628A.

Figure 3 : Afficheur LCD contrôlé par PIC16F628A


1- Ecrire puis compiler le programme suivant en utilisant MikroC.

// connections du module LCD


sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

TP ELECTRONIQUE NUMERIQUE 24
AOUINA NOURALLAH Technologue à ISET de BIZERTE

sbit LCD_RS_Direction at TRISB2_bit;


sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
// Fin connections du module LCD

// Déclaration des textes à afficher


char txt1[] = "ISETB de Bizerte";
char txt2[] = "Atelier_Labo_I06";
char txt3[] = "Microcontroleur";
char txt4[] = "PIC16F628A";

void main(){

Lcd_Init(); // Initialiser LCD


Lcd_Cmd(_LCD_CLEAR); // Effacer l'affichage
Lcd_Cmd(_LCD_CURSOR_OFF); // Curseur éteint

while(1) { // boucle infini

Lcd_Out(1,1,txt1); // écrire le texte à partir de la ligne 1 et la colonne 1


Lcd_Out(2,1,txt2); // écrire le texte à partir de la ligne 2 et la colonne 1
Delay_ms(2000); //temporisation de deux secondes

Lcd_Cmd(_LCD_CLEAR); // Effacer l'affichage


Lcd_Out(1,2,txt3); // écrire le texte à partir de la ligne 1 et la colonne 2
Lcd_Out(2,4,txt4); // écrire le texte à partir de la ligne 2 et la colonne 4
Delay_ms(2000);
}
}

2- Saisir et simuler le schéma électronique figure 3 sous ISIS.


3- Programmer votre microcontrôleur PIC16F877A en utilisant le logiciel IcProg et la carte de
programmation comme l’indique la figure 4b
4- Réaliser le montage sur plaque d’essai (et/ou) le câbler sur une maquette didactique à base
de PIC et vérifier le fonctionnement envisagé.

TP ELECTRONIQUE NUMERIQUE 25
AOUINA NOURALLAH Technologue à ISET de BIZERTE

(a) (b)
Figure 4 : a- Résultat pratique, b- Programmation du PIC

Figure 5 : exemple de câblage sur plaque d’essai

TP ELECTRONIQUE NUMERIQUE 26
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Institut Supérieur des Etudes Technologiques de Bizerte


Département GE (A.U : 2014– 2015)

ATELIER D’ELECTRONIQUE NUMERIQUE

TRAVAUX PRATIQUES

TPN°3 Gestion du temps et du signal PWM

Date : ----------------------------- Classe : -------------------- Durée : 3h

Nom & Prénom : AB/PR BB/AS Mot/Part TP N° Total

1 -------------------------- /4 /6 /10 /20

2 ---------------------------- /4 /6 /10 /20

3 ----------------------------- /4 /6 /10 /20

4 ---------------------------- /4 /6 /10 /20

Objectifs du TP :
----------------------------------------------------------------------------------------------------------------
--------------------------------- -------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------

Conditions de réalisation et moyens :


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

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

TP ELECTRONIQUE NUMERIQUE 27
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Objectifs :

Maîtriser la gestion du temps dans un PIC 16F628A.


Programmer le Timer en interruption.
Générer un signal à modulation de largeur d’impulsion (MLI) ou signal PWM.

1- Gestion du temps :

1-1- Principe :

Le timer0 est un compteur qui assure deux fonctions :

- compter les impulsions reçues sur la pin RA4/T0CKI. Nous dirons dans ce cas que nous sommes
en mode compteur.

- compter les cycles d’horloge du PIC lui-même. Dans ce cas, comme l’horloge est fixe, nous
compterons donc en réalité du temps. Donc, nous serons en mode « timer ».

Les registres associés au Timer0 :

Le registre INTCON : INTerrupt CONtrol Register


GIE PEIE T0IE INTE RBIE T0IF INTF RBIF
bit7 bit0
Nom Fonctions ou états
bit7 GIE : Global Interrupt Enable bit 1 : autoriser toutes les interruptions
0 : bloquer toutes les interruptions
bit5 T0IE : TMR0 overflow Interrupt 1: autoriser l’interruption sur le Timer0
enable bit 0: bloquer l’interruption sur le Timer0
bit2 T0IF : TMR0 Overflow interrupt 1 : débordement du TMR0 (doit être
flag remis à zéro par soft)
0 : pas de débordement

Le registre OPTION_REG : Option Register :


RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0
bit7 bit0

TP ELECTRONIQUE NUMERIQUE 28
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Nom Fonctions ou états


bit5 T0CS : TMR0 Clock Source Select 1 : transition sur RA4/T0CKI/CMP2 pin
bit 0 : clock interne
bit4 T0SE : TMR0 Source Edge Select 1: incrémentation sur front montant sur
bit RA4 pin
0: incrémentation sur front descendant sur
RA4 pin
bit3 PSA : Prescaler Assignement bit 1 : Prescaler assigné au watchdog
0 : Prescaler assigné au Timer0
bit2-1-0 PS<2 :0> : Prescaler Rate Select
bits:
Prédiviseur : un diviseur
d’événements situé AVANT l’entrée
de comptage du timer0. Nous
pourrons décider d’avoir
incrémentation de tmr0 tous les 2
événements par exemple, ou encore
tous les 64 événements.

1-2- Travail demandé :

On propose de réaliser un programme à base d’un PIC 16F628A qui permet de modifier l’état de
la diode connectée au bit 0 du PORTA, après un temps de 3ms.

1- Donner les valeurs à programmer dans chaque registre pour configurer le Timer 0.
2- Donner l’organigramme de fonctionnement de cette application.
3- Ecrire le programme correspondant en MicroC.
4- Compiler le programme et le simuler sur ISIS.
5- Mettre le PIC dans son montage final et valider les résultats de simulation en pratique.

TP ELECTRONIQUE NUMERIQUE 29
AOUINA NOURALLAH Technologue à ISET de BIZERTE

2- Signal PWM :

2-1- Principe :

Un signal MLI (PWM) possède une période fixe mais une longueur d’impulsion variable. Le rapport
entre la largeur de l’impulsion (ton) et la période (T) est la caractéristique principale d’un signal
PWM. C’est le rapport cyclique (Duty cycle). Cette technique est utilisée principalement pour
commander des moteurs à vitesse variable.

2-1-1- Configuration :

Le signal PWM est généré à l’aide du Timer2 (8 bits) et récupéré sur le pin CCP1 (RC2), pour cela,
ce pin doit être configuré en sortie.
Les données principales à fournir sont la période du signal (ou sa fréquence) et le rapport
cyclique :

a. La période du signal est enregistrée dans le registre PR2, elle est calculée par la formule
suivante :

PWM period = [(PR2) + 1] • 4 • TOSC • (TMR2 prescale value)


TOSC: fréquence d’horloge du PIC
TMR2 prescaler value (voir configuration Timer 2)
Lorsque TMR2 est égale à PR2, le TMR2 recommence le calcul à zéro, le CCP1 (RC2) est
égale à 1, et la valeur du rapport cyclique sera copiée de CCPR1H.

b. Le rapport cyclique est une donnée de résolution 10 bits donc il sera écrit sur deux registre:
CCPR1L et les bits 5 et 4 du CCP1CON.

Duty cycle
Bit9 Bit2 Bit0
CCP1CON<5 :4>
CCPR1L (MSB)
(LSB)

PWM duty cycle = (CCPR1L:CCP1CON<5:4>) • TOSC • (TMR2 prescale value)


La valeur du rapport cyclique peut être modifié à tout instant, mais cette modification ne sera pas
vue que lorsque cette valeur est écrite dans le registre CCPR1H, c'est-à-dire lorsque PR2=TMR2.

TP ELECTRONIQUE NUMERIQUE 30
AOUINA NOURALLAH Technologue à ISET de BIZERTE

2-1-2- Les registres associés au module PWM :

Le registre CCPxCON : CCP CONtrol Register (x : 1 ou 2)


-- -- CCPxX CCPxY CCPxM3 CCPxM2 CCPxM1 CCPxM0
bit7 bit0
Nom Fonctions ou états
bit7-6 Non utilisé
bit5-4 CCPxX:CCPxY : PWM Least
Significant bits
Bit3-0 CCPxM3:CCPxM0 : CCPx 11xx : mode PWM
Mode Select bits Les autres combinaisons pour les
autres modes de fonctionnement

Le registre TMR2 : Timer2 Module’s Register (registre 8 bits)

Le registre PR2 : Timer2 Module’s Period Register (Registre 8 bits)

Le registre T2CON :
-- TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0
bit7 bit0
Nom Fonctions ou états
bit7 Non utilisé
bit6-3 TOUTPS3:TOUTPS0: Timer2 Configuration du postscaler :
Output Postscale Select bits 0000 = 1:1
0001 = 1:2
0010 = 1:3
…….
1111 = 1:16
bit2 TMR2ON: Timer2 On bit 1 : Timer2 est activé
0 : Timer2 est désactivé
bit1-0 T2CKPS1:T2CKPS0: Timer2 00 : Prescaler is 1
Clock Prescale Select bits 01 : Prescaler is 4
1x : Prescaler is 16

2-2- Travail demandé :

On propose de réaliser un programme à base d’un PIC 16F877A qui permet de générer un signal
PWM de fréquence 2kHz et de rapport cyclique variable à travers deux boutons poussoirs.

TP ELECTRONIQUE NUMERIQUE 31
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Figure 1
1- Donner les valeurs à programmer dans chaque registre pour configurer le module PWM.
2- Ecrire le programme correspondant en MiKroC.
3- Compiler le programme et le simuler sur ISIS.
4- Réaliser le montage sur plaque d’essai (et/ou) le câbler sur une maquette didactique à base
de PIC et vérifier le fonctionnement envisagé et valider vos résultats.

Figure 2

TP ELECTRONIQUE NUMERIQUE 32
AOUINA NOURALLAH Technologue à ISET de BIZERTE

TP ELECTRONIQUE NUMERIQUE 33
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Institut Supérieur des Etudes Technologiques de Bizerte


Département GE (A.U : 2014– 2015)

ATELIER D’ELECTRONIQUE NUMERIQUE

TRAVAUX PRATIQUES

TPN°4 Conversion Analogique Numérique

Date : ----------------------------- Classe : -------------------- Durée : 3h

Nom & Prénom : AB/PR BB/AS Mot/Part TP N° Total

1 -------------------------- /4 /6 /10 /20

2 ---------------------------- /4 /6 /10 /20

3 ----------------------------- /4 /6 /10 /20

4 ---------------------------- /4 /6 /10 /20

Objectifs du TP :
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------

Conditions de réalisation et moyens :


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

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

TP ELECTRONIQUE NUMERIQUE 34
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Objectifs :

Lire une tension analogique sur le module A/D du microcontrôleur 16F877


Afficher l’image de la valeur d’une tension analogique convertit sur un afficheur LCD.
Contrôler la vitesse d’un moteur à courant continu selon la valeur de la tension analogique.
1- Principe :

Le module du convertisseur analogique/numérique permet de transformer un signal analogique en


une valeur numérique. Le PIC 16F877A fonctionne avec un ADC qui permet un échantillonnage
sur 10 bits. Donc, le signal numérique peut prendre 210 (1024) valeurs possibles.

1-1- Configuration :

Figure 1
L’entrée analogique peut être connectée sur l'une des entrées analogiques externes. On peut utiliser
jusqu'à 8 canaux d’entrées, mais à un instant donné, un seul canal est relié à l'ADC. Donc le choix
de la chaine se fait obligatoirement avant chaque conversion.

Numéro de canal Broche


0 RA0/AN0
1 RA1/AN1
2 RA2/AN2/VREF-
3 RA3/AN3/VREF+
4 RA5/AN4
5 RE0/AN5
6 RE1/AN5
7 RE2/AN5

TP ELECTRONIQUE NUMERIQUE 35
AOUINA NOURALLAH Technologue à ISET de BIZERTE

Les tensions de références permettant de fixer la dynamique du convertisseur. Elles peuvent être
choisies parmi Vdd, Vss, Vr+ ou Vr-.
Pour utiliser une entrée comme entrée analogique, il faut configurer le port correspondant en mode
analogique.
Le module ADC contient quatre registres de configuration :

A/D Result High Register (ADRESH)


A/D Result Low Register (ADRESL)
A/D Control Register0 (ADCON0)
A/D Control Register1 (ADCON1)

1-2- Les registres associés à l’ADC :

Le registre ADCON0 : A/D CONtrol Register


ADCS1 ADCS0 CHS2 CHS1 CHS0 GO/DONE -- ADON
bit7 bit0
Nom Fonctions ou états
bit7-6 ADCS1:ADCS0 : A/D 00 : Fosc/2
Conversion Clock Select bits 01 : Fosc/8
10 : Fosc/32
11 : internal RC oscillator
bit5-3 CHS2:CHS0 : Analog Channel Choix des entrées analogiques :
Select bits 000 : chaine 0 (AN0)
001 : chaine 1
010 : chaine 2
011 : chaine 3
100 : chaine 4
101 : chaine 5
110 : chaine 6
111 : chaine 7
bit2 GO/DONE : A/D Conversion Si ADON = 1 :
Status bit 1 : démarrer la conversion
0 : mis à zéro par hard lorsque la
conversion est finie
bit1 Non utilisé
bit0 ADON : A/D On bit 1 : convertisseur activé
0 : convertisseur désactivé

Le registre ADCON1 :
ADFM -- -- -- PCFG3 PCFG2 PCFG1 PCFG0
bit7 bit0
Nom Fonctions ou états

TP ELECTRONIQUE NUMERIQUE 36
AOUINA NOURALLAH Technologue à ISET de BIZERTE

bit5 ADFM : A/D Result Format Select 1 : Justification à droite


bit 000000XX XXXXXXXX
0 : Justification à gauche
XXXXXXXX XX000000
(voir format du résultat)
bit4 Non utilisé
bit3 PCGG3:PCFG0 : A/D Port Configuration des E/S et des tensions de
Configuration bits références (Voir tableau 1)
Tableau 1

1-3- Format de résultat :

Le convertisseur donne un résultat sur 10 bits, donc ce résultat devra obligatoirement être
sauvegardé dans deux registres. Ces registres sont les registres ADRESL et ADRESH.
Le résultat peut être soit justifié à gauche, soit à droite.
La justification à droite complète la partie gauche du résultat par des « 0 ». Le résultat sera donc de
la forme suivante :
ADRESH ADRESL
0 0 0 0 0 0 b9 b8 b7 b6 b5 b4 b3 b2 b1 b0

La justification à gauche procède bien évidemment de la méthode inverse :

ADRESH ADRESL
b9 b8 b7 b6 b5 b4 b3 b2 b1 b0 0 0 0 0 0 0

La justification à droite sera principalement utilisée lorsqu’on a besoin de l’intégralité des 10 bits
de résultat, tandis que la justification à gauche est très pratique lorsque 8 bits sont suffisants.

TP ELECTRONIQUE NUMERIQUE 37
AOUINA NOURALLAH Technologue à ISET de BIZERTE

2- Travail demandé :

2-1- Activité N°1 :

On propose de réaliser un programme à base d’un PIC 16F877A, voire figure 1, qui permet de
convertir un signal analogique en valeur numérique et l’afficher sur un LCD (voir TP4).
1- Donner les valeurs à programmer dans chaque registre pour configurer l’ADC.
2- Ecrire le programme correspondant en MikroC.
3- Compiler le programme et le simuler sur ISIS.
4- Mettre le PIC dans son montage final et valider les résultats de simulation en pratique.

2-2- Activité N°2 :

On donne la figure 2, écrire un programme qui permet d’augmenter la vitesse d’un moteur
à courant continu selon la valeur analogique issue du potentiomètre qui simule une sonde
thermique.

TP ELECTRONIQUE NUMERIQUE 38

You might also like