Beruflich Dokumente
Kultur Dokumente
AUTORES
PABLO RODRGUEZ CABELLOS
EUGENIO SILLERO HERRERO
NDICE
1. INTRODUCCIN ....................................................................... 7
1.1.
1.2.
OBJETIVOS .........................................................................................7
DESCRIPCIN DEL ROBOT ...............................................................7
2.3.1.
2.3.2.
2.3.3.
2.4.
PROTOCOLO DE DATOS..................................................................21
2.4.1.
2.4.2.
3.1.1.
3.1.2.
3.1.3.
3.1.4.
3.2.
ALIMENTACIN ...............................................................................................24
SENSORES ......................................................................................................25
DRIVER DE MOTORES ...................................................................................27
PROCESADO ...................................................................................................29
3.2.1.
3.2.2.
3.2.3.
3.2.4.
3.2.5.
3.2.6.
4.1.1.
4.1.2.
4.1.3.
4.1.4.
4.2.
ALIMENTACIN ...............................................................................................55
CONTROL DE ORIENTACIN DE LA CMARA ............................................55
INTERFAZ DE LA CMARA.............................................................................56
PROCESADO ...................................................................................................58
4.2.1.
4.2.2.
4.2.3.
4.2.4.
4.2.5.
4.2.6.
4.2.7.
PLACA DE CONTROL........................................................................82
EL SOFTWARE ..................................................................................85
PAQUETE COM.THEEXBTEAM.COMM............................................86
PAQUETE COM.THEEXBTEAM.ROBOTS ........................................88
-2-
6.1.
6.2.
6.3.
6.4.
-3-
NDICE DE ILUSTRACIONES
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
Figura 7
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Figura 13
Figura 14
Figura 15
Figura 16
Figura 17
Figura 18
Figura 19
Figura 20
Figura 21
Figura 22
Figura 23
Figura 24
Figura 25
Figura 26
Figura 27
Figura 28
Figura 29
Figura 30
Figura 31
-4-
Figura 32
Figura 33
Figura 34
Figura 35
Figura 36
Figura 37
Figura 38
Figura 39
Figura 40
Figura 41
Figura 42
Figura 43
Figura 44
Figura 45
Figura 46
-5-
NDICE DE TABLAS
Tabla 1.
Tabla 2.
Tabla 3.
Tabla 4.
Tabla 5.
-6-
1. INTRODUCCIN
1.1. OBJETIVOS
La prctica se compone de un robot motorizado con dos
servomotores, manipulados para funcionar como motores de continua con
caja reductora, y un sistema de adquisicin de vdeo usando una cmara
CCD de 128x128 pxeles monocroma. El sistema est controlado
remotamente por un PC y una aplicacin que recibir las imgenes
capturadas por la cmara del robot y transmitir las rdenes de
desplazamiento al robot.
El enlace se realiza mediante una tarjeta de radiofrecuencia halfduplex de 100 kbps de la casa AUREL. El enlace se controla desde un
PC por el puerto serie, estableciendo una comunicacin directa con el
robot.
El robot est gobernado por una tarjeta con un microcontrolador
ATMEL AT90S8515 que se comunica con el PC del usuario, adquiere
datos desde la cmara y puede controlar otra tarjeta similar que conforma
el sistema de control motriz. Esta segunda tarjeta hace funcionar al robot
como un seguidor de lnea al incorporar los sensores necesarios. Sin
embargo, el sistema motriz puede ser controlado por el usuario en un
modo de ejecucin especial.
La microcmara que se emplea es el modelo M64282FP Artificial
Retina de Mitsubishi Electric o similares. Se orienta mediante un
servomotor a pesar de que el sistema tiene capacidad para controlar dos.
El objetivo buscado es la creacin de un robot multifuncin,
fcilmente reprogramable. Para ello se ha querido desarrollar una
plataforma multiuso con varios modos de ejecucin, as cmo unas
libreras software para la comunicacin va radio y control del sistema.
Figura 1
Figura 2
-8-
Figura 3
Figura 4
-9-
Figura 5
- 10 -
Figura 6
Figura 7
- 11 -
Figura 8
Figura 9
- 13 -
2. PROTOCOLOS DE COMUNICACIONES
Se han definido dos protocolos de comunicaciones: uno para cada una de
las funciones principales del sistema, el control remoto del robot y el envo de
los datos al control remoto.
La pila de protocolos empleada es la siguiente:
Niveles
Protocolos
RESTO
ENLACE
LAPR
FSICO
RS-232/TTLoRF
Tabla 1. Pila de protocolos.
Dado que solamente existe comunicacin con una nica unidad remota y
un nico host controlador no hace falta especificar ningn sistema de
direccionamiento.
El nivel de enlace lleva a cabo las tareas de entramado, separacin de los
distintos protocolos de comunicaciones y en el caso del protocolo de
comandos, asegurar que todos los datos enviados llegan a su destino, tal
como se detalla seguidamente.
- 14 -
libre de los 433 MHz para mandar los datos mediante una modulacin 2FSK.
DS2
Abierto
Cerrado
Abierto
Cerrado
VELOCIDAD (bps)
9600
19200
57600
115200
3
3 2+8
Tout = T =
2
2 vb
Para nuestro caso, dado que transmitimos a una cadencia de
115200 bps, resulta:
Tout 130s
- 15 -
- 16 -
LSAPID
0
C FR ID
6 5
Byte 1
Byte 0
COMANDO
7
0
Byte 2
reservado
0xFF
de
sincronizacin
(funcin
de
inicio/sincronizacin de la conexin.)
Envo de ACK de Comando:
01111110
7
LSAPID
0
Byte 0
C FR ID
6 5
Byte 1
- 17 -
LSAPID 0
IHB
Byte 0
GL
4
3
Byte 1
LSAPID
0
Byte 0
I ROW#
6 5
Byte 1
PIXELES()
7
0
Byte 2,3
- 18 -
HEX
0x00
0x01
0x02
0x03
0x04
Desvo Izquierda
0x05
0x06
0x07
Acelerar
Reducir
Busca Lnea Y Para
Rota Derecha
0x08
0x09
0x0a
0x0b
Rota Izquierda
0x0c
No Definido
Modo Automtico
0x0d
0x0e
Paro Total
0x0f
Descripcin
Desplazamiento hacia delante.
Gira a la derecha.
Gira a la izquierda.
Desplazamiento hacia atrs.
Desplazamiento hacia delante y la
derecha.
Desplazamiento hacia delante y la
izquierda.
Desplazamiento hacia atrs y la
derecha.
Desplazamiento hacia atrs y la
izquierda.
Aumentar la velocidad global.
Decrementar la velocidad global.
Busca la lnea y para los motores.
Rotacin (mueve dos motores) a la
derecha
Rotacin (mueve dos motores) a la
izquierda
No definido
Pasa a modo automtico de
seguimiento de lneas.
Paro completo de los motores
- 19 -
HEX
0xC1
System Reset
0xCF
RESERVADO
0xFF
Descripcin
Peticin de respuesta, para comprobar
si la unidad remota responde.
Reset completo de la tarjeta de control
del robot.
Conexin interna, no permitido su
envo.
HEX
0x40
0x41
0x42
0x43
0x44
Descripcin
Centra la vista al frente
Gira el servo horizontal a la derecha
Gira el servo horizontal a la izquierda
Gira el servo vertical hacia arriba
Gira el servo vertical hacia abajo
Activa la seal START de inicio de
captura.
Reinicia la cmara con los valores por
defecto de la misma.
0x59
Carga los ocho registros de
configuracin de la cmara.
0x50-57 Fija como registro activo el contenido en
los tres bits menos significativos.
0x70-7f Fija los cuatro bits menos significativos
del registro activo como los cuatro bits
menos significativos del comando
0x60-6f Fija los cuatro bits ms significativos del
registro activo como los cuatro bits
menos significativos del comando.
Tabla 5. Comandos de imagen
- 20 -
LSAPID
7
0
6
IHB
5
Byte 0
4
3
Byte 1
GL
0
- 21 -
FILA
COLUMNA
FILA
COLUMNA
LSAPID
6 5
Byte 1
Aplicacin de control
I ROW#
0
*26
LSAPID
IHB
GL
4
3
Byte 1
- 22 -
- 23 -
C1
100nF
GND
C4
100uF
C2
100nF
J4
PWR_OUT
2
C3
220uF
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1
D1
PWR_ON
R3
470
EN_MOT1
EN_MOT2
1
9
+5V
+7,2V
16
8
19
18
RESET
31
9
R1
470
40
ALE
OC1B
EXP1
EXP2
MODE
INT_MEC
BUMP_TRAS
EN_MOT1
EXP3
EXP4
30
29
8MHz
R21
470
ICP
RST
VCC
D6
VCC1
VCC2
R23
1K
EXP1
EXP2
EXP3
EXP4
R22
RST
SCK
MISO
10K
TARJ_PPAL
7432
BUMP_TRAS 11
R15
1K
+5V
R5
47K
+5V
CNY 3
47K
+5V
4
3
2
1
+5V
BUMPER3
BUMPER2
R11
10K
+5V
4
3
2
1
J15
4
3
2
1
BUMPER4
R20
10K
+5V
CNY2
BUMPER4
BUMPER2
R8
J11
220
CNY 4
4
3
2
1
J14
BUMPER3
R19
10K
J13
+5V
R6
J10
220
R7
4
3
2
1
BUMPER1
4
3
2
1
CNY 1
7432
R17
1K
J12
BUMPER1
R10
10K
R13
J9
220
CNY 2
+5V
13 BUMPER4
SW2
MARCHA
C11
100nF
U4B
+5V
BUMPER3
SW1
RESET
C12
100nF
R12
J8
220
U4D
MARCHA
+5V
+5V
R16
10K
RESET
U4C
10
7432
+5V
R14
10K
U4A
+5V
47K
D8
+5V
2
4
6
8
10
PROGRAMADOR
RESET
R4
C10
100nF
+5V
1
3
5
7
9
D13
DIODO_RST
4
3
2
1
+7,2V
+7,2V
J16
MOSI
CNY 1
+7,2V
1N4001
D7
EN_MOT2
1
2
3
4
D5
1N4001 1N4001
1N4001 1N4001
INT_MEC 8
EXPAN
12
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
D10
C8
15pF
D12
PROG
J1
D9
1N4001
J7
MOT2
7432
J3
8
7
6
5
4
3
2
1
C6
100nF
+7,2V
1/2EN
3/4EN
+5V
20
+5V
XTAL1
XTAL2
10
11
12
13
14
15
16
17
C7
15pF
D4
1N4001
XTAL1
XTAL2
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
CNY 1
CNY 2
CNY 3
CNY 4
BUMPER1
BUMPER2
BUMPER3
BUMPER4
D3
1N4001
J6
MOT1
D14
DEP
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
21
22
23
24
25
26
27
28
14
R18
470
MOSI
MISO
SCK
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
D11
READY
1
2
3
4
5
6
7
8
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
3
6
11
14
XTAL2
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1
39
38
37
36
35
34
33
32
GND
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
MARCHA
1Y
2Y
3Y
4Y
XTAL1
AT90S8515
L293
1A
2A
3A
4A
C9 +
100uF
Y1
U3
2
7
10
15
U2
J5
PWR_IN
+5V
VOUT
VIN
U1
+7,2V
R9
47K
+5V
4
3
2
1
Title
Tarjeta de control de motores para Robot LSED
Size
A4
CNY 3
CNY4
Date:
Document Number
1
Monday , June 23, 2003
Rev
4.0
Sheet
of
- 24 -
la
alimentacin
con
unos
VIN
C1
100nF
VOUT
GND
+5V
2
C4
100uF
C2
100nF
C3
220uF
L7805/TO220
J5
PWR_IN
U1
J4
PWR_OUT
2
+7,2V
D1
PWR_ON
R3
470
3.1.2. SENSORES
El robot ha de ser capaz de orientarse automticamente. Para
la orientacin deber seguir una lnea negra sobre un fondo blanco.
Adicionalmente se han de poder detectar posibles colisiones con
obstculos.
Para poder seguir la lnea se utilizan unos sensores de
infrarrojos tipo CNY70. Estos sensores integran un fotodiodo que
emite radiacin infrarroja y un fototransistor que se polariza en
funcin de la radiacin recibida. Si el sensor est sobre una
superficie negra la radiacin emitida por el fotodiodo no se refleja y
el fototransistor est en situacin de corte. Por el contrario, si el
sensor se posiciona sobre una superficie blanca el fototransistor
capta la radiacin emitida por el fotodiodo.
La red para poder usar estos transistores es muy simple. Se
ha de polarizar el fotodiodo para que emita siempre con una
- 25 -
R2
220
CNY 70
+5V
47K
+5V
4
4
3
2
1
CNY 70
CNY x
R1
J1
OUT
- 26 -
+5V
BUMPER
NO
NC
R1
10K
4
3
2
1
BUMPER
NO
NC
BUMPERx
- 27 -
1
9
+5V
+7,2V
16
8
3
6
11
14
D3
1N4001
J6
MOT1
D4
1N4001
D6
VCC1
VCC2
J7
MOT2
D7
C6
100nF
+7,2V
1/2EN
3/4EN
D9
1N4001
D10
D5
1N4001 1N4001
+7,2V
1N4001
C9 +
100uF
1Y
2Y
3Y
4Y
EN_MOT1
EN_MOT2
1A
2A
3A
4A
2
7
10
15
L293
2
U2
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1
+7,2V
C10
100nF
D8
1N4001 1N4001
+7,2V
- 28 -
3.1.4. PROCESADO
Este bloque de la tarjeta tiene como finalidad coordinar el
funcionamiento de los bloques de sensores y driver de motores
adems de realizar las rdenes recibidas de la tarjeta principal.
El ncleo de este bloque es el microcontrolador, como era de
esperar. Este se encarga de todo el procesado. En la figura 2.7 se
puede ver la disposicin de los puertos.
U3
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1
D11
READY
R18
470
D14
DEP
MOSI
MISO
SCK
1
2
3
4
5
6
7
8
XTAL1
XTAL2
19
18
RESET
31
9
+5V
40
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
XTAL1
XTAL2
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
ALE
OC1B
21
22
23
24
25
26
27
28
CNY 1
CNY 2
CNY 3
CNY 4
BUMPER1
BUMPER2
BUMPER3
BUMPER4
10
11
12
13
14
15
16
17
EXP1
EXP2
MODE
INT_MEC
BUMP_TRAS
EN_MOT1
EXP3
EXP4
30
29
EN_MOT2
ICP
RST
VCC
GND
R1
470
39
38
37
36
35
34
33
32
AT90S8515
20
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
MARCHA
- 29 -
+5V
R21
470
D12
PROG
J16
MOSI
R22
1
3
5
7
9
RST
SCK
MISO
10K
D13
DIODO_RST
+5V
2
4
6
8
10
PROGRAMADOR
RESET
RST
R22
10K
+5V
D13
DIODO_RST
R14
10K
RESET
C12
100nF
SW1
RESET
R15
1K
- 30 -
BUMPER1
BUMPER2
14
U4C
U4A
+5V
4
7
7432
U4B
CNY 1
7432
10
INT_MEC 8
CNY 2
7432
- 31 -
los
registros
de
entrada
salida
configuracin
del
SREG
= 0x3f
.EQU
SPH
= 0x3e
.EQU
SPL
= 0x3d
.EQU
GIMSK
= 0x3b
.EQU
GIFR
= 0x3a
.EQU
TIMSK
= 0x39
.EQU
TIFR
= 0x38
.EQU
MCUCR
= 0x35
.EQU
TCCR0
= 0x33
.EQU
TCNT0
= 0x32
.EQU
TCCR1A
= 0x2f
.EQU
TCCR1B
= 0x2e
.EQU
TCNT1H
= 0x2d
.EQU
TCNT1L
= 0x2c
.EQU
OCR1AH
= 0x2b
.EQU
OCR1AL
= 0x2a
.EQU
OCR1BH
= 0x29
.EQU
OCR1BL
= 0x28
- 32 -
ICR1H
= 0x25
.EQU
ICR1L
= 0x24
.EQU
WDTCR
= 0x21
.EQU
PORTA
= 0x1b
.EQU
DDRA
= 0x1a
.EQU
PINA
= 0x19
.EQU
PORTB
= 0x18
.EQU
DDRB
= 0x17
.EQU
PINB
= 0x16
.EQU
PORTC
= 0x15
.EQU
DDRC
= 0x14
.EQU
PINC
= 0x13
.EQU
PORTD
= 0x12
.EQU
DDRD
= 0x11
.EQU
PIND
= 0x10
VEL_MAX
= 0x0332
VEL_MED
= 0x0199
VEL_MAX2
= 0x0266
VEL_MED2
= 0x0133
;Parada rpida
.EQU
STOP
= 0x00
;Marcha directa
.EQU
GO
= 0x06
;Giro a la izquierda
.EQU
LEFT
= 0x02
;Giro a la derecha
.EQU
RIGHT
= 0x04
;Marcha inversa
.EQU
BACK
= 0x09
;Rotacin a la izquierda
- 33 -
RLEFT
= 0x0a
;Rotacin a la derecha
.EQU
RRIGHT
= 0x05
adelante.
Las
equivalencias
mencionadas
se
listan
continuacin.
;Constantes para la rutina de retardo
;Retardo por vuelta
.EQU
RET_V
= 0xff
;Nmero de vueltas
.EQU
VUELTAS
= 0xff
RESET
INT_MODE
INT_MEC
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
- 34 -
RESET
r16
;Interrup. deshabilitadas
out
SREG,r16
TIMSK,r16
ldi
r16,0xc0
GIMSK,r16
ldi
r16,0x0f
MCUCR,r16
ldi
r16,0xa3
TCCR1A,r16
ldi
r16,0x02
TCCR1B,r16
clr
r16
out
OCR1AH,r16
out
OCR1AL,r16
out
OCR1BH,r16
;Ambos canales
parados)
out
del
PWM
OCR1BL,r16
;Timer0 parado
out
TCCR0,r16
ldi
r16,0x02
out
SPH,r16
ldi
r16,0x5f
- 35 -
siempre
cero
(Motores
SPL,r16
ldi
r16,0x81
ldi
r17,0x5f
clr
r18
ldi
r19,0x20
DDRA,r16
DDRB,r17
DDRC,r18
DDRD,r19
PORTA,7
ESP:
;Si MARCHA no est pulsado esperamos
sbic
PINA,6
rjmp
ESP
PORTA,7
AUTOMAT
- 36 -
r20,HIGH(VEL_MED)
ldi
r21,LOW(VEL_MED)
ldi
r22,HIGH(VEL_MAX2)
ldi
r23,LOW(VEL_MAX2)
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
- 37 -
r18,PINC
r24,r18
r24,0x03
GIR1
ldi
r17,GO
PORTB,r17
out
OCR1AH,r22
out
OCR1AL,r23
out
OCR1BH,r22
OCR1BL,r23
rjmp
BAUT
GIR1:
;Ponemos a cero todos los bits menos el bit1
andi
r24,0x02
GIR2
r17,GO
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
OCR1BH,r22
OCR1BL,r23
- 38 -
BAUT
GIR2:
mov
r24,r18
r24,0x01
GIR3
r17,GO
PORTB,r17
out
OCR1AH,r22
out
OCR1AL,r23
out
OCR1BH,r20
OCR1BL,r21
BAUT
r24,r18
r24,0x08
no
est
sobre
la
lnea
seguimos
GIR4
r17,RIGHT
out
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
- 39 -
OCR1BL,r21
BAUT
GIR4:
mov
r24,r18
r24,0x04
ROT
r17,LEFT
out
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
OCR1BL,r21
BAUT
r17,STOP
PORTB,r17
brtc
ROT2
- 40 -
r17,RRIGHT
rjmp
RT
ROT2:
;Si no hay que rotar hacia la derecha
ldi
r17,RLEFT
RT:
out
PORTB,r17
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
rjmp
BAUT
- 41 -
r16,PINA
lsr
r16
r16,0x0f
r16
r30,LOW(OFFST)
ldi
r31,HIGH(OFFST)
add
r30,r16
ijmp
RECTO
- 42 -
CMD
GD1
rjmp
CMD
GI1
rjmp
CMD
ATRAS
rjmp
CMD
GD0
rjmp
CMD
GI0
rjmp
CMD
GD2
rjmp
CMD
GI2
rjmp
CMD
ACLR
rjmp
CMD
FRNR
rjmp
CMD
BUSCL
rjmp
CMD
ROTI
rjmp
CMD
ROTD
rjmp
CMD
ERR
rjmp
CMD
- 43 -
ERR
rjmp
CMD
PARA
r16,PINA
;Actualizamos el flag T
rcall
FLG
r16,0x20
MANUAL
rjmp
AUTOMAT
3.2.5. INTERRUPCIONES
Las dos interrupciones que se han de comentar son las
debidas a fuentes externas puesto que la de reset se explica en otro
apartado. Estas fuentes pueden indicar un cambio de modo o una
colisin.
El cdigo de la interrupcin de cambio de modo es muy
sencillo. Simplemente saca de la pila la direccin de retorno y la
cambia por la de la rutina manual. Tambin para el motor para que
se ejecute la orden que ha provocado la interrupcin.
;Cdigo de la interrupcin de cambio de modo
INT_MODE:
ldi
r17,STOP
;Paramos el robot
out
PORTB,r17
pop
r27
pop
r28
;Modificamos la direccin
ejecute el programa manual
ldi
r27,HIGH(MANUAL)
- 44 -
de
retorno
para
que
se
r28,LOW(MANUAL)
push
r28
push
r27
reti
r24
push
r18
in
r18,PINC
mov
r24,r18
r24,0x30
FIN
push
r17
ldi
r17,STOP
PORTB,r17
push
r20
push
r21
ldi
r20,HIGH(VEL_MED)
ldi
r21,LOW(VEL_MED)
r17,BACK
out
PORTB,r17
OCR1AH,r22
out
OCR1AL,r23
out
OCR1BH,r22
out
OCR1BL,r23
rcall
RETARDO
rcall
RETARDO
- 45 -
RETARDO
rcall
RETARDO
rcall
RETARDO
rcall
RETARDO
rcall
RETARDO
rcall
RETARDO
rcall
RETARDO
rcall
RETARDO
r17,STOP
out
PORTB,r17
r24,0x10
BP1
chocado
por
ldi
r17,RIGHT
out
PORTB,r17
rcall
RETARDO
ldi
r17,STOP
la
izquierda
giramos
la
giramos
la
PORTB,r17
;Hemos terminado
rjmp
TER
BP1:
mov
r24,r18
r24,0x20
BP2
;Si hemos
izquierda
chocado
ldi
r17,LEFT
out
PORTB,r17
- 46 -
por
la
derecha
RETARDO
ldi
r17,STOP
PORTB,r17
;Hemos terminado
rjmp
TER
BP2:
;Colisin frontal
brtc
ESQ2
r17,RLEFT
rjmp
ESQ
ESQ2:
;Si no hay que rotar hacia la derecha
ldi
r17,RRIGHT
ESQ:
out
PORTB,r17
rcall RETARDO
ldi
r17,STOP
PORTB,r17
TER:
pop
r21
pop
r20
pop
r17
FIN:
;Recuperamos registros y terminamos
pop
r18
pop
r24
reti
3.2.6. SUBRUTINAS
Las subrutinas asociadas a las rdenes del modo manual se
agrupan en un archivo. Estas subrutinas son, en su mayora, para
avanzar, parar o girar y su cdigo es el mismo que se utiliza en el
resto del programa. Por esta razn no hay mucho que comentar
sobre estas subrutinas. Su cdigo se muestra a continuacin.
RECTO:
ldi
r17,GO
- 47 -
PORTB,r17
out
OCR1AH,r22
out
OCR1AL,r23
out
OCR1BH,r22
out
OCR1BL,r23
ret
GD1:
ldi
r17,RIGHT
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
ret
GI1:
ldi
r17,LEFT
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
ret
ATRAS:
;Hay que parar antes de invertir los motores
rcall
PARA
ldi
r17,BACK
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
ret
- 48 -
r17,GO
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r22
out
OCR1BL,r23
ret
GI0:
ldi
r17,GO
PORTB,r17
out
OCR1AH,r22
out
OCR1AL,r23
out
OCR1BH,r20
out
OCR1BL,r21
ret
GD2:
;Hay que parar antes de invertir los motores
rcall
PARA
ldi
r17,BACK
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r22
out
OCR1BL,r23
ret
GI2:
;Hay que parar antes de invertir los motores
rcall
PARA
ldi
r17,BACK
PORTB,r17
out
OCR1AH,r22
out
OCR1AL,r23
- 49 -
OCR1BH,r20
out
OCR1BL,r21
ret
ROTI:
;Hay que parar antes de invertir motores
rcall
PARA
r17,RLEFT
out
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
ret
ROTD:
;Hay que parar antes de invertir motores
rcall PARA
;Rotamos hacia la derecha
ldi
r17,RRIGHT
out
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
ret
PARA:
ldi
r17,STOP
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
out
OCR1BL,r21
ret
r22,HIGH(VEL_MAX)
ACB
ret
ACB:
ldi
r20,HIGH(VEL_MED)
ldi
r21,LOW(VEL_MED)
ldi
r22,HIGH(VEL_MAX)
ldi
r23,LOW(VEL_MAX)
ret
FRNR:
cpi
r22,HIGH(VEL_MAX2)
FCB
ret
FCB:
ldi
r20,HIGH(VEL_MED2)
ldi
r21,LOW(VEL_MED2)
ldi
r22,HIGH(VEL_MAX2)
ldi
r23,LOW(VEL_MAX2)
ret
r18,PORTC
andi
r18,0x03
brne
NOLN
PARA
sbi
PORTA,0
ret
- 51 -
CGIR
r17,LEFT
rjmp
SGIR
CGIR:
;Si no hay que rotar hacia la derecha
ldi
r17,RIGHT
SGIR:
out
PORTB,r17
out
OCR1AH,r20
out
OCR1AL,r21
out
OCR1BH,r20
OCR1BL,r21
ret
PORTB,4
ret
r18,PORTC
r24,r18
andi
r24,0x03
brne
FLG1
r24,0x01
brne
FLG2
- 52 -
r24,r18
andi
r24,0x02
brne
FLG3
r24,r18
andi
r24,0x04
brne
FLG4
la
lnea
estamos
la
lnea
estamos
clt
ret
FLG4:
mov
r24,r18
andi
r24,0x08
SAL
set
SAL:
;Si hemos perdido la lnea no cambiamos T
ret
- 53 -
C4
100nF
J2
PWR_OUT
U2
39
38
37
36
35
34
33
32
CAM1
CAM2
CAM3
CAM4
XTAL1
XTAL2
19
18
RESET
31
9
40
+5V
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
XTAL1
XTAL2
ICP
RST
VCC
ALE
OC1B
21
22
23
24
25
26
27
28
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
INCAM
ADCSTR
10
11
12
13
14
15
16
17
RX
TX
XRESET
SIN
LOAD
XCLK
START
READ
30
29
XTAL1
C5
15pF
SERVO2
+5V
Y2
OSC2
C8
15pF
SRV1
SRV2
17
18
1
2
3
OSC1
OSC2
16
15
OSC1
C9
15pF
20MHz
RESET
R5
4
14
1.2K
J16
D13
DIODO_RST
1
3
5
7
9
+5V
U5
LM385-2.5/TO
1
12
11
+5V
7
8
13
2
4
6
8
10
ADCSTR
+5V
PROGRAMADOR1
RESET
PIC16F84
RA0
RA1
RA2
RA3
RA4/TOCKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
OSC1/CLKIN
RB6
OSC2/CLKOUT
RB7
6
7
8
9
10
11
12
13
CAM1
CAM2
CAM3
CAM4
EXP0
EXP1
EXP2
EXP3
R2
10K
J17
RESET
4
3
2
1
MCLR
SW1
RESET
C7
100nF
R3
1K
EXPANS
VDD 5
GND
U4
470
D12
PROG
RST
SCK
MISO
J5
1
2
3
SRV2
C6
15pF
U3
+5V
MOSI
SERVO1
XTAL2
8MHz
+5V
10K
1
2
3
SRV1
+5V
VOUT
R22
J4
+5V
Y1
+5V
R21
J10
8
7
6
5
4
3
2
1
TARJ_CTRL
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
R4
470
MOSI
MISO
SCK
AT90S8515
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
20
D14
DEP
1
2
3
4
5
6
7
8
R7
1K
R1
470
GND
PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
6
20
J7
VIN
D0
D1
D2
D3
D4
D5
D6
D7
REF+
REFMODE
RD
CS
WR/RDY
VCC
ADC0820
GND
C2
100nF
D1
PWR_ON
INT
OFL
2
3
4
5
14
15
16
17
PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7
9
18
INCAM
+5V
XRESET
SIN
LOAD
XCLK
START
READ
VOUT
1
2
3
4
5
6
7
8
9
10
11
12
10
C1
220uF
+5V
REGULADOR
GND
J3
1
VOUT
J1
PWR_IN
L7805/TO220
VIN
U1
1
CAMARA
J8
TX
RX
1
3
5
7
9
2
4
6
8
10
+5V
Title
AURIEL
Size
A4
Date:
Rev
1.2
Sheet
- 54 -
of
autnomo
que
se
utilizar
cuando
el
jumper
sealar
que
no
es
conveniente
utilizar
la
- 55 -
U3
+5V
SRV1
SRV2
SERVO1
J5
1
2
3
OSC1
OSC2
+5V
RESET
SERVO2
+5V
17
18
1
2
3
16
15
4
14
PIC16F84
RA0
RA1
RA2
RA3
RA4/TOCKI
RB0/INT
RB1
RB2
RB3
RB4
RB5
OSC1/CLKIN
RB6
OSC2/CLKOUT
RB7
6
7
8
9
10
11
12
13
CAM1
CAM2
CAM3
CAM4
EXP0
EXP1
EXP2
EXP3
MCLR
VDD 5
J17
4
3
2
1
EXPANS
GND
los
servomotores.
Los
servomotores
se
conectan
- 56 -
U4
2
3
4
5
14
15
16
17
INCAM
9
18
D0
D1
D2
D3
D4
D5
D6
D7
VIN
REF+
REFMODE
RD
CS
INT
OFL
WR/RDY
10
VCC
GND
R5
+5V
1
2
PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7
1.2K
12
11
+5V
7
8
13
U5
LM385-2.5/TO
1
+5V
XRESET
SIN
LOAD
XCLK
START
READ
VOUT
ADCSTR
20
+5V
ADC0820
- 57 -
D14
DEP
R4
470
39
38
37
36
35
34
33
32
MOSI
MISO
SCK
1
2
3
4
5
6
7
8
XTAL1
XTAL2
19
18
RESET
31
9
+5V
40
AT90S8515
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
XTAL1
XTAL2
ALE
OC1B
21
22
23
24
25
26
27
28
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
INCAM
ADCSTR
10
11
12
13
14
15
16
17
RX
TX
XRESET
SIN
LOAD
XCLK
START
READ
30
29
ICP
RST
VCC20
GND
son
los
que
- 58 -
se
usan
para
comunicarle
al
- 59 -
serie por SIN, temporizada por XCLK y validada por LOAD. La pista
READ es la notificacin de la cmara de que tiene un pxel nuevo
preparado para la conversin.
SREG
= 0x3f
.EQU
SPH
= 0x3e
.EQU
SPL
= 0x3d
.EQU
GIMSK
= 0x3b
.EQU
GIFR
= 0x3a
.EQU
TIMSK
= 0x39
.EQU
TIFR
= 0x38
.EQU
MCUCR
= 0x35
- 60 -
TCCR0
= 0x33
.EQU
TCNT0
= 0x32
.EQU
TCCR1A
= 0x2f
.EQU
TCCR1B
= 0x2e
.EQU
TCNT1H
= 0x2d
.EQU
TCNT1L
= 0x2c
.EQU
OCR1AH
= 0x2b
.EQU
OCR1AL
= 0x2a
.EQU
OCR1BH
= 0x29
.EQU
OCR1BL
= 0x28
.EQU
ICR1H
= 0x25
.EQU
ICR1L
= 0x24
.EQU
WDTCR
= 0x21
.EQU
PORTA
= 0x1b
.EQU
DDRA
= 0x1a
.EQU
PINA
= 0x19
.EQU
PORTB
= 0x18
.EQU
DDRB
= 0x17
.EQU
PINB
= 0x16
.EQU
PORTC
= 0x15
.EQU
DDRC
= 0x14
.EQU
PINC
= 0x13
.EQU
PORTD
= 0x12
.EQU
DDRD
= 0x11
.EQU
PIND
= 0x10
.EQU
UDR
= 0x0C
.EQU
USR
= 0x0B
.EQU
UCR
= 0x0A
.EQU
UBRR
= 0x09
tabla
de
vectores
de
interrupcin
tambin
sufre
- 61 -
RESET
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
rjmp
RESET
;TIMER asociado a la RF
rjmp
IRQ_TIMER1
IRQ_TIMER0
RESET
IRQ_RX
IRQ_UOBE
RESET
rjmp
RESET
r16,0x02
out
SPH,r16
ldi
r16,0x5f
SPL,r16
clr
r16
;Interrup. deshabilitadas
out
SREG,r16
- 62 -
GIMSK,r16
MCUCR,r16
ldi
r16,0x82
TIMSK,r16
ldi
r16,0xb8
;Configuracin de la UART
out
UCR,r16
ldi
r16,0x03
UBRR,r16
ldi
r16,0xb7
TCNT0,r16
clr
r16
;Reloj parado
out
TCCR0,r16
out
TCCR1A,r16
out
TCCR1B,r16
ldi
r16,0x00
out
TCNT1L,r16
ldi
r16,0xb8
TCNT1H,r16
clr
r16
DDRA,r16
ldi
r16,0x5f
DDRB,r16
ldi
r16,0xbe
DDRC,r16
ldi
r16,0x7e
DDRD,r16
- 63 -
RCAM
r16,96
ldi
r30,0x02
ldi
r31,0x01
z,r16
r16,8
mov
enACUav, r16
mov
deACUav, r16
;Empieza el programa
rjmp
PROG
PORTD, XCLK
cbi
PORTD, XRESET
sbi
PORTD, XCLK
sbi
PORTD, XRESET
mierda1, 0x3f
sts
CAMDATA, mierda1
- 64 -
- 65 -
- 66 -
- 67 -
- 68 -
registro COMM
FR
VD
WC
NIF
NSF
3
Byte 1
TE
2
- 69 -
=
=
r15
.DEF enCount1 =
r20
.DEF deACU
- 70 -
r18
r21
r14
.DEF deCount1 =
r23
.DEF ocho
r24
;registro de sucio
.DEF sucio
r25
;registro de guarreo
.DEF toSend
r16
.DEF toRec
r17
.DEF mierda1
r19
.DEF COMM
r26
.DEF enDATA
r27
.DEF deDATA
r22
= $00
.EQU curFRID
= $01
.EQU buffFR
- 71 -
ACUMULADOR
DATO COD/DEC
brcs send1
ror enDATA
lsl enACU
derecha
inc toSend;
chkAcu:
dec enACUav ;
brne sig1
Y el decodificador de enlace
- 72 -
de
la
RF,
quitando
deDATA,UDR
loop2:
lsl deDATA
brcc rx0
inc deCount1
alACU2:
del C
rol deACU
dec deACUav
brne deACUChk
sbr COMM, 6 ;x1xxxxxx, dato valido
;SALTO POR HACER AL PROCESADOR DE BYTES
rcall PROCESA_BYTE
clr deACU
ldi ocho, 0x08
mov deACUav, ocho;
rjmp deACUChk
rx0:
cpi deCount1, $05
breq rx02
brmi rx01
COMM, 7
clr deACU
- 73 -
rx02:
clr deCount1
deACUChk:
dec toRec
brne loop2
curFRID, backup
rjmp finpro
sigue5:
;comprobar si estamos en espera de comando
sbrs COMM, 5
rjmp finpro
cbr COMM, 5 ;ya
espera general
lo
atendemos
pasamos
modo
de
- 74 -
el
comando
valido
en
la
ventana
de
inc sucio
andi sucio, $3F
sts expFRID, sucio
;SALTO A PROCESAR COMANDO
rcall PROC_COM
rjmp finpro
yaenviado:
mov sucio, ocho
ldi mierda1, buffFR
add sucio, mierda1;
ande mirar
tenemos
la
pos
push r30
push r31
ld sucio, z
pop r31
pop r30
cp sucio, deACU
brne finpro
;MANDAR ACK DEL FR ID que esta en ocho
- 75 -
de
memoria
SEND_ACK:
;primerito de todo, meter el FR SP
rcall METE_FR_SP
;ahorita meter el ACK
push enDATA
push sucio
push r30;
push r31;
in r30, SPL
in r31, SPH
adiw r30, 4
ld sucio, z
;sucio tiene ahora el FR ID a mandar
ori sucio, 0x40
;enmascarar
indica ACK de comando
con
01xxxxxx,
que
- 76 -
la trama
loop123:
lsl enDATA
ror enACU
;al acu por la derecha el C que es el
dato que queremos
dec enACUav ;
brne sig123 ;
;ENVIO AL CANAL (AL_CANAL)
rcall AL_CANAL
sig123:
clr enACU;
mov enACUav, ocho;
dec toSend
- 77 -
= 0x42
.EQU capBuffer
= 0xC0
.DEF puntEnvio
= r28
;registro inmediato
.DEF puntMete
= r29
;registro inmediato
;pos
de
memoria
donde
- 78 -
ENVIA_SERIE:
;metemos el byte SOLO si ya esta vacio el UDRE
sbic USR, 5
rjmp etiqueta
rcall actTIMER
rjmp finEnvia
;decrementar la capacidad del buffer
etiqueta:
push r30
push r31
ldi r30, LOW(serieAVA)
ldi r31, HIGH(serieAVA)
ld sucio, z
- 79 -
ocho,0x00
out
TCNT1L,ocho
ldi
ocho,0xb8
out
TCNT1H,ocho
ldi ocho,0x02
out TCCR1B,ocho
cbi UCR,3
;deshabilitamos la TX de la UART
ret
- 80 -
- 81 -
comunicacin
se
realiza
travs
de
las
tarjetas
de
- 82 -
PIN 1
DTR
POWER
POWER
RTX
- 84 -
5.2. EL SOFTWARE
El software del equipo de control est escrito en el lenguaje Java de
Sun Microsystems, concretamente, para su versin de JSDK 1.4.1_02. La
eleccin de este lenguaje se ha debido a su prctica independencia de la
plataforma en que se ejecute la mquina virtual de Java. Asimismo, para
poder compilar el proyecto entero, se ha usado la herramienta ANT del
grupo Jakarta de la Apache Foundation. Para ms informacin acerca de
la instalacin de ANT, vea el apndice A Instalacin del Software.
El acceso a los puertos de comunicaciones serie se realiza a travs
del paquete javax.comm que Sun Microsystems distribuye de forma
separada al JSDK. Nuevamente, para su descarga e instalacin, vea el
apndice A.
El software de control se compone bsicamente de tres mdulos o
paquetes de Java:
- 85 -
de
las
clases
del
primero.
No
obstante,
el
paquete
de
clase
AurielWiz434SerialConnection,
que
deriva
de
la
SerialConnection, es la encargada de gestionar el uso del canal halfduplex que proporcionan las tarjetas de radio frecuencia Auriel WIZ-434SML-IA. Permite a las aplicaciones que la usen mandar y recibir de forma
transparente datos, sin tener que preocuparse stas por el acceso al
canal, la fragmentacin de paquetes de 96 bytes que imponen las tarjetas,
o de guardar los tiempos especificados en las hojas del fabricante.
Internamente esta clase lo que hace es almacenar en un buffer
secundario los datos a enviar y proceder a su transmisin a la tarjeta de
radio frecuencia transcurrido los tiempos de guarda, fragmentando
- 86 -
de
este
tipo,
se
debe
usar
la
funcin
setPortEventOutputEmptyEnabled(true).
Este
paquete
incluye
adems
un
subpaquete
llamado
- 87 -
que
el
mtodo
getFrameDecoded(byte)
de
la
clase
- 88 -
CommunicationsCore,
CommandCore,
encargadas
de
ImageCore,
las
tareas
StatusMonitor
de
comunicaciones,
- 89 -
Adems recoge estadsticas de uso del radio enlace que pueden ser
consultadas a travs de la funcin getStats() que devuelve un objeto de
la clase java.util.Map con diversos valores, como son los bytes
enviados y recibidos, comandos y confirmaciones enviados y recibidos
y estado de las ventanas de envo y recepcin del protocolo confirmado
de comandos. Los comandos de sistema PING no lanzan eventos
CommandEvent de tipo COMMAND_RECEIVED o COMMAND_
ACKNOWLEDGE,
sino
que
se
generan
de
tipo
- 90 -
interface
de
lnea
de
comandos,
orientada
interfaces
grficas,
- 91 -
la
subcarpeta
<jdk>\jre\lib,
copie
el
archivo
- 93 -
- 94 -
- 95 -
- 96 -
R4
470
D14
DEP
J1
PWR_IN
+5V
+5V
10K
D12
PROG
470
VCC
ICP
RST
XTAL1
XTAL2
RX
TX
1
3
5
7
9
AURIEL
RESET
2
4
6
8
10
RST
SCK
MISO
MOSI
J16
2
4
6
8
10
+5V
+5V
RX
TX
XRESET
SIN
LOAD
XCLK
START
READ
10
11
12
13
14
15
16
17
30
29
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
INCAM
ADCSTR
21
22
23
24
25
26
27
28
C3
100uF
REGULADOR
J3
1
PROGRAMADOR1
1
3
5
7
9
ALE
OC1B
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
J8
AT90S8515
GND
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
VOUT
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
U2
D13
DIODO_RST
R22
31
9
RESET
R21
19
18
XTAL1
XTAL2
40
1
2
3
4
5
6
7
8
CAM1
CAM2
CAM3
CAM4
MOSI
MISO
SCK
39
38
37
36
35
34
33
32
C2
100nF
PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7
C1
220uF
VIN
GND
20
C4
100nF
XTAL1
R5
OSC1
XTAL2
1.2K
20MHz
Y2
8MHz
Y1
J2
PWR_OUT
U5
LM385-2.5/TO
+5V
C8
15pF
OSC2
C5
15pF
+5V
1
2
L7805/TO220
C9
15pF
C6
15pF
R1
470
+5V
D1
PWR_ON
+5V
ADCSTR
VOUT
+5V
RESET
20
7
8
13
12
11
14
16
15
17
18
1
2
3
OSC1
OSC2
SRV1
SRV2
R7
1K
PIC16F84
ADC0820
VCC
WR/RDY
MODE
RD
CS
REF+
REF-
VIN
U4
VDD 5
MCLR
GND
INT
OFL
D0
D1
D2
D3
D4
D5
D6
D7
Date:
Size
A4
4
3
2
1
EXPANS
J17
Document Number
1
SRV2
SRV1
1
2
3
4
5
6
7
8
9
10
11
12
C7
100nF
J7
+5V
of
R3
1K
SW1
RESET
Rev
1.2
SERVO2
J5
SERVO1
J4
R2
10K
1
2
3
1
2
3
CAMARA
RESET
+5V
+5V
Sheet
+5V
XRESET
SIN
LOAD
XCLK
START
READ
VOUT
INCAM
9
18
Title
PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7
CAM1
CAM2
CAM3
CAM4
EXP0
EXP1
EXP2
EXP3
2
3
4
5
14
15
16
17
6
7
8
9
10
11
12
13
TARJ_CTRL
J10
8
7
6
5
4
3
2
1
RB0/INT
RB1
RB2
RB3
RB4
RB5
OSC1/CLKIN
RB6
OSC2/CLKOUT
RB7
RA0
RA1
RA2
RA3
RA4/TOCKI
U3
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
GND
U1
2
1
- 97 10
R23
1K
BUMP_TRAS 11
U4D
EXP1
EXP2
EXP3
EXP4
VCC
ICP
RST
XTAL1
XTAL2
EXPAN
BUMPER3
1
2
3
4
J1
ALE
OC1B
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
30
29
10
11
12
13
14
15
16
17
21
22
23
24
25
26
27
28
C4
100uF
AT90S8515
GND
VOUT
13 BUMPER4
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
VIN
C1
100nF
PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
U3
7432
40
31
9
RESET
+5V
19
18
XTAL1
XTAL2
MOSI
MISO
SCK
1
2
3
4
5
6
7
8
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1
C3
220uF
39
38
37
36
35
34
33
32
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
MARCHA
TARJ_PPAL
J3
8
7
6
5
4
3
2
1
R1
470
D14
DEP
GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
R18
470
D11
READY
J5
PWR_IN
C2
100nF
R7
R4
47K
CNY 3
47K
CNY 1
EN_MOT2
EXP1
EXP2
MODE
INT_MEC
BUMP_TRAS
EN_MOT1
EXP3
EXP4
CNY 1
CNY 2
CNY 3
CNY 4
BUMPER1
BUMPER2
BUMPER3
BUMPER4
+5V
+5V
+5V
+5V
+5V
CNY 1
4
3
2
1
CNY 3
R6
J10
220
4
3
2
1
R12
J8
220
10K
D12
PROG
470
8MHz
Y1
R9
R5
7432
U4C
+5V
RESET
D13
DIODO_RST
R22
R21
C7
15pF
XTAL1
R3
470
D1
PWR_ON
INT_MEC 8
+5V
J4
PWR_OUT
1
2
L7805/TO220
14
7
U1
47K
CNY 4
47K
CNY 2
+5V
+5V
10
RST
SCK
MISO
MOSI
1
3
5
7
9
J16
2
4
6
8
10
+5V
U4B
CNY 2
4
3
2
1
CNY 4
R8
J11
220
4
3
2
1
R13
J9
220
7432
7432
U4A
PROGRAMADOR
+5V
C8
15pF
XTAL2
C9 +
100uF
16
8
1
9
EN_MOT1
EN_MOT2
+5V
+7,2V
2
7
10
15
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1
+5V
Date:
Size
A4
Title
+5V
+5V
VCC1
VCC2
1/2EN
3/4EN
1A
2A
3A
4A
U2
C12
100nF
RESET
3
6
11
14
J7
MOT2
D7
D8
R15
1K
SW1
RESET
R14
10K
BUMPER2
4
3
2
1
J13
BUMPER1
4
3
2
1
J12
+5V
+5V
+5V
+7,2V
1N4001 1N4001
D10
D3
1N4001
Document Number
1
Sheet
BUMPER4
R20
10K
of
+5V
C10
100nF
BUMPER3
R19
10K
C11
100nF
D5
C6
100nF
Rev
4.0
BUMPER4
J15
4
3
2
1
BUMPER3
4
3
2
1
J14
R17
1K
SW2
MARCHA
R16
10K
+7,2V
1N4001 1N4001
D6
D4
1N4001
+7,2V
MARCHA
+7,2V
1N 4001
D9
1N 4001
J6
MOT1
BUMPER2
R11
10K
BUMPER1
R10
10K
1Y
2Y
3Y
4Y
L293
2
1
GND
20
12
- 98 4
2
1
+7,2V
ii)
iii)
Este software se distribuye tal cual, sin garanta alguna de cualquier tipo. Toda condicin
explcita o implcita, representaciones y garantas, incluyendo aquellas que impliquen
garantas comerciales estn excluidas. EXB y sus usuarios licenciados no sern
responsables por cual dao que sufran los usuarios licenciados como resultado del uso,
modificacin o distribucin del software o sus derivados. En ningn caso EXB o sus
usuarios licenciados sern responsables por cualquier prdida de rdito, beneficio o datos
derivados del uso de este software.
El uso de este software implica la aceptacin de estos trminos de uso.
paquete
de
las
libreras
desde
la
http://java.sun.com/products/javacomm/COMM2.0.3_license.txt.
- 99 -
URL
Sun
Microsystems
no
ofrece
ningn
tipo
de
garanta
de
Windows
es
una
marca
registrada
de
Microsoft
Corporation.
Java, JSDK, JRE y J2SE son marcas registradas de Sun
Microsystems. El logotipo de Java pertenece a Sun Microsystems.
Apache, Jakarta-ANT y ANT son marcas registradas de la Apache
Software Foundation. El paquete ANT se distribuye bajo licencia Apache
Software
License,
Version
1.1,
disponible
desde
la
URL
- 100 -
9. BIBLIOGRAFA
Para ms informacin sobre este y otros proyectos, versiones
actualizaciones del software y firmware del robot as como la API detallada de
las libreras empleadas, consulte
http://www.theexbteam.com/robots
PSPICE),
Servicio
de
publicaciones,
E.T.S.I.
Departamento
de
Publicaciones
de
la
E.T.S.I
Telecomunicacin UPM.
- 101 -
Para
ms
informacin
http://www.endrich.net/.
eBay, http://www.ebay.com, para la cmara digital.
- 102 -
pedidos,