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