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 )
|