vendredi 12 janvier 2018

Télémètre ultrasonore HC-SR04 et MPLAB Xpress Evaluation Board

Aujourd'hui, je vous explique comment procéder pour mesurer la distance d'un obstacle au moyen d'un télémètre HC-SR04 branché à une carte de développement MPLAB Xpress Evaluation Board de la compagnie Microchip.  La distance mesurée sera transmise à un ordinateur par communication série (via USB).

Même si j'ai utilisé une carte MPLAB Xpress Evaluation Board de première génération (celle qui est munie d'un microcontrôleur PIC 16F18855), je suppose que cet article pourrait vous être utile même si vous utilisez un autre microcontrôleur PIC.

Le module HC-SR04 est un sonar: lorsque sa broche "Trig" est brièvement soumise à un signal logique haut, une brève impulsion ultrasonore est émise.  La broche "Echo" prend ensuite l'état logique haut pendant une durée égale à la durée du trajet aller-retour de l'ultrason.  Si on connaît la vitesse du son (environ 340 m/s), on peut  utiliser cette durée pour calculer la distance qui sépare le module HC-SR04 de l'obstacle qui a réfléchi l'impulsion ultrasonore.  (Dans d'autres articles de ce blog, je vous indique comment utiliser un HC-SR04 avec un Arduino, un Raspberry Pi, un STM32 Nucleo et un ATTiny: ce n'est pas le choix qui manque...).

Connexions

Le module HC-SR04 est branché à la carte de la façon suivante:

Broche Vcc du HC-SR04 : sortie 5V du MPLAB Xpress Evaluation Board
Broche Trig du HC-SR04: broche RC5 du MPLAB Xpress Evaluation Board
Broche Echo du HC-SR04: broche RC6 du MPLAB Xpress Evaluation Board
Broche Gnd du HC-SR04: broche GND du MPLAB Xpress Evaluation Board



À moins que j'aie interprété la fiche technique de travers, les entrées du 16F18855 tolèrent les tensions de 5 V; je n'ai donc pas jugé utile d'abaisser le signal de sortie du HC-SR04 (broche "Echo") avant de l'acheminer à la carte.

Configuration avec MCC

Nous allons maintenant créer un nouveau projet dans l'IDE en ligne MPLAB Xpress, puis effectuer quelques configurations au moyen du MPLAB Xpress Code Configurator (si vous n'êtes pas familiers avec ces deux outils, je vous réfère à cet article).

Tout d'abord, dans le "System Module" de MCC, les valeurs par défaut "HFINTOSC" avec une fréquence d'horloge de 4_MHz sont tout à fait appropriés, mais il faut régler l'option "Clock Divider" à la valeur 1.



Nous aurons besoin de communiquer par UART et de chronométrer la durée de l'impulsion produite par le HC-SR04.  Dans la liste "Device Resources", nous allons donc choisir "EUSART" et "TMR1", qui vont ensuite apparaître dans la zone "Project Resources".

Réglages des paramètres de l'EUSART:  il faut cocher les cases "Enable Transmit" et "Redirect STDIO to USART".  La valeur par défaut des autres paramètres devrait être correcte.


Les changements à effectuer dans les paramètres du timer sont assez nombreux: d'abord, régler "Clock Source" à FOSC. Ensuite, cocher les cases "Enable Gate" et "Enable Gate Single-Pulse Mode", puis régler "Gate Polarity" à high.

Il est bon de régler "Timer Period" à une valeur se situant entre le maximum et le minimum indiqués (en fait, cette valeur ne semble avoir aucun effet sur le fonctionnement de notre programme, mais MCC vous affichera un message d'erreur si vous laisser ce champ à une valeur qui ne se situe pas dans la plage admise).


Dans la grille où on retrouve plusieurs petits cadenas, il faut décocher le cadenas qui lie par défaut RC6 au TX de l'EUSART, puisque nous voulons utiliser cette entrée pour une autre fonction (l'icône devrait devenir un cadenas ouvert).  Nous cliquons RC0 pour le TX de l'EUSART, et RC1 pour le RX de l'EUSART (ces deux broches sont liées à l'USB de la carte MPLAB Xpress Evaluation Board).

Réglez RC5 comme GPIO output, et liez RC6 au timer (TMR1 - T1G input).


Finalement, dans "Pin Module", rebaptisez la broche RC5 "Trig_pin" et décochez la case "Analog" qui lui a été attribuée par défaut.


Maintenant que la configuration est terminée, il ne faut pas oublier de cliquer sur le bouton "Generate" afin que les fichiers soient crées dans notre projet MPLAB Xpress.

Script

Voici le code à placer dans le fichier "main.c" de votre projet.




Il s'agit de démarrer sur votre ordinateur un logiciel de communication série (j'ai utilisé le moniteur série de l'IDE Arduino), et de déplacer un obstacle devant le module HC-SR04 pour voir la distance en centimètres s'afficher à l'écran.


À lire également:

Vous trouverez aussi sur ce blog des conseils pour utiliser le télémètre HC-SR04 avec un Arduino Unoavec un Raspberry Piavec un ATTiny85,  avec une carte STM32 Nucleo programmée avec mbed et avec un micro:bit.

Yves Pelletier   (TwitterFacebook)


Aucun commentaire:

Enregistrer un commentaire