Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo Robot - Open - Softwear-Beta090712
Ejemplo Robot - Open - Softwear-Beta090712
AUTORES
PABLO RODRÍGUEZ CABELLOS
EUGENIO SILLERO HERRERO
Robot con control remoto y cámara de vídeo integrada
ÍNDICE
1. INTRODUCCIÓN ....................................................................... 7
1.1. OBJETIVOS .........................................................................................7
1.2. DESCRIPCIÓN DEL ROBOT ...............................................................7
2. PROTOCOLOS DE COMUNICACIONES ............................... 14
2.1. EL NIVEL FÍSICO: ENLACE RADIOFRECUENCIA ............................14
2.2. NIVEL DE ENLACE: LAPR .................................................................16
2.3. PROTOCOLO DE COMANDOS .........................................................18
2.3.1. ÓRDENES DE MOTORES ...............................................................................19
2.3.2. ÓRDENES DEL SISTEMA ...............................................................................20
2.3.3. ÓRDENES DE IMAGEN ...................................................................................20
2.4. PROTOCOLO DE DATOS..................................................................21
2.4.1. ESTADO DEL ROBOT .....................................................................................21
2.4.2. RECOMPONIENDO LA IMAGEN.....................................................................21
-2-
Robot con control remoto y cámara de vídeo integrada
-3-
Robot con control remoto y cámara de vídeo integrada
ÍNDICE DE ILUSTRACIONES
Figura 1 Vista general del prototipo en madera del robot .............................8
Figura 2 Vista lateral del robot ......................................................................8
Figura 3 Detalle de la batería del robot.........................................................9
Figura 4 Tarjeta de control del robot y radio enlace......................................9
Figura 5 Frontal del robot con los bumpers de colisión .............................. 10
Figura 6 Parte inferior del robot. ................................................................. 11
Figura 7 Detalle del bastidor delantero ....................................................... 11
Figura 8 Detalle de los sensores CNY70 del robot. .................................... 12
Figura 9 Tarjeta de control de motores con todos los sensores
conectados ................................................................................... 12
Figura 10 Comunicación serie un bit de arranque, 8 de datos y uno de
parada. ......................................................................................... 14
Figura 11 Módulo de radio frecuencia WIZ-434-SML-IA de Auriel ............... 15
Figura 12 Esquema de las tramas de comandos. ........................................ 17
Figura 13 Esquema de las tramas de ACK de comando. ............................. 17
Figura 14 Esquema de las tramas de estado ............................................... 18
Figura 15 Esquema de las tramas de píxeles de imágenes. ........................ 18
Figura 16 Detalle de la trama de datos de estado ........................................ 21
Figura 17 Gráfico del proceso de cálculo de la fila y columna de imagen.
..................................................................................................... 22
Figura 18 Esquema de la tarjeta de control de motores. .............................. 24
Figura 19 Sistema de alimentación de la tarjeta de control de motores. ...... 25
Figura 20 Polarización de los sensores CNY70. .......................................... 26
Figura 21 Conexión de los sensores CNY70................................................ 26
Figura 22 Polarización de los bumpers......................................................... 27
Figura 23 Conexión de los bumpers. ............................................................ 27
Figura 24 Esquema del driver de motores.................................................... 28
Figura 25 Conexiones del microcontrolador. ................................................ 29
Figura 26 Interfaz del programación AVR..................................................... 30
Figura 27 Circuito de reset. .......................................................................... 30
Figura 28 Lógica de adaptación para la interrupción mecánica.................... 31
Figura 29 Esquema de la tarjeta de control principal.................................... 54
Figura 30 Sistema de orientación de la cámara. .......................................... 56
Figura 31 Cámara digital M64282FP ............................................................ 57
-4-
Robot con control remoto y cámara de vídeo integrada
-5-
Robot con control remoto y cámara de vídeo integrada
ÍNDICE DE TABLAS
Tabla 1. Pila de protocolos. ........................................................................ 14
Tabla 2. Configuración de velocidad de las tarjetas WIZ-SML-IA. ............. 15
Tabla 3. Comandos de motores ................................................................. 19
Tabla 4. Comandos del sistema ................................................................. 20
Tabla 5. Comandos de imagen .................................................................. 20
-6-
Robot con control remoto y cámara de vídeo integrada
1. INTRODUCCIÓN
1.1. OBJETIVOS
La práctica se compone de un robot motorizado con dos
servomotores, manipulados para funcionar como motores de continua con
caja reductora, y un sistema de adquisición de vídeo usando una cámara
CCD de 128x128 píxeles monocroma. El sistema está controlado
remotamente por un PC y una aplicación que recibirá las imágenes
capturadas por la cámara del robot y transmitirá las órdenes de
desplazamiento al robot.
-7-
Robot con control remoto y cámara de vídeo integrada
-8-
Robot con control remoto y cámara de vídeo integrada
-9-
Robot con control remoto y cámara de vídeo integrada
- 10 -
Robot con control remoto y cámara de vídeo integrada
- 11 -
Robot con control remoto y cámara de vídeo integrada
- 12 -
Robot con control remoto y cámara de vídeo integrada
- 13 -
Robot con control remoto y cámara de vídeo integrada
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 envío de
los datos al control remoto.
Niveles Protocolos
ENLACE LAPR
FÍSICO RS-232/TTLoRF
Dado que solamente existe comunicación con una única unidad remota y
un único host controlador no hace falta especificar ningún sistema de
direccionamiento.
- 14 -
Robot con control remoto y cámara de vídeo integrada
libre de los 433 MHz para mandar los datos mediante una modulación 2-
FSK.
3 3 2+8
Tout = ·T = ·
2 2 vb
Tout ≈ 130µs
- 15 -
Robot con control remoto y cámara de vídeo integrada
- 16 -
Robot con control remoto y cámara de vídeo integrada
Envío de Comando:
01111110 LSAPID 0 C FR ID COMANDO
7 0 7 6 5 0 7 0
Byte 0 Byte 1 Byte 2
Figura 12 Esquema de las tramas de comandos.
- 17 -
Robot con control remoto y cámara de vídeo integrada
Envío de Estado:
01111110 LSAPID 0 IHB GL
7 0 7 6 5 4 3 2 1 0
Byte 0 Byte 1
Figura 14 Esquema de las tramas de estado
- 18 -
Robot con control remoto y cámara de vídeo integrada
- 19 -
Robot con control remoto y cámara de vídeo integrada
- 20 -
Robot con control remoto y cámara de vídeo integrada
• GL: bit 0, indica cuando está a uno que los sensores CNY70 de
la tarjeta controladora de motores han detectado la presencia de
la línea guía.
- 21 -
Robot con control remoto y cámara de vídeo integrada
FILA
COLUMNA
FILA
COLUMNA
*26
LSAPID 0 IHB GL
7 6 5 4 3 2 1 0
Byte 1
Figura 17 Gráfico del proceso de cálculo de la fila y columna de imagen.
- 22 -
Robot con control remoto y cámara de vídeo integrada
- 23 -
Robot con control remoto y cámara de vídeo integrada
2
3 D1 MOT1_DIR1 7 6 1N4001 1N4001
GND 2A 2Y
1
1
+ C3 C1 C4 + C2 PWR_ON MOT2_DIR0 10 11 J6 C6
J5 220uF 100nF 100uF 100nF J4 MOT2_DIR1 15 3A 3Y 14 MOT1 100nF
PWR_IN PWR_OUT 4A 4Y
1
EN_MOT1 1 +7,2V
1/2EN
2
R3 EN_MOT2 9
470 3/4EN
+5V 16 D6 D5
8 VCC1
+7,2V VCC2 D9 D10 1N4001 1N4001
2
C9 + 1N4001
Y1 100uF J7 +7,2V
MOT2 1N4001 C10
XTAL1 XTAL2 100nF
1
U3 AT90S8515 +7,2V
C7 8MHz C8
GOT_LINE 39 21 CNY 1 15pF 15pF
MOTAC3 38 PA0/AD0 PC0/A8 22 CNY 2 D7 D8
MOTAC2 37 PA1/AD1 PC1/A9 23 CNY 3 +5V
MOTAC1 36 PA2/AD2 PC2/A10 24 CNY 4 1N4001 1N4001
MOTAC0 35 PA3/AD3 PC3/A11 25 BUMPER1 R21 470
MODE 34 PA4/AD4 PC4/A12 26 BUMPER2 +7,2V
MARCHA 33 PA5/AD5 PC5/A13 27 BUMPER3 D12
32 PA6/AD6 PC6/A14 28 BUMPER4 J16 +5V
PA7/AD7 PC7/A15 PROG
+5V +5V
MOT1_DIR0 1 10 EXP1 MOSI 1 2
D11 MOT1_DIR1 2 PB0/T0 PD0/RXD 11 EXP2 3 4
READY MOT2_DIR0 3 PB1/T1 PD1/TXD 12 MODE R22 10K RST 5 6 R14 R16
MOT2_DIR1 4 PB2/AIN0 PD2/INT0 13 INT_MEC SCK 7 8 10K 10K
5 PB3/AIN1 PD3/INT1 14 BUMP_TRAS MISO 9 10
MOSI 6 PB4/SS PD4 15 EN_MOT1 D13 RESET MARCHA
MISO 7 PB5/MOSI PD5/OC1A 16 EXP3 DIODO_RST
D14 SCK 8 PB6/MISO PD6/WR 17 EXP4 PROGRAMADOR SW1 SW2
R18 PB7/SCK PD7/RD RESET C12 C11
DEP RESET MARCHA
470 XTAL1 19 30 100nF 100nF
XTAL2 18 XTAL1 ALE 29 EN_MOT2 +5V U4A
XTAL2 OC1B
1
31 3 R15 R17
14
R1
GND
7432 6
7
5 J12 J14
3.1.1. ALIMENTACIÓN
Este es un bloque fundamental pues la alimentación tiene que
estar muy estabilizada porque los motores son una fuente de ruido
impulsivo en las líneas de alimentación. La estabilización se
consigue separando la alimentación de los motores de la del resto
de la tarjeta.
- 24 -
Robot con control remoto y cámara de vídeo integrada
1
+ C3 C1 C4 + C2 PWR_ON
J5 220uF 100nF 100uF 100nF J4
PWR_IN PWR_OUT
2
2
R3
470
3.1.2. SENSORES
El robot ha de ser capaz de orientarse automáticamente. Para
la orientación deberá seguir una línea negra sobre un fondo blanco.
Adicionalmente se han de poder detectar posibles colisiones con
obstáculos.
- 25 -
Robot con control remoto y cámara de vídeo integrada
+5V
R2 R1
220 47K
1
CNY 70
+5V
2
+5V
R2
J1
220
4
OUT
4
3
R1 47K 2 CNY 70
+5V 1
CNY x
2
- 26 -
Robot con control remoto y cámara de vídeo integrada
+5V
+5V
R1
10K
BUMPER NO
NC
BUMPERx
- 27 -
Robot con control remoto y cámara de vídeo integrada
MOT1_DIR0 2 3 D3 D4
1A 1Y
2
MOT1_DIR1 7 6 1N4001 1N4001
MOT2_DIR0 10 2A 2Y 11 J6 C6
MOT2_DIR1 15 3A 3Y 14 MOT1 100nF
4A 4Y
1
EN_MOT1 1 +7,2V
EN_MOT2 9 1/2EN
3/4EN
+5V 16 D6 D5
8 VCC1
+7,2V VCC2 D9 D10 1N4001 1N4001
2
C9 + 1N4001
100uF J7 +7,2V
MOT2 1N4001 C10
100nF
1
+7,2V
D7 D8
1N4001 1N4001
+7,2V
- 28 -
Robot con control remoto y cámara de vídeo integrada
3.1.4. PROCESADO
Este bloque de la tarjeta tiene como finalidad coordinar el
funcionamiento de los bloques de sensores y driver de motores
además de realizar las órdenes recibidas de la tarjeta principal.
GOT_LINE 39 21 CNY 1
MOTAC3 38 PA0/AD0 PC0/A8 22 CNY 2
MOTAC2 37 PA1/AD1 PC1/A9 23 CNY 3
MOTAC1 36 PA2/AD2 PC2/A10 24 CNY 4
MOTAC0 35 PA3/AD3 PC3/A11 25 BUMPER1
MODE 34 PA4/AD4 PC4/A12 26 BUMPER2
MARCHA 33 PA5/AD5 PC5/A13 27 BUMPER3
32 PA6/AD6 PC6/A14 28 BUMPER4
PA7/AD7 PC7/A15
MOT1_DIR0 1 10 EXP1
D11 MOT1_DIR1 2 PB0/T0 PD0/RXD 11 EXP2
READY MOT2_DIR0 3 PB1/T1 PD1/TXD 12 MODE
MOT2_DIR1 4 PB2/AIN0 PD2/INT0 13 INT_MEC
5 PB3/AIN1 PD3/INT1 14 BUMP_TRAS
MOSI 6 PB4/SS PD4 15 EN_MOT1
MISO 7 PB5/MOSI PD5/OC1A 16 EXP3
D14 SCK 8 PB6/MISO PD6/WR 17 EXP4
R18 PB7/SCK PD7/RD
DEP
470 XTAL1 19 30
XTAL2 18 XTAL1 ALE 29 EN_MOT2
XTAL2 OC1B
31
RESET 9 ICP
R1 RST
470 40
20
+5V VCC
GND
- 29 -
Robot con control remoto y cámara de vídeo integrada
+5V
R21 470
D12
PROG J16 +5V
MOSI 1 2
3 4
R22 10K RST 5 6
SCK 7 8
MISO 9 10
D13
DIODO_RST
PROGRAMADOR
RESET
RST
+5V
R22 10K +5V
D13 R14
DIODO_RST 10K
RESET
SW1
C12 RESET
100nF
R15
1K
- 30 -
Robot con control remoto y cámara de vídeo integrada
+5V U4A
1
BUMPER1
3
14
U4C
2
BUMPER2
9
INT_MEC 8 7432
10
U4B
4
CNY 1
7432 6
7
CNY 2
7432
- 31 -
Robot con control remoto y cámara de vídeo integrada
- 32 -
Robot con control remoto y cámara de vídeo integrada
- 33 -
Robot con control remoto y cámara de vídeo integrada
.ORG 0x000
;Salto a rutina de reset
rjmp RESET
;Salto a rutina de cambio de modo
rjmp INT_MODE
;Salto a rutina de desvío o colisión
rjmp INT_MEC
;Si saltan estas interrupciones se debe a un error
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
- 34 -
Robot con control remoto y cámara de vídeo integrada
rjmp RESET
- 35 -
Robot con control remoto y cámara de vídeo integrada
cbi PORTA,7
;Aplicamos un retardo antes de arrancar
rcall RETARDO
rcall RETARDO
rcall RETARDO
;El robot siempre empieza en modo automático
rjmp AUTOMAT
En el momento en el que el robot se queda en espera activa
ejecuta dos instrucciones. La segunda de ellas, la que cierra el bucle,
se salta cuando la pista de marcha se pone a cero.
- 36 -
Robot con control remoto y cámara de vídeo integrada
AUTOMAT:
ldi r20,HIGH(VEL_MED)
ldi r21,LOW(VEL_MED)
ldi r22,HIGH(VEL_MAX2)
ldi r23,LOW(VEL_MAX2)
;Habilitamos las interrupciones
sei
;Los registros 20 y 21 tienen el valor VEL_MED
;Los registros 22 y 23 tienen el valor VEL_MAX
;Arrancamos ambos PWM a velocidad media
out OCR1AH,r20
out OCR1AL,r21
out OCR1BH,r20
out OCR1BL,r21
- 37 -
Robot con control remoto y cámara de vídeo integrada
BAUT:
;Leemos el puerto C
in r18,PINC
;Operaremos sobre el registro 24
mov r24,r18
;Ponemos a cero todos los bits menos el bit0 y el
bit1
andi r24,0x03
;Si no estamos sobre la línea hay que girar
brne GIR1
ldi r17,GO
;Si estamos sobre la línea seguimos recto
out PORTB,r17
out OCR1AH,r22
out OCR1AL,r23
out OCR1BH,r22
;Fijamos la velocidad al máximo
out OCR1BL,r23
rjmp BAUT
GIR1:
;Ponemos a cero todos los bits menos el bit1
andi r24,0x02
;Si el bit1 no es cero hay que mirar el bit0
brne GIR2
;Si el bit1 es cero es que el bit 0 es 1
ldi r17,GO
;Seguimos hacia delante
out PORTB,r17
out OCR1AH,r20
out OCR1AL,r21
;El lado de la derecha se ha quedado fuera de la
línea
out OCR1BH,r22
;por lo que el motor izquierdo tiene que reducir
out OCR1BL,r23
;Ponemos el flag T a uno (desviados por la derecha)
- 38 -
Robot con control remoto y cámara de vídeo integrada
set
rjmp BAUT
GIR2:
mov r24,r18
;Ponemos a cero todos los bits menos el bit0
andi r24,0x01
;Si los bits 0 y 1 estaban a uno hemos perdido la
línea
brne GIR3
;Si estamos aquí es que el bit0 era 0 y el bit1 era 1
ldi r17,GO
;Esto quiere decir que nos hemos desviado por la
izquierda
out PORTB,r17
out OCR1AH,r22
out OCR1AL,r23
out OCR1BH,r20
;El motor derecho tiene que reducir
out OCR1BL,r21
;Ponemos el flag T a cero (desviados por la izquierda)
clt
rjmp BAUT
Se puede ver que si alguno de los dos sensores centrales veía
a la línea no se hacen más comprobaciones y se vuelve al bucle. En
el caso de que los sensores centrales hayan perdido la línea se
consultan los laterales.
GIR3:
;Tenemos que comprobar los CNY secundarios
mov r24,r18
;Comprobamos el valor del CNY4
andi r24,0x08
;Si este CNY no está sobre la línea seguimos
comprobando
brne GIR4
;Si tenemos la línea bajo el CNY4 hay que girar a la
izquierda
ldi r17,RIGHT
out PORTB,r17
out OCR1AH,r20
out OCR1AL,r21
out OCR1BH,r20
- 39 -
Robot con control remoto y cámara de vídeo integrada
ROT:
;Antes de invertir los motores hay que pararlos
ldi r17,STOP
;(1 useg aprox.)
out PORTB,r17
brtc ROT2
- 40 -
Robot con control remoto y cámara de vídeo integrada
- 41 -
Robot con control remoto y cámara de vídeo integrada
OFFST:
;La orden 0x0 es seguir recto
rcall RECTO
- 42 -
Robot con control remoto y cámara de vídeo integrada
rjmp CMD
;La orden 0x1 es giro derecha
rcall GD1
rjmp CMD
;La orden 0x2 es giro izquierda
rcall GI1
rjmp CMD
;La orden 0x3 es dar marcha atrás
rcall ATRAS
rjmp CMD
;La orden 0x4 es desvio derecha
rcall GD0
rjmp CMD
;La orden 0x5 es desvio izquierda
rcall GI0
rjmp CMD
;La orden 0x6 es giro derecha trasero
rcall GD2
rjmp CMD
;La orden 0x7 es giro izquierda trasero
rcall GI2
rjmp CMD
;La orden 0x8 es acelerar
rcall ACLR
rjmp CMD
;La orden 0x9 es reducir
rcall FRNR
rjmp CMD
;La orden 0xa es buscar línea y parar
rcall BUSCL
rjmp CMD
;La orden 0xb es rotar hacia la izquierda
rcall ROTI
rjmp CMD
;La orden 0xc es rotar hacia la derecha
rcall ROTD
rjmp CMD
;La orden 0xd no está definida
rcall ERR
rjmp CMD
- 43 -
Robot con control remoto y cámara de vídeo integrada
CMD:
in r16,PINA
;Actualizamos el flag T
rcall FLG
;Comprobamos el flag de MODE (PA5)
andi r16,0x20
;Si seguimos en modo manual volvemos al bucle
brne 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
colisión.
- 44 -
Robot con control remoto y cámara de vídeo integrada
ldi r28,LOW(MANUAL)
push r28
push r27
reti
La otra interrupción es un poco más complicada. Primero se
comprueba que los bumpers siguen presionados, no sea que el
obstáculo se ha desplazado y ha liberado a los bumpers. De todas
formas esta situación es poco probable puesto que entre la
activación de la interrupción y la comprobación pasa un tiempo muy
pequeño. Después de esto, el robot da marcha atrás y aplica un
retardo suficiente para apartarse del obstáculo.
- 45 -
Robot con control remoto y cámara de vídeo integrada
rcall RETARDO
rcall RETARDO
rcall RETARDO
rcall RETARDO
rcall RETARDO
rcall RETARDO
rcall RETARDO
rcall RETARDO
;Paramos antes de invertir
ldi r17,STOP
out PORTB,r17
Después de esto comprueba cual de los dos bumpers golpeó
el obstáculo y gira en consecuencia. Si fueron ambos bumpers los
que golpearon lo que hace es rotar. Después de esto el robot que da
parado. La rutina principal, sea la manual o automática, se
encargará de determinar el siguiente movimiento del robot.
- 46 -
Robot con control remoto y cámara de vídeo integrada
rcall RETARDO
ldi r17,STOP
;Paramos después de esquivar
out PORTB,r17
;Hemos terminado
rjmp TER
BP2:
;Colisión frontal
brtc ESQ2
;Si estamos desviados por la derecha hay que rotar
hacia la izquierda
ldi 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
;Paramos después de esquivar y terminamos
out 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 mayoría, para
avanzar, parar o girar y su código es el mismo que se utiliza en el
resto del programa. Por esta razón no hay mucho que comentar
sobre estas subrutinas. Su código se muestra a continuación.
RECTO:
ldi r17,GO
- 47 -
Robot con control remoto y cámara de vídeo integrada
GD1:
ldi r17,RIGHT
;El robot girará a la izquierda a velocidad media
out PORTB,r17
out OCR1AH,r20
out OCR1AL,r21
out OCR1BH,r20
out OCR1BL,r21
ret
GI1:
ldi r17,LEFT
;El robot girará a la derecha a velocidad media
out 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
;El robot irá marcha atrás a velocidad media
out PORTB,r17
out OCR1AH,r20
out OCR1AL,r21
out OCR1BH,r20
out OCR1BL,r21
ret
- 48 -
Robot con control remoto y cámara de vídeo integrada
GD0:
ldi r17,GO
;El robot se desviará a la derecha
out PORTB,r17
out OCR1AH,r20
out OCR1AL,r21
out OCR1BH,r22
out OCR1BL,r23
ret
GI0:
ldi r17,GO
;El robot se desviará a la izquierda
out 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
;El robot se desviará a la derecha marcha atrás
out 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
;El robot se desviará a la izquierda marcha atrás
out PORTB,r17
out OCR1AH,r22
out OCR1AL,r23
- 49 -
Robot con control remoto y cámara de vídeo integrada
out OCR1BH,r20
out OCR1BL,r21
ret
ROTI:
;Hay que parar antes de invertir motores
rcall PARA
;Rotamos hacia la izquierda
ldi 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
;Paramos los motores
out PORTB,r17
out OCR1AH,r20
out OCR1AL,r21
out OCR1BH,r20
out OCR1BL,r21
ret
Sin embargo, hay algunas subrutinas especiales. Unas de
estas son las de cambio de velocidad global. Lo que hacen es
cambiar los valores almacenados en los registros de velocidad de
- 50 -
Robot con control remoto y cámara de vídeo integrada
ACLR:
cpi r22,HIGH(VEL_MAX)
;Si la velocidad no es la normal la aumentamos
brne 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)
;Si la velocidad no es la reducida la reducimos
brne FCB
ret
FCB:
ldi r20,HIGH(VEL_MED2)
ldi r21,LOW(VEL_MED2)
ldi r22,HIGH(VEL_MAX2)
ldi r23,LOW(VEL_MAX2)
ret
Otra subrutina especial es la de buscar y parar. Esta subrutina
hace que el robot gire sobre sí mismo hasta encontrar la línea. Una
vez encontrada se queda parado. Para determinar el sentido de giro
hace uso del bit T.
BUSCL:
;Comprobamos los CNY 1 y 2 si no están ambos a cero
hay que seguir buscando
in r18,PORTC
andi r18,0x03
brne NOLN
;Si tenemos la línea paramos y lo indicamos en PA0
rcall PARA
sbi PORTA,0
ret
- 51 -
Robot con control remoto y cámara de vídeo integrada
NOLN:
brtc CGIR
;Si estamos desviados por la derecha hay que rotar
hacia la izquierda
ldi 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
;Ambos motores reducen la marcha
out OCR1BL,r21
ret
La subrutina de error se asocia a instrucciones reservadas y lo
que hace es encender el LED de depuración para notificar el error.
ERR:
;Encendemos el LED de depuración
sbi PORTB,4
ret
La última subrutina que queda por explicar es la de
actualización del bit T. Esta rutina comprueba las lecturas de los
CNY70 y asigna un valor al bit T del registro de estado dependiendo
de en qué flanco se encuentre la línea.
FLG:
;Leemos el puerto C
in r18,PORTC
;Operaremos sobre el registro 24
mov r24,r18
andi r24,0x03
brne FLG1
;Si estamos sobre la línea el flag no cambia
ret
FLG1:
andi r24,0x01
brne FLG2
- 52 -
Robot con control remoto y cámara de vídeo integrada
- 53 -
Robot con control remoto y cámara de vídeo integrada
R1 1
470
U2 AT90S8515 TARJ_CTRL J5
PIX0 39 21 GOT_LINE 1
PIX1 38 PA0/AD0 PC0/A8 22 MOTAC3 2
PA1/AD1 PC1/A9 +5V
PIX2 37 23 MOTAC2 Y1 SRV2 3
PIX3 36 PA2/AD2 PC2/A10 24 MOTAC1
PIX4 35 PA3/AD3 PC3/A11 25 MOTAC0 XTAL1 XTAL2
PIX5 34 PA4/AD4 PC4/A12 26 MODE SERVO2
PIX6 33 PA5/AD5 PC5/A13 27 INCAM C5 8MHz C6
PIX7 32 PA6/AD6 PC6/A14 28 ADCSTR 15pF 15pF +5V
PA7/AD7 PC7/A15
CAM1 1 10 RX U3 PIC16F84
CAM2 2 PB0/T0 PD0/RXD 11 TX R2
CAM3 3 PB1/T1 PD1/TXD 12 XRESET SRV1 17 6 CAM1 10K
CAM4 4 PB2/AIN0 PD2/INT0 13 SIN Y2 SRV2 18 RA0 RB0/INT 7 CAM2
PB3/AIN1 PD3/INT1 LOAD RA1 RB1 CAM3 J17 RESET
5 14 1 8
MOSI 6 PB4/SS PD4 15 XCLK OSC2 OSC1 2 RA2 RB2 9 CAM4
MISO 7 PB5/MOSI PD5/OC1A 16 START 3 RA3 RB3 10 EXP0 4 SW1
D14 SCK 8 PB6/MISO PD6/WR 17 READ C8 20MHz C9 RA4/TOCKI RB4 11 EXP1 3 C7
PB7/SCK PD7/RD RB5 RESET
DEP 15pF 15pF OSC1 16 12 EXP2 2 100nF
XTAL1 19 30 OSC2 15 OSC1/CLKIN RB6 13 EXP3 1
XTAL2 18 XTAL1 ALE 29 OSC2/CLKOUT RB7
XTAL2 OC1B RESET 4 R3
31 MCLR 1K
R4 RESET 9 ICP 14 EXPANS
RST +5V VDD 5
470
GND
40 GND
+5V VCC
20
+5V
R5 1.2K U4 J7
8 16 PIX6 START 6
MOSI 1 2 13 RD D6 17 PIX7 READ 7
3 4 CS D7 VOUT 8
R22 10K RST 5 6 ADCSTR 6 9 INCAM 9
SCK 7 8 WR/RDY INT 18 10
GND
MISO 9 10 20 OFL 11
+5V VCC
D13 12
DIODO_RST
10
PROGRAMADOR1 ADC0820
RESET
CAMARA
J8
TX 1 2
3 4
RX 5 6
7 8
9 10 +5V
Title
AURIEL Tarjeta Principal para Robot LSED
- 54 -
Robot con control remoto y cámara de vídeo integrada
4.1.1. ALIMENTACIÓN
La tarjeta principal se puede alimentar de dos formas distintas.
Las distintas formas se seleccionan abriendo o cerrando un jumper.
- 55 -
Robot con control remoto y cámara de vídeo integrada
J4
1
2 +5V U3 PIC16F84
3
SRV1 17 6 CAM1
SRV2 18 RA0 RB0/INT 7 CAM2
RA1 RB1 CAM3 J17
SERVO1 1 8
J5 2 RA2 RB2 9 CAM4
3 RA3 RB3 10 EXP0 4
1 RA4/TOCKI RB4 11 EXP1 3
2 OSC1 16 RB5 12 EXP2 2
+5V OSC1/CLKIN RB6
3 OSC2 15 13 EXP3 1
OSC2/CLKOUT RB7
RESET 4
SERVO2 MCLR
14 EXPANS
+5V VDD 5
GND
- 56 -
Robot con control remoto y cámara de vídeo integrada
J7
+5V 1
XRESET 2
SIN 3
LOAD 4
XCLK 5
START 6
READ 7
VOUT 8
9
10
11
12
CAMARA +5V
U4 1.2K R5
PIX0 2 1
PIX1 3 D0 VIN
D1
2
PIX2 4 12
PIX3 5 D2 REF+ 11 +5V U5
PIX4 14 D3 REF-
D4 LM385-2.5/TO
PIX5 15 7
D5 MODE
1
PIX6 16 8
PIX7 17 D6 RD 13
D7 CS
INCAM 9 6 ADCSTR
18 INT WR/RDY
OFL 20
VCC +5V
10
GND
ADC0820
- 57 -
Robot con control remoto y cámara de vídeo integrada
4.1.4. PROCESADO
La configuración de este sector es análoga a la del mismo
sector en la otra tarjeta. La disposición de señales en el
microcontrolador es la siguiente.
U2 AT90S8515
PIX0 39 21 GOT_LINE
PIX1 38 PA0/AD0 PC0/A8 22 MOTAC3
PIX2 37 PA1/AD1 PC1/A9 23 MOTAC2
PIX3 36 PA2/AD2 PC2/A10 24 MOTAC1
PIX4 35 PA3/AD3 PC3/A11 25 MOTAC0
PIX5 34 PA4/AD4 PC4/A12 26 MODE
PIX6 33 PA5/AD5 PC5/A13 27 INCAM
PIX7 32 PA6/AD6 PC6/A14 28 ADCSTR
PA7/AD7 PC7/A15
CAM1 1 10 RX
CAM2 2 PB0/T0 PD0/RXD 11 TX
CAM3 3 PB1/T1 PD1/TXD 12 XRESET
CAM4 4 PB2/AIN0 PD2/INT0 13 SIN
5 PB3/AIN1 PD3/INT1 14 LOAD
MOSI 6 PB4/SS PD4 15 XCLK
MISO 7 PB5/MOSI PD5/OC1A 16 START
D14 SCK 8 PB6/MISO PD6/WR 17 READ
PB7/SCK PD7/RD
DEP
XTAL1 19 30
XTAL2 18 XTAL1 ALE 29
XTAL2 OC1B
31
R4 RESET 9 ICP
470 RST
+5V 40
VCC20
GND
- 58 -
Robot con control remoto y cámara de vídeo integrada
- 59 -
Robot con control remoto y cámara de vídeo integrada
serie por SIN, temporizada por XCLK y validada por LOAD. La pista
READ es la notificación de la cámara de que tiene un píxel nuevo
preparado para la conversión.
- 60 -
Robot con control remoto y cámara de vídeo integrada
CSEG
- 61 -
Robot con control remoto y cámara de vídeo integrada
.ORG 0x000
;Salto a rutina de reset
rjmp RESET
;Si saltan estas interrupciónes se debe a un error
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
rjmp RESET
;TIMER asociado a la RF
rjmp IRQ_TIMER1
;TIMER asociado a rutina de captura de datos
rjmp IRQ_TIMER0
;Si salta esta interrupción se debe a un error
rjmp RESET
;Tenemos datos del control remoto!
rjmp IRQ_RX
;Se puede enviar el siguiente dato
rjmp IRQ_UOBE
;Si saltan estas interrupciónes se debe a un error
rjmp RESET
rjmp RESET
;Rutina de reset
RESET:
ldi r16,0x02
out SPH,r16
ldi r16,0x5f
;SP al final de la RAM
out SPL,r16
clr r16
;Interrup. deshabilitadas
out SREG,r16
- 62 -
Robot con control remoto y cámara de vídeo integrada
- 63 -
Robot con control remoto y cámara de vídeo integrada
;Reset de la cámara
rcall RCAM
;Tamaño del buffer
ldi r16,96
ldi r30,0x02
ldi r31,0x01
;Guardamos en la dirección 0x0102
st z,r16
;Capacidad del acumulador inicialmente al maximo
ldi r16,8
mov enACUav, r16
mov deACUav, r16
;Empieza el programa
rjmp PROG
RCAM:
;primero reseteamos la camara
;poner a cero reloj
cbi PORTD, XCLK
cbi PORTD, XRESET
sbi PORTD, XCLK
sbi PORTD, XRESET
;Cargamos valores por defecto
ldi mierda1, 0x3f
sts CAMDATA, mierda1
- 64 -
Robot con control remoto y cámara de vídeo integrada
rcall CAM_LOAD_REGISTERS
ret
Estos valores por defecto ajustan el tiempo de exposición, la
ganancia, la luminancia a unos valores típicos. También se aseguran
de que el rango dinámico de la señal esta de acuerdo con lo que
espera el conversor analógico-digital. Es decir, 1V pico a pico más
1V de continua.
CAM_LOAD_REGISTERS:
push sucio
push ocho
push mierda1
- 65 -
Robot con control remoto y cámara de vídeo integrada
push r30
push r31
;contador de 0 a 7 para los registros
clr sucio
bucleCarga:
mov r5,sucio
;Calculamos dirección y leemos dato
ldi mierda1, LOW(CAMDATA)
add ocho, mierda1
ldi mierda1, HIGH(CAMDATA)
adc r5,mierda1
mov r30, ocho
mov r31, r5
ld ocho, z
Se han definido nombres simbólicos para algunos registros y
pines para hacer el programa más legible. Hecho esto entra en un
bucle que manda bit a bit la dirección y el dato. Esto se hace
mediante rotaciones.
rcall CAM_SIN_1
decB1:
;poner a uno
sbi PORTD, XCLK
;mover a la izq sucio para mandar el siguiente bit
lsl sucio
dec mierda1
brne cargaDirReg
;xSSSxxxx
lsl sucio
;volvemos a colocar sucio en su posicion original
xxxxxSSS
- 66 -
Robot con control remoto y cámara de vídeo integrada
swap sucio
rjmp masDat
manda_cero:
rcall CAM_SIN_0
rjmp decB1
masDat:
;ahora metemos los ocho bits de datos
ldi mierda1, 8
cargaDatReg:
;poner a cero el reloj
cbi PORTD, XCLK
sbrs ocho, 7
rjmp manda_cero_
rcall CAM_SIN_1
decB2:
;poner a uno
sbi PORTD, XCLK
;mover a la izq sucio para mandar el siguiente bit
lsl ocho
dec mierda1
brne cargaDatReg
;terminado el registro se manda el siguiente
inc sucio
cpi sucio, 8
breq finCargaS
;mandar la señal de carga
sbi PORTD, LOAD
;reloj de camara a cero
cbi PORTD, XCLK
cbi PORTD, LOAD;
rjmp bucleCarga
manda_cero_:
rcall CAM_SIN_0
rjmp decB2
Se recupera el contexto y se termina con la subrutina.
finCargaS:
pop r31
- 67 -
Robot con control remoto y cámara de vídeo integrada
pop r30
pop mierda1
pop ocho
pop sucio
ret
Se han utilizado dos subrutinas que lo que hacen es activar o
desactivar la pata SIN del microcontrolador.
CAM_SIN_1:
;poner un 1 a Serial IN de la Camara
sbi PORTD, SIN
ret
CAM_SIN_0:
;poner a 0 la serial in de la camara
cbi PORTD, SIN
ret
PROG:
;activar contador TIMER0
clr mierda1
out TCCR0,mierda1
;activar la camara
cbi PORTD, XCLK
sbi PORTD, START;-------------------
sbi PORTD, XCLK
cbi PORTD, START
;habilitar interrupciones
sei
mainloop:
nop
rjmp mainloop
- 68 -
Robot con control remoto y cámara de vídeo integrada
- 69 -
Robot con control remoto y cámara de vídeo integrada
- 70 -
Robot con control remoto y cámara de vídeo integrada
◄ C ◄
- 71 -
Robot con control remoto y cámara de vídeo integrada
AL_ENLACE:
ldi toSend, 0x08
loop1:
lsl enDATA ;BMS del enDATA al C
brcs send1 ;si C==1 enviamos 1
ldi enCount1, $06 ;como es 0, se resetea el contador
alAcu:
rol enACU ;al acu por la derecha el C que es
el dato que queremos
rjmp chkAcu;
send1:
dec enCount1
brne alAcu ;no se han mandado mas de 5 unos
ror enDATA ;volvemos a meter a enDATA el BMS
lsl enACU ;metemos al acumulador un 0 por la
derecha
inc toSend;
chkAcu:
dec enACUav ;
brne sig1 ;
;ENVIO A LA UART DEL BYTE SI PROCEDE (AL_CANAL)
del enACU
rcall AL_CANAL
sig1:
clr enACU;
ldi ocho, 0x08
mov enACUav, ocho;
dec toSend
brne loop1;
ret
Y el decodificador de enlace
- 72 -
Robot con control remoto y cámara de vídeo integrada
alACU2:
rol deACU ;se meten los datos por la derecha
del C
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 ;esto si tenemos un cero que sobra
brmi rx01 ;cero legal, se mete al acu
;eso es una bonita trama
;y se indica en el BMS del byte COMM
cbr COMM, 6 ;x0xxxxxx, dato no valido
sbr COMM, 7 ;1xxxxxxx, frame separator
clr deACU ;
mov deACUav, ocho;
rjmp deACUChk
rx01:
clr deCount1
clc ;poner a cero el C para que
el rol meta un cero
rjmp alACU2
- 73 -
Robot con control remoto y cámara de vídeo integrada
rx02:
clr deCount1
deACUChk:
dec toRec
brne loop2
Que también hace uso de la subrutina de envío de
confirmaciones de comando y de la subrutina de procesado de bytes:
sigue5:
;comprobar si estamos en espera de comando
sbrs COMM, 5
rjmp finpro
cbr COMM, 5 ;ya lo atendemos y pasamos a modo de
espera general
;comprobar si es el RESERVADO antes de nada, que
tiene prioridad
cpi deACU, 0xff
breq COM_VALID
- 74 -
Robot con control remoto y cámara de vídeo integrada
cp ocho, sucio
brne yaenviado
COM_VALID:
;comando valido
push ocho
rcall SEND_ACK
;almacenamos el comando valido en la ventana de
recepcion
;para mandar ACKs de paquetes ya recibidos
ldi mierda1, buffFR
add ocho, mierda1;ocho contiene la pos de memoria
RAM donde guardar
push r30
push r31
mov r30, ocho
st z, backup
pop r31
pop r30
inc sucio
andi sucio, $3F
sts expFRID, sucio
rjmp finpro
yaenviado:
mov sucio, ocho
ldi mierda1, buffFR
add sucio, mierda1; tenemos la pos de memoria
ande mirar
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 -
Robot con control remoto y cámara de vídeo integrada
finpro:
mov deACU, backup
ret
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 con 01xxxxxx, que
indica ACK de comando
mov enDATA, sucio
rcall AL_ENLACE
pop r31;
pop r30;
pop sucio;
pop enDATA
ret
La rutina encargada de procesar bytes se fija, primeramente si
está activado el bit de trama nueva (FR, 7) de COMM, y en caso
contrario, si está activado el bit de dato válido (VD, 6) del registro
COMM. En este último caso recoge el byte decodificado y determina
si se trata de un inicio de trama de comando, en cuyo caso
almacena el ID de la trama en la posición de memoria de currFRID y
activa el bit 5 del COMM, indicando que esta a la espera de nuevo
comando (WC).
- 76 -
Robot con control remoto y cámara de vídeo integrada
sig123:
clr enACU;
mov enACUav, ocho;
dec toSend
- 77 -
Robot con control remoto y cámara de vídeo integrada
brne loop123;
ret
;nivel fisico
AL_CANAL:
cpi puntMete, capBuffer
breq fincanal
mov ocho, puntMete
clr sucio
- 78 -
Robot con control remoto y cámara de vídeo integrada
inc puntMete
fincanal:
ret
ENVIA_SERIE:
;metemos el byte SOLO si ya esta vacio el UDRE
sbic USR, 5
rjmp etiqueta
rcall actTIMER
rjmp finEnvia
- 79 -
Robot con control remoto y cámara de vídeo integrada
inc puntEnvio
cpi puntEnvio, capBuffer
brne finEnvia
clr puntEnvio
clr puntMete
finEnvia:
ret
actTIMER:
;activar tempo 1
ldi ocho,0x00
out TCNT1L,ocho
ldi ocho,0xb8
out TCNT1H,ocho ;Máximo retardo de 20us
ldi ocho,0x02
out TCCR1B,ocho
cbi UCR,3 ;deshabilitamos la TX de la UART
ret
- 80 -
Robot con control remoto y cámara de vídeo integrada
- 81 -
Robot con control remoto y cámara de vídeo integrada
- 82 -
Robot con control remoto y cámara de vídeo integrada
PIN 1
- 83 -
Robot con control remoto y cámara de vídeo integrada
DTR
POWER
POWER
RTX
- 84 -
Robot con control remoto y cámara de vídeo integrada
5.2. EL SOFTWARE
El software del equipo de control está escrito en el lenguaje Java de
Sun Microsystems, concretamente, para su versión de JSDK 1.4.1_02. La
elección de este lenguaje se ha debido a su práctica independencia de la
plataforma en que se ejecute la máquina virtual de Java. Asimismo, para
poder compilar el proyecto entero, se ha usado la herramienta ANT del
grupo Jakarta de la Apache Foundation. Para más información acerca de
la instalación de ANT, vea el apéndice A ‘Instalación del Software.’
- 85 -
Robot con control remoto y cámara de vídeo integrada
- 86 -
Robot con control remoto y cámara de vídeo integrada
- 87 -
Robot con control remoto y cámara de vídeo integrada
cero, independientemente de que el siguiente bit sea uno o cero, para así
evitar que los datos se confundan con los separadores de tramas. Cabe
destacar que el método getFrameDecoded(byte) de la clase
FrameEncoder puede devolver tres tipos de datos:
- 88 -
Robot con control remoto y cámara de vídeo integrada
- 89 -
Robot con control remoto y cámara de vídeo integrada
Además recoge estadísticas de uso del radio enlace que pueden ser
consultadas a través de la función 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 envío y recepción 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
PING_ECHO_REQUESTED cuando se reciben en la unidad remota y
PING_ECHO_RECEIVED cuando se recibe en la unidad que envió el
comando original el ACK del mismo.
- 90 -
Robot con control remoto y cámara de vídeo integrada
- 91 -
Robot con control remoto y cámara de vídeo integrada
http://java.sun.com/j2se/downloads.html
- 92 -
Robot con control remoto y cámara de vídeo integrada
- 93 -
Robot con control remoto y cámara de vídeo integrada
SET CLASSPATH=%CLASSPATH%;<PATH_COMM.JAR>\comm.jar
http://www.theexbteam.com/robots
SET CLASSPATH=%CLASSPATH%;<PATH_CARPETA_INSTALACIÓN>\
Para ejecutar las distintas Interfaces de Usuario o programas de
diagnóstico, refiérase al fichero README.TXT de la distribución, en la
que encontrará detallada información acerca de los programas incluidos.
SET PATH=%PATH%;<ant>\bin\
SET ANT_HOME=<ant>
- 94 -
Robot con control remoto y cámara de vídeo integrada
SET JAVA_HOME=<PATH_JSDK>\
- 95 -
Robot con control remoto y cámara de vídeo integrada
- 96 -
U1 L7805/TO220
J3 +5V J10 J4
1 3 1 2 8
VIN VOUT GOT_LINE 7 1
2 REGULADOR D1 MOTAC3 6 2
1
1
GND +5V
+ C1 C2 C3 + C4 PWR_ON MOTAC2 5 SRV1 3
J1 220uF 100nF 100uF 100nF J2 R7 MOTAC1 4
PWR_IN PWR_OUT 1K MOTAC0 3
MODE 2 SERVO1
2
2
R1 1
470
U2 AT90S8515 TARJ_CTRL J5
PIX0 39 21 GOT_LINE 1
PIX1 38 PA0/AD0 PC0/A8 22 MOTAC3 2
PA1/AD1 PC1/A9 +5V
PIX2 37 23 MOTAC2 Y1 SRV2 3
PIX3 36 PA2/AD2 PC2/A10 24 MOTAC1
PIX4 35 PA3/AD3 PC3/A11 25 MOTAC0 XTAL1 XTAL2
PIX5 34 PA4/AD4 PC4/A12 26 MODE SERVO2
PIX6 33 PA5/AD5 PC5/A13 27 INCAM C5 8MHz C6
PIX7 32 PA6/AD6 PC6/A14 28 ADCSTR 15pF 15pF +5V
PA7/AD7 PC7/A15
CAM1 1 10 RX U3 PIC16F84
CAM2 2 PB0/T0 PD0/RXD 11 TX R2
CAM3 3 PB1/T1 PD1/TXD 12 XRESET SRV1 17 6 CAM1 10K
CAM4 4 PB2/AIN0 PD2/INT0 13 SIN Y2 SRV2 18 RA0 RB0/INT 7 CAM2
PB3/AIN1 PD3/INT1 LOAD RA1 RB1 CAM3 J17 RESET
5 14 1 8
MOSI 6 PB4/SS PD4 15 XCLK OSC2 OSC1 2 RA2 RB2 9 CAM4
MISO 7 PB5/MOSI PD5/OC1A 16 START 3 RA3 RB3 10 EXP0 4 SW1
D14 SCK 8 PB6/MISO PD6/WR 17 READ C8 20MHz C9 RA4/TOCKI RB4 11 EXP1 3 C7
PB7/SCK PD7/RD RB5 RESET
DEP 15pF 15pF OSC1 16 12 EXP2 2 100nF
XTAL1 19 30 OSC2 15 OSC1/CLKIN RB6 13 EXP3 1
XTAL2 18 XTAL1 ALE 29 OSC2/CLKOUT RB7
XTAL2 OC1B RESET 4 R3
31 MCLR 1K
R4 RESET 9 ICP 14 EXPANS
RST +5V
470 VDD 5
40 GND
+5V
GND
VCC
20
+5V
R5 1.2K U4 J7
- 97 -
+5V VOUT 1 2 PIX0
VIN D0 3 PIX1 1
2
D1 +5V
R21 470 12 4 PIX2 XRESET 2
U5 +5V 11 REF+ D2 5 PIX3 SIN 3
D12 REF- D3 14 PIX4 LOAD 4
LM385-2.5/TO D4
J16 +5V 7 15 PIX5 XCLK 5
1
PROG MODE D5
8 16 PIX6 START 6
MOSI 1 2 13 RD D6 17 PIX7 READ 7
3 4 CS D7 VOUT 8
R22 10K RST 5 6 ADCSTR 6 9 INCAM 9
SCK 7 8 WR/RDY INT 18 10
MISO 9 10 20 OFL 11
+5V
GND
D13 VCC 12
DIODO_RST
10
PROGRAMADOR1 ADC0820
RESET
CAMARA
J8
TX 1 2
3 4
RX 5 6
7 8
9 10 +5V
Title
AURIEL Tarjeta Principal para Robot LSED
A4 1 1.2
2
3 D1 MOT1_DIR1 7 1A 1Y 6 1N4001 1N4001
1
1
+ C3 C1 GND C4 + C2 MOT2_DIR0 10 2A 2Y 11 J6 C6
PWR_ON 3A 3Y
J5 220uF 100nF 100uF 100nF J4 MOT2_DIR1 15 14 MOT1 100nF
PWR_IN PWR_OUT 4A 4Y
1
EN_MOT1 1 +7,2V
2
2
R3 EN_MOT2 9 1/2EN
470 3/4EN
+5V 16 D6 D5
8 VCC1
+7,2V VCC2 D9 D10 1N4001 1N4001
2
C9 + 1N 4001
Y1 100uF J7 +7,2V
MOT2 1N 4001 C10
XTAL1 XTAL2 100nF
1
U3 AT90S8515 +7,2V
C7 8MHz C8
GOT_LINE 39 21 CNY 1 15pF 15pF
MOTAC3 38 PA0/AD0 PC0/A8 22 CNY 2 D7 D8
MOTAC2 37 PA1/AD1 PC1/A9 23 CNY 3 +5V
MOTAC1 36 PA2/AD2 PC2/A10 24 CNY 4 1N4001 1N4001
MOTAC0 35 PA3/AD3 PC3/A11 25 BUMPER1 R21 470
MODE 34 PA4/AD4 PC4/A12 26 BUMPER2 +7,2V
MARCHA 33 PA5/AD5 PC5/A13 27 BUMPER3 D12
32 PA6/AD6 PC6/A14 28 BUMPER4 J16 +5V
PA7/AD7 PC7/A15 PROG
+5V +5V
MOT1_DIR0 1 10 EXP1 MOSI 1 2
D11 MOT1_DIR1 2 PB0/T0 PD0/RXD 11 EXP2 3 4
READY MOT2_DIR0 3 PB1/T1 PD1/TXD 12 MODE R22 10K RST 5 6 R14 R16
MOT2_DIR1 4 PB2/AIN0 PD2/INT0 13 INT_MEC SCK 7 8 10K 10K
5 PB3/AIN1 PD3/INT1 14 BUMP_TRAS MISO 9 10
MOSI 6 PB4/SS PD4 15 EN_MOT1 D13 RESET MARCHA
MISO 7 PB5/MOSI PD5/OC1A 16 EXP3 DIODO_RST
D14 SCK 8 PB6/MISO PD6/WR 17 EXP4 PROGRAMADOR SW1 SW2
R18 PB7/SCK PD7/RD RESET C12 C11
DEP RESET MARCHA
470 XTAL1 19 30 100nF 100nF
XTAL2 18 XTAL1 ALE 29 EN_MOT2 +5V U4A
1
XTAL2 OC1B
31 3 R15 R17
14
- 98 -
RESET 9 ICP U4C 2 1K 1K
9
R1 RST
470 +5V 40 INT_MEC 8 7432
GND
VCC 10 U4B
4
20
7432 6
7
5 J12 J14
12
BUMPER3 CNY 1 CNY 2 BUMPER4
BUMP_TRAS 11 R6 R8 BUMPER2
J10 J11
13 BUMPER4 220 220
A4 1 4.0
CNY 3 CNY 4
Date: Monday , June 23, 2003 Sheet 1 of 1
Robot con control remoto y cámara de vídeo integrada
The EXB Team (‘EXB’) garantiza al usuario una licencia de uso, modificación y
redistribución del software tanto en forma de código fuente o binario, no exclusiva y libre de
royalties, siempre que se mantenga:
Este software se distribuye “tal cual”, sin garantía alguna de cualquier tipo. Toda condición
explícita o implícita, representaciones y garantías, incluyendo aquellas que impliquen
garantías comerciales están excluidas. EXB y sus usuarios licenciados no serán
responsables por cual daño que sufran los usuarios licenciados como resultado del uso,
modificación o distribución del software o sus derivados. En ningún caso EXB o sus
usuarios licenciados serán responsables por cualquier pérdida de rédito, beneficio o datos
derivados del uso de este software.
- 99 -
Robot con control remoto y cámara de vídeo integrada
- 100 -
Robot con control remoto y cámara de vídeo integrada
9. BIBLIOGRAFÍA
Para más información sobre este y otros proyectos, versiones
actualizaciones del software y firmware del robot así como la API detallada de
las librerías empleadas, consulte
http://www.theexbteam.com/robots
- 101 -
Robot con control remoto y cámara de vídeo integrada
- 102 -