Beruflich Dokumente
Kultur Dokumente
xavier.rogel@epn.edu.ec bryan.solorzano@epn.edu.ec
emilia.meza@epn.edu.ec erick.taco@epn.edu.ec
Quito, Ecuador
I. INTRODUCCIÓN
III. HARDWARE
SISTEMA DE PATEO
Para el control de dichos motores se deberá presionar una
flecha de la palanca solo una vez y posteriormente R1 la cual Para el sistema de pateo en primer lugar se propuso un motor
asemeja el funcionamiento exacto de como si estuviéramos solenoide , es decir que la patada se realiza de manera de
jugando un partido de futbol en la consola de PlayStation impulso directo, pero esto en la practica no es lo mas optimo
ya que el robot se demoraría demasiado en reaccionar a la
Mientras se tenga aplastado el botón R1 la pwm que controla
patada, por lo cual diseñamos un sistema con un motor dc de
la velocidad del motor (Pololu relación 50:1)
los que generalmente se los encuentra en los discos duros o
sistemas de cd de computadoras equipos, dvds etc, lo cuales
son ideales para esta aplicación por su versatilidad y forma
del mismo
MOVILIDAD
VIII. CONCLUSIONES
Se diseñó y construyó un equipo de Robot soccer
controlado mediante comunicación inalámbrica, con
Fig.8.2. Diagrama de flujo la capacidad de moverse en todas las direcciones e
incluye un sistema de patada de fácil manejo.
Después de hacer un correcto análisis de entadas y salidas y
Se integró conocimientos de electrónica,
haber realizado el diagrama de flujo del programa, se ha
programación e informática con algoritmos de
procedido a escoger la tarjeta embebida que vamos a utilizar,
control los cuales permitieron desarrollar
para esto utilizaremos una tarjeta STM 32 NUCLEO IL,
pensamientos y destrezas para manejar el equipo.
La programación de esta tarjeta le hemos realizado con el Finalmente se puede afirmar que se fomentó el
EmBlocks 2.3, por su versatilidad en librerías que me interés no solo de adultos y adolescentes por el uso
permiten una eficiencia en la programación. de la tecnología, si no que de forma satisfactoria se
atrajo la atención de generaciones más jóvenes como
niños entre 8 y 12 años los cuales manipularon los
prototipos de robot soccer aflorando sus habilidades
con la tecnología.
IX. REFERENCIAS
#include "stm32f4xx_usart.h"
#include "tm_stm32f4_lis302dl_lis3dsh.h"
ID: $Id: $
int64_t X,Y,Z,dato,i,cont=0,X1,Y1,Z1; /// VARIABLES
PARA E ACELOROMETRO
int64_t XT,YT,ZT,XT1,YT1,ZT1; RESULTADO GENERAL PARA LAS PWMS DE LOS
MOTORES
uint8_t valores[3];
X=POSICION.X;Y=POSICION.Y;Z=POSICION.Z;
uint16_t PWM1=0,PWM2=0,TOTAL,velocidad;
XT=XT+X;YT=YT+Y;ZT=ZT+Z;
uint8_t valor;
}
char msm[16];
X1=XT/datos;Y1=YT/datos;Z1=ZT/datos;
void config_init(void); /// RUTINA DE CONFIGURACION
DE PUERTOS XT=0;YT=0;ZT=0;
TM_LIS302DL_LIS3DSH_t POSICION;
if (TM_LIS302DL_LIS3DSH_Detect() == VCP_get_char(&dato,1);
TM_LIS302DL_LIS3DSH_Device_LIS302DL){TM_LIS30
2DL_LIS3DSH_Init(TM_LIS302DL_Sensitivity_2_3G,
TM_LIS302DL_Filter_2Hz);}
}
else if (TM_LIS302DL_LIS3DSH_Detect() ==
TM_LIS302DL_LIS3DSH_Device_LIS3DSH){TM_LIS302 }
DL_LIS3DSH_Init(TM_LIS3DSH_Sensitivity_2G,
TM_LIS3DSH_Filter_800Hz);}
void config_init(void)
else {/*SI EL DISPOSITIVO NO ES RECONOCIDO */
while (1);} {
TM_HD44780_Puts(0,1,msm);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,E
*/ NABLE);
// CONFIGURO TIMER 4 PARA GENERACION DE LAS // MODO ENCODER PARA TOMA DE VELOCIDAD DEL
PWMS ENCODER PC6
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,
ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,E
NABLE);
// TIMER 4 ESTA CONECTADO A APB1 LA CUAL
DUPLICA EL DOBLE LA FRECUENCIA QUE TIENE LA encoder.GPIO_Pin=GPIO_Pin_6;
TARJETA DE 42MHZ A 84 MHZ
encoder.GPIO_OType=GPIO_OType_PP;
timer.TIM_Prescaler = 0;
encoder.GPIO_Mode=GPIO_Mode_AF;
timer.TIM_CounterMode = TIM_CounterMode_Up;
encoder.GPIO_PuPd=GPIO_PuPd_UP;
// EL SETCOMPARE SOLO PUEDE VARIAR DE 0 A
65535 PUES EL TIMER 4 ES DE RESOLUCION DE 16 encoder.GPIO_Speed=GPIO_Speed_100MHz;
BITS GPIO_Init(GPIOC,&encoder);
// PWMFR = TIMERFR / (TIMERPERIODO +
1),TIMERPERIODO= TIMERFR / PWMFR - 1 ,SI GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_
QUISIERAMOS UNA FRECUENCIA DE 10Khz EL TIM8);
PERIODO DE LO CALCULARIA TIMERPERIODO =
84000000 / 10000 - 1 = 8399
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8,EN
timer.TIM_Period = 8399; ABLE);
timer.TIM_ClockDivision = TIM_CKD_DIV1;
timer.TIM_RepetitionCounter = 0;
salidas11.GPIO_PuPd=GPIO_PuPd_NOPULL;
TIM_EncoderInterfaceConfig(TIM8,TIM_EncoderMode_TI
12,TIM_ICPolarity_BothEdge,TIM_ICPolarity_BothEdge); salidas11.GPIO_Speed=GPIO_Speed_100MHz;
//TIM_SetAutoreload(TIM8,0xffff); GPIO_Init(GPIOD,&salidas11);
*/ TM_HD44780_Init(16,2);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7,EN TM_HD44780_Clear();
ABLE);
TM_HD44780_CursorOn();
unsegundo.TIM_ClockDivision=TIM_CKD_DIV1;
TM_HD44780_BlinkOn();
unsegundo.TIM_CounterMode=TIM_CounterMode_Up;
*/
unsegundo.TIM_Prescaler=0;//1024
}
unsegundo.TIM_RepetitionCounter=0;
tim1interrupt.NVIC_IRQChannel=TIM7_IRQn;
void OTG_FS_IRQHandler(void)
tim1interrupt.NVIC_IRQChannelCmd=ENABLE;
{
tim1interrupt.NVIC_IRQChannelPreemptionPriority=0;
USBD_OTG_ISR_Handler (&USB_OTG_dev);
tim1interrupt.NVIC_IRQChannelSubPriority=1;
}
NVIC_Init(&tim1interrupt);
void OTG_FS_WKUP_IRQHandler(void)
*/
{
/*
if(USB_OTG_dev.cfg.low_power)
// DEFINO SALIDAS PARA EL LCD
{
GPIO_InitTypeDef salidas11;
*(uint32_t *)(0xE000ED10) &= 0xFFFFFFF9 ;
SystemInit();
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,E
NABLE); USB_OTG_UngateClock(&USB_OTG_dev);
}
salidas11.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_
2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; EXTI_ClearITPendingBit(EXTI_Line18);
salidas11.GPIO_OType=GPIO_OType_PP; }
salidas11.GPIO_Mode=GPIO_Mode_OUT;
void TIM7_IRQHandler(void)
{
//velocidad=TIM_GetCounter(TIM8)*0.05906628024;
//velocidad= velocidad*0.1180555556+130;
//TIM_SetCounter(TIM8,0);
velocidad=TIM_GetCounter(TIM8);
TIM_ClearITPendingBit(TIM7,TIM_IT_Update);
TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);