0

Les télémètres Infra-Rouge

capteur-distance-gp2y0a02yk-ir-sharp

Les télémètres infra-rouge vont vous donner un signal électrique proportionnel à la distance mesurée. Par exemple 1,2 V pour 6cm et 4,5V pour 27cm. Nous pouvons classer en deux catégories les télémètres infra-rouge:

-    Ceux de proximités qui vont donner une mesure de 4cm à 30 cm

-    Ceux de distance moyenne qui vont mesurer de 20 – 30 cm à 3 – 6 m
Pour avoir une distance exacte, le mieux est de se rapporter à la documentation technique du composant en allant voir le graphique de rapport voltage/dictance. Ensuite de faire ces propres mesures pour être sûre des valeures

Les télémètres infra-rouges sont les principaux capteurs de nos robots en raison de leur performance, de leur précision et de leur coup faible comparé à l’ultra_son. Cependant, il ne faut pas oublier de prendre en compte le fait de l’infra-rouge reste influençable par la lumière et la couleur des objets. Il faut donc bien prendre en compte ces données lors de la programmation des composants.

Sur le schéma ci-dessus, nous pouvons remarquer que la référence du voltage se règle en fonction de VCFG0 et VCFG0. Si vous souhaitez que la référence soit celle de base du microcontroleur, il faut mettre les deux paramètres à 0. Ainsi, ils seront communté sur VDD et VCC. Pour le réglage des autres paramètres, il suffit de suivre les directives fournies sur la figure suivante en réglant les temporisations en fonction du microcontroleur utilisé.

Attention, il faut bien noter que les configuration des registres sont propres à chaque microcontroleurs. Si pour ce type de PIC il faut régler les trois registres (ADCON0, ADCON1, et ADCON2) pour les 16f877, il n’y a que les deux premiers registres… Il faut donc bien se référer à sa documentation.

Voici un extrait du code qui permet de faire l’acquisition de la valeur analogique d’un télémètre GP2D12 du fabriquant SHARP

// mode analogiques pour le port A (AN0 – AN6)
ADCON1 = 0b00000111;

// definition des entrée sortie
TRISA=0xFF;

float telemetre;

ADCON2 = 0xFF; // configuration des temporisations, a retoucher pour faire un code plus propre …
telemetre = 0; // initialisation de la valeur retournée

if(c==3)ADCON0=0b00001101; //va chercher la valeur de mon télémètre An3

ADIF = 0;
ADIE = 1;
GIE = 1;

CONFIG_waitMs(10);

if(c==3)ADCON0=0b00001111; //va chercher la valeur de mon télémètre AN3

CONFIG_waitMs(10);
ADIF = 0;

telemetre = ADRESL;
telemetre += (ADRESH << 8);
telemetre = telemetre*5/1024;