Orientation d’un robot domestique
Orientation d’un robot domestique
Objectif
Réaliser un robot capable de s’orienter et d’éviter des obstacles comme le ferait un robot aspirateur.
Participer à un challenge
Savoirs abordés et Capacités mises en œuvre
Algorithmique
Utilisation d’un microcontrôleur
Installation de détecteurs de contact
Utilisation d’un capteur permettant l’orientation (détecteur IR ou compas)
Optimisation du comportement du robot.
Moyens
Carte Arduino
Motoréducteurs
Capteur ultrason
Carnet de bord
Montage du robot Feetech
Modélisation du support de pile
Modélisation des capteurs IR et de la carte moteurs
Modélisation du support de cartes électroniques
Modélisation des disques des codeurs incrémentaux
Fonctionnement
1ere partie :
Tout d’abord, nous allons commencer par étudier la partie arrière de notre robot,
Nous observons ici l’emplacement de la pile, la tension de la pile est ensuite transformée par un hacheur de tension (3,7 Volt -> 8 Volt)
2eme partie :
Nous allons étudier la seconde partie de notre robot feetech, nous observons ici la carte arduino qui est l’élément majeur de notre robot. Cette carte arduino est reliée à plusieurs composants qui permettent le fonctionnement de notre robot, nous observons un port USB qui permet de programmer la carte arduino, nous expliquerons le fonctionnement de la carte arduino dans une prochaine étape plus détaillée.
3eme partie :
Nous observons la partie inférieure du prototype, plus précisément des codeurs qui permettent de mesurer la vitesse grâce à la détection de la lumière par la LED.
Programmation de la carte Arduino : gestion des moteurs
const int AIA = 3; //broche A-1A branchée sur la broche 3 de l’Arduino const int AIB = 4; const int BIA = 6; const int BIB = 5; byte speed = 255 ; //vitesse (0=0% ; 255=100%) void setup() { pinMode(AIA, OUTPUT); pinMode(AIB, OUTPUT); pinMode(BIA, OUTPUT); pinMode(BIB, OUTPUT); } void loop() { AVANT(); //Appel fonction marche avant delay(2000); ARRIERE(); //Appel fonction marche arriere delay(2000); } void ARRIERE() { digitalWrite(AIA, LOW); analogWrite(AIB, speed); digitalWrite(BIA, LOW); analogWrite(BIB, speed); } void AVANT() { analogWrite(AIA, speed); digitalWrite(AIB, LOW); analogWrite(BIA, speed); digitalWrite(BIB, LOW); }
Programmation de la carte Arduino : Données des codeurs incrémentaux
Principe :
On utilise une interruption, provoquée par le codeur, pour incrémenter un compteur. Plus la roue va tourner vite, plus le compteur va s’incrémenter rapidement.
Programmation de la carte Arduino : Calcul de la vitesse des roues
d’ou le programme s’exécutant sur un front montant sur la broche connecté au codeur :
void Codeur_G() { vit_g=map(1e6/(micros()-t_g),0,90,0,255); //Calcul de la vitesse en impulsions/s et transformée pour s'étendre sur une plage variant de 0 à 255 ++pos_g; t_g=micros(); }