Apprendre autrement.... Robot Opto-guidé
Chapitre 1. La problématique du robot opto-guidé
Chapitre 2. La mécanique
Chapitre 3. L'électronique
Chapitre 4. Les algorithmes de suivi de ligne et la programmation
4.1. Le suivi de ligne en tout-ou-rien
4.2. Le suivi de ligne en MLI simple
4.3. Le suivi de ligne en MLI double
4.4. Le suivi de ligne en quatre quadrants
Chapitre 5. Conclusion
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

4.1. Le suivi de ligne en tout-ou-rien

L'algorithme de suivi de ligne le plus simple consiste à bloquer l'un des deux moteurs dès que le robot s'écarte de la ligne.
Il ne faut pas s'attendre à des performances exceptionnelles avec ce type d'algorithme
mais le suivi est possible et l'on peut se contenter dans l'asolu de deux capteurs.

 

Représentation graphique de la correction de trajection en fonction de l'écart par rapport à la ligne

Algorithme Tout ou Rien      Exemple de programme C

 

#pragma symbols code debug objectextend optimize(4)
#include <reg51.h>
#include <stdio.h>

//commandes par transistors MosFet

sbit MD=P3^1;
sbit MG=P3^0;
sbit LED=P3^5;

// Procédures d'interruptions

void STOP (void);        // Int0 Fin de course

//Prog principal

void main (void)
{
  P1=0xFF;   

  //INITs interruptions
  EX0=1;IT0=0;EA=1;

  //Programme de suivi de ligne tout ou rien
  do   
  {
  P1 = 0xFF;
  capt = P1;
  switch (capt)    // codage de la position
   {
   case 0x7F : MD=1;MG=0;LED=1;break;   
   case 0x3F : MD=1;MG=0;LED=1;break;   
   case 0xBF : MD=1;MG=0;LED=1;break;   
   case 0x9F : MD=1;MG=0;LED=1;break;    // Arret moteur Gauche
   case 0xDF : MD=1;MG=0;LED=1;break;   
   case 0xCF : MD=1;MG=0;LED=1;break;   
   case 0xEF : MD=1;MG=1;LED=0;break;   
   case 0xE7 : MD=1;MG=1;LED=0;break;    //position centrale
   case 0xF7 : MD=1;MG=1;LED=0;break;   
   case 0xF3 : MD=0;MG=1;LED=1;break;
   case 0xFB : MD=0;MG=1;LED=1;break;   
   case 0xF9 : MD=0;MG=1;LED=1;break;    // Arret moteur Droit
   case 0xFD : MD=0;MG=1;LED=1;break;   
   case 0xFC : MD=0;MG=1;LED=1;break;   
   case 0xFE : MD=0;MG=1;LED=1;break;
   }
  }
  while(1);
}
// ****************************************************
void STOP (void) interrupt 0    //Arret
{
  MD=0;MG=0;
  for (;;);
}

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante