Fonction détection d`obstacle

publicité
Fonction détection d’obstacle
http://www.citroen.com/CWW/fr-FR/TECHNOLOGIES/COMFORT/ParkeringSensor/
Un fabriquant propose un système de détection d’obstacles.
Le principe est basé sur un capteur à ultrasons. Une salve est envoyée et on mesure la durée
de l’écho qui est proportionnelle à la distance. La salve se déplace à la vitesse du son, soit
environ 360m.s-1. Donc D=Vitesse_du_sont × temps_de_propagation / 2 (car il y a un aller et
retour).
Le capteur utilisé est très simple d’emploi, car il fournit une largeur d’impulsion
proportionnelle à la distance mesurée. Donc le microcontrôleur mesure la largeur de cette
impulsion. Une commande dédiée permet très simplement de faire cette acquisition. Ensuite
une simple règle de proportionnalité permet d’afficher la distance réelle.
En toute rigueur, il faudrait aussi tenir compte de la température de l’air, puisque la vitesse du
son varie en fonction de ce paramètre. Mais la tolérance voulue nous permet de s’affranchir
de cette correction. En effet, une variation de 30°C donne une variation sur la mesure de 5%.
Il est doté d'une sortie délivrant des impulsions dont la largeur comprise entre 100 µs et 18 ms
est directement proportionnelle avec la distance de l'obstacle qui est présent devant lui (voir
schéma ci-dessous).
L’organigramme s’écrira comme suit
Pour envoyer une salve
On met à l’état bas la commande de l’envoi de la commande
On génère une impulsion avec l’instruction PULSE (port, largeur d’impulsion en
microsecondes)
Largeur
De l’impulsion
Le constructeur recommande 10µs minimum. On choisira 15 µs
On enregistre ensuite la largeur de l’impulsion fournie par le capteur à ultra son MSU04 qui
fournit une largeur d’impulsion directement proportionnelle à la distance mesurée.
Ceci est réalisé avec la commande CAPTURE qui donne la durée de l’impulsion reçue en µs
au niveau haut. Il faudra multiplier pas 4 la valeur mesurée pour obtenir la valeur réelle. Ce
facteur de réduction de 4 est noté dans la documentation du constructeur du microcontrôleur
3B
Le programme s’écrira dans le microcontrôleur
DIM I AS INTEGER, J AS INTEGER
SET PICBUS HIGH
LCDINIT
CSROFF
OUT 8,0
PULSE 15
I=CAPTURE(11,1)
I=I*4
J=I/(580/10)
LOCATE 0,0
PRINT DEC(J)
OUT 8,1
‘mise au niveau bas avant départ
‘envoi au trigger d’une impulsion de 15µs
‘mesure de la largeur de l’impulsion reçue
‘correction effectuée pour le microcontrôleur 3B
‘conversion largeur d’impulsion / distance en mm a étalonner
La relation entre la durée de l’impulsion et la distance est donnée par le constructeur
La relation qui lie la valeur renvoyée par la fonction CAPTURE et la distance (D) en cm est
donc :
D
4
I
58
Téléchargement