Sei sulla pagina 1di 28

Montaje de SumoBot

Realizaremos el montaje mediante 12 sencillos pasos. En cada uno de ellos se explicara el m


advertencias frente a problemas que puedan surgir.
Paso 1 Instalacin del portapilas
Materiales:

Chasis del SumoBot

Portapilas

2 Tornillos 3/8" longitud (1 cm) de cabeza plana.

2 Tuercas

Atornillar el portapilas a la base del chasis del SumoBot a travs de los orificios acondicionad
quedar en la parte exterior y las tuercas en el interior.

Instalacin del portapilas


Paso 2 Instalacin de los servo motores
Materiales:

Chasis del SumoBot

2 Servomotores Parallax

8 Tornillos 3/8" longitud (1 cm).

8 Tuercas

Unir los motores al chasis. La manera mas sencilla de realizar es mantener con un dedo la tuerca mientras co

Instalacin de los servomotores


Paso 3 Colocacin en el chasis del soporte trasero para el circuito impreso.
Materiales:

Chasis del SumoBot

2 Tornillos 3/8" longitud (1 cm).

2 Tubos roscados aluminio 5/8" longitud (1,5 cm)

Mediante los tornillos de 3/8 de pulgada atornillar los soportes para circuito impreso al chas
quedar por la parte inferior.

Paso 4 Colocacin de los soportes delanteros en la placa de circuito impreso.


Materiales:

Circuito impreso SumoBot

2 Tornillos 1" longitud (2,5 cm).

2 Tubos roscados aluminio 5/8" longitud (1,5 cm)

Colocar los tornillos y los tubos de aluminio en los orificios de la parte frontal del circuito imp
nombre del robot. (ver imagen)

Paso 5 Montaje de la placa de circuito impreso.


Materiales:

Chasis del SumoBot

Circuito impreso SumoBot

2 Arandelas de Nylon

2 Tornillos 3/8" longitud (1 cm).

2 Tubos roscados aluminio 1-1/4" longitud (3,2 cm)

Introducir los tornillos de 2,5 cm situados en la placa a travs de los orificios en la parte fr
tornillos, colocar 1 arandela de nylon en cada uno y atornilla los tubos de aluminio. Fina
orificios de la parte trasera del circuito integrado.

Paso 6 Preparacin de las ruedas.


Materiales:

2 Ruedas

2 Gomas

Ajusta la goma a travs de todo el permetro de la rueda, esto har que el microrobot tenga mayor traccin.

Paso 7 Monta las ruedas.


Materiales:

Chasis

2 Tornillos (Negros, incluidos con los servomotores)

2 Ruedas ya preparadas

Con los tornillos negros, fija por eje la rueda a la transmisin del servo motor.

Paso 8 Montaje del frontal.


Materiales:

Chasis

Frontal

2 Tornillos 1/4 longitud (0,6 cm)

2 Tuercas

Fija fuertemente el frontal al chasis del SumoBot por los dos agujeros en la parte frontal mediante los dos torn

Paso 9 Preparacin de los cables para sensores de lnea.


Materiales:

Chasis.

2 Cables de 10 longitud (25,4 cm)- 3 hilos.

Desliza ambos cables por el orificio central del chasis.

Paso 10 Instalar los sensores de lnea.


Materiales:

Chasis.

2 sensores de lnea.

2 Tornillos 1/4" longitud (0,6 cm).

Fija los sensores de lnea en el extremo del tubo de aluminio anteriormente instalado. Conecta los cables que
necesario mantener la polaridad. En el pequeo circuito del sensor vienen las iniciales del cable que correspo

Paso 11 Realizar las conexiones.


Materiales:

Circuito integrado SumoBot.

Cables sensores.

Cables motores.

Cables portapilas.

Realiza las conexiones en la placa SumoBot de los motores y sensores segn se indican a continuacin:
X7 = Servo motor izquierdo
X6 = Servo motor derecho
X5 = Sensor de lnea izquierdo
X4 = Sensor de lnea derecho

Tener en cuenta que la letra B en los conectores indica que ah debe ir el cable Negro[Black].

Conecta el pack de pilas al conector X1 de la placa. Es necesario soltar ligeramente los tornillos, introducir los

El cable con una lnea blanca corresponde al polo positivo (+).

Paso12 Colocacin de los sensores de infrarrojos


Materiales:

SumoBot

2 Emisores infrarrojos

2 Receptores infrarrojos

EnsambladodelosemisoresIR

ColocacindelossensoresIR

Montar los diodos dentro de su capuchn, esto se hace para evitar falsos positivos en el receptor. Doblar la
frontal del robot. Cortar ligeramente el receptor para que no sobresalga demasiado en el conector. Insertar los
respectivamente (ver imagen).

Paso 13 Encendido del SumoBot


El circuito impreso de SumoBot tiene un pequeo interruptor con tres posiciones con la siguiente codificacin:
Posicin 0 - No hay alimentacin
Posicin 1 - Alimentacin en el circuito impreso
Posicin 2 - Alimentacin en el circuito impreso y servo motores

Para conseguir un buen desarrollo y una fcil depuracin de los programas es conveniente estructurar el cdigo de manera que co
variables, constantes, entradas y salidas. A continuacin veremos como se definen todos estos elementos.
'PatxiOlivaMurillo
'Competi.BS2
'{$STAMPBS2}
'{$PBASIC2.5}

'[I/ODefinitions]

LMotorPIN13'servomotorizdo
RMotorPIN12'servomotordcho

LLinePwrPIN10'Powersensorlineaizdo
LLineInPIN9'Entradasensorlineaizdo
RLinePwrPIN7'Powersensorlineadcho
RLineInPIN8'Entradasensorlineadcho

LfIrOutPIN4'SalidaIRLEDizdo
LfIrInPIN11'EntradaIRsensorizdo
RtIrOutPIN15'SalidaIRLEDdcho
RtIrInPIN14'EntradaIRsensordcho

SpeakerPIN1'Zumbador
StartLEDPIN0'Led

'[Constants]

LFwdFastCON1000'motorizdoadelantefast
LFwdSlowCON800'motorizdoadelanteslow
LStopCON750'motorizdostop
LRevSlowCON700'motorizdoatrasslow
LRevFastCON500'motorizdoatrasfast


RFwdFastCON500'motordchoadelantefast
RFwdSlowCON700'motordchoadelanteslow
RStopCON750'motordchostop
RRevSlowCON800'motordchoatrasslow
RRevFastCON1000'motordchoatrasfast

'[Variables]

lLineVARWord'sensordelineaizdo
rLineVARWord'sensordelineadcho
blackThreshVARWord'threshold
lineBitsVARNib'sensoresdelineajuntos
lbLeftVARlineBits.BIT1
lbRightVARlineBits.BIT0

irBitsVARNib'Infrarrojos(izdaydcha)
irLeftVARirBits.BIT1
irRightVARirBits.BIT0
lastIrVARNib'ultimalecturainfrarrojos

pulsesVARByte'contadorparacontroldemotores
tempVARByte
tempoVARByte

'[EEPROMData]

RunStatusDATA$FF'Estadoactual

En la seccin I/O Definitions declararemos donde tenemos conectados nuestros sensores y actuadores. En el ejemplo de abajo v
conectados a los pines 13 y 12 respectivamente del nuestro microcontrolador.

Conexindelosmotores

Las secciones de Variables y Constantes establecern los nombres, valores y tamaos que se utilizaran en secciones siguiente

1 word

16 bits

1 byte

8 bits

1 nibble

4 bits

Los nombres de las variables han sido escogidos por su nombre en ingles, de esta manera la letra L indicar Izquierdo y R indic
diferentes sensores consiguiendo con esto una mayor transparencia y rpida identificacin.
Ej:
RLineIn

Right Line(Sensor) Input

LFwdFast

Left(Motor) Forward Fast

Ademas de nuestro programa tambin podremos escribir y leer variables en la memoria EEPROM por lo que definiremos un estado
memoria se realiza mediante las rdenes READ y WRITE.

READ RunStatus, temp

' Lee el estado actual en variable temp

WRITE RunStatus, Temp.

' Escribe variable temp en EEPROM

2.

Inicializacin

El reglamento de competicin en la categora de minisumo especifica que es necesario un tiempo de 5 segundos desde que el rob
periodo es importante sensorizar y reconocer donde se encuentra el contrario para girar y encararlo lo mas rpido posible. Otra pos
contrario no sepa de antemano cual va a ser tu movimiento inicial. En el cdigo de a continuacin se implementan 4 salidas diferen

Tenemos una variable que va tomando valores desde el 0 hasta el 8 circularmente, es decir, cuando sea 8 el siguiente valor de la v
se ejecuta la rutina Reset, esta incrementara en una unidad la variable y comprobara si estamos en valor par (estado de parada)
detallaran mas adelante.

Subrutinasdeinicio
' -----[ Initialization ]--------------------------------------------------

Reset:
READ RunStatus, temp

' Lee el estado actual

temp = temp + 1

' Suma 1 al estado

WRITE RunStatus, temp

' Guarda estado para el siguiente reset

IF (temp = 2) OR (temp = 4) OR (temp = 6) OR (temp = 8) THEN


IF (temp = 8) THEN temp = 0
WRITE RunStatus, temp
END
ENDIF
IF (temp = 0) THEN END

Start_Delay:

READ RunStatus, tempo


IF (tempo = 1) THEN

' Si es cero que no se mueva

FOR temp = 1 TO 5
FREQOUT Speaker, 100, 2500, 1500
PAUSE 900
NEXT
GOTO inicio1

ELSEIF (tempo = 3) THEN


FOR temp = 1 TO 5
FREQOUT Speaker, 100, 3000
PAUSE 900
NEXT
GOTO inicio2

ELSEIF (tempo = 5) THEN


FOR temp = 1 TO 5
FREQOUT Speaker, 100, 4000
PAUSE 900
NEXT
GOTO inicio3

ELSEIF (tempo = 7) THEN


FOR temp = 1 TO 5
FREQOUT Speaker, 100, 5000
PAUSE 900
NEXT

' Blip cada segundo


' Esperar 900 ms

GOTO inicio4

ENDIF

3.

Programa principal

El principal propsito que debe conseguir el robot es no salirse del rea de juego y como propsito secundario, que no por ello me

Lo primero que se realiza es una llamada a la subrutina Read_Line_Sensors. Esta subrutina hace una lectura de los sensores de
adelante veremos mas detenidamente esta funcin) .Veamos como hemos declarado anteriormente linebits:
lineBits

VAR

Nib

lbLeft

VAR

lineBits.BIT1

lbRight

VAR

lineBits.BIT0

Las variables 1bleft y 1bright guardan el valor 0 para negro y 1 para blanco. Por lo tanto la variable linebits tendr la siguiente
00

Ningn sensor sobre blanco

Search_For_Opponent

01

Sensor Derecho sobre blanco

Spin_Left

10

Sensor Izquierdo sobre blanco

Spin_Right

11

Los dos sensores sobre la lnea

About_Face

Con la orden BRANCH lo que hacemos es dirigir el flujo del programa segn el valor de dicha variable.

' -----[ Program Code ]----------------------------------------------------

Main:
GOSUB Read_Line_Sensors
' Si no se encuentra en el borde de la pista, continua buscando oponente
' en caso contrario dar media vuelta
BRANCH lineBits, [Search_For_Opponent, Spin_Left, Spin_Right, About_Face]

' --[ Border Avoidance ]--

Spin_Left:
' sensor derecho activo, girar a la derecha
FOR pulses = 1 TO 20
PULSOUT LMotor, LRevFast
PULSOUT RMotor, RFwdFast
'Mientras gira leer tambien los sensores IR
GOSUB Read_IR_Sensors
IF (irbits = %01) THEN Follow_Right
IF (irbits = %10) THEN Follow_Left
IF (irbits = %11) THEN Lunge
'Fin mientra gira leer sensores IR
PAUSE 20
NEXT
lastIr = %00

' Borrar direccion de escaneo

GOTO Main

Spin_Right:
' sensor izquierdo activo, girar a la derecha
FOR pulses = 1 TO 20
PULSOUT LMotor, LFwdFast
PULSOUT RMotor, RRevFast
'Mientras gira leer tambien los sensores IR
GOSUB Read_IR_Sensors

IF (irbits = %01) THEN Follow_Right


IF (irbits = %10) THEN Follow_Left
IF (irbits = %11) THEN Lunge
'Fin mientra gira leer sensores IR
PAUSE 20
NEXT
lastIr = %00
GOTO Main
'GOTO Lunge

About_Face:
' ambos sensores en Shikiri, hacia atrs y girar
FOR pulses = 1 TO 10
PULSOUT LMotor, LRevFast
PULSOUT RMotor, RRevFast
PAUSE 20
NEXT
FOR pulses = 1 TO 30

' girar

PULSOUT LMotor, LFwdFast


PULSOUT RMotor, RRevFast
PAUSE 20
NEXT
lastIr = %00
GOTO Main

En caso de que ninguno de los dos sensores detecte la lnea de borde, se llama a la subrutina Search_For_Opponent. Esta
sensores infrarrojos para buscar y seguir al oponente. El tratamiento dado a las variables sigue la misma filosofa que en el caso a

tenemos visin con el oponente.


00

Ningn sensor detecta al contrario

01

Sensor Derecho activo

10

Sensor Izquierdo activo

11

Los dos sensores ven al oponente

Scan

Follow_Right
Follow_Left
Lunge

' --[ IR Processing ]--

Search_For_Opponent:
GOSUB Read_IR_Sensors

' Si no esta el oponente a la vista, escanea la ultima direccin conocida, si lo ve con un ojo

BRANCH irBits, [Scan, Follow_Right, Follow_Left, Lunge]


Scan:
BRANCH lastIR, [Move_Fwd, Scan_Right, Scan_Left]
Move_Fwd:
GOSUB Creep_Forward
GOTO Main
Scan_Right:

' Giro a la derecha, despacio

FOR pulses = 1 TO 5
PULSOUT LMotor, LFwdSlow
PULSOUT RMotor, RRevSlow
PAUSE 20
NEXT
GOSUB Creep_Forward

' Movimiento por defecto

GOTO Main

Scan_Left:

' Giro a la izquierda, despacio

FOR pulses = 1 TO 5
PULSOUT LMotor, LRevSlow
PULSOUT RMotor, RFwdSlow
PAUSE 20
NEXT
GOSUB Creep_Forward
GOTO Main

Follow_Right:

' Giro a la derecha, rpido

PULSOUT LMotor, LFwdFast


PULSOUT RMotor, RRevSlow
lastIR = irBits

' guarda la ultima direccin encontrada

GOTO Main

Follow_Left:

' Gira a la izquierda, rpido

PULSOUT LMotor, LRevSlow


PULSOUT RMotor, RFwdFast
lastIR = irBits
GOTO Main

Lunge:
FOR pulses = 1 TO 25

' Objetivo, a por el!

PULSOUT LMotor, LFwdFast


PULSOUT RMotor, RFwdFast
NEXT
GOTO Main

4.

Subrutinas

En este apartado se especifican las subrutinas que utilizaremos a lo largo del programa: lectura de los sensores de lnea, lectura d
salidas que tenemos configuradas para nuestro robot.

' -----[ Subroutines ]-----------------------------------------------------

Read_Line_Sensors:
HIGH LLinePwr

' activa sensores

HIGH RLinePwr
HIGH LLineIn

' descarga capacitores

HIGH RLineIn
PAUSE 1
RCTIME LLineIn, 1, lLine

' leer sensor izdo

RCTIME RLineIn, 1, rLine

' leer sensor dcho

LOW LLinePwr

' desactiva sensores

LOW RLinePwr

' convert readings to bits


LOOKDOWN lLine, >=[1000, 0], lbLeft
LOOKDOWN rLine, >=[1000, 0], lbRight
RETURN

' 0 = negro, 1 = linea

Read_IR_Sensors:
FREQOUT LfIrOut, 1, 38500

' modula IR LED izdo

irLeft = ~LfIrIn

' leer entrada (1 = objetivo)

FREQOUT RtIrOut, 1, 38500

' modula IR LED dcho

irRight = ~RtIrIn

' leer entrada (1 = objetivo)

RETURN

Creep_Forward:
' Movimiento por defecto
FOR pulses = 1 TO 20
PULSOUT LMotor, LRevFast
PULSOUT RMotor, RFwdFast
PAUSE 20
NEXT
RETURN

inicio1:
FOR pulses = 1 TO 25

' Salida hacia adelante con impulso


' Va hacia atrs y luego hacia adelante

PULSOUT LMotor, LRevFast


PULSOUT RMotor, RRevFast
GOSUB Read_IR_Sensors
IF (irbits = %01) THEN Follow_Right
IF (irbits = %10) THEN Follow_Left
IF (irbits = %11) THEN Lunge

NEXT
GOTO Main

inicio2:

' Salida hacia atras y luego giramos

FOR pulses = 1 TO 240


PULSOUT LMotor, LRevFast
PULSOUT RMotor, RRevFast
NEXT
FOR pulses = 1 TO 240
PULSOUT LMotor, LRevFast
PULSOUT RMotor, RFwdFast
NEXT
GOTO Main

inicio3:
FOR pulses = 1 TO 50
PULSOUT LMotor, LFwdFast
PULSOUT RMotor, RRevFast
NEXT
FOR pulses = 1 TO 50
PULSOUT LMotor, LFwdFast
PULSOUT RMotor, RFwdFast
GOSUB Read_Line_Sensors
NEXT
FOR pulses = 1 TO 120

' Salida estratgica 3

PULSOUT LMotor, RFwdFast


PULSOUT RMotor, LRevFast
NEXT
GOTO Main

inicio4:

' Salida estratgica 4

FOR pulses = 1 TO 50
PULSOUT LMotor, LRevFast
PULSOUT RMotor, RFwdFast
NEXT
FOR pulses = 1 TO 50
PULSOUT LMotor, LFwdFast
PULSOUT RMotor, RFwdFast
GOSUB Read_Line_Sensors
NEXT
FOR pulses = 1 TO 120
PULSOUT LMotor, RRevFast
PULSOUT RMotor, LFwdFast
NEXT
GOTO Main

En el diagrama de a continuacin se muestra a modo de resumen el diagrama de flujo del programa

Diagramadeflujodelprograma

http://www.msebilbao.com/tienda/product_info.php?cPath=53_95&products_id=132
http://www.roboteknia.mx/revista/roboticistas/manuales/sumobot-roboteknia

Potrebbero piacerti anche