- Matériaux nécessaires:
- Concept de robot évitant les obstacles:
- Schéma de circuit et explication:
- Programmation de votre microcontrôleur PIC:
- Robot évitant les obstacles en action:
Obstacle Avoider Robot est un autre robot célèbre qui pimente les projets embarqués. Pour ceux qui sont un nouveau robot d'évitement d'obstacles, il s'agit simplement d'un robot à roues normal qui pourrait naviguer sans heurter aucun obstacle. Il existe de nombreuses façons de construire un robot d'évitement d'obstacles dans le projet, nous allons utiliser un capteur à ultrasons (avant) et deux capteurs IR (gauche / droite) afin que notre robot ait des yeux dans les trois directions. De cette façon, vous pouvez le rendre beaucoup plus intelligent et plus rapide en détectant les objets des trois côtés et en manœuvrant en conséquence. Ici, nous poursuivons le microcontrôleur PIC PIC16F877A pour ce robot évitant les obstacles.
Le fonctionnement d'un robot évitant les obstacles peut être observé à partir d'un produit en temps réel appelé robots de nettoyage domestique. Bien que la technologie et les capteurs utilisés dans ceux-ci soient très compliqués, le concept reste le même. Voyons tout ce que nous pouvons accomplir en utilisant nos capteurs normaux et nos microcontrôleurs PIC.
Consultez également nos autres robots évitant les obstacles:
- Robot évitant les obstacles basé sur Raspberry Pi
- Robot de nettoyage intelligent bricolage utilisant Arduino
Matériaux nécessaires:
- PIC16F877A
- Capteur IR (2Nos)
- Capteur à ultrasons (1Nos)
- Moteur à engrenages CC (2Nos)
- Pilote de moteur L293D
- Chaises (vous pouvez également créer les vôtres en utilisant des cartons)
- Banque d'alimentation (toute source d'alimentation disponible)
Concept de robot évitant les obstacles:
Le concept de Obstacle Evoiding Robot est très simple. Nous utilisons des capteurs pour détecter la présence d'objets autour du robot et utilisons ces données pour ne pas heurter le robot sur ces objets. Pour détecter un objet, nous pouvons utiliser n'importe quel capteur d'utilisation comme le capteur IR et le capteur à ultrasons.
Dans notre robot, nous avons utilisé le capteur américain comme capteur avant et deux capteurs IR pour la gauche et la droite respectivement. Le robot avancera lorsqu'il n'y aura pas d'objet devant lui. Ainsi, le robot avancera jusqu'à ce que le capteur à ultrasons (US) détecte un objet.
Lorsqu'un objet est détecté par le capteur américain, il est temps de changer la direction du robot. Nous pouvons tourner à gauche ou à droite, pour décider du sens de rotation, nous utilisons l'aide du capteur IR pour vérifier s'il y a un objet présent près du côté gauche ou droit du robot.
Si un objet est détecté sur le côté avant et droit du robot, le robot reviendra et tournera à gauche. On fait reculer le robot sur une certaine distance pour qu'il ne heurte pas l'objet lors du virage.
S'il y a un objet détecté sur le côté avant et gauche du robot, le robot reviendra et tournera à droite.
Si le robot atteint un coin de la pièce, il détectera l'objet présent dans les quatre. Dans ce cas, nous devons faire reculer le robot jusqu'à ce que l'un des côtés se libère.
Un autre cas possible est qu'il y aura un objet devant mais il se peut qu'il n'y ait aucun objet ni sur le côté gauche ni sur le côté droit, dans ce cas, nous devons tourner au hasard dans l'une des directions.
J'espère que cela aurait donné une idée approximative du fonctionnement d'un évitant d'obstacles, passons maintenant au schéma de circuit pour construire ce bot et en profiter en action.
Schéma de circuit et explication:
Le schéma de circuit complet du robot évitant les obstacles basé sur le PIC est montré dans l'image ci-dessus. Comme vous pouvez le voir, nous avons utilisé deux capteurs infrarouges pour détecter les objets respectivement à gauche et à droite du robot et un capteur ultrasonique pour mesurer la distance de l'objet présent devant le robot. Nous avons également utilisé un module de pilotage de moteur L293D pour piloter les deux moteurs présents dans ce projet. Ce ne sont que des moteurs à engrenages CC ordinaires pour roues et peuvent donc être dérivés très facilement. Le tableau suivant vous aidera dans les connexions.
S. Non |
Connecté depuis |
Connecté à |
1 |
Capteur IR Broche gauche |
RD2 (broche 21) |
2 |
Capteur IR Broche de sortie droite |
RD3 (broche 22) |
4 |
Broche du canal A du moteur 1 |
RC4 (broche 23) |
5 |
Broche du canal B du moteur 1 |
RC5 (broche 25) |
6 |
Broche du canal A du moteur 2 |
RC6 (broche 26) |
sept |
Broche du canal B du moteur 2 |
RC7 (broche 27) |
8 |
Pin de déclenchement américain |
RB1 (broche 34) |
9 |
Pin d'écho américain |
RB2 (broche 35) |
Un module de pilote de moteur tel que L293D est obligatoire car la quantité de courant requise pour faire fonctionner le motoréducteur CC ne peut pas être fournie par la broche d'E / S du microcontrôleur PIC. Les capteurs et le module sont alimentés par l'alimentation + 5V qui est régulée par le 7805. Le module de pilotage du moteur peut être alimenté même en utilisant + 12V, mais pour ce projet, je viens de coller au + 5V disponible.
Le robot complet est alimenté par une banque d'alimentation dans mon cas. Vous pouvez également utiliser n'importe quelle banque d'alimentation ordinaire et contourner la section régulateur ou utiliser le circuit ci-dessus et utiliser n'importe quelle batterie 9V ou 12V pour le robot comme indiqué dans le schéma de circuit ci-dessus. Une fois vos connexions effectuées, cela ressemblerait à ceci ci-dessous
Programmation de votre microcontrôleur PIC:
Programmer votre PIC pour qu'il fonctionne pour un évitant d'obstacles est vraiment facile. Il suffit de lire la valeur de ces trois capteurs et de piloter les moteurs en conséquence. Dans ce projet, nous utilisons un capteur à ultrasons. Nous avons déjà appris comment interfacer les ultrasons avec le microcontrôleur PIC.Si vous êtes nouveau ici, veuillez vous référer à ce tutoriel pour comprendre comment un capteur américain fonctionne avec un PIC, car je vais sauter les détails à ce sujet ici pour éviter la répétition.
Le programme complet ou ce Robot est donné à la fin de cette page, j'ai expliqué plus en détail les morceaux importants du programme ci-dessous.
Comme nous le savons, tous les programmes commencent par les déclarations des broches d'entrée et de sortie. Ici, les quatre broches du module de commande de moteur et les broches de déclenchement sont les broches de sortie, tandis que la broche d'écho et deux broches de sortie IR seront entrées. Nous devons initialiser le module Timer 1 pour l'utiliser avec le capteur à ultrasons.
TRISD = 0x00; // PORTD déclaré comme sortie pour l'interface LCD TRISB1 = 0; // La broche de déclenchement du capteur US est envoyée comme broche de sortie TRISB2 = 1; // La broche d'écho du capteur US est définie comme broche d'entrée TRISB3 = 0; // RB3 est la broche de sortie pour la LED TRISD2 = 1; TRISD3 = 1; // Les deux broches du capteur IR sont déclarées comme entrée TRISC4 = 0; TRISC5 = 0; // Broches du moteur 1 déclarées comme sortie TRISC6 = 0; TRISC7 = 0; // Moteur 2 broches déclaré comme sortie T1CON = 0x20;
Dans ce programme, nous devions vérifier la distance entre le capteur et l'objet assez souvent, nous avons donc créé une fonction nommée Calculate_distance () à l' intérieur de laquelle nous mesurerons la distance par la méthode décrite dans le didacticiel d'interfaçage de capteur américain. Le code est affiché ci-dessous
void Calculate_distance () // fonction pour calculer la distance de US {TMR1H = 0; TMR1L = 0; // efface les bits du minuteur Trigger = 1; __delay_us (10); Déclencheur = 0; tandis que (Echo == 0); TMR1ON = 1; tandis que (Echo == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); distance = (0,0272 * prise de temps) / 2; }
La prochaine étape serait de comparer les valeurs du capteur à ultrasons et du capteur IR et de déplacer le robot en conséquence. Ici, dans ce programme, j'ai utilisé une valeur de cm comme distance critique en dessous de laquelle le robot doit commencer à modifier la direction. Vous pouvez utiliser vos valeurs préférées. S'il n'y a pas d'objet, le robot avance simplement
si (distance> 5) {RC4 = 0; RC5 = 1; // Moteur 1 avant RC6 = 1; RC7 = 0; // Moteur 2 en avant}
Si un objet est détecté, la distance descendra en dessous de cm. Dans ce cas, nous considérons les valeurs du capteur ultrasonique gauche et droit. Sur la base de cette valeur, nous décidons de tourner à gauche ou à droite. Un retard de ms est utilisé pour que le changement de direction soit visible.
if (RD2 == 0 && RD3 == 1 && distance <= 5) // Le capteur gauche est bloqué {back_off (); RC4 = 1; RC5 = 1; // Arrêt moteur 1 RC6 = 1; RC7 = 0; // Moteur 2 avant __delay_ms (500); } calculer_distance (); if (RD2 == 1 && RD3 == 0 && distance <= 5) // Le capteur droit est bloqué {back_off (); RC4 = 0; RC5 = 1; // Moteur 1 avant RC6 = 1; RC7 = 1; // Arrêt du moteur 2 __delay_ms (500); }
Parfois, le capteur à ultrasons détecte un objet, mais aucun objet n'est détecté par les capteurs infrarouges. Dans ce cas, le robot tourne à gauche par défaut. Vous pouvez également le faire tourner à droite ou dans une direction aléatoire en fonction de vos préférences. S'il y a des objets des deux côtés, nous le faisons reculer. Le code pour faire de même est indiqué ci-dessous.
calculer_distance (); if (RD2 == 0 && RD3 == 0 && distance <= 5) // Les deux capteurs sont ouverts {back_off (); RC4 = 0; RC5 = 1; // Moteur 1 avant RC6 = 1; RC7 = 1; // Arrêt du moteur 2 __delay_ms (500); } calculer_distance (); if (RD2 == 1 && RD3 == 1 && distance <= 5) // Les deux capteurs sont bloqués {back_off (); RC4 = 1; RC5 = 0; // Moteur 1 inversé RC6 = 1; RC7 = 1; // Arrêt du moteur 2 __delay_ms (1000); }
Robot évitant les obstacles en action:
Le fonctionnement du projet est très intéressant et amusant à regarder. Une fois que vous avez terminé avec votre circuit et votre code, allumez simplement votre Bot et laissez-le au sol. Il doit être capable d'identifier les obstacles et de les éviter intelligemment. Mais voici la partie amusante. Vous pouvez modifier le code et lui faire faire plus de choses, comme éviter un escalier, le rendre plus intelligent en stockant des virages précieux et que faire?
Ce robot vous aidera à comprendre les bases de la programmation et à apprendre comment un matériel réel répondra à votre code. Il est toujours amusant de programmer ce robot et de regarder comment il se comporte pour le code dans le monde réel.
Ici, nous avons utilisé la même carte PIC perf que nous avons créée pour le clignotement des LED à l'aide du microcontrôleur PIC et utilisé cette carte dans d'autres projets de la série Tutorial PIC.
Votre robot devrait ressembler à celui montré dans l'image ci-dessus. Le fonctionnement complet de ce projet est montré dans la vidéo ci-dessous.
J'espère que vous avez compris le projet et que vous avez aimé en construire un. Si vous avez des doutes ou si vous êtes bloqué, vous pouvez utiliser la section commentaires pour poster vos questions et je ferai de mon mieux pour y répondre.