Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "Mesurer une distance avec un capteur à ultrason HC-SR04 et une carte Arduino / Genuino"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#314 | Signaler ce message


Dans ce tutoriel, nous allons apprendre ensemble à utiliser un capteur de distance à ultrason de référence HC-SR04 avec une carte Arduino / Genuino. En bonus, nous testerons la précision des mesures dans diverses situations.

Lire la suite de l'article sur le site


Pas de photo de profil

bo6

Membre

#491 | Signaler ce message


Bonjour s'il vous plait je cherche une petite instruction qui me permettra de calculer la vitesse de l'objet détecté s'il est en mouvement merci :)


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#501 | Signaler ce message


s'il vous plait je cherche une petite instruction qui me permettra de calculer la vitesse de l'objet détecté s'il est en mouvement

par bo6

Pas sûr que cela soit possible avec un capteur à ultrason.

Si l'objet se dirige vers le capteur ou s'en éloigne, on doit pouvoir faire un calcul entre la distance parcourue et le temps écoulé.

Par contre, si l'objet passe devant le capteur (perpendiculairement), il faut deux capteurs au minimum et un chrono pour mesurer le temps entre les deux détections.

Dans les deux cas, ça me parait inadapté d'utiliser un HC-SR04. C'est pour faire quoi au final ?


Pas de photo de profil

bo6

Membre

#512 | Signaler ce message


Je vous remercie énormément pour votre réponse, en fait j'ai pensé exactement à la même problématique et j'ai considéré comme contrainte que l'objet se dirige directement vers le capteur, mais vous avez proposez de calculer le temps écoulé en utilisant un chrono, cependant je veux que la tâche soit automatisée et que ma carte Arduino l'effectue.

D'après vous qu'est-ce qui vous parait mieux adapté qu'un HC-SR04? Mon but en fait est d'effectuer un calcul sur les petites voitures des jouets en détectant leurs vitesse.

Un grand merci :D


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#521 | Signaler ce message


Je vous remercie énormément pour votre réponse, en fait j'ai pensé exactement à la même problématique et j'ai considéré comme contrainte que l'objet se dirige directement vers le capteur, mais vous avez proposez de calculer le temps écoulé en utilisant un chrono, cependant je veux que la tâche soit automatisée et que ma carte Arduino l'effectue.

par bo6

On peut réaliser un chrono sans probléme avec une carte Arduino. Un chrono ce n'est rien de plus qu'une soustraction de deux temps ;)

Pour faire une mesure de vitesse, il faudrait :

  • faire en continu une mesure de distance,

  • détecter l'entrée d'un objet dans le champ de mesure (distance de début de mesure),

  • stocker le temps actuel,

  • attendre que l'objet arrive à une distance X du capteur (distance de fin de mesure),

  • soustraire le temps actuel au temps en mémoire,

  • faire le calcul de vitesse.

D'après vous qu'est-ce qui vous parait mieux adapté qu'un HC-SR04? Mon but en fait est d'effectuer un calcul sur les petites voitures des jouets en détectant leurs vitesse.

par bo6

Très franchement, j'en ai aucune idée. La mesure de vitesse c'est pas vraiment mon domaine.

Je sais qu'il existe des modules radar Doppler miniatures mais je ne sais pas comment ils s’utilisent :/


Pas de photo de profil

tromxuasnoc

Membre

#609 | Signaler ce message


bonjour comment on fait pour voire la distance merci d'avance et votre tuto est tres bien


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#627 | Signaler ce message


comment on fait pour voire la distance

par tromxuasnoc

Le code pour calculer la distance est dans le chapitre "Le code" de l'article.


Pas de photo de profil

Portnawoak

Membre

#641 | Signaler ce message


Bonjour ! Auriez vous un capteur moins "low-cost" à conseiller ? Je cherche à remplacer un contact de fin de course par un capteur ultrason mais le HC-SR04 ne semble pas le meilleur choix


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#643 | Signaler ce message


Auriez vous un capteur moins "low-cost" à conseiller ?

par Portnawoak

Le capteur "PING)))" de Parallax peut être intéressant. Les HC-SR04 sont basés sur le design de ce capteur à l'origine.

Sinon il y a la gamme de capteurs MaxSonar qui permet de s’accommoder de n'importe quelle situation moyennant finance.


Pas de photo de profil

Portnawoak

Membre

#645 | Signaler ce message


Merci ! Je suis finalement laissé tenté par le HC-SR04 en fiabilisant ses lectures de la façon suivante :

je fais une première mesure Puis une 2e. Si l'écart entre les 2 mesures ne dépasse pas un certain seuil, je lance une 3e mesure, sinon je recommence à zéro Je fais une 3e mesure et vérifie si son écart par rapport à la moyenne des 2 précédentes mesures est acceptable. Au final, une fois que mes 3 mesures successives répondent à mes exigences d'écart type, je retiens la moyenne des 3 mesures comme mesure finale.

Derniére modification le par Portnawoak


Pas de photo de profil

Raspithin

Membre

#815 | Signaler ce message


Bonjour, Personnellement, je préfère utiliser la fonctionnalité input capture (mesure peut se faire par interruption) présente sur tous les ATMega. Pour ceux qui sont intéressés, j'ai un écrit un article (en Anglais) ici. ultra-sound-meter-hc-sr04

Derniére modification le par Raspithin


Pas de photo de profil

breizhmann

Membre

#850 | Signaler ce message


Bonjour, J'avais une question. Pourquoi dans la mesure du temps nous utilisons un long et non pas un int ? Merci.


Pas de photo de profil

bo6

Membre

#852 | Signaler ce message


Bonjour breizhmann, J'ai demandé la réponse de votre question à un ami, il m'a dis qu'on utilise un float pour la mesure du temps pour avoir une valeur plus présise par rapport à ce qu'un int peut nous afficher.

par bo6

Photo de profil de skywodd

skywodd

Membre

Membre du staff

#862 | Signaler ce message


Pourquoi dans la mesure du temps nous utilisons un long et non pas un int ?

par breizhmann

Car la fonction pulseIn() retourne un long, tout simplement.

Un int peut contenir une valeur entre -32767 et +32767, ou 0~65535 en non signé. 32767 microsecondes représente ~33 millisecondes, soit ~14m à la vitesse du son. On pourrait donc techniquement utiliser un int mais comme la fonction pulseIn retourne un long, je préfère rester avec un long pour éviter un avertissement du compilateur. Tout simplement.


Pas de photo de profil

Motrixo

Membre

#934 | Signaler ce message


Bonjour , actuellement pour ce capteur je cherche à faire une calibration pour mon aquarium . En simple retirer 17 cm pour pouvoir savoir le niveau d'eau qu'il manque dans mon aquarium à tout moment de la journée . Si possible avoir le code arduino pour le faire .

Derniére modification le par Motrixo


Pas de photo de profil

ffran

Membre

#979 | Signaler ce message


Merci pour ce tuto, qui a fonctionné du 1er coup (homis le Serial.begin() trop rapide pour mon pc) Bravo pour la clarté des explications.

La mesure expérimentale de la précision du capteur est intéressante.
Elle fait l'hypothèse d'une vitesse du son dans l'air de 340 m/s, ce qui globalement juste mais légèrement variable suivant l'humidité et la température. Il faudrait donc faire une 1e mesure "de calibration" dans une configuration connue (au mm), puis utiliser cette valeur pour les essais suivants. Ainsi, la justesse serait augmentée. J'ai essayé de moyenner sur 1000 mesures, et la répétabilité n'est pas améliorée. La précision théorique est de l'ordre de la demi longueur d'onde (v/2f). A 40 KHz dans l'air elle devrait approcher ~0,5 mm. Comme mes mesures sur un grand réflecteur plan varient de ~4mm, il est probable qu'il y ait un soucis coté électronique (le signal d'impulsion ? la mesure précise du temps de réception ?). A suivre…


Pas de photo de profil

Technopro

Membre

#982 | Signaler ce message


Bonjour j'ai suivie votre tutoriel.Je tenais tout d’abord a vous remercier car ce tutoriel m'a aidée a débuter en arduino cependant je rencontre un problème j'ai téléversée le programme et correctement branché les câble(étant donnée que j'ai une mega 2560 il n'y avait pas de port d2 et d3 j'ai donc branché le trigger et le echo sur le d22 et d23 tout en modifiant les numéro de pin dans le programme)cependant le programme fonctionne bien pour la première mesure mais affiche du charabia pour toute les autre pourriez vous m'aider a résoudre ce problème? Merci d'avance

Voici ce qui s'affiche:

15:38:40.052 -> Distance: 5Distance: 1669.40cm,Distance: 1796.90cm, ⸮⸮⸮⸮⸮⸮Ӗ⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮⸮

Derniére modification le par Technopro


Pas de photo de profil

Yahya

Membre

#989 | Signaler ce message


Bonjour, Comment peux-je calculer la vitesse avec ce composant sinon, il ya t il d'autre suggestion?


Pas de photo de profil

denie.leroie

Membre

#992 | Signaler ce message


Bonjour skywodd

Je voudrai ajouter dans le code 2 choses, mais comme je suis débutant je galère !! j aimerai pouvoir lire les infos sur un lcd et ajouter la possibilité de mettre un seuil de détection avec led quant le capteur s approche d'un distance suffisante une led vert reste allumé) quant on est trop prêt une rouge s allume.

Merci pour votre aide et bravo pour vos tutos. CDT


Pas de photo de profil

NoOne38

Membre

#1075 | Signaler ce message


Bonjour,

Merci pour votre tuto, je suis très intéressé par ce capteur mais en même temps très déçu car mon projet consiste à faire une "toise" ( pour mesurer les petits enfants) or les essais effectués introduisent une erreur importante lorsque le capteur est dirigé vers le sol jusqu'à 73 cm pas de problème mais au delà les mesures ne sont pas cohérentes cela doit être du à la nature même du capteur auriez-vous par contre quelques suggestions ou conseils ? Cordialement


Pas de photo de profil

gghez

Membre

#1094 | Signaler ce message


merci beaucoup, les explications sont très claires et instructives.