Top Banner

of 28

Montaje de SumoBot

Oct 06, 2015

Download

Documents

Arma tu propio robot
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Montaje de SumoBotRealizaremos el montaje mediante 12 sencillos pasos. En cada uno de ellos se explicara el material necesario as como recomendaciones y advertencias frente a problemas que puedan surgir.Paso 1 Instalacin del portapilasMateriales: Chasis del SumoBot Portapilas 2 Tornillos3/8" longitud (1 cm) de cabeza plana. 2 TuercasAtornillar el portapilas a la base del chasis del SumoBot a travs de los orificios acondicionados a tal efecto. La cabeza del tornillo debe quedar en la parte exterior y las tuercas en el interior.

Instalacin del portapilas

Paso 2 Instalacin de los servo motoresMateriales: Chasis del SumoBot 2 Servomotores Parallax 8 Tornillos3/8" longitud (1 cm). 8 TuercasUnir los motores al chasis. La manera mas sencilla de realizar es mantener con un dedo la tuerca mientras con la otra mano se atornilla.

Instalacin de los servomotores

Paso 3 Colocacin en el chasis del soporte trasero para el circuito impreso.Materiales: Chasis del SumoBot 2 Tornillos3/8" longitud (1 cm). 2 Tubos roscados aluminio5/8" longitud (1,5 cm)Mediante los tornillos de 3/8 de pulgada atornillar los soportes para circuito impreso al chasis del robot. Las cabezas del tornillo deben quedar por la parte inferior.

Paso 4 Colocacin de los soportes delanteros en la placa de circuito impreso.Materiales: Circuito impreso SumoBot 2 Tornillos1" longitud (2,5 cm). 2 Tubos roscados aluminio5/8" longitud (1,5 cm)Colocar los tornillos y los tubos de aluminio en los orificios de la parte frontal del circuito impreso. La parte frontal es donde aparece escrito el 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 Tornillos3/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 frontal del chasis. Por la parte sobresaliente de los tornillos, colocar 1 arandela de nylon en cada uno y atornilla los tubos de aluminio. Finalmente atornillar con los tornillos de 3/8 los dos orificios de la parte trasera del circuito integrado.

Paso 6 Preparacin de las ruedas.Materiales: 2 Ruedas 2 GomasAjusta 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 preparadasCon 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 TuercasFija fuertemente el frontal al chasis del SumoBot por los dos agujeros en la parte frontal mediante los dos tornillos.

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 hemos deslizado anteriormente con los sensores. Es necesario mantener la polaridad. En el pequeo circuito del sensor vienen las iniciales del cable que corresponde: NegroB[lack] Rojo R[ed] - Blanco W[hite].

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 izquierdoX6 = Servo motor derechoX5 = Sensor de lnea izquierdoX4 = Sensor de lnea derechoTener en cuenta que la letra B en los conectores indica que ah debe ir el cableNegro[Black].Conecta el pack de pilas al conector X1 de la placa. Es necesario soltar ligeramente los tornillos, introducir los cables y finalmente volver a apretar los tornillos.El cable con una lnea blanca corresponde al polo positivo (+).

Paso12 Colocacin de los sensores de infrarrojosMateriales: SumoBot 2 Emisores infrarrojos 2 Receptores infrarrojos

Ensamblado de los emisores IR

Colocacin de los sensores IR

Montar los diodos dentro de su capuchn, esto se hace para evitar falsos positivos en el receptor. Doblar las patillas 90 grados para orientar el haz infrarrojo hacia el frontal del robot. Cortar ligeramente el receptor para que no sobresalga demasiado en el conector. Insertar los emisores y receptores en los conectores P11,P4 y P15,P14 respectivamente (ver imagen).Paso 13 Encendido del SumoBotEl circuito impreso de SumoBot tiene un pequeo interruptor con tres posiciones con la siguiente codificacin:Posicin 0 - No hay alimentacinPosicin 1 - Alimentacin en el circuito impresoPosicin 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 con un simple vistazo se puedan conocer las definiciones de variables, constantes, entradas y salidas. A continuacin veremos como se definen todos estos elementos.' Patxi Oliva Murillo' Competi.BS2' {$STAMP BS2}' {$PBASIC 2.5}' -----[ I/O Definitions ]-------------------------------------------------LMotorPIN13' servo motor izdoRMotorPIN12' servo motor dchoLLinePwrPIN10' Power sensor linea izdoLLineInPIN9' Entrada sensor linea izdoRLinePwrPIN7' Power sensor linea dchoRLineInPIN8' Entrada sensor linea dchoLfIrOutPIN4' Salida IR LED izdoLfIrInPIN11' Entrada IR sensor izdoRtIrOutPIN15' Salida IR LED dchoRtIrInPIN14' Entrada IR sensor dchoSpeakerPIN1' ZumbadorStartLEDPIN0' Led' -----[ Constants ]-------------------------------------------------------LFwdFastCON1000' motor izdo adelante fastLFwdSlowCON800' motor izdo adelante slowLStopCON750' motor izdo stopLRevSlowCON700' motor izdo atras slowLRevFastCON500' motor izdo atras fastRFwdFastCON500' motor dcho adelante fastRFwdSlowCON700' motor dcho adelante slowRStopCON750' motor dcho stopRRevSlowCON800' motor dcho atras slowRRevFastCON1000' motor dcho atras fast' -----[ Variables ]-------------------------------------------------------lLineVARWord' sensor de linea izdorLineVARWord' sensor de linea dchoblackThreshVARWord' thresholdlineBitsVARNib' sensores de linea juntoslbLeftVARlineBits.BIT1lbRightVARlineBits.BIT0irBitsVARNib' Infrarrojos (izda y dcha)irLeftVARirBits.BIT1irRightVARirBits.BIT0lastIrVARNib' ultima lectura infrarrojospulsesVARByte' contador para control de motorestempVARBytetempoVARByte' -----[ EEPROM Data ]-----------------------------------------------------RunStatusDATA$FF' Estado actual

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

Conexin de los motores

Las secciones de Variables y Constantes establecern los nombres, valores y tamaos que se utilizaran en secciones siguientes del programa. Estos son los tamaos permitidos:1 word=16 bits1 byte=8 bits1 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 indicar Derecho. Similarmente se nombraran velocidades, direccin y diferentes sensores consiguiendo con esto una mayor transparencia y rpida identificacin.Ej:RLineInRight Line(Sensor) InputLFwdFastLeft(Motor) Forward FastAdemas de nuestro programa tambin podremos escribir y leer variables en la memoria EEPROM por lo que definiremos un estado inicial para esa variable. La forma de leer y escribir en dicha memoria se realiza mediante las rdenes READ y WRITE.READ RunStatus, temp' Lee el estado actual en variable tempWRITE RunStatus, Temp.' Escribe variable temp en EEPROM

2.InicializacinEl reglamento de competicin en la categora de minisumo especifica que es necesario un tiempo de 5 segundos desde que el robot es activado hasta que empiece a moverse. Durante este periodo es importante sensorizar y reconocer donde se encuentra el contrario para girar y encararlo lo mas rpido posible. Otra posibilidad es crear diferentes rutinas de arranque para que el contrario no sepa de antemano cual va a ser tu movimiento inicial. En el cdigo de a continuacin se implementan 4 salidas diferentes para nuestro robot.Tenemos una variable que va tomando valores desde el 0 hasta el 8 circularmente, es decir, cuando sea 8 el siguiente valor de la variable ser de nuevo 0. Cada vez que el botn reset sea pulsado se ejecuta la rutina Reset, esta incrementara en una unidad la variable y comprobara si estamos en valor par (estado de parada) o impar (salidas programadas). La subrutinas de inicio se detallaran mas adelante.

Subrutinas de inicio

' -----[ Initialization ]--------------------------------------------------Reset:READ RunStatus, temp' Lee el estado actualtemp = temp + 1' Suma 1 al estadoWRITE RunStatus, temp' Guarda estado para el siguiente resetIF (temp = 2) OR (temp = 4) OR (temp = 6) OR (temp = 8) THENIF (temp = 8) THEN temp = 0WRITE RunStatus, tempENDENDIFIF (temp = 0) THEN END' Si es cero que no se muevaStart_Delay:READ RunStatus, tempoIF (tempo = 1) THENFOR temp = 1 TO 5FREQOUT Speaker, 100, 2500, 1500' Blip cada segundoPAUSE 900' Esperar 900 msNEXTGOTO inicio1ELSEIF (tempo = 3) THENFOR temp = 1 TO 5FREQOUT Speaker, 100, 3000PAUSE 900NEXTGOTO inicio2ELSEIF (tempo = 5) THENFOR temp = 1 TO 5FREQOUT Speaker, 100, 4000PAUSE 900NEXTGOTO inicio3ELSEIF (tempo = 7) THENFOR temp = 1 TO 5FREQOUT Speaker, 100, 5000PAUSE 900NEXTGOTO inicio4ENDIF3.Programa principalEl principal propsito que debe conseguir el robot es no salirse del rea de juego y como propsito secundario, que no por ello menos importante, encontrar al adversario.Lo primero que se realiza es una llamada a la subrutina Read_Line_Sensors. Esta subrutina hace una lectura de los sensores de lnea y guarda los valores en una variable llamada linebits. (Ms adelante veremos mas detenidamente esta funcin) .Veamos como hemos declarado anteriormente linebits:lineBitsVARNiblbLeftVARlineBits.BIT1lbRightVARlineBits.BIT0Las variables 1bleft y 1bright guardan el valor 0 para negro y 1 para blanco. Por lo tanto la variable linebits tendr la siguiente combinacin de valores:00Ningn sensor sobre blancoSearch_For_Opponent01Sensor Derecho sobre blancoSpin_Left10Sensor Izquierdo sobre blancoSpin_Right11Los dos sensores sobre la lneaAbout_FaceCon 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 vueltaBRANCH lineBits, [Search_For_Opponent, Spin_Left, Spin_Right, About_Face]' --[ Border Avoidance ]--Spin_Left:' sensor derecho activo, girar a la derechaFOR pulses = 1 TO 20PULSOUT LMotor, LRevFastPULSOUT RMotor, RFwdFast'Mientras gira leer tambien los sensores IRGOSUB Read_IR_SensorsIF (irbits = %01) THEN Follow_RightIF (irbits = %10) THEN Follow_LeftIF (irbits = %11) THEN Lunge'Fin mientra gira leer sensores IRPAUSE 20NEXTlastIr = %00' Borrar direccion de escaneoGOTO MainSpin_Right:' sensor izquierdo activo, girar a la derechaFOR pulses = 1 TO 20PULSOUT LMotor, LFwdFastPULSOUT RMotor, RRevFast'Mientras gira leer tambien los sensores IRGOSUB Read_IR_SensorsIF (irbits = %01) THEN Follow_RightIF (irbits = %10) THEN Follow_LeftIF (irbits = %11) THEN Lunge'Fin mientra gira leer sensores IRPAUSE 20NEXTlastIr = %00GOTO Main'GOTO LungeAbout_Face:' ambos sensores en Shikiri, hacia atrs y girarFOR pulses = 1 TO 10PULSOUT LMotor, LRevFastPULSOUT RMotor, RRevFastPAUSE 20NEXTFOR pulses = 1 TO 30' girarPULSOUT LMotor, LFwdFastPULSOUT RMotor, RRevFastPAUSE 20NEXTlastIr = %00GOTO MainEn caso de que ninguno de los dos sensores detecte la lnea de borde, se llama ala subrutina Search_For_Opponent. Esta subrutina realiza un procesado de la informacin obtenida con los sensores infrarrojos para buscar y seguir al oponente. El tratamiento dado a las variables sigue la misma filosofa que en el caso anterior, un valor 0 no se ve al oponente y el valor 1 por el contrario tenemos visin con el oponente.00Ningn sensor detecta al contrarioScan01Sensor Derecho activo Follow_Right10Sensor Izquierdo activo Follow_Left11Los dos sensores ven al oponente 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 lo seguir y con los dos atacarBRANCH irBits, [Scan, Follow_Right, Follow_Left, Lunge]Scan:BRANCH lastIR, [Move_Fwd, Scan_Right, Scan_Left]Move_Fwd:GOSUB Creep_ForwardGOTO MainScan_Right:' Giro a la derecha, despacioFOR pulses = 1 TO 5PULSOUT LMotor, LFwdSlowPULSOUT RMotor, RRevSlowPAUSE 20NEXTGOSUB Creep_Forward' Movimiento por defectoGOTO MainScan_Left:' Giro a la izquierda, despacioFOR pulses = 1 TO 5PULSOUT LMotor, LRevSlowPULSOUT RMotor, RFwdSlowPAUSE 20NEXTGOSUB Creep_ForwardGOTO MainFollow_Right:' Giro a la derecha, rpidoPULSOUT LMotor, LFwdFastPULSOUT RMotor, RRevSlowlastIR = irBits' guarda la ultima direccin encontradaGOTO MainFollow_Left:' Gira a la izquierda, rpidoPULSOUT LMotor, LRevSlowPULSOUT RMotor, RFwdFastlastIR = irBitsGOTO MainLunge:' Objetivo, a por el!FOR pulses = 1 TO 25PULSOUT LMotor, LFwdFastPULSOUT RMotor, RFwdFastNEXTGOTO Main4.SubrutinasEn este apartado se especifican las subrutinas que utilizaremos a lo largo del programa: lectura de los sensores de lnea, lectura de los sensores infrarrojos, movimiento por defecto y las diferentes salidas que tenemos configuradas para nuestro robot.' -----[ Subroutines ]-----------------------------------------------------Read_Line_Sensors:HIGH LLinePwr' activa sensoresHIGH RLinePwrHIGH LLineIn' descarga capacitoresHIGH RLineInPAUSE 1RCTIME LLineIn, 1, lLine' leer sensor izdoRCTIME RLineIn, 1, rLine' leer sensor dchoLOW LLinePwr' desactiva sensoresLOW RLinePwr' convert readings to bitsLOOKDOWN lLine, >=[1000, 0], lbLeft' 0 = negro, 1 = lineaLOOKDOWN rLine, >=[1000, 0], lbRightRETURNRead_IR_Sensors:FREQOUT LfIrOut, 1, 38500' modula IR LED izdoirLeft = ~LfIrIn' leer entrada (1 = objetivo)FREQOUT RtIrOut, 1, 38500' modula IR LED dchoirRight = ~RtIrIn' leer entrada (1 = objetivo)RETURNCreep_Forward:' Movimiento por defectoFOR pulses = 1 TO 20PULSOUT LMotor, LRevFastPULSOUT RMotor, RFwdFastPAUSE 20NEXTRETURNinicio1:' Salida hacia adelante con impulsoFOR pulses = 1 TO 25' Va hacia atrs y luego hacia adelantePULSOUT LMotor, LRevFastPULSOUT RMotor, RRevFastGOSUB Read_IR_SensorsIF (irbits = %01) THEN Follow_RightIF (irbits = %10) THEN Follow_LeftIF (irbits = %11) THEN LungeNEXTGOTO Maininicio2:' Salida hacia atras y luego giramosFOR pulses = 1 TO 240PULSOUT LMotor, LRevFastPULSOUT RMotor, RRevFastNEXTFOR pulses = 1 TO 240PULSOUT LMotor, LRevFastPULSOUT RMotor, RFwdFastNEXTGOTO Maininicio3:' Salida estratgica 3FOR pulses = 1 TO 50PULSOUT LMotor, LFwdFastPULSOUT RMotor, RRevFastNEXTFOR pulses = 1 TO 50PULSOUT LMotor, LFwdFastPULSOUT RMotor, RFwdFastGOSUB Read_Line_SensorsNEXTFOR pulses = 1 TO 120PULSOUT LMotor, RFwdFastPULSOUT RMotor, LRevFastNEXTGOTO Maininicio4:' Salida estratgica 4FOR pulses = 1 TO 50PULSOUT LMotor, LRevFastPULSOUT RMotor, RFwdFastNEXTFOR pulses = 1 TO 50PULSOUT LMotor, LFwdFastPULSOUT RMotor, RFwdFastGOSUB Read_Line_SensorsNEXTFOR pulses = 1 TO 120PULSOUT LMotor, RRevFastPULSOUT RMotor, LFwdFastNEXTGOTO MainEn el diagrama de a continuacin se muestra a modo de resumen el diagrama de flujo del programa

Diagrama de flujo del programa

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