Robotique : Construction d'un robot suiveur de lumière

boule_bl.gifPrésentation

boule_bl.gifCe robot s'oriente en fonction de l'intensité de la lumière qu'il reçoit. On peut le diriger avec une lampe.
2 diodes Pin I.R. permettent de comparer l'intensité lumineuse.

boule_bl.gifIl posséde 2 capteurs d'obstacles. Un bip sonore est émis lorqu'un obstacle est touché et le robot procéde à une procédure d'évitement.

boule_bl.gifIl est propulsé par 2 servos modifiés à rotation continue .

robot synoptique

boule_bl.gifL' électronique

boule_bl.gifLe coeur du montage est basé sur un microcontrôleur AT90S2313 de ATMEL.

boule_bl.gifLa programmation se fait in situ (en circuit) par l'intermédiaire du connecteur K1.

boule_bl.gifL'alimentation utilise 6 accus de 1,25 v NI- MH, type R6.

boule_bl.gifCI1 assure l'alimentation en 5V pour le microcontrôleur. Les servos fonctionnent en 7,5V.

boule_bl.gifD3 et D4 indiquent d'où provient la lumière.

boule_bl.gifS1 et S2 sont les 2 microswitchs détectant les obstacles.

boule_bl.gifLes servos modifiés peuvent être commandés sur le site de Robotshop .

boule_bl.gif

La construction

boule_bl.gifLe circuit étant peu complexe j'ai utilisé une plaquette d'expérimentation à trous pastillés.

boule_bl.gifLes diodes pin sont à placer vers l'avant et il faut prévoir une cloison pour bien séparer les 2 capteurs de lumière.

boule_bl.gifLe châssis est réalisé en PVC expansé 3 mm, les 2 côtés sont pliés et possédent des ouvertures pour laisser passer les servos .

boule_bl.gifLes servos sont fixés par des colliers de serrage pour câbles électriques.

boule_bl.gifEn dessous du châssis se placent les 2 microswitchs et les 2 servos.

boule_bl.gifUne roulette à bille permet la rotation aisée du robot.

boule_bl.gifLe coupleur de piles peut se placer sous le circuit. Il faut prévoir des entretoises assez longues.

boule_bl.gifSur les microswitchs, on peut coller une plaque métallique pour prolonger la lamelle.

boule_bl.gif La programmation

boule_bl.gifLa programmation se fait en basic avec le logiciel BASCOM AVR (version d'évaluation). Le fichier HEX n'occupe que 2 Ko. ce logiciel est disponible sur le site de MCS electronics.

boule_bl.gifLe microcontrôleur se programme aisément in situ, j'utilise un programmateur USB compatible MK2, voir la page de programmation.

boule_bl.gifLe programme utilise l'entrée de comparaison PB1 et règle le registre. Les servos sont mis en rotation avec 2 vitesses différentes en fonction de la source de lumière. Le robot avance en louvoyant. Si un interrupteur est actionné ( obstacle ), le programme exécute une routine d'évitement.

   
' Robot chercheur de lumière
' JMD 18/11/2007

$regfile = "2313DEF.dat"
Dim T As Integer

Ddrb.0 = 0                                                  'Comparateur Diode Pin
Ddrb.1 = 0                                                  'Comparateur référence
Ddrb.2 = 1                                                  'Led 1
Ddrb.3 = 1
Ddrb.4 = 1                                                  'Led 2
Ddrd.0 = 1                                                  'Servo 1
Ddrd.1 = 1                                                  'Servo 2
Ddrd.4 = 0                                                  'Inter 1
Ddrd.5 = 0                                                  'Inter 2


For T = 0 To 4
   Portb.2 = 0
   Portb.3 = 1
Waitms 300
   Portb.3 = 0
   Portb.2 = 1
   Sound Portb.4 , 50 , 4000
Waitms 300
Next T

Config Servos = 2 , Servo1 = Portd.0 , Servo2 = Portd.1 , Reload = 10

Enable Interrupts
$crystal = 8000000
Portd.4 = 1
Portd.5 = 1


' Servo (1) = 80, Servo(2)=170 Marche avant
Do
   If Pind.5 = 0 Then Gosub Retourd
   If Pind.4 = 0 Then Gosub Retourg

   If Acsr.5 = 1 Then                                       ' Bit 5 Registre  comparateur
      Servo(1) = 80
      Servo(2) = 170
      Portb.2 = 1
      Portb.3 = 0
      Waitms 50
      Servo(1) = 170
      Servo(2) = 170
      Waitms 20

   Else
      Servo(1) = 80
      Servo(2) = 170
      Portb.2 = 0
      Portb.3 = 1
      Waitms 50
      Servo(2) = 80
      Servo(1) = 80
      Waitms 20


   End If
Loop

Retourd:
   Servo(1) = 170
   Servo(2) = 80
   Sound Portb.4 , 100 , 250
   Waitms 300
   Servo(1) = 80
   Portb.2 = 1
   Portb.3 = 0
   Waitms 250
Return

Retourg:
   Servo(1) = 170
   Servo(2) = 80
   Sound Portb.4 , 100 , 250
   Waitms 300
   Servo(2) = 170
   Portb.2 = 1
   Portb.3 = 0
   Waitms 250
Return
		  

boule_bl.gifLes fichiers à télécharger

Dossier de réalisation en PDF et programme