THÈME :
<< A-ROBOT >>>
PARTIE GENIE ELECTRIQUE

Câblage électrique

 Pour le bon fonctionnement du A-robot, nous avons mis le "Control-Boy" sur le châssis. Le "Control-Boy" nous permettra de donner un sens de direction: _avancer _reculer _tourner à droite _tourner à gauche au A-robot et de pouvoir le piloter grâce à une télécommande HF 41Mhz 

ENTRÉE SORTIE COMPOSANT
A7 ; A0   récepteur 
  A4 servo-moteur
A1    moustache droite
A2   moustache gauche
  B3 relais 1
  B4 relais 2
12V   alimentation

Pour cela nous avons câblé le servo-moteur et le récepteur de la télécommande sur le "Control-Boy", et pour donner un sens au moteur nous l'avons câblé avec des relais.

                  

              Le sens des relais                 

Schéma du câblage

Voici les schémas structurels des parties du A-robot.

schéma structurel du servo-moteur.

 

schéma structurel des relais.

schéma structurel du moteur.

 

Schéma des relais

 

' programme AROBOT g7cagal2 commandé par récepteur 41Mhz
' 29-04-2003
' élèves: CAPREDON Julien, Gaze ludovic, LAI-SHUN Anaël


#include "start.bas"

BYTE n,nt,collisiong,collisiond
BYTE T
INT comp,comp2,mb
DDRD = 0 ' PD5=PD4=PD3=PD2=input
SCONF = 0x4C ' B,C = sorties
lcdinit()


PACTL.7=0
PACTL.5=1
PACTL.4=0
PACTL.6=1
TMSK2.1=0
TMSK2.4=1
TMSK2.6=0
TFLG2.6=0


n=150
nt=180
collisiong = 0
collisiond = 0
PORTB.2 = 0
cli ' autoriser les inter



print " arobot 2 "

do
PACNT=0
wai
comp=PACNT

' print "comp=",comp 'comp pour gauche / droite       entrée A7
' tempo(50)

' print "comp2=",comp2 'comp pour haut / bas      entrée A0
' tempo(20)

' print "n =",n
' tempo(50)
 

'lecture de la fréquence de chaque variable "comp" et "comp2"


if comp2>90 and comp2<110 then     'lecture de la variable, si  fréquence compris dans cette intervalle
gosub AVANCER               'exécute le sous-programme AVANCER
end if


if comp2>160 and comp2<185 then    'lecture de la variable, si  fréquence compris dans cette intervalle
gosub RECULER                'exécute le sous-programme RECULER
end if


if comp>55 and comp<67 then     'lecture de la variable, si  fréquence compris dans cette intervalle
gosub DROITE               'exécute le sous-programme DROITE
' print "droite"
end if


if comp>30 and comp<40 then      'lecture de la variable, si  fréquence compris dans cette intervalle
gosub GAUCHE               'exécute le sous-programme GAUCHE
' print "gauche"
end if

if comp>45 and comp<54 then    'lecture de la variable, si  fréquence compris dans cette intervalle
gosub TOUTDROIT                'exécute le sous-programme TOUTDROIT
end if

if comp2>130 and comp2<150 then     'lecture de la variable, si  fréquence compris dans cette intervalle
gosub STOP               'exécute le sous-programme STOP
end if

gosub antennes
loop



antennes:
if PORTA.1 = 0 then
collisiong = collisiong + 1
else
collisiong = 0
end if
if PORTA.2 = 0 then
collisiond = collisiond + 1
else
collisiond = 0
end if

if collisiong > 0 or collisiond > 0 then
gosub DROITE
tempo(5)
gosub RECULER2
tempo(5)
gosub TOUTDROIT
tempo(5)
gosub AVANCER2
collisiong = 0
collisiond = 0
end if

RETURN




' sous programme


STOP:
PORTB.4 = 0


tempo(5)
' n=150
' wai
mb=0
RETURN

RECULER:
if mb = 0 or mb=1 then 'on recule si on est arret ou avance

PORTB.4 = 0 'couper puissance
tempo(5)
PORTB.3 = 0 ' positionne relais pour reculer
tempo(5)
PORTB.4 = 1 'puissance on




mb=2
end if
RETURN

AVANCER2:
if mb = 0 or mb=1 then 'on recule si on est arret ou avance

PORTB.4 = 0 'couper puissance
tempo(5)
PORTB.3 = 0 ' positionne relais pour reculer
tempo(5)
PORTB.4 = 1 'puissance on
tempo(65)



mb=2
end if
RETURN

AVANCER:
if mb = 0 or mb = 2 then 'on avance si on est arret ou recule

PORTB.4 = 0 'couper puissance
tempo(5)
PORTB.3 = 1 ' positionne relais pour avancer
tempo(5)
PORTB.4 = 1 ' puissance on


mb=1
end if

RETURN

RECULER2:
if mb = 0 or mb = 2 then 'on avance si on est arret ou recule

PORTB.4 = 0 'couper puissance
tempo(5)
PORTB.3 = 1 ' positionne relais pour avancer
tempo(5)
PORTB.4 = 1 ' puissance on
tempo(65)

mb=1
end if

RETURN


DROITE:
n=100 'impulsion envoyée pour tourner l'axe servomoteur à droite
' wai

RETURN

TOUTDROIT:
n=150 'impulsion pour mettre le servomoteur en position initiale
' wai

RETURN

GAUCHE:
n=200 'impulsion envoyée pour tourner l'axe servomoteur à gauche
' wai

RETURN


function tempo(cnt)
int i, k
for cnt=cnt to 0 step -1
for i=0 to 1000
next
next
end function


interrupt function rtiint at $FFDA

comp2=0
do
comp2=comp2+1
loop until PORTA.0=0


TFLG2.6 = 1 ' autoriser ints a nouveau
end function







#include "lcd.bas"

 

Télécharge le programme (programme-AROBOT.doc 27ko )
 

Sommaire du projet