- Concept de robot suiveur de ligne
- Composants requis
- Schéma
- Programmation Atmega16 pour robot suiveur de ligne
Ici, nous allons construire encore un autre projet avec AVR Atmega16 Microcontroller. Si vous êtes nouveau dans les microcontrôleurs AVR, vous pouvez vous référer aux projets et tutoriels AVR précédents.
Construire un robot est toujours un plaisir pour tous les amateurs d'électronique. Et ce frisson peut être maximisé si le robot peut faire automatiquement certaines choses sans aucune instruction externe. L'un des robots les plus couramment construits par les débutants en électronique est le robot suiveur de ligne. Comme son nom l'indique, le robot suivra la ligne tracée sur la surface. La ligne n'a pas besoin d'être une ligne droite. En outre, les lignes peuvent être de toutes les couleurs.
Nous avons précédemment construit des projets de robot suiveur de ligne en utilisant différents contrôleurs:
- Robot suiveur de ligne utilisant le microcontrôleur 8051
- Robot suiveur de ligne utilisant le microcontrôleur PIC
- Robot suiveur de ligne utilisant Arduino
- Robot suiveur de ligne utilisant Raspberry Pi
- Robot suiveur de ligne utilisant le Launchpad MSP430
Aujourd'hui, nous allons utiliser le microcontrôleur AVR pour construire un robot suiveur de ligne.
La plupart des capteurs IR sont utilisés pour détecter les lignes. Les capteurs IR sont efficaces pour détecter les surfaces blanches ou noires. Bien que vous puissiez utiliser d'autres capteurs sophistiqués qui seront capables de détecter toutes les couleurs et de fabriquer un robot capable de suivre toutes les lignes de couleur. Le robot devrait être capable de détecter la ligne même si la trajectoire est modifiée en changeant l'angle et de continuer à suivre la ligne. De plus, il devrait s'arrêter là où la zone d'arrêt entre dans la ligne.
Les robots suiveurs de ligne sont aujourd'hui largement utilisés dans les industries de fabrication, les applications médicales, domestiques et les entrepôts de marchandises. Les robots ne sont pas limités à ces seules applications et peuvent étendre ses applications dans de nombreuses applications futures.
Concept de robot suiveur de ligne
Les capteurs IR sont des acteurs clés de ce projet. Des capteurs infrarouges sont placés à l'avant du robot pour suivre la ligne noire dessinée et la surface. Le robot est placé entre la ligne et à l'aide de capteurs infrarouges, le robot garde la trace de la ligne. Les capteurs IR transmettent la lecture au microcontrôleur et à l'aide de la lecture IR, le microcontrôleur déplace les moteurs du côté gauche ou du côté droit et amène à nouveau le robot sur le chemin.
Le robot suiveur de ligne est capable de suivre une ligne à l'aide d'un capteur infrarouge. Ce capteur a un émetteur IR et un récepteur IR. L'émetteur IR (LED IR) transmet la lumière et le récepteur (photodiode) attend que la lumière transmise revienne. Une lumière infrarouge ne reviendra que si elle est réfléchie par une surface. Alors que toutes les surfaces ne reflètent pas une lumière infrarouge, seul le blanc la surface de couleur peut les refléter complètement et la surface de couleur noire les observera complètement, comme indiqué dans la figure ci-dessous. En savoir plus sur le module de capteur IR ici.
Nous allons maintenant utiliser deux capteurs infrarouges pour vérifier si le robot est en piste avec la ligne et deux moteurs pour corriger le robot s'il sort de la piste. Ces moteurs nécessitent un courant élevé et doivent être bidirectionnels; par conséquent, nous utilisons un module de pilote de moteur comme L293D. Nous aurons également besoin d'un microcontrôleur comme ATmega16 pour instruire les moteurs en fonction des valeurs du capteur IR. Un schéma de principe simplifié de celui-ci est présenté ci-dessous.
Ces deux capteurs IR seront placés un de chaque côté de la ligne. Si aucun des capteurs ne détecte de ligne noire, le microcontrôleur AVR demande aux moteurs d'avancer comme indiqué ci-dessous
Si le capteur gauche arrive sur une ligne noire, le microcontrôleur demande au robot de tourner à gauche en faisant tourner la roue droite seule.
Si le capteur droit arrive sur la ligne noire, le microcontrôleur demande au robot de tourner à droite en faisant tourner la roue gauche seule.
Si les deux capteurs apparaissent sur la ligne noire, le robot s'arrête.
De cette façon, le robot pourra suivre la ligne sans sortir de la piste. Voyons maintenant à quoi ressemble le circuit et le code.
Composants requis
- Moteurs à engrenages CC (2 unités)
- Module de capteur IR (2 unités)
- Module L293D
- Source d'alimentation sans fil (par exemple, batterie, banque d'alimentation)
- Chaises de robot
- CI microcontrôleur Atmega16
- Oscillateur à cristal 16Mhz
- Deux condensateurs 100nF
- Deux condensateurs 22pF
- Bouton poussoir
- Fils de cavalier
- Planche à pain
- USBASP v2.0 (pour programmer Atmega16)
Schéma
Connectez tous les composants comme indiqué ci-dessous dans le schéma de circuit
Programmation Atmega16 pour robot suiveur de ligne
Ici, l'Atmega16 est programmé en utilisant USBASP et Atmel Studio7.0. Si vous ne savez pas comment Atmega16 peut être programmé en utilisant USBASP, visitez le lien. Le programme complet est donné à la fin du projet, il suffit de télécharger le programme dans Atmega16 en utilisant le programmeur JTAG et Atmel Studio 7.0 comme expliqué dans le tutoriel précédent.
Nous avons essayé de garder le code aussi court et simple que possible. Nous utilisons donc des macros et des registres de fonctions spéciales dans ce code.
if (bit_is_clear (PINA , leftSen)) { // vérifier si le capteur gauche est désactivé
Cette instruction vérifie si le PA0 auquel le capteur gauche est connecté est LOW ou HIGH.
Si vous souhaitez en savoir plus sur cette instruction et d'autres macros, accédez à ce lien
Il y a quatre conditions que nous suivons pour lire les capteurs infrarouges. Les capteurs infrarouges sont nommés en fonction de leur emplacement devant le robot. L'IR gauche est le capteur gauche et l'IR droit est le capteur droit. Les conditions suivantes décideront du mouvement du robot.
Nous avons écrit le code selon les conditions ci-dessus. Le seul changement est que nous n'utilisons que deux broches d'entrée du L293D pour piloter les deux moteurs.
Le code complet avec une vidéo de démonstration est donné ci-dessous.