Principe de la conversion Analogique /
Numérique
par approximations successives.
Mise en oeuvre sur microcontrôleur tel le
PIC16F84.
Cette technique de conversion est simple à implémenter
sur un
microcontrôleur. Le montage proposé comprend
1. le microcontrôleur dans lequel s'exécutera un programme
suivant l 'algorithme exposé ci-dessous
2. Un convertisseur Numérique / Analogique très simple (
constitué par quelques résistances)
3. Un circuit comparateur de tensions (analogiques) à sortie
logique, tel le LM139.
L'ensemble de ces 3 éléments est câblé de
façon à former
une boucle de feed-back :
1. Un port de sortie logique à 8 bits du microcontrôleur
attaque le convertisseur N/A à résistances.
2. La valeur analogique obtenu en sortie de ce réseau est
comparée
à la valeur analogique que nous souhaitons convertir en sa
représentation
logique binaire sur 1 octet.
3. La sortie du comparateur est reliée à un port en
entrée du
microcontrôleur, le résultat de la comparaison est donc
utilisable dans l'algorithme.

PREMIERE METHODE DE CONVERSION : COMPARAISON A TOUTES LES
VALEURS POSSIBLES
Cette méthode vous aidera à comprendre la suite.
La méthode consiste à faire générer sur
la sortie logique
du microcontrôleur successivement des valeurs croissantes de
l'octet 0..1..2..3...n...n+1, ( on appelle cela "incrémenter"
) ce qui produit une rampe de tension croissante à la sortie du
réseau de résistances ( convertisseur Numérique /
Analogique
). Il suffit d'arrêter le processus dès que le comparateur
détecte
que la tension obtenue atteint la valeur de la tension à
convertir. ( en scrutant à chaque incrémentation de
l'octet
proposé l'état logique en retour renvoyé au port
en entrée du
microcontrôleur). L'octet à cet instant représente
le résultat
de la conversion Analogique / Numérique, et peut être
mémorisé
par le programme pour utilisation ultérieure.
Défaut de la méthode : le temps de conversion peut
devenir
relativement long lors de la conversion de valeur de tensions
élevées,
puisqu'il peut atteindre (dans le cas d'une conversion sur 8 bits)
256 passages dans la boucle du programme. De plus ce temps croit
exponentiellement avec ce nb de bits, en 2 ^ n soit 16384
passages dans la boucle pour 16 bits de résolution.
DEUXIEME METHODE DE CONVERSION : CONVERSION PAR
APPROXIMATIONS SUCCESSIVES
C'est la méthode des devinettes : on va deviner chaque bit une
fois pour toutes ce qui va limiter le nombre de passages dans la
boucle à n pour n bits de résolution.
Analyse pour une résolution de 8 bits
(numérotés
de 0 à 7 ), soit 256 valeurs possibles pour la tension.
1er passage dans la boucle :
On divise l'échelle des 256 valeurs possibles en 2 parties de
128 valeurs, et on se propose de deviner dans quelle partie (haute
ou basse) se situe la valeur à convertir. Pour cela, le
microcontrôleur propose 128 comme valeur. La sortie du
comparateur indique alors dans quelle moitié de l'échelle
se
situe le résultat. Remarquons que cela consiste à
positionner (mettre
à 1 logique) le bit de poids fort ( le bit 7) de l'octet.
* Soit la valeur à convertir est inférieure à
cette valeur médiane
et la sortie du comparateur indiquera un zéro logique : il faut
alors considérer que le positionnement à 1 logique du bit
7
conduit à une valeur trop élevée pour l'octet. On
doit donc le
remettre à zéro pour la suite des opérations. Mais
l'opération
à permis de connaître la valeur du bit 7. (=0).
* Soit la valeur à convertir est supérieure à
cette valeur médiane
et la sortie du comparateur indiquera un UN logique : il faut
alors considérer que le positionnement à 1 logique du bit
7
conduit à une valeur trop petite pour l'octet. On doit donc le
laisser à UN pour la suite des opérations et augmenter
d'avantage la valeur de l'octet en positionnant d'autres bits.
Toutefois l'opération à permis de connaître la
valeur du bit 7
(=1).
Nous avons donc obtenu la valeur d'un des 8 bits de l'octet en un
seul passage dans la boucle. Il va en être de même pour les
7
autres.
2eme passage dans la boucle :
On divise la 1/2 échelle des 128 valeurs restantes possibles en
2 parties de 64 valeurs, et on se propose de deviner dans quelle
partie (haute ou basse) se situe la valeur à convertir. Pour
cela, le microcontrôleur propose soit 64 soit 128+64 = 192 comme
valeur, ce qui revient à se placer au 1/4 ou ou 3/4 de
l'échelle
entière des 256 valeurs, soit encore à la moitié
de la 1/2 échelle
basse ou à la moitié de la 1/2 échelle haute. En
fait cela
revient à positionner à positionner (mettre à 1
logique) le
bit 6 de l'octet, en conservant la valeur trouvée
précédemment
pour le bit 7. Donc cela se fait en une opération unique.
* Soit la valeur à convertir est inférieure à
cette nouvelle
valeur proposée et la sortie du comparateur indiquera un
zéro
logique : il faut alors considérer que le positionnement
à 1
logique du bit 6 conduit à une valeur trop élevée
pour l'octet.
On doit donc le remettre à zéro pour la suite des
opérations.
Mais l'opération à permis de connaître la valeur du
bit 6. (=0).
* Soit la valeur à convertir est supérieure à
cette nouvelle
valeur et la sortie du comparateur indiquera un UN logique : il
faut alors considérer que le positionnement à 1 logique
du bit
6 conduit à une valeur trop petite pour l'octet. On doit donc le
laisser à UN pour la suite des opérations et augmenter
d'avantage la valeur de l'octet en positionnant d'autres bits.
Toutefois l'opération a permis de connaître la valeur du
bit 6
(=1).
Nous avons donc de nouveau obtenu la valeur d'un des 8 bits de
l'octet en un seul passage dans la boucle. Il va en être de
même
pour les 6 autres.
Je vous laisse réitérer le raisonnement pour les bits
suivants,
le principe restant identique. Après seulement 8 passages dans
la boucle nous obtenons la conversion numérique de la valeur
analogique.
Exercice : je vous propose de dessiner vous-même un joli
algorithme avec des losanges et des " oui " et aussi
des " non " et à colorier toutes ces choses à votre
goût...
Quant à la mise en pratique, vous pouvez analyser mon montage
" CODEUR PPM à PIC16F84 POUR RADIOCOMMANDE ".
| VOICI LA PROCEDURE
CORRESPONDANTE ECRITE POUR LE PIC16F84
voir le programme complet dans "CODEUR PPM à PIC16F84 POUR RADIOCOMMANDE" ;converson A/N par aproximations successives |
Fred.