La programmation d’un robot suiveur de ligne est la prochaine étape que vous devez faire après sa construction. Ceci est un suivi de mon article précédent Robot suiveur de ligne – Construisez-le à partir de zéro. Si vous ne l’avez pas déjà lu, je vous suggère de le lire avant de continuer dans ce post.

Quand il s’agit de programmer un robot suiveur de ligne, cela ne signifie pas que vous pouvez simplement copier et coller beaucoup de code à partir d’un seul endroit et dire que vous avez terminé la programmation. Vous devez calibrer le code pour qu’il fonctionne correctement avec le matériel que vous avez construit. La première étape de la programmation est donc de créer une piste de démonstration. Cela vous aidera à tester votre code sur place. Voici le morceau que j’ai construit pour ma bande-annonce.

espace de travail

La ligne mesure un peu plus de 3,5 cm de largeur et a presque tous les virages et virages possibles. J’ai utilisé un papier cartonné noir pour faire la piste et l’ai collé sur du blanc. Vous pouvez proposer vos propres idées innovantes, mais c’est la méthode la plus simple à laquelle je puisse penser. Si vous avez une meilleure idée, écrivez un commentaire.

La prochaine étape consiste à vous asseoir avec un stylo et du papier et à lire la piste que vous venez de faire. Si vous aviez utilisé le schéma de circuit que j’ai envoyé, ou quelque chose de similaire, vous devriez avoir des LED d’indication à la fin des comparateurs comme celui-ci,

carte de capteur suiveur de ligne

J’ai placé les LED de sortie (vertes) directement au-dessus du capteur de ligne pour éviter toute confusion. Cela a rendu ma table vraiment mauvaise. Encore une fois, un compromis entre le look et la fonctionnalité a été de choisir la fonctionnalité. C’est vraiment utile si ces LED sont juste au-dessus des capteurs.

L’émetteur IR émet un faisceau IR constant. La surface blanche reflète la majeure partie du faisceau, tandis que la surface noire absorbe la majeure partie du faisceau. Ce faisceau réfléchi est capté par le détecteur IR et sa conduction augmente et donc une variation de tension dans la broche de sortie (0v pour l’absence de rayons IR et 5V pour l’intensité maximale). Ceci est donné au comparateur pour comparer avec un signal de référence généré par le potentiomètre. Comment détecter la ligne des capteurs.

De retour à l’article, placez le bot sur la ligne et voyez ce qu’il lit pour différentes positions sur la ligne. Assurez-vous que la ligne est toujours détectée par au moins un capteur si elle est à portée des trois capteurs. C’est quelque chose auquel vous devez être extrêmement prudent. J’ai même mentionné dans mon article précédent que la distance maximale entre les capteurs ne doit pas dépasser la largeur de la ligne.

Avec les valeurs d’étalonnage à portée de main, vous pouvez commencer à programmer votre robot. Dans votre boucle while (1), vous devriez avoir une série d’instructions if qui mesurent ces conditions calibrées et apportent des changements de direction en conséquence.

Supposons que ce sont les quatre seules conditions possibles pour la compréhension. Les points rouges sont les capteurs juste au-dessus de la ligne noire et les verts sont sur le fond blanc.

logique du capteur suiveur de ligne

Le cas 1 est celui où le robot doit avancer, car seul le capteur central est bas. De même, le cas 2 est à droite, le cas 3 est à gauche et le cas 4 s’arrête lorsque tous les capteurs lisent à haute voix. Voici à quoi devrait ressembler votre code (les termes, LEFT_SENSOR, RIGHT_SENSOR, CENTER_SENSOR, GO_FRONT, TURN_RIGHT, TURN_LEFT, STOP sont tous des macros de code pour la broche correspondante dans le microcontrôleur).

while (1)
{
    if((LEFT_SENSOR==1)&&(CENTER_SENSOR==0)&&(RIGHT_SENSOR==1))
        LATB |= GO_FRONT; // Case 1
    if ((LEFT_SENSOR==0)&&(CENTER_SENSOR==1)&&(RIGHT_SENSOR==1))
        LATB |= TURN_RIGHT // Case 2
    if ((LEFT_SENSOR==1)&&(CENTER_SENSOR==1)&&(RIGHT_SENSOR==0))
        LATB |= TURN_LEFT // Case 3
    if ((LEFT_SENSOR==1)&&(CENTER_SENSOR==1)&&(RIGHT_SENSOR==1))
        LATB |= STOP; // case 4
}

Ce code doit être valable pour toute piste linéaire avec des virages normaux. Mais cela ne fonctionne pas si votre piste est à angle droit. C’est à ce moment que nous devons ajouter plus de logique à l’existant.

Disons que vous faites face à un angle droit. Que liraient vos données de capteur? Le capteur central avec l’un des deux capteurs latéraux affichera LOW. C’est à ce moment que vous devez ajuster un peu la logique directionnelle.

troncs à angle droit à angle vif

Vous devez maintenant définir deux types de virages à gauche. L’un d’eux fera tourner votre moteur droit vers l’avant et le moteur gauche vers l’arrière. Appelez cela « Power Left » car il tourne à gauche assez rapidement. La seconde consiste à faire tourner le moteur droit vers l’avant tandis que celui de gauche ne tourne pas du tout. Appelez simplement cela « Gauche ». Faites de même avec la logique de virage à droite.

Dans des conditions normales, tournez “Gauche” ou “Droite”. Lorsqu’un bot rencontre un virage à droite ou un virage serré, utilisez « Power Left » et « Power Right » de cette manière, votre bot répondra plus rapidement à ces cas et agira en conséquence. Maintenant, votre code doit également avoir ces lignes,

if ((LEFT_SENSOR==0)&&(CENTER_SENSOR==0)&&(RIGHT_SENSOR==1))
    LATB |= POWER_RIGHT  // Case 2
if ((LEFT_SENSOR==1)&&(CENTER_SENSOR==0)&&(RIGHT_SENSOR==0))
    LATB |= POWER_LEFT   // Case 3

En ajoutant cette logique à votre contrôleur, vous pourrez vous attaquer à toutes sortes de virages et de virages dans une piste linéaire, mais vous ne pourrez pas l’utiliser sur des pistes comportant des croisements et des discontinuités. Presque aucun des événements de la tendance actuelle ne vous donne un indice aussi simple. Ne vous fâchez pas, nous discutons de certains des indices les plus courants et de la façon de les corriger dans mes messages ultérieurs.

La plupart du temps, votre robot aura des croix «T» et «X» sur la piste. Vous devrez peut-être survivre à une discontinuité finale dans la piste ou détecter des modèles dans la piste pour effectuer d’autres tâches (comme allumer une LED ou régler une alarme dans le buzzer). Certains d’entre eux ont même une inversion de logique (on vous demande de suivre soudainement la ligne blanche sur fond noir :-)).

Ce n’est que le début du robot de suivi de ligne. Il existe de nombreuses difficultés possibles qui peuvent être définies pour vous dans une compétition. Tout ne peut pas être discuté ici. Mais nous discuterons de certains des plus courants (énumérés ci-dessus) dans les prochains articles.

Nous mettrons un accent particulier sur le robot de résolution de chemin le plus court dans un proche avenir. Votre robot doit aller de la source à la destination en parcourant n’importe quelle distance, mais revenir à la source à partir de la destination, mais uniquement par le chemin le plus court. Ce sont les types de robots que la plupart des gens ont du mal à programmer, et il n’y a pas beaucoup de tutoriels en ligne pour ce type.

Laisser un commentaire

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