Robot éviteur d’obstacles

image principale Robot éviteur d’obstacles

Difficulté:

Ce petit robot se déplace en évitant les obstacles. Il reconstitue son environnement grâce à 3 capteurs à ultrasons.

 


 


“Papa, construis-moi un robot”. C’est ce que m’a demandé mon fils Quentin, 7 ans, pour son anniversaire. Je me suis donc mis au travail. Le résultat est ce robot éviteur d’obstacles qui fait l’objet de ce tutoriel.


Le tutoriel aborde les domaines suivants :
– les capteurs à ultrasons
– le microcontrôleur PIC 18F2550
– la commande de moteurs à courant continu


 

Matériel :

Budget : Non défini

  • Carte principale et capteurs à ultrasons :
  • – 1 microcontrôleur PIC 18F2550 (disponible ici)
  • – 1 capteur de température LM35DZ (disponible ici)
  • – 1 support à insertion nulle 28 points
  • – 1 quartz 20 MHz
  • – 2 condensateurs 15 pF
  • – 1 régulateur L7805CV (disponible ici)
  • – 2 LED rouges
  • – 1 LED verte
  • – 2 condensateurs 100 nF
  • – 1 condensateur 220 nF
  • – 1 condensateur 330 nF
  • – 2 résistances 100 kohms
  • – 1 résistance 10 kohms
  • – 3 résistances de 1 kohm
  • – 1 bouton reset
  • – 1 embase femelle USB type B
  • – 4 connecteurs mâles droits 4 points
  • – 2 connecteurs femelles 6 points avec fils
  • – 3 modules de détection HC-SR04 (disponible ici)
  • – 2 connecteurs femelles 4 points avec filsCarte de commande des moteurs :
  • – 4 transistors IRF5305
  • – 4 transistors BUZ11
  • – 8 diodes
  • – 2 circuits 74HC32
  • – 1 circuit 74HC00
  • – 1 circuit 74HC04
  • – 4 borniers à vis 2 contacts
  • – 2 connecteurs mâles coudés 6 pointsMécanique :
  • – 2 motoréducteurs 917D
  • – 2 roues avec perçage de 2,6mm
  • – 1 roue folle
  • – 1 plaque de contreplaqué de 200 mm x 150 mm
  • – des vis et entretoisesAlimentation :
  • – 1 coupleur de pile 9 V
  • – 1 coupleur pour 4 piles LR6
  • – 1 interrupteur 

Etape 1 : Budget: 100 €

 

Etape 2 : Capteurs à ultrasons

Le robot met en oeuvre 3 modules HC-SR04 pour mesurer la distance à d’éventuels obstacles, dans l’axe du robot et sur les côtés. 2 emplacements sont prévus pour 2 modules HC-SR04 supplémentaires à l’arrière.

Sur réception d’une impulsion d’au moins 10 µs sur son entrée TRIGGER, le HC-SR04 émet une impulsion ultrasonore. L’onde ultrasonore pourra être réfléchie par tout obstacle situé dans le faisceau de l’émetteur. Le temps T mis pour recevoir un écho permet au HC-SR04 de calculer la distance selon la formule D = c*T/2, où c est la vitesse du son dans l’air, soit environ 340 m/s. La mesure est disponible sur la broche ECHO du HC-SR04 sous la forme d’une impulsion dont la durée est proportionnelle à la distance mesurée.

Le module HC-SR04 destiné à mesurer les distances dans l’axe du robot est soudé directement sur la carte principale (voir étape suivante). Les 2 modules situés sur les côtés sont montés chacun sur un petit support relié à la carte principale par 4 fils (VCC, TRIGGER, ECHO, GND). Chaque module latéral fait un angle de plus de 30° avec l’axe du robot ce qui évite les interférences entre capteurs, puisque le faisceau de chaque capteur fait 15°.

Le HC-SR04 a l’avantage d’être peu cher, compact, et avec des performances satisfaisantes. Cependant, parmi ceux que j’ai achetés, un avait tendance à se bloquer. C’est-à-dire qu’il ne répondait plus à la commande TRIGGER.
J’ai trouvé la solution sur ce site : http://therandomlab.blogspot.fr/2015/05/repair-and-solve-faulty-hc-sr04.html

 

Etape 3 : Carte principale

La carte principale est basée sur un microcontrôleur PIC18F2550 fonctionnant à 48 MHz. Un régulateur 7805 assure l’alimentation en 5 V à partir d’une pile 9 V. Le capteur LM35DZ, soudé sur la carte, permet au microcontrôleur de mesurer la température. Celle-ci peut être utilisée pour le calcul de la vitesse du son, si l’on veut des mesures de distance précises.

La carte possède les interfaces suivantes :
– 4 connecteurs 4 points pour s’interfacer avec des modules HC-SR04
– Un connecteur USB pour faire de la télémétrie entre le robot et un logiciel sur PC, pour des besoins de debug par exemple.
– 2 nappes de 6 fils pour s’interfacer avec la carte de commande des moteurs

Le circuit imprimé mesure 100 mm x 160 mm et il est simple face. Je l’ai fait fabriquer chez

Etape 4 : Programme du microcontrôleur PIC

J’ai écrit le programme du microcontrôleur en C sous MPLABX. Il s’agit d’un environnement de développement téléchargeable gratuitement sur le site de Microchip. J’ai utilisé le template “PIC18 C” proposé par MPLABX à la création du projet. Le code source est donc réparti dans 5 fichiers configuration_bits.c, system.c, main.c, interrupts.c et user.c, plus 2 fichiers de “header” user.h et system.h.

Le programme effectue les opérations suivantes de manière cyclique (un cycle dure 174 ms) :
– collecte des mesures de distance (fichier interrupts.c),
– reconstitution de l’environnement du robot sous forme d’une liste de points (distance; angle),
– décision de l’action à effectuer en fonction de l’environnement : continuer tout droit, tourner à droite, tourner à gauche, s’arrêter, reculer
– commande des moteurs pour suivre la direction choisie

J’ai programmé le microcontrôleur PIC avec un programmateur K150 acheté sur eBay. Le support à insertion nulle installé sur la carte permet de retirer facilement le microcontrôleur pour le placer sur le programmateur.


Etape 5 : Carte de commande des moteurs

La carte de commande des moteurs reçoit des entrées en provenance de la carte principale :
– Commande de vitesse du moteur de gauche (PWM)
– Commande de vitesse du moteur de droite (PWM)
– Commande avant/arrière
– Commande de frein
– Alimentation 5 V des circuits logiques. Les ponts de transistors MOS (et donc les moteurs) sont alimentés par une alimentation distincte, constituée de 4 batteries de 1,2 V, de capacité 1300 mA.h. Cette séparation des alimentations évite de parasiter la carte principale lorsque les moteurs tournent.

Le signal de commande de vitesse est un signal rectangulaire à 3 kHz dont le rapport cyclique est déterminé par le module CCP du microcontrôleur sur la carte principale. Il s’agit de la modulation de largeur d’impulsion ou PWM (Pulse Width Modulation). Pour que le robot tourne, il faut que ses 2 moteurs aient des vitesses différentes.

La carte de commande des moteurs est un circuit simple face de 100 mm x 60 mm. Je l’ai fabriqué à partir du typon réalisé avec le logiciel TCI.


Etape 6 : Assemblage des motoréducteurs et des roues

Le motoréducteur 917D est fourni avec un moteur à courant continu RE140 fonctionnant entre 1,5 et 3 V. La roue se fixe sur l’axe du motoréducteur. Plusieurs rapports de réduction sont possibles et détaillés dans la notice. J’ai choisi le rapport de réduction 1:64 qui permet d’obtenir 3,6 tours de roue par seconde à vide sous 3 V.


Etape 7 : Intégration de l’ensemble

La carte principale, les modules HC-SR04 et la carte de commande des moteurs doivent être fixés sur la plaque de contre-plaqué comme indiqué sur la photo.
Les motoréducteurs et la roue folle sont vissés sous la plaque, ainsi que les coupleurs de pile.
Puis on réalise le cablage des différents éléments.

Pour arriver à un fonctionnement de l’ensemble, je suis passé par plusieurs étapes de test, avec si nécessaire des programmes de test téléchargés dans le PIC :
1) Test de la carte principale seule (mesure de la tension en différents points, clignotement des LED…)
2) Test de la carte connectée aux modules HC-SR04 (affichage sur PC des distances mesurées par les capteurs…)
3) Connexion de la carte principale à la carte de commande des moteurs (vérification de la rotation des moteurs en fonction des signaux émis par la carte principale). A cette étape j’ai rajouté des condensateurs de déparasitage sur les moteurs.
4) Mise en route avec le programme final.

 

Etape 8 : Améliorations envisagées

 

Ce robot est bien avancé mais je prévois plusieurs améliorations :
1) Amélioration du logiciel du microcontrôleur.
2) Ajout de capteurs à ultrasons à l’arrière du robot (utile quand il recule). La circuiterie est déjà prévue.
3) Développement d’un logiciel de télémétrie sur PC. L’image ci-dessus représente une première version en Visual C++ permettant de récupérer par liaison USB les distances mesurées par les capteurs à ultrasons.

 

Sources :

http://www.gotronic.fr, http://www.microchip.com


Merci. Je prévois de mettre une vidéo après avoir résolu le petit problème d'alimentation des moteurs évoqué dans la dernière partie du tuto. J'espère faire cela bientôt et si possible avant la date limite du concours !

Sacré boulot !
vivement la vidéo 🙂

Dlpm
Bonsoir,
Jolie travail électronique qui change de l'arduino ou du raspberry pi.
Pour l'alimentation pourquoi ne pas penser à une lipo 11V 2500mh qui alimenterait le tout via un bec si nécessaire.
Pour le programme du pic en C l'avez vous programmé vous même ? Si oui pouvez vous le communiquer si non où peut-on le trouver ?

Bonjour et merci pour votre commentaire.
J'ai finalement remplacé les 3 piles de 1,5 V par 4 batteries de 1,2 V, ce qui permet d'avoir une tension grille/source suffisante au niveau des transistors MOS. La capacité des batteries utilisées est de 1300 mA.h. J'ai aussi remplacé les motoréducteurs par des neufs car les anciens présentaient trop de frottements, Maintenant, les roues tournent à une bonne vitesse. Je pense qu'il vaut mieux utiliser des alimentations séparées pour les moteurs et le microcontrôleur pour éviter les signaux parasites qui pourraient affecter le fonctionnement du microcontrôleur ou des modules HC-SR04.
Concernant le programme du PIC, c'est effectivement du “fait maison”. J'en suis encore à la mise au point mais je vais mettre la version actuelle dans le tuto.
Si vous aimez le projet, n'hésitez pas à mettre un “j'aime”.

Bonjour,

Pourriez-vous m envoyer votre code du stm32 s il vous plait à mon adresse lm.lemasne1999@gmail.com ?

(de votre version 1)

J' aimerais bien m'appuyer dessus car il a l'air très interressant.


Cordialement

Ces tutoriels devraient vous plaire

vignette Fabriquer une lampe à lave
Fabriquer une lampe à lave
vignette Montez facilement votre console de jeu rétrogaming avec RECALBOX !
Montez facilement votre console de jeu rétrogaming avec RECALBOX !
vignette Préparer un fichier pour une découpe et une gravure laser
Préparer un fichier pour une découpe et une gravure laser
avaatar Gerard31

Gerard31

Suivre

Vues: 7365
Mis en favoris: 3

Découvrez d'autres tutoriels de

Gerard31

Robot éviteur d'obstacles version 2

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers