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.3. Le suivi de ligne en MLI double

Le programme précédent (MLI simple), permet de diminuer la vitesse d'un des moteurs.
Cela se traduit par une rotation du robot par rapport à une roue.
On peut améliorer le suivi de ligne en effectuant une rotation non pas par rapport à une roue, mais par rapport à l'axe central du robot.
Cela revient à réduire la vitesse d'un des moteurs pendant que l'on augmente la vitesse de l'autre.
Le facteur de correction de trajectoire est ainsi multiplié par 2.

 

Exemple de programme C  - MLI double

Le programme est identique au précédent seul change les valeurs des signaux MLI

    do
    {
        P1=0xFF;   
        capt = P1;
        switch (capt)    // codage de la position sur 4 capteurs
        {
           case 0x7F : mem2 = 0xF0; mem4 = 0x00;LED=1;break;   
           case 0x3F : mem2 = 0xE0; mem4 = 0x10;LED=1;break;   
           case 0xBF : mem2 = 0xD0; mem4 = 0x20;LED=1;break;   
           case 0x9F : mem2 = 0xC0; mem4 = 0x40;LED=1;break;   
           case 0xDF : mem2 = 0xB0; mem4 = 0x50;LED=1;break;   
           case 0xCF : mem2 = 0xA0; mem4 = 0x60;LED=1;break;   
           case 0xEF : mem2 = 0x90; mem4 = 0x70;LED=0;break;
           case 0xE7 : mem2 = 0x80; mem4 = 0x80;LED=0;break; //centre   
           case 0xF7 : mem2 = 0x70; mem4 = 0x90;LED=0;break;   
           case 0xF3 : mem2 = 0x60; mem4 = 0xA0;LED=1;break;   
           case 0xFB : mem2 = 0x50; mem4 = 0xB0;LED=1;break;   
           case 0xF9 : mem2 = 0x40; mem4 = 0xC0;LED=1;break;
           case 0xFD : mem2 = 0x20; mem4 = 0xD0;LED=1;break;   
           case 0xFC : mem2 = 0x10; mem4 = 0xE0;LED=1;break;   
           case 0xFE : mem2 = 0x00; mem4 = 0xF0;LED=1;break;
        }
        mem1=(255-mem2);
        mem3=(255-mem4);   
    }
    while(1);

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