Robot éviteur d'obstacles version 2

image principale Robot éviteur d'obstacles version 2

Difficulté:

Le premier robot éviteur d'obstacles que j'avais présenté sur le site de OuiAreMakers avait quelques défauts. J'ai voulu faire une version 2 avec plusieurs améliorations : remplacement de la carte de commande des moteurs par une carte plus petite et plus performante; changement des moteurs et des roues; mesure de la vitesse de rotation des roues; ajout d'un affichage à cristaux liquides pour afficher des informations du robot; ajout d'un capteur à ultrasons à l'arrière; ajout d'amortisseurs.

Matériel :

Budget : Non défini

Etape 1 : La plateforme mobile

La plateforme est constituée d'une plaque de médium de 200 mm x 160 mm x 3 mm sur laquelle sont fixés 2 roues motorisées à l'arrière et un patin à l'avant. Le patin présente l'avantage de glisser sur le carrelage alors qu'une petite roue libre a tendance à se prendre dans les joints entre 2 carreaux. Un encodeur magnétique est monté sur l'axe arrière de chaque moto-réducteur pour permettre une mesure de la vitesse de rotation des roues. Enfin, une carte de commande de 2 moteurs DRI0002 2x2A est vissée sur la plaque médium entre les 2 moto-réducteurs. La carte de commande des moteurs est alimentée par une pile de 9 V pour la partie numérique et en 7,2 V (6 batteries de 1,2 V à 2600 mA.h) pour la partie puissance. Ces batteries sont placées dans un coupleur de piles posé sur la plaque de médium. Un interrupteur permet de mettre sous tension les parties numériques et de puissance simultanément.

Etape 2 : Les capteurs à ultrasons

Le robot met en oeuvre 4 modules HC-SR04 pour mesurer la distance à d’éventuels obstacles, à l'avant et à l'arrière du robot et sur les côtés. 

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 de calculer la distance selon la formule D = c*T/2, où c est la  célérité 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.

Les modules  HC-SR04 destinés à mesurer les distances dans l’axe du robot sont soudés  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.

Etape 3 : La carte principale

La carte principale est basée sur deux microcontrôleur PIC 18F2420 et 18F2550 communiquant entre eux par une liaison I2C. Le premier est cadencé à 10 MHz et l'autre à 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 est utilisée pour le calcul de la vitesse du son, qui sert aux mesures de distance.

La carte possède les interfaces suivantes :
 – 2 connecteurs 4 points pour s’interfacer avec les modules HC-SR04

 – 2 connecteurs 4 points pour s’interfacer avec les tachymètres

 – 2 connecteurs 2 points pour s'interfacer avec la carte de commande des moteurs

 – 1 connecteur I2C pour s'interfacer avec l'afficheur LCD

 – Un connecteur USB pour faire de la télémétrie entre le robot et un logiciel sur PC

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

http://etronics.free.fr/boutique/boutique.htm

Etape 4 : Le programme du PIC 18F2420

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 programme consiste à déclencher périodiquement (toutes les 52 ms) des mesures sur les 4 capteurs à ultrasons HC-SR04 et à envoyer ces mesures sur le bus I2C sur requête du PIC 18F2550. La tension mesurée sur le capteur de température LM35DZ est également envoyée sur le bus.

La périodicité et la durée des signaux de commande des capteurs HC-SR04 ainsi que les temps de réception des échos sont gérés à l'aide de timers et d'interruptions.

Le programme commande également des LED pour indiquer qu'un obstacle a été détecté par un des capteurs.


Etape 5 : Résultat final

Etape 6 : Le programme du PIC 18F2550

Les principaux traitements du robot sont effectués dans le programme du PIC 18F2550.

La première étape consiste à construire une représentation de l'environnement du robot à partir des mesures brutes fournies par le PIC 18F2420. Cette étape met en oeuvre une technique d'odométrie et aboutit à une liste de points (distance; angle) dans un repère dont l'origine est le robot. Ces points correspondent aux obstacles que le robot doit éviter.

Puis on estime le risque de collision avec ces obstacles. Tant que le risque est acceptable, le robot peut aller tout droit. Au-delà d'un seuil, il doit changer de direction. La direction présentant le risque le plus faible est choisie. Au pire, le robot peut faire marche arrière, voire s'arrêter si les risques de collision à l'arrière et à l'avant sont trop importants.

L'action choisie est transformée en signaux de commande vers la carte de commande des moteurs.

La vitesse de rotation de chaque roue est mesurée à partir des impulsions fournies par les encodeurs magnétiques fixés sur les moto-réducteurs. Ces mesures sont utilisées pour l'odométrie et pour asservir la vitesse du robot. L'asservissement de vitesse permet au robot d'aller en ligne droite quand il le faut.

Enfin, un certain nombre d'informations sur le robot sont affichées sur un écran LCD. Des boutons permettent de passer d'une page à l'autre.

Dans une autre version du firmware les informations sont transmises sur le port USB en utilisant le protocole HID. Elles peuvent alors être affichées et enregistrées sur un PC, puis rejouées ou exportées dans un fichier csv. Le programme sur PC est développé avec Microsoft Visual C++ 2010 Express.


Sources :

http://www.gotronic.fr

http://www.microchip.com

http://etronics.free.fr/boutique/boutique.htm (réalisation du circuit imprimé)


Ces tutoriels devraient vous plaire

vignette Connecter un  écran LCD en I2C
Connecter un écran LCD en I2C
vignette Fabriquer une lampe à lave
Fabriquer une lampe à lave
vignette L’imprimante 3D pour 60€: EWaste
L’imprimante 3D pour 60€: EWaste
avaatar Gerard31

Gerard31

Suivre

Vues: 1789
Mis en favoris: 3

Découvrez d'autres tutoriels de

Gerard31

Robot éviteur d’obstacles

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

Powered by Oui Are Makers