Vous êtes sur la page 1sur 5

DUT GEII - DUT 2 A LTERNANCE

T RAVAUX P RATIQUES D LECTRONIQUE


C ONVERTISSEUR A NALOGIQUE N UMRIQUE (CAN)
Lundi 24 Mars 2014
Objectifs du TP :
Connatre le principe dacquisition numrique dune tension analogique :
prcision
pas de quantification (quantum)
temps de conversion
Mise en oeuvre dun convertisseur analogique numrique interne un micro-contrleur

Introduction : Conversion Numrique Analogique

1.1

Pas de quantification

Le but dune conversion analogique numrique est de convertir une grandeur analogique en une
grandeur numrique code sur N bits. Si lon prend lexemple dune tension analogique pouvant
voluer entre 0 et une valeur maximale Vre f (on parle alors de pleine chelle ou Full Scale en anglais),
le codage en sortie dun CAN 3 bits sera celui reprsent F IG 1.
On peut alors dfinir le quantum q (plus petite variation de grandeur analogique quantifiable par
le CAN). La plage de tension analogique (variant de 0 Vre f ) est dcompose dans notre exemple en
8 intervalles (8 = 23 ). Si lon considre que la tension analogique maximale Vre f correspond la mise
1 de tous les bits du code numrique (111), il est alors possible dexprimer le quantum :
Vre f = 1 22 q + 1 21 q + 1 20 q
Vre f = q (22 + 21 + 20 ) = q (23 1)
V

f
Do : q = 23re1
Si lon gnralise un convertisseur N bits :

q=

Vre f
2N 1

Exercice : On considre une tension Vre f = 5V , calculer le quantum pour un CAN 6, 8, 10 et 12 bits.

1.2

Temps de conversion

La conversion dune grandeur analogique en un code numrique nest pas instantane. En effet, il
faut tout dabord acqurir la tension analogique convertir (gnralement en chargeant un condensa1

DUT2 GEII -A LTERNANCE

T RAVAUX P RATIQUES D LECTRONIQUE

Signal numrique
111
110
101
100
011
010
001
000

Signal analogique
2q

3q

4q

5q

6q

7q Vre f

F IGURE 1 Correspondance entre grandeurs analogiques et numriques


teur), il sagit du temps dacquisition (TACQ ). Ensuite, il faut convertir cette tension (plusieurs technologies de convertisseurs existent), il sagit du temps de conversion (TCONV ). Le temps de conversion
total est la somme de ces 2 temps :
TCONVT OT = TACQ + TCONV
Ce temps de conversion est fondamental puisquil limitera directement la frquence maximale du
signal convertir.

Mise en oeuvre

Aujourdhui, nous utiliserons le CAN interne du micro-contrleur PIC16F877. Celui-ci est paramtrable en 8 ou 10 bits. Les programmes (.c) vous sont fournis. Nous utiliserons le logiciel MPLAB
IDE 8.88 pour crer ces programmes et les compiler (cration dun fichier .hex). Le transfert du
programme compil sera effectu laide du logiciel Serial Bootloader.
Le code du premier programme est donn ci-dessous :
#include <16F877.h>
#device ADC=10 //N=10 pour le CAN interne
#use delay(clock=4000000) //Horloge 4 MHz
#fuses HS,NOWDT,NOLVP
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) //Configuration liaison srie
void main()
{
int16 valeur; //Dclaration dune variable valeur en entier 16 bits
setup_adc_ports(ALL_ANALOG); //Configuration des 8 voies du CAN en analogique
setup_adc(ADC_CLOCK_INTERNAL); //Utilisation de lhorloge interne
set_adc_channel(1); //Utilisation de la voie 1 du micro-contrleur (broche A1)
while(1) //Boucle infinie
YAL T HIAUX

A NNE 2013/2014

DUT2 GEII -A LTERNANCE

T RAVAUX P RATIQUES D LECTRONIQUE

{
valeur=read_adc(); //Lecture de la broche A1, affectation la variable valeur
printf("%ld\n",valeur); //Affichage de la variable valeur via liaison srie
}
}
Ce programme vient simplement lire la premire des 8 voies du CAN interne du micro-contrleur
et envoie cette valeur sur le port srie pour affichage.

2.1

tape 1

Il faut tout dabord crer un nouveau projet :


1. Lancer le logiciel MPLAB IDE 8.88
2. Crer un nouveau projet
(a) Menu "Project" , "Project Wizard"
(b) Slectionner le composant "16F877"
(c) Slectionner le compilateur "CCS Compiler for Pic"

2.2

tape 2

Ensuite, il faut crer un fichier .c et linclure dans le projet :


1. Ouvrir une nouvelle feuille
2. Taper le code du programme 1
3. Enregistrer le code en .c ( lissue de cette tape, le texte doit prendre plusieurs couleurs)
4. Inclure ce fichier au projet cr :
(a) Clic droit sur "Sources Files"
(b) Add Files

2.3

tape 3

Notre programme est dsormais prt tre compil. Pour cela, cliquer sur longlet "BUILD ALL".
Si la compilation est correcte, vous devriez voir apparaitre la mention "BUILD SUCCEEDED". Dans
le cas contraire, le message dinsultes "BUILD FAILED" vous sera renvoy.
Vous disposez prsent dun fichier .HEX prt tre transfr dans le micro-contrleur.

2.4

tape 4

Pour finir, il faut transfrer le programme compil dans le micro-contrleur :


1. Ouvrir le logiciel Serial Bootloader
2. Appuyer sur le carr rouge pour lancer la communication avec le PIC
3. Ouvrir le fichier compil (.hex)
4. Pour transfrer le programme dans le composant, appuyer sur le losange avec une flche rentrante
5. Pour lancer le programme, appuyer sur la flche verte

YAL T HIAUX

A NNE 2013/2014

DUT2 GEII -A LTERNANCE

2.5

T RAVAUX P RATIQUES D LECTRONIQUE

Exercice 1
1. Crez votre projet
2. Crez un fichier .c et linclure au projet
3. Compilez le programme
4. Transfrez-le dans le micro-contrleur et lancez le programme
5. Cblez la sortie du potentiomtre de la platine sur la broche A1 et actionnez celui-ci.
6. Quelles sont les valeurs minimale et maximale affiches ? Est-ce logique ?
7. Modifiez le programme pour raliser une conversion analogique-numrique sur 8 bits. Compilez le programme et transfrez le dans le micro-contrleur. Quelles sont les nouvelles valeurs
maximale et minimale ?
8. Quelle est (pour les 2 rglages du CAN effectus) la prcision de la conversion ? Vous exprimerez ce paramtre en mV, puis en pourcentage de la pleine chelle (%FS).
9. La vitesse de rotation dun axe mcanique est mesure laide dun capteur de vitesse dont le
gain vaut 10mV /(tr/min). Quel rglage du CAN choisisseriez-vous pour pouvoir dtecter une
augmentation de vitesse de 1 tr/min ? de 10 tr/min ?

2.6

Exercice 2

On sintresse dsormais au nouveau programme ci-dessous :


#include <16F877.h>
#device ADC=10
#use delay(clock=4000000)
#fuses HS,NOWDT,NOLVP
#use fast_io(B)
void main()
{
int16 valeur;
int1 booleen=0;
set_tris_B(0);
setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_DIV_8);
set_adc_channel(1);
while(1)
{
valeur=read_adc();//Lecture voie 1 CAN
output_bit(PIN_B0,++booleen);//Incrmentation de la variable boolenne
}
}
Ce programme vient simplement effectuer une conversion analogique numrique sur la voie 1 du
CAN (broche A1) et, aprs chaque conversion, change ltat dune variable boolenne envoye sur
la broche B0 (cette deuxime tape peut tre considre comme instantane). Dans cet exemple, le
CAN est cadenc la frquence dhorloge du micro-contrleur divise par 8.

YAL T HIAUX

A NNE 2013/2014

DUT2 GEII -A LTERNANCE

T RAVAUX P RATIQUES D LECTRONIQUE

1. Modifiez le fichier .c et linclure au projet


2. Compilez le programme
3. Transfrez-le dans le micro-contrleur et lancez le programme
4. Rflchir un moyen destimer le temps de conversion du CAN interne.
5. Mesurez alors le temps de conversion du CAN.
6. Modifiez le programme pour raliser une conversion analogique-numrique sur 8 bits. Compilez le programme et transfrez le dans le micro-contrleur. Dterminez alors le nouveau temps
de conversion
7. De mme, cadencez votre CAN non plus la frquence de 4 MHz divis par 8 mais par 32.
Dterminez les nouveaux temps de conversion pour N=8 et N=10. Conclure.
8. Pour chacun de ces 4 cas, quelle est la frquence maximale du signal que nous pourrions convenablement convertir ?

YAL T HIAUX

A NNE 2013/2014