Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Arduino
  3. Projet 8
Extrait - Arduino S'exercer au prototypage électronique (11 projets créatifs) (2e édition)
Extraits du livre
Arduino S'exercer au prototypage électronique (11 projets créatifs) (2e édition)
1 avis
Revenir à la page d'achat du livre

Projet 8 - Télémètre à ultrasons

Présentation

Comme pour la plupart des autres projets de ce livre, le télémètre à ultrasons est né d’une nécessité quotidienne de l’auteur de pouvoir mesurer à intervalle régulier le niveau d’eau d’une cuve afin de pouvoir réagir en conséquence si la cuve venait à se vider.

De nombreuses applications sont envisageables : installer un radar de recul sur un véhicule, un détecteur d’obstacles sur un robot, un détecteur de passage pour allumer une lampe, etc.

C’est pourquoi il semblait important d’évoquer dans le cadre d’apprentissage de ce livre, les senseurs à ultrasons qui sont largement utilisés dans les projets Arduino.

Exceptionnellement, une deuxième version du montage sera proposée, avec un afficheur LCD, certes technologiquement un peu dépassé de nos jours mais encore largement utilisé dans le monde du DIY, d’où la nécessité d’aborder ce point. Il pourra être avantageusement remplacé par un afficheur OLED (vu dans le projet Testeur de pile et batterie).

1. Principe de fonctionnement

Ce montage, bien que relativement simple, vous permettra de mesurer des distances allant de 3 cm à 4 m, avec une précision de l’ordre du millimètre. La précision dépend...

Matériel nécessaire

Le montage s’articule autour de plusieurs éléments :

  • un capteur à ultrasons HC-SR04 ;

  • un écran LCD 16 x 2 caractères de type DF-Robot ou équivalent ;

  • un bouton-poussoir ;

  • des fils « Dupont » et une breadboard.

Pour la partie programmation, toute carte Arduino (Méga, Uno, Nano, etc.) fera l’affaire. Veillez simplement à modifier le numéro des broches de l’Arduino en conséquence. Dans le programme ci-dessous, il est fait référence à une carte Uno.

En revanche, la deuxième version nécessite impérativement l’utilisation d’une Arduino Uno puisque l’écran LCD se présente sous forme de shield à insérer dans la carte.

Schéma et montage

Le schéma de montage est un des plus simples de ceux contenus dans cet ouvrage. Étudions tout d’abord le fonctionnement du capteur à ultrasons et de l’écran LCD.

Le système mesure la distance séparant le capteur du prochain obstacle grâce au principe de l’écho à ultrasons (ou sonar).

1. Le capteur HC-SR04

Ce capteur peut être trouvé pour quelques euros sur Internet, et constitue un bon compromis performance/prix pour la fabrication d’un télémètre. Il existe bien sûr des alternatives :

  • Les capteurs infrarouges, mais ils sont très sensibles à la chaleur et à la luminosité.

  • Les capteurs lasers, mais ils sont hors de prix.

Les capteurs à ultrasons, parce qu’ils fonctionnent grâce à la faculté du son de rebondir sur des obstacles, peuvent être utilisés de jour comme de nuit et quelle que soit l’opacité de l’obstacle (contrairement aux capteurs infrarouges par exemple). Il est donc tout à fait possible de mesurer la distance vous séparant d’une vitre ou d’évaluer un niveau d’eau.

Ils mesurent une distance en émettant une onde sonore inaudible pour une oreille humaine, et qui se propage dans l’air jusqu’à ce qu’elle rencontre un obstacle. Elle est alors réfléchie par l’objet et retourne vers le capteur qui peut ainsi mesurer le temps mis par cette onde sonore pour faire l’aller-retour entre lui et l’obstacle.

Connaissant cette durée, ainsi que la vitesse du son (344 m/s), l’Arduino peut calculer la distance jusqu’à l’objet. La formule est la suivante :

distance = (0,0344 x durée)/2

avec la distance en centimètres, et la durée en microsecondes.

Le résultat est divisé par deux car la durée mesurée correspond au temps mis pour faire l’aller et le retour, soit deux fois la distance qui nous intéresse.

Le capteur HC-SR04 émet l’onde...

Programmation de l’Arduino

Nous verrons dans un premier temps le sketch de base, correspondant à la version sans LCD du montage, afin d’avoir un programme réutilisable et modifiable selon vos propres besoins.

1. Les déclarations préliminaires

Nul besoin de bibliothèques spécifiques ici, l’ensemble des fonctions utilisées font partie du « cœur » Arduino. Nous nous contentons donc de déclarer les broches utilisées.

#define PIN_TRIG 3 
#define PIN_ECHO 2 
#define PIN_BOUTON 4 

2. La fonction setup()

Le setup ne pose pas de difficulté particulière, les broches de l’Arduino sont simplement configurées selon l’usage que l’on va ensuite en faire :

  pinMode(PIN_TRIG, OUTPUT); 
  pinMode(PIN_ECHO, INPUT); 
  pinMode(PIN_BOUTON, INPUT_PULLUP); 
  digitalWrite(PIN_TRIG, LOW); 

et la broche Trigger du capteur est initialisée à LOW.

3. La fonction loop()

Dans un premier temps, le programme scrute l’état du bouton-poussoir afin de déterminer si une mesure est réclamée par l’utilisateur.

  byte btn = digitalRead(PIN_BOUTON); 
  if (btn == LOW) { 
      ... 
      ... 
  } 

Si c’est le cas, un signal HIGH est envoyé pendant 10µs sur la broche TRIG du capteur.

  digitalWrite(PIN_TRIG, HIGH); 
  delayMicroseconds(10); 
  digitalWrite(PIN_TRIG, LOW); 

Remarquez l’utilisation de la fonction delayMicroseconds() permettant de faire une pause de manière très précise, en microsecondes, dans votre programme.

Après cela, le capteur positionne sa broche Echo à HIGH jusqu’à recevoir l’écho du signal. Il nous suffit donc de mesurer le temps pendant lequel la broche Echo est à l’état haut. Nous faisons cela grâce à la fonction pulseIn(broche, état) qui mesure la durée d’une impulsion (HIGH ou LOW) sur une broche particulière. Ici, nous souhaitons mesurer le temps d’une impulsion HIGH sur la broche PIN_ECHO puisqu’elle est positionnée à HIGH...

Améliorations possibles

Selon l’usage que vous souhaitez faire de ce montage, que ce soit comme détecteur de passage, détecteur d’obstacle, détecteur de niveau, etc., plusieurs ajouts peuvent sensiblement améliorer ce circuit.

1. Ajouter un afficheur OLED

Un afficheur OLED devient une nécessité lorsque la distance mesurée revêt une importance et que vous souhaitez la visualiser. Plus petit et plus moderne que l’afficheur LCD, il est également plus économe en énergie. Vous trouverez un exemple de mise en œuvre d’un écran OLED dans le chapitre Projet 3 - Testeur de pile et batterie. Après cela, votre montage pourra trouver refuge dans un petit boîtier qui vous permettra ainsi de l’utiliser dans toutes les conditions tout en étant protégé.

2. Créer un boîtier

Pour un usage courant, intégrez le circuit (qui peut être soudé au lieu d’être simplement câblé) dans un boîtier protecteur, qui laisse seulement sortir les émetteurs-récepteurs du capteur de distance et un interrupteur. Le système est ainsi mis à l’abri des chocs et autres aléas possibles sur un chantier.

3. Utiliser un capteur étanche

Si votre montage est destiné à être utilisé dans un endroit humide, comme capteur de niveau d’eau par exemple, il sera préférable d’utiliser la version étanche du capteur HC-SR04. Celle-ci dispose d’un transducteur résistant à l’eau et déporté grâce à un câble de 2 mètres de long.

4. Alimenter...

Ressources supplémentaires

Générateur de fichiers de caractères spéciaux pour LCD HD4478 :

https://omerk.github.io/lcdchargen/

Mise en œuvre d’un capteur HC-SR04 étanche :

http://riton-duino.blogspot.com/2022/06/controle-de-niveau-deau-connecte.html