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

La 1ere version :

La version finale :

 

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();
}

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *