Aller au contenu


Photo
- - - - -

Comment utiliser plusieurs capteurs Ultrasons en limitant le nombre de broches utilisée ?

uno ultrasons

  • Veuillez vous connecter pour répondre
2 réponses à ce sujet

#1 papoutruc

papoutruc

    Nouveau membre

  • Membres
  • 4 messages

Posté 16 février 2018 - 12:40

Bonjour,

tout est dans le titre !

Je précise ;

J'ai à ce jour rendu opérationnel un petit robot roulant à base Meccano en tant que mobile autonome, avec 1 capteur ultrasonique et une détection de blocage de roue par capteur Hall, le tout géré par un UNO; ça marche bien mais évidemment la zone scrutée par les ultrasons est plutôt restreinte.

 

Je voudrais donc maintenant utiliser 3 détecteurs ultrasoniques HC-SR04, et là j'ai une question : puis-je envisager de mettre la même broche TRIGG pour les 3 (économie de 2 broches) ?

Merci pour toute info à ce sujet...

Papoutruc



#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 959 messages
  • Gender:Male
  • Location:Anglet

Posté 16 février 2018 - 01:00

Alors, 

 

Oui il est possible de brancher les 3 branches triger de 3 capteurs à ultrasons sur la même broche de l'arduino sous conditions de quelques limitations : 

1) Puisqu'on connecte les 3 trig en même temps la position des capteurs doit faire en sorte qu'ils ne se perturbent pas. En général aucun problème pour des capteur orienté à 90° les un par rapport aux autres, cependant plus ils pointent dans la même direction et plus les ultrasons peuvent se perturber les un les autres... 

2) Si vous voulez lire le 3 capteurs en un seul déclenchement de triger c'est possible mais il faudra créer votre propre librairie ou en trouver une qui le fait car pour le moment je n'en connais pas ... En effet les librairies standard tel que ping et newping, ne gère pas cette fonctionnalité... Sinon il faudra vous contenter de faire 3 coup de trig pour faire les 3 mesures ... 


Par contre je peux proposer un plan B ! 
Utiliser le même pin pour le trig et l'echo du capteur HCSR04 ! 

 

Pour tester cette possibilité voici un code d'exemple pour un capteur : 

 

#include <NewPing.h>

#define PING_PIN 12 // Broche sur laquelle on branchera ensemble Trig et echo 
NewPing sonar(PING_PIN, PING_PIN ); // On instancie un objet sonar avec le même pin pour trig et echo

void setup() {
Serial.begin(115200);
}

void loop() {

delay(30); // On attend 30 ms pour éviter que les écho dela mesure précentes perturbent nos mesure 
unsigned int uS = sonar.ping(); // On ping et on lit la mesure
Serial.print("Ping: ");
Serial.print(uS / US_ROUNDTRIP_CM); // On affiche la valeur convertie
Serial.println("cm"); 
}

Si cela marche avec un capteur vous pourrez alors le modifier pour lire 3 capteurs, en utilisant donc plus que 3 pins , soit 3 pins de gagné plutôt que 2 avec l'idée originale...  
Seul inconvénient par rapport à la méthode précédente. Il n'est pas possible de prendre les 3 mesures en une seule fois ... 

 

Tu nous fais un petit test de cette deuxième méthode ? =) 

Sinon après il y a d'autres méthodes... mais  qui sont moins avantageuses que celle présentée ci dessus ! =)
 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 papoutruc

papoutruc

    Nouveau membre

  • Membres
  • 4 messages

Posté 18 février 2018 - 11:30

bonsoir,

je suis incapable d'essayer le "plan B", étant imperméable aux concepts du C++ !... Merci quand même.

 

Par contre le plan A marche trés bien; j'ai donc actuellement une plateforme à 2 moteurs DC, dont un avec capteur Hall permettant de détecter un blocage de roue, et trois senseurs ultrasons (frontal, gauche et droite à 60° par rapport au frontal) . La commande TRIGG est la même pour les 3 et ECHOs sont scannés à tour de rôle avec un intervalle de 10ms. Tout ce matériel fonctionne à la perfection au niveau de chaque élément; le scan US donne des résultats exacts.

Mais j'ai des soucis pour la construction de l'arbre de décision, mon cerveau pédalant un peu dans la choucroute !

Quelqu'un pourrait-il m'indiquer un algorithme donnant à ce robot (baptisé POU) un comportement autonome obéissant à peu prés aux lois du rebond mécanique et capable de se dépétrer de situations de blocage ?

Merci,

Papoutruc.







Aussi étiqueté avec au moins un de ces mots-clés : uno, ultrasons

0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users