- Matériaux nécessaires:
- Schéma:
- Comment fonctionne réellement le module HC-SR04:
- Mesure de la distance entre deux capteurs à ultrasons (HC-SR04):
- Programme pour le capteur de l'émetteur:
- Programme pour le capteur du récepteur:
- Travail:
- Idée improvisée - calibrer le capteur en utilisant une distance connue:
Le capteur à ultrasons (HC-SR04) est couramment utilisé pour trouver la distance d'un objet à partir d'un point particulier. Cela a été assez facile de le faire avec l'Arduino et le code est également assez simple. Mais dans cet article, nous allons essayer quelque chose de différent avec ces capteurs HC-SR04 populaires. Nous allons essayer de calculer la distance entre deux capteurs à ultrasons, c'est-à-dire que nous allons faire en sorte qu'un capteur agisse comme émetteur et l'autre capteur agisse comme récepteur. En faisant cela, nous pouvons suivre l'emplacement d'un émetteur à l'aide de nombreux récepteurs à ultrasons.Ce suivi est appelé triangulation et peut être utilisé pour les robots d'ancrage automatique des suiveurs de bagages et d'autres applications similaires. Trouver la distance entre deux capteurs américains peut sembler être une tâche assez simple, mais j'ai été confronté à quelques défis qui sont abordés dans ce projet.
La technique décrite dans cet article n'est pas assez précise et peut ne pas être utile dans des systèmes réels sans modifications. Pendant le temps de cette documentation, je n'ai trouvé personne obtenant des résultats aussi proches que les miens, donc je viens de partager mon point de vue sur la façon dont je l'ai fait fonctionner afin que les personnes qui essaient cela n'aient pas besoin de réinventer la roue.
Matériaux nécessaires:
- Arduino (2Nos) - Tout modèle
- Module HCSR04 (2Nos)
Schéma:
Même si nous allons faire fonctionner un capteur américain (à ultrasons) comme émetteur et l'autre comme récepteur, il est obligatoire de connecter les quatre broches des capteurs à l'Arduino. Pourquoi devrions nous? Plus de cela sera discuté plus tard, mais pour l'instant, le schéma de circuit sera le suivant
Comme vous pouvez le voir, le schéma de circuit de l'émetteur et du récepteur sont tous deux identiques. Vérifiez également: Interfaçage des capteurs à ultrasons Arduino
Comment fonctionne réellement le module HC-SR04:
Avant de poursuivre, comprenons comment fonctionne le capteur HC-SR04. Le diagramme de synchronisation ci-dessous nous aidera à comprendre le fonctionnement.
Le capteur a deux broches Trigger et Echo qui sont utilisées pour mesurer la distance comme indiqué dans le chronogramme. Tout d'abord, pour lancer la mesure, nous devons envoyer une onde ultrasonique à partir de l'émetteur, cela peut être fait en réglant la broche de déclenchement à une valeur élevée de 10uS. Dès que cela est fait, la broche de l'émetteur enverra 8 rafales sonores d'ondes américaines. Cette onde américaine frappera un objet qui rebondira et sera reçue par le récepteur.
Ici, le chronogramme montre qu'une fois que le récepteur reçoit l'onde, il fera monter la broche Echo pendant une durée égale au temps nécessaire à l'onde pour voyager du capteur américain et revenir au capteur. Ce chronogramme ne semble pas être vrai.
J'ai couvert la partie Tx (émetteur) de mon capteur et vérifié si l'impulsion de l'écho était élevée, et oui, elle le fait. Cela signifie que l'impulsion d'écho n'attend pas que l'onde US (ultrasonique) soit reçue par elle. Une fois qu'elle transmet la vague américaine, elle monte et reste haute jusqu'à ce que la vague revienne. Donc, le bon chronogramme devrait être quelque chose comme celui ci-dessous (Désolé pour mes faibles compétences en écriture)
Faire fonctionner votre HC-SR04 comme émetteur uniquement:
Il est assez simple de faire fonctionner un HC-SR04 comme émetteur uniquement. Comme indiqué dans le chronogramme, vous devez déclarer la broche de déclenchement comme broche de sortie et la faire rester élevée pendant 10 microsecondes. Cela déclenchera la rafale d'ondes ultrasoniques. Ainsi, chaque fois que nous voulons transmettre l'onde, nous devons simplement contrôler la broche de déclenchement du capteur émetteur, pour laquelle le code est donné ci-dessous.
Faire fonctionner votre HC-SR04 comme récepteur uniquement:
Comme le montre le chronogramme, nous ne pouvons pas contrôler la montée de la broche d'écho car elle est liée à la broche de déclenchement. Il n'y a donc aucun moyen de faire fonctionner le HC-SR04 uniquement comme récepteur. Mais nous pouvons utiliser un hack, en recouvrant simplement la partie émetteur du capteur avec du ruban adhésif (comme indiqué sur l'image ci-dessous) ou en plafonnant la vague américaine ne peut pas s'échapper à l'extérieur de son boîtier émetteur et la broche Echo ne sera pas affectée par cette vague américaine.
Maintenant, pour faire monter la broche d'écho, il suffit de tirer cette broche de déclenchement fictive haut pendant 10 microsecondes. Une fois que ce capteur récepteur reçoit l'onde américaine transmise par le capteur émetteur, la broche d'écho devient basse.
Mesure de la distance entre deux capteurs à ultrasons (HC-SR04):
Jusqu'à présent, nous avons compris comment faire fonctionner un capteur comme émetteur et l'autre capteur comme récepteur. Maintenant, nous devons transmettre l'onde ultrasonore du capteur de l'émetteur et la recevoir avec le capteur du récepteur et vérifier le temps nécessaire pour que l'onde se déplace de l'émetteur au récepteur semble facile, non ?? Mais malheureusement !, nous avons un problème ici et cela ne fonctionnera pas.
Le module émetteur et le module récepteur sont éloignés et lorsque le module récepteur reçoit l'onde américaine du module émetteur, il ne saura pas quand l'émetteur a envoyé cette onde particulière. Sans connaître l'heure de départ, nous ne pouvons pas calculer le temps pris et donc la distance. Pour résoudre ce problème, l'impulsion d'écho du module récepteur doit être amenée à monter exactement lorsque le module émetteur a transmis l'onde US. En d'autres termes, le module émetteur et le module récepteur doivent se déclencher en même temps. Ceci peut être réalisé par la méthode suivante.
Dans le diagramme ci-dessus, Tx représente le capteur de l'émetteur et Rx représente le capteur du récepteur. Comme indiqué, le capteur de l'émetteur sera conçu pour transmettre des ondes américaines à un retard périodique connu, c'est tout ce qu'il a à faire.
Dans le capteur du récepteur, nous devons d'une manière ou d'une autre faire monter la goupille de déclenchement haute exactement lorsque la broche de l'émetteur devient haute. Donc, au départ, nous faisons au hasard le déclencheur du récepteur pour aller haut qui restera haut jusqu'à ce que la broche d'écho devienne basse. Cette broche d'écho ne passera au niveau bas que lorsqu'elle recevra une onde américaine de l'émetteur. Ainsi, dès qu'il devient bas, nous pouvons supposer que le capteur de l'émetteur vient de se déclencher. Maintenant, avec cette hypothèse, dès que l'écho devient faible, nous pouvons attendre le retard connu, puis déclencher le déclenchement des récepteurs. Cela synchroniserait partiellement le déclencheur de l'émetteur et du récepteur et vous pourrez ainsi lire la durée de l'impulsion d'écho immédiate à l'aide de pulseIn () et calculer la distance.
Programme pour le capteur de l'émetteur:
Le programme complet du module émetteur se trouve au bas de la page. Il ne fait que déclencher le capteur de l'émetteur à un intervalle périodique.
digitalWrite (trigPin, HIGH); delayMicrosecondes (10); digitalWrite (trigPin, LOW);
Pour déclencher un capteur, nous devons faire en sorte que la goupille de déclenchement reste haute pendant 10uS. Le code pour faire de même est indiqué ci-dessus
Programme pour le capteur du récepteur:
Dans le capteur du récepteur, nous avons couvert l'œil de l'émetteur du capteur pour le rendre factice, comme indiqué précédemment. Nous pouvons maintenant utiliser la technique mentionnée ci-dessus pour mesurer la distance entre deux capteurs. Le programme complet est donné en bas de cette page. Quelques lignes importantes sont expliquées ci-dessous
Trigger_US (); while (digitalRead (echoPin) == HIGH); delayMicrosecondes (10); Trigger_US (); durée = pulseIn (echoPin, HIGH);
Au départ, nous déclenchons le capteur américain en utilisant la fonction Trigger_US (), puis nous attendons que la broche d'écho reste haute en utilisant une boucle while. Une fois qu'elle devient basse, nous attendons une durée prédéterminée, cette durée devrait être comprise entre 10 et 30 microsecondes, ce qui peut être déterminé à l'aide d'essais et d'erreurs (ou vous pouvez utiliser l'idée improvisée donnée ci-dessous). Après ce délai, déclenchez à nouveau les États-Unis en utilisant la même fonction, puis utilisez la fonction pulseIn () pour calculer la durée de l'onde.
Maintenant, en utilisant les mêmes anciennes formules, nous pouvons calculer la distance comme ci-dessous
distance = durée * 0,034;
Travail:
Effectuez les connexions comme expliqué dans le programme. Couvrez la partie Tx du capteur du récepteur comme indiqué sur l'image. Ensuite, téléchargez le code de l'émetteur et le code du récepteur qui sont donnés ci-dessous à l'émetteur et au récepteur Arduino respectivement. Ouvrez le moniteur série du module récepteur et vous devriez remarquer la distance entre deux modules affichée comme indiqué dans la vidéo ci-dessous.
Remarque: cette méthode n'est qu'une idéologie et peut ne pas être exacte ou satisfaisante. Cependant, vous pouvez essayer l'idée improvisée ci-dessous pour obtenir de meilleurs résultats.
Idée improvisée - calibrer le capteur en utilisant une distance connue:
La méthode qui a été expliquée jusqu'ici semble étrangement satisfaisante, mais elle était suffisante pour mon projet. Cependant, je voudrais également partager les inconvénients de cette méthode et un moyen de les surmonter. Un inconvénient majeur de cette méthode est que nous supposons que la broche Echo du récepteur tombe au niveau bas immédiatement après que le capteur de l'émetteur a transmis l'onde américaine, ce qui n'est pas vrai car l'onde mettra un certain temps à voyager de l'émetteur au récepteur. Par conséquent, le déclencheur de l'émetteur et le déclencheur du récepteur ne seront pas parfaitement synchronisés.
Pour surmonter cela, nous pouvons calibrer le capteur en utilisant une distance connue au départ. Si la distance est connue, nous connaîtrons le temps nécessaire à l'onde américaine pour atteindre le récepteur depuis l'émetteur. Gardons ce temps pris comme Del (D) comme indiqué ci-dessous.
Maintenant, nous saurons exactement après combien de temps nous devons rendre la broche de déclenchement du récepteur trop élevée pour se synchroniser avec la gâchette de l'émetteur. Cette durée peut être calculée par Délai connu (t) - Suppr (D). Je n'ai pas pu tester cette idée en raison des limites de temps, donc je ne suis pas sûr de sa précision. Donc, si vous essayez, faites-moi savoir les résultats via la section des commentaires.