Micro contrôleurs AVR/Travail pratique/Timer et module ultra-son HC-SR04

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du travail pratique
Timer et module ultra-son HC-SR04
Image logo représentative de la faculté
T.P. no 1
Leçon : Micro contrôleurs AVR

TP de niveau 15.

Précédent :Sommaire
Suivant :Utilisation d'un Accéléromètre MPU6050
En raison de limitations techniques, la typographie souhaitable du titre, « Travail pratique : Timer et module ultra-son HC-SR04
Micro contrôleurs AVR/Travail pratique/Timer et module ultra-son HC-SR04
 », n'a pu être restituée correctement ci-dessus.

Nous allons proposer dans ce TP un certain nombre d'exercices utilisant un module ultra-son pour mesurer une distance. Ce problème est extrêmement facile à résoudre si l’on se donne la possibilité d’utiliser du code Arduino. Dans le cas contraire cela nécessite une bonne compréhension de la notion de temps.

Le prix de ce module HC-SR04 varie en fonction des distributeurs et du temps. Nous l'avons déjà acheté pour 1 50.

Utiliser un Arduino pour mesurer une distance[modifier | modifier le wikicode]

Il existe une librairie toute fait pour Arduino. Au bout de très peu de temps les étudiants l'utilisent sans difficulté.

Installer la librairie[modifier | modifier le wikicode]

Téléchargez ICI le fichier .zip. En dézipant vous obtenez un répertoire "Ultrasonic-HC-SR04-master" dans lequel figure un autre répertoire "Ultrasonic". Si vous copiez "Ultrasonic" dans le répertoire "libraries" de votre répertoire de sketch, votre nouvelle librairie sera disponible dès que vous redémarrez votre environnement Arduino.

Exercice 1[modifier | modifier le wikicode]

Si votre librairie est correctement installée, cherchez un exemple associé, par exemple Serial. Essayez-le en réalisant la connexion entre l'Arduino et le module.

Utiliser l'environnement Arduino sans librairie[modifier | modifier le wikicode]

La première ligne du programme de l'exercice 1 était un "#include" indiquant l’utilisation d'une librairie extérieure à la librairie standard de l'Arduino. Nous allons retirer maintenant cette librairie.

Exercice 2[modifier | modifier le wikicode]

En retirant la librairie de l'exercice 1, on vous demande de faire fonctionner le programme en changeant le code correspondant. Vous avez la possibilité d’utiliser "pulsIn()" de la librairie standard Arduino.

Comment se passer de pulsIn ?[modifier | modifier le wikicode]

Par simple boucle d'attente qui incrémente une variable[modifier | modifier le wikicode]

Le plus simple est donc de réaliser une boucle d'attente : il s'agit d'attendre que le signal "echo" repasse à 0 tout en incrémentant une variable. Une telle façon de procéder nécessitera un calibrage.

Exercice 3[modifier | modifier le wikicode]

Réaliser un programme complet sans plulsIn() capable de mesurer le temps pendant lequel le signal echo reste à 1. Comme l'unité de mesure de ce temps est inconnu, il vous faudra calibrer la nouvelle conversion pour obtenir des centimètres.

Utilisation du timer 2[modifier | modifier le wikicode]

Nous allons mesurer la durée de l'impulsion à l'aide du timer 2. À partir de maintenant, nous allons travailler en C pur.

Comme nous ne chercherons pas à avoir une précision plus grande que le centimètre, nous allons régler le mode CTC du timer 2 pour qu'il déclenche une comparaison toutes les 58 us. Réaliser 58 us avec 16MHz nécessite une division par 16 x 58 = 928 qui nécessiterait 9 bits. On peut donc réaliser une prédivision par 8, ce qui nous laisse une comparaison à 116.

Et encore un Timer[modifier | modifier le wikicode]

Plutôt que d'afficher le résultat par la liaison série, nous allons maintenant utiliser un servomoteur pour cet affichage. Bien qu'il existe une librairie Arduino qui gère directement les servomoteurs, nous allons réaliser notre propre gestion à l'aide du Timer 1. Ce problème a déjà été abordé dans ce livre, dans le chapitre sur le timer 1. Ce que l'on cherche à faire maintenant est expliqué dans la vidéo :

Il s'agit donc de coupler le module Ultrason avec un servomoteur.