Robot Sumo de 3 kg: Anteproyecto
César Alejandro Tolentino Mendoza,
Carlos Daniel Barrera Carrillo,
Aitor Sebastián Larios Cuevas
Ingeniería en Sistemas Electrónicos y de Telecomunicaciones
Universidad de Colima
Asesor: Mtro. Alejandro Regalado Escobedo
I. C APÍTULO 1: I NTRODUCCIÓN 4. El análisis de factibilidad financiera y la gestión de
recursos, indispensables en proyectos de ingeniería com-
La robótica de competencia representa un espacio formativo plejos.
único en el que convergen diversas áreas de la ingeniería,
como electrónica, mecánica, control y programación. Entre las
modalidades más populares se encuentra el robot sumo, donde I-B. Resumen de las Normas de la Competencia UPIITA
dos o más robots se enfrentan en un dohyo con el objetivo de
expulsar al contrincante sin abandonar ellos mismos la pista En competencias organizadas por la UPIITA (IPN), se
de combate. En la categoría de 3 kg, los participantes deben establecen lineamientos estrictos para asegurar la equidad y
asegurar que sus prototipos cumplan requisitos estrictos de la calidad técnica de los enfrentamientos. De manera general,
masa y dimensiones, así como demostrar un alto rendimiento las reglas contemplan:
en empuje y maniobrabilidad.
El presente anteproyecto describe la concepción de un Dimensiones y Peso: El robot debe pesar un máximo
robot sumo de 3 kg denominado Caquineitor, diseñado para de 3 kg y ajustarse a las dimensiones establecidas al
participar en competencias nacionales organizadas por la Uni- inicio (por lo general, 20 cm × 20 cm, sin restricciones
dad Profesional Interdisciplinaria en Ingeniería y Tecnologías de altura).
Avanzadas (UPIITA) del Instituto Politécnico Nacional (IPN). Zona de Combate (Dohyo): Es un círculo con un
El proyecto es desarrollado por el Equipo de Carbones diámetro específico (por ejemplo, alrededor de 154 cm)
Calavera "La Resurrección". La estructura central de la con un borde blanco. Abandonar esta zona implica la
propuesta se basa en la combinación de: eliminación inmediata.
Tiempo de Combate: Cada ronda suele durar un máxi-
Un microcontrolador PIC18F4550, encargado de la
mo de tres minutos. Si ninguno de los robots es expul-
gestión de sensores y la ejecución de estrategias de
sado, se determinan criterios adicionales para definir el
control (p. ej., algoritmos PID).
ganador.
Una FPGA Basys2, destinada a la generación de señales
Prohibiciones Técnicas: No se permite el uso de sustan-
PWM de alta precisión, liberando al microcontrolador de
cias que se adhieran al dohyo para mejorar la tracción.
tareas de modulación.
Tampoco se autoriza interferir con señales de oponentes o
Un driver BTS7960 para el manejo de los motores
utilizar sistemas de RF no permitidos durante el combate.
de potencia, con la capacidad de suministrar corrientes
elevadas requeridas en las embestidas características de Estas normas guían las decisiones de diseño a nivel mecáni-
la disciplina. co, electrónico y de control, pues se requiere una construcción
lo bastante robusta como para brindar un alto torque y empuje
I-A. Motivación y Contexto Académico contra el rival, mientras se conserva una estabilidad que impida
que el robot sea empujado fuera del dohyo. Asimismo, la
Este proyecto surge de la necesidad de impulsar a estu- detección de la línea blanca es un factor crítico: cualquier
diantes de Ingeniería en Sistemas Electrónicos y de Tele- retraso o imprecisión en la lectura de sensores IR o de distancia
comunicaciones a integrar conocimientos adquiridos durante puede ocasionar la descalificación.
su formación. La participación en torneos de robots sumo,
particularmente en la categoría de 3 kg, promueve:
1. La experimentación práctica de principios de electrónica I-C. Imagen Ilustrativa de un Robot Sumo
analógica y digital.
2. El desarrollo de destrezas en programación de bajo nivel A fin de contextualizar la apariencia y configuración habi-
y dispositivos lógicos programables. tual de estos robots, en la Figura 1 se muestra un ejemplo de
3. El diseño mecánico enfocado en la optimización de peso prototipo que cumple con los lineamientos de peso y tamaño
y resistencia al impacto. típicos de la categoría de 3 kg.
En los siguientes capítulos se profundizará en la metodología
de planeación y se documentarán los pasos específicos para
llevar a buen término la construcción de Caquineitor, siempre
alineados a las reglas y exigencias de la competencia UPIITA
del IPN.
II. C APÍTULO 2: P LANEACIÓN
En este capítulo se detallan los aspectos clave de la pla-
neación del robot sumo de 3 kg, incluyendo la justificación
de los componentes seleccionados, el presupuesto inicial y
la elección del microcontrolador PIC18F4550 y la familia
Figura 1. Ejemplo ilustrativo de un robot sumo, mostrando la tracción trasera PIC18 para el control principal. El objetivo es consolidar
y un diseño frontal inclinado para facilitar el empuje.
un sistema robusto que priorice la potencia de empuje, sin
descuidar la maniobrabilidad ni la integración de sensores.
A diferencia de otros robots de competencia, Caquineitor
opera de manera autónoma, basándose en sus sensores de II-A. Justificación de los Componentes Principales
detección de líneas y oponentes para decidir sus movimientos. La elección de cada componente responde a la necesidad
De esta forma, el diseño del firmware y la lógica de control de equilibrar alto empuje, maniobrabilidad y fiabilidad en el
son piezas fundamentales del éxito en el dohyo. dohyo, cumpliendo con un peso máximo de 3 kg y dimensio-
nes de aproximadamente 20 cm × 20 cm.
I-D. Estructura General de Este Documento
II-A1. Motorreductor (12 V, 80–100 RPM, torque 2.5–
El presente informe se encuentra organizado en capítulos 3 kg cm): Ya se ha mencionado la importancia de contar con un
para facilitar su lectura y análisis. La nueva estructura es la motor que ofrezca suficiente torque para empujar al oponente.
siguiente: El motorreductor seleccionado:
Capítulo 1 – Introducción. Opera a 12 V y brinda entre 80–100 RPM bajo carga,
Capítulo 2 – Planeación. generando un torque nominal de 2.5–3 kg cm.
Capítulo 3 – Análisis Financiero / Presupuestal. Satisface la demanda de alto empuje y un control de
Capítulo 4 – Diseño del Robot (Mecánico y Electró- velocidad adecuado para maniobras en el dohyo.
nico). Su reductora interna permite al robot sostener esfuerzos
Capítulo 5 – Lógica de Control y Protocolos de prolongados sin un consumo excesivo de corriente.
Comunicación. II-A2. Driver de Motor: BTS7960: Este módulo se en-
Capítulo 6 – Posible Implementación Modular de carga de manejar las corrientes requeridas por el motor en
Comunicación Inalámbrica. arranques y choques. El BTS7960:
Capítulo 7 – Integración del Bootloader y Avances en
Soporta corrientes pico de hasta 43 A, lo cual es
Programación.
esencial para embestidas y arranques bruscos.
Capítulo 8 – Arquitectura Maestro-Esclavo y Gestión
Opera en configuración de puente H, facilitando el con-
de Periféricos.
trol de dirección y la modulación de velocidad mediante
Capítulo 9 – Librerías y Drivers de Sensores.
PWM.
Capítulo 10 – Encoders de Ratón y Cálculo de
Incorpora protecciones contra sobrecorriente y sobreca-
Desplazamientos.
lentamiento, incrementando la seguridad del sistema.
Capítulo 11 – Comunicación SPI e Implementación
en CPLD MAX II. II-A3. Comparativa de Rodamiento: Orugas vs. Ruedas:
Capítulo 12 – Máquina de Estados en el PIC18F4550. Para transmitir la potencia al piso, se contemplaron dos
Capítulo 13 – Estado de Calibración Guiada por enfoques principales:
LEDs. II-A3a. Orugas de Caucho:
Capítulo 14 – Conclusión del Firmware. Distribuyen el peso sobre un área de contacto mayor,
Capítulo 15 – Conclusión General y Bibliografía. ofreciendo tracción elevada en superficies lisas.
Podrían brindar mayor estabilidad al robot, reduciendo
I-E. Relevancia e Impacto Esperado la posibilidad de derrapes.
El proyecto no solo busca triunfar en competencias de sumo Sin embargo, una fricción excesiva puede dificultar los
robótico, sino también constituir un prototipo pedagógico que giros, haciendo que el robot sea menos maniobrable.
permita a otros estudiantes y equipos mejorar sus destrezas en II-A3b. Ruedas de Alta Fricción:
hardware y software. La experiencia acumulada en temas de Su menor área de contacto permite giros más rápidos y
control, electrónica de potencia, diseño mecánico y adminis- con mayor precisión.
tración de recursos económicos se convierte en una aportación Seleccionar un material blando (poliuretano o caucho)
a la formación integral de los futuros ingenieros. incrementa la adherencia, evitando patinajes excesivos.
Con un diámetro de 60–70 mm, se logra un buen equili- Evita daños por sobrevoltaje y garantiza una comunica-
brio entre fuerza de empuje y velocidad lineal. ción confiable.
II-A9. Chasis de Aluminio: Se elige lámina de 2 mm de
espesor para la base:
Combina ligereza y resistencia a impactos.
Facilita el montaje de motores, driver y sensores, mante-
niendo la forma trapezoidal recomendada para un mejor
ángulo de ataque.
II-A10. Tornillería, Cables y Cargador: Estos elementos,
aunque consumibles, son indispensables:
Tornillería y cables: Permiten la sujeción de componen-
tes y la interconexión eléctrica, respectivamente.
Cargador LiPo balanceador: Mantiene la batería en
óptimas condiciones de carga y seguridad.
II-B. Selección del Microcontrolador y la Familia PIC18
Por qué PIC18F4550:
Figura 2. Comparativa entre orugas de caucho y ruedas de alta fricción. Arquitectura de 8 bits optimizada: Suficiente para la
lógica de control, lectura de sensores y generación de
Tras analizar ambas alternativas, se decidió utilizar ruedas PWM.
de alta fricción, pues facilitan la maniobrabilidad y simpli- Periféricos integrados: Contiene módulos CCP/ECCP,
fican la implementación mecánica, manteniendo un empuje USART, SPI e I2C, simplificando la comunicación con
adecuado. sensores y la FPGA.
II-A4. Sensores de Línea: QTR-8A: Para detectar la línea Capacidad de USB (opcional): Aunque en este proyecto
blanca del dohyo y evitar salir de él, se utilizan sensores IR no se explote al máximo, brinda la posibilidad de futuros
reflectivos: diagnósticos o actualizaciones.
El arreglo QTR-8A combina 8 emisores y receptores IR Amplio soporte y documentación: La familia PIC18 es
que cubren un rango frontal amplio. ampliamente conocida en la comunidad de robótica, con
Permite calibrar umbrales de detección (2–3 cm antes del ejemplos y librerías disponibles.
borde), asegurando reacciones oportunas. Esta familia de microcontroladores ofrece una buena relación
II-A5. Sensores de Distancia: VL53L0X: Para identificar costo-beneficio, un entorno de desarrollo estable (MPLAB,
al oponente y descartar objetos fuera de un rango predefinido: XC8) y flexibilidad para implementar el control PID, lectura
Ofrece lecturas Time-of-Flight (ToF) hasta 60 cm, igno- de línea y distancia, y la gestión de PWM.
rando detecciones falsas por encima de ese umbral.
Ayuda a iniciar la embestida cuando el rival se encuentra
a una distancia corta, optimizando la estrategia de ataque.
II-A6. Batería LiPo 3S (11.1 V, 1500–2000 mAh): La ali-
mentación del sistema se confía a una batería de litio-polímero:
Proporciona un voltaje nominal de 11.1 V (12.6 V al
100 % de carga).
Ofrece una alta densidad de energía en un formato ligero,
contribuyendo a no superar los 3 kg de límite.
II-A7. Step-down (11.1 V → 5 V): Se incluye un converti-
dor buck para alimentar el PIC18F4550 y otros periféricos de
5 V:
Garantiza un suministro estable y eficiente para la lógica
de control.
Permite manejar la diferencia de voltaje (11.1 V nominal
a 5 V) sin desperdiciar excesiva potencia en calor. Figura 3. Ilustración de algunos componentes seleccionados, mostrando
II-A8. Level Shifter (5 V ↔ 3.3 V): Para la FPGA Basys2 motores, driver y sensores utilizados en el robot sumo.
y posibles sensores de 3.3 V, se requiere un adaptador de
niveles lógicos: II-C. Presupuesto Inicial
Asegura la compatibilidad entre señales a 5 V (PIC) y La Tabla II presenta el desglose de costos aproximados para
3.3 V (FPGA, sensores). la etapa inicial, basados en referencias de mercado (Mercado
Libre, AliExpress, etc.). No se incluyen costos indirectos Cuadro II
(laboratorio, CNC, etc.) ni patrocinios potenciales. P RESUPUESTO I NICIAL (R ESUMEN )
Concepto General Monto Estimado (MXN)
Cuadro I
P RESUPUESTO I NICIAL DEL P ROYECTO Microcontrolador, driver, motorreductores,
sensores (línea y distancia), step-down,
shifter, batería, ruedas, chasis, cables,
Componente Cantidad Precio (MXN)
cargador 4,660
PIC18F4550 1 $120
Driver BTS7960 1 $200
Motorreductor 12 V (80–100 RPM) 2 $400 (total) Este cálculo consideraba referencias de tiendas en línea
QTR-8A (Sensores de línea) 1 $300 (Mercado Libre, AliExpress) y tiendas locales, sin incluir
VL53L0X (Sensor de distancia) 2 $400 (total)
Batería LiPo 3S 1 $500 costos indirectos (uso de taller, equipo de laboratorio) ni
Step-down (11.1 → 5 V) 1 $80 patrocinios.
Level Shifter (5 V–3.3 V) 1 $60
Ruedas alta fricción (par) 1 $250 III-C. Gastos Reales Documentados
Chasis Aluminio (2 mm) 1 $200
Tornillería, cables 1 set $200 La tabla de compras reales se muestra en la Tabla III, la
Cargador LiPo 1 $400 cual se extrajo de registros contables del proyecto. Cada ítem
Total $4,660 indica su precio unitario y total, así como la cuenta contable
(Inventarios, Banco, etc.) y una breve descripción.
II-D. Conclusiones de la Planeación
Cuadro III
La planeación se enfoca en garantizar la fuerza de em- C OMPRAS R EALES DEL P ROYECTO (E XTRACTO )
puje necesaria para el robot sumo de 3 kg, seleccionando un
Material Cant. Total (MXN) Comentarios
motorreductor robusto y un driver capaz de manejar picos de
corriente elevados. El uso de ruedas de alta fricción optimiza Adaptador USB- 1 69.99 Comunicación con
Serial TTL MCU
la tracción, mientras que los sensores (QTR-8A y VL53L0X) Buck DC-DC 1 301.35 Regulador principal
y el microcontrolador PIC (12 V a 5 V)
Conv. Lógico (5– 1 103.55 Para FPGA
3.3 V)
III. C APÍTULO 3: A NÁLISIS F INANCIERO / Kit de cables 1 139.89 Conexiones internas
P RESUPUESTAL Kit de tornillos 1 150.00 Ensamble mecánico
PIC18F4550 1 299.68 MCU principal
En este capítulo se retoma el presupuesto inicial del Sensores línea 1 139.20 Detección dohyo
QTR-8A
proyecto (presentado en el Capítulo 2) y se compara con los Tarjeta desarr. 1 86.99 Pruebas microcontrola-
gastos reales documentados recientemente. Adicionalmente, PIC18F4550 dor
se clasifican los elementos en gastos, inversiones y costos, BTS7960 (2 2 238.80 Driver motor
und.)
con base en definiciones breves de estos conceptos, para luego Motorreductor 2 273.22 Tracción principal
relacionarlos directamente con el proyecto del robot sumo de 12 V (2 und.)
3 kg. Placas MDF (2 2 80.00 Soportes/prototipo
und.)
Sensor láser 2 163.78 Detección rivales
III-A. Breve Introducción a Pagos, Gastos e Inversión VL5310 (2 und.)
Pago: Desembolso puntual de efectivo para adquirir un Total 2046.45
Inventarios
bien o servicio. Por ejemplo, la compra de un driver de
motor es un pago único.
Gasto: Consumo de recursos durante la operatividad Cabe señalar que estos valores y cálculos se encuentran
inmediata, sin valor residual a futuro (e.g., baterías, anexados en la carpeta de OneDrive donde se ubica el archivo
materiales de ensamblaje). de este anteproyecto.
Inversión: Desembolso que aporta valor más allá de la En esta compra real, se observa un subtotal de 2046.45
etapa actual, permitiendo escalabilidad o mejoras en el MXN correspondiente a los materiales inventariados, algunos
proyecto (e.g., microcontrolador, FPGA, motores). de los cuales difieren en costo unitario con respecto al pre-
Estas categorías ayudan a planificar mejor los recursos, pues supuesto inicial. A ello se suman gastos operativos, envíos y
diferencian lo que es puramente operativo de lo que contribuye otros consumibles que no aparecen en esta tabla parcial.
al desarrollo a largo plazo. III-D. Comparación con el Presupuesto Estimado
Aunque la compra real (2046.45 MXN) se sitúa por debajo
III-B. Presupuesto Inicial Recapitulado
del monto total inicial de 4660 MXN, se deben considerar
En el Capítulo 2 se estimó un presupuesto de aproximada- otros costos que aún no se reflejan, como la batería LiPo,
mente $4,660 MXN, distribuidos de la siguiente manera: las ruedas de alta fricción, la lámina de aluminio y el
cargador LiPo. Varios de estos ítems se etiquetan como gastos • Banco: $73.67, que representa la liquidez disponible
o inversiones según su utilidad a largo plazo: para gastos menores.
Inversión: Microcontrolador, driver BTS7960, motorre- • Inventarios: $2046.45, donde se incluyen los ma-
ductores, sensores de distancia, tarjeta de desarrollo, teriales y componentes adquiridos (por ejemplo,
convertidores lógicos (pues permiten mejoras futuras). PIC18F4550, BTS7960, sensores, etc.).
Gastos: Batería LiPo, sensores de línea (desgaste opera- Pasivo Circulante: Corresponde a Cuentas por pagar
tivo), cables, MDF (usado en prototipado). por $369.89, reflejando deudas a proveedores aún pen-
Se prevé que, al añadir la compra de la batería, las ruedas dientes.
y el chasis de aluminio, el gasto total se aproxime o supere la Capital: Compuesto por un Capital social de $1750.23,
cifra de 4660 MXN inicial. aportado por los integrantes o patrocinadores iniciales.
La suma total del Activo (2120.12) coincide con la del
III-E. Clasificación de los Elementos en el Proyecto Pasivo más el Capital (2120.12), cumpliendo la ecuación
Basados en los criterios de Gastos e Inversión descritos al contable básica:
inicio, la mayoría de los componentes electrónicos que no se
desgastan o no requieren reemplazo periódico se consideran Activo = Pasivo + Capital
Inversión, mientras que los materiales consumibles se clasifi-
can como Gastos. Algunos ejemplos: Este estado financiero confirma que el proyecto mantiene un
equilibrio en su contabilidad. A medida que se adquieran más
Inversión: componentes (ruedas, chasis de aluminio, etc.), se incrementa-
• PIC18F4550: Componente clave de control, reutili- rá el valor de Inventarios o bien se reflejará un incremento en
zable en mejoras futuras. el Pasivo (si se compra a crédito) o una reducción del Banco
• BTS7960: Driver de motor con vida útil prolongada. (si se compra al contado).
• Motores DC: Reaprovechables en otras fases o
versiones del robot. III-G. Conclusiones del Análisis Financiero
• Tarjeta de Desarrollo: Permite prototipar múltiples
proyectos con el mismo MCU. La comparación del presupuesto inicial ($4660 MXN) con
los gastos reales ($2046.45 MXN, sin contar elementos pen-
Gasto:
dientes) revela que el proyecto se mantiene dentro de un
• Sensores de línea (QTR-8A): Se degradan con el rango razonable de inversión y gastos, aunque se espera que
uso y podrían requerir sustitución. el monto final se acerque más a la cifra original al incorporar
• Placas de MDF y Tornillería: Empleados en la ítems faltantes (batería, ruedas, chasis de aluminio, etc.).
fabricación, sin valor residual significativo. La clasificación en gastos e inversiones contribuye a la
• Batería LiPo: Se agota con los ciclos de carga y planificación a largo plazo:
requiere reemplazo periódico.
Inversiones como el microcontrolador, drivers y motores
III-F. Balance General y Cuentas Contables sostienen el valor del proyecto y facilitan expansiones
futuras.
Para el periodo del 04 de febrero al 27 de marzo de 2025, se
Gastos como baterías y consumibles se asumen como
presenta un Balance General que resume la situación financiera
parte de la operatividad inmediata y no generan valor
del proyecto:
residual.
Con esta perspectiva financiera, se pueden gestionar de
manera más eficiente los recursos, ya sea buscando patrocinios
para cubrir componentes estratégicos (inversiones) o destinan-
do un presupuesto específico para gastos de uso continuo y
reemplazo, asegurando la viabilidad económica del robot sumo
de 3 kg.
IV. C APÍTULO 4: D ISEÑO DEL ROBOT (M ECÁNICO Y
E LECTRÓNICO )
En este capítulo se describe el diseño mecánico y el diseño
electrónico del robot sumo de 3 kg, tomando en cuenta la
Figura 4. Balance General del Proyecto Robot Sumo, mostrando Activos, disposición de los componentes, la estructura del chasis y el
Pasivos y Capital. esquema electrónico preliminar. Se hace énfasis en que el
esquema final se encuentra en proceso de creación, debido
En este Balance General: a la investigación en curso sobre el funcionamiento interno de
Activo Circulante: Se compone de: algunos de los módulos.
IV-A. Diseño Mecánico
El robot se ha concebido con una base rectangular de
20 cm × 20 cm, siguiendo las dimensiones máximas permiti-
das por la competencia. En la parte frontal, se integra una
“cuchara ofensiva” (o cuña) para facilitar la embestida y
empujar al oponente fuera del dohyo.
IV-A1. Distribución Interna de Componentes: En la Figu-
ra 5, se aprecia la disposición preliminar:
Motores (2 und.) en la parte media-baja, con ejes
alineados para la tracción.
Figura 6. Prototipo del chasis Versión v1, mostrando el ajuste de proporciones
Ruedas de alta fricción, de aproximadamente 70 mm de y posiciones de los componentes en el área de 20 cm × 20 cm.
diámetro, a cada costado.
Placas de Desarrollo (PIC18F4550 y FPGA Basys2) IV-A3. Justificación del Chasis:
ubicadas en la sección central, para un cableado ordenado
y fácil acceso. Material (Aluminio de 2 mm): Combina ligereza y
Cuchara ofensiva (en el dibujo, “Base” frontal) con una resistencia, soportando impactos en embestidas y prote-
extensión de unos 3–5 cm, para maximizar la zona de giendo los componentes internos.
contacto al empujar. Forma Trapezoidal o Rectangular: Se ajusta a las
normas de 20 cm de lado y permite la incorporación de
la cuña frontal.
Distribución de Componentes: La versión v1 del chasis
demostró que la ubicación centralizada para la batería
LiPo (11.1 V nominal) y las placas de control favorece
un equilibrio óptimo, reduciendo el riesgo de desestabi-
lización.
IV-B. Diseño Electrónico
El robot integra cuatro bloques funcionales (ver Figura 7):
1. Bloque de Alimentación
2. Bloque de Control y Procesamiento
3. Bloque de Control de Movimiento
4. Bloque de Sensado
IV-B1. Bloque de Alimentación:
Batería LiPo 3S (11.1 V nominal): Provee la potencia
requerida por los motores y la electrónica.
Convertidor buck (12 V → 5 V): Alimenta el
PIC18F4550 y otros periféricos de 5 V.
Level Shifter (5 V ↔ 3.3 V): Ajusta niveles para la
FPGA Basys2 y/o sensores a 3.3 V.
IV-B2. Bloque de Control y Procesamiento:
Figura 5. Diseño base (vista superior), mostrando la ubicación de motores,
ruedas y placas de control. PIC18F4550: Microcontrolador principal, encargado de
la lectura de sensores (línea y distancia), ejecución de
algoritmos de control (PID, etc.) y la comunicación SPI
con la FPGA.
IV-A2. Prototipo del Chasis (Versión v1): Como avance
FPGA Basys2: Maneja la generación de PWM de alta
significativo, ya se ha desarrollado una versión v1 del chasis.
precisión, descargando al PIC tareas de modulación, y
En esta iteración se ajustaron las proporciones y la posición
procesando señales adicionales en paralelo.
de los componentes dentro del área permitida, optimizando
la distribución de masa y el espacio para la integración de IV-B3. Bloque de Control de Movimiento:
la electrónica. Este prototipo permitió validar la viabilidad Driver de Motor (BTS7960): Soporta corrientes pico de
del diseño mecánico y realizar ajustes en la ubicación de la hasta 43 A, asegurando un empuje potente y controlado.
cuchara ofensiva, motores y soporte para la batería. Recibe la señal PWM de la FPGA.
Motores (12 V, 80–100 RPM): Ubicados lateralmente electrónico final aún está en proceso, la distribución lógica
para tracción diferencial, permitiendo giros precisos y de módulos y la selección de componentes garantizan que el
embestidas eficientes. robot cumpla con los requisitos de alto empuje y estabilidad
IV-B4. Bloque de Sensado: en la competencia de sumo.
Sensores de Línea (QTR-8A): Ocho emisores y recep- V. C APÍTULO 5: L ÓGICA DE C ONTROL Y P ROTOCOLOS
tores IR para detectar la franja blanca del dohyo y evitar DE C OMUNICACIÓN
salidas accidentales.
Sensores de Distancia (VL53L0X): Proporcionan lectu- En este capítulo se profundiza en la lógica de control y en
ras de Time-of-Flight hasta 60 cm, filtrando objetos fuera los protocolos de comunicación implementados en el robot
del área de combate. sumo de 3 kg. Se retoma lo discutido en capítulos anteriores
sobre la coordinación entre el microcontrolador PIC18F4550,
la FPGA Basys2, el driver de motor BTS7960 y los sensores,
resaltando la relevancia de la comunicación SPI y los avances
realizados en la Basys2.
V-A. Lógica de Control en el Microcontrolador PIC18F4550
El PIC18F4550 gestiona la mayor parte de la lógica de
control:
Lectura de Sensores:
• Sensores de línea (QTR-8A) conectados a puertos
analógicos/digitales, determinan cuándo el robot se
acerca a la franja blanca.
• Sensores de distancia (VL53L0X o similares) para
detectar la presencia del oponente a menos de 60 cm.
Ejecución de Algoritmos PID: Permite ajustar la veloci-
dad y dirección de los motores para corregir la trayectoria
Figura 7. Diagrama de bloques del sistema electrónico, resaltando la o embestir con mayor precisión.
alimentación, el control y el sensado.
Comunicación SPI con la FPGA: Envía consignas
de PWM, velocidad y otras señales de control para la
IV-B5. Esquema Electrónico (en proceso): Actualmente
modulación de potencia en el driver BTS7960.
se investiga el funcionamiento interno de algunos módulos y se
está configurando la asignación de pines del PIC18F4550 para Este enfoque libera al PIC de la generación de PWM de
la comunicación SPI e I2C. Por ello, el esquema electrónico alta resolución, delegándola a la Basys2, mientras conserva
definitivo se encuentra en proceso de elaboración, adaptándose recursos para procesar datos de sensores y tomar decisiones
a los requerimientos de los fabricantes y a la lógica de control en tiempo real.
final. V-B. Protocolos de Comunicación
IV-B5a. Justificación de la Elección de Componentes:
V-B1. SPI (Serial Peripheral Interface): La comunicación
PIC18F4550: Seleccionado por sus periféricos integra-
SPI se emplea entre el PIC18F4550 (maestro) y la FPGA
dos (SPI, I2C, USB opcional) y su capacidad de procesa-
Basys2 (esclavo). De esta manera:
miento a 8 bits, adecuado para la ejecución de algoritmos
de control. El PIC envía valores de Duty Cycle y otras banderas de
FPGA Basys2: Permite la generación de señales PWM control para generar la señal PWM.
de alta frecuencia y precisión, liberando al PIC de tareas La FPGA recibe estos datos y ajusta internamente los
de modulación. registros que modulan el ciclo de trabajo de la salida
BTS7960: Ofrece robustez y capacidad para manejar PWM.
altos picos de corriente, fundamentales en situaciones de Este protocolo se escogió por su sencillez y baja latencia,
combate. ideal para sistemas de control que requieren reacciones rápi-
das.
IV-C. Conclusiones del Diseño Mecánico y Electrónico V-B2. I2C: Se contempla la posibilidad de usar I2C para
El diseño mecánico se fundamenta en una estructura robusta sensores de distancia (ej. VL53L0X), aunque en algunas
de aluminio con una base de 20 cm × 20 cm, que en su configuraciones puede emplearse un bus similar o la capa de
versión v1 ya ha sido prototipada y ajustada para optimizar la comunicación de la propia FPGA.
distribución de masa y el espacio disponible. La arquitectura V-B3. UART (Opcional): El PIC18F4550 también ofrece
electrónica, dividida en bloques de alimentación, control, mo- un módulo EUSART que podría utilizarse para depuración o
vimiento y sensado, asegura la integración y el funcionamiento telemetría, en caso de implementarse una futura comunicación
coordinado de todos los subsistemas. Aunque el esquema inalámbrica.
V-C. Avances en la FPGA Basys2 Al reconocer la línea, el algoritmo PID reduce la veloci-
V-C1. Generación de PWM y Pruebas SPI: La FPGA dad del motor en ese costado, girando el robot hacia el
Basys2 se ha utilizado para comenzar las pruebas de la lógica centro.
SPI y la generación de señales PWM. Aunque el código Se emplean maniobras suaves para no perder tracción ni
VHDL definitivo está en desarrollo, se han implementado ser empujado por inercia fuera del dohyo.
módulos básicos que permiten: V-D3. Maniobras de Reposición y Contraembestida:
Registrar datos (4 bits o más) provenientes del bus SPI, Si el robot detecta que está siendo empujado, puede usar
almacenándolos en un registro interno. la lectura de sensores de línea para frenar y girar,
Cargar o desplazar dichos registros según señales de tratando de forzar un cambio de dirección del rival.
habilitación y limpieza (CE, CLR, etc.). Se puede implementar un modo de contraembestida: al
Producir salidas PWM ajustadas al valor recibido desde detectar un choque frontal, aumentar el Duty Cycle en
el PIC, garantizando una modulación estable a la frecuen- los motores para ejercer un empuje adicional y ganar la
cia deseada. fricción necesaria.
V-C1a. Descripción de la Lógica: Los módulos en V-D4. Control PID Dinámico:
VHDL se dividen en entidades como reg_ps, registro_p Se ajustan ganancias P, I y D según el estado del
y registro_sp. Cada uno: combate: más agresivo al detectar al oponente, más
Declara puertos de entrada ([Link]., CLK, CE, conservador al acercarse al borde.
SHIFT_LOAD) y salida (SLO, Q), así como señales El PID ayuda a compensar deslizamientos y a mantener
internas para el almacenamiento de datos. la trayectoria deseada cuando el robot gira o frena
Implementa un proceso sensible al flanco ascendente de bruscamente.
CLK (y a la señal de CLR), reseteando los registros
cuando CLR está activo. V-E. Conclusiones de la Lógica de Control y Comunicación
En modo Load, transfiere datos directamente a los regis- El diseño de la lógica de control se basa en delegar la gene-
tros; en modo Shift, desplaza los bits hacia la izquierda ración de PWM de alta precisión a la FPGA Basys2, mientras
o la derecha, extrayendo el bit más significativo. que el PIC18F4550 se encarga de procesar la información de
Esta estructura de shift registers y parallel registers for- sensores y enviar consignas vía SPI. Esta separación de tareas:
ma la base de la interfaz SPI en la FPGA, permitiendo Permite respuestas rápidas y estables en la modulación
al PIC18F4550 enviar valores de PWM u otras banderas de los motores (BTS7960).
de control. Posteriormente, la Basys2 interpreta esos datos Optimiza el uso del microcontrolador para algoritmos de
y ajusta la señal PWM que se entrega al driver de motor control (PID) y lectura de sensores.
BTS7960.
Con respecto a la competencia, se plantean estrategias de
V-C1b. Estrategia de Integración: detección oportuna, mantenerse en el dohyo y contraembesti-
Se conecta el bus SPI (MOSI, MISO, SCK, SS) del PIC das que, combinadas con un control PID dinámico, deberían
a los pines correspondientes en la Basys2. maximizar las posibilidades de expulsar al oponente sin que
Los registros reg_ps y registro_p reciben los bits el robot salga involuntariamente. La integración de la FPGA y
seriales, transformándolos en un valor paralelo que ali- el PIC en la comunicación SPI ya ha mostrado avances en la
menta el módulo PWM. Basys2, sentando las bases para un sistema robusto de control
Un contador interno en la FPGA determina la frecuen- en tiempo real.
cia de la señal PWM, mientras el valor paralelo define
el Duty Cycle. VI. C APÍTULO 6: P OSIBLE I MPLEMENTACIÓN M ODULAR
DE C OMUNICACIÓN I NALÁMBRICA
V-D. Estrategias de Control para Competencia
Este capítulo explora la posibilidad de integrar un sistema
Para ganar el combate en el dohyo, el robot no solo debe
de telemetría inalámbrica y/o detección de señales enemigas
embestir al oponente, sino también evitar ser empujado y evitar
en el robot sumo de 3 kg, con la salvedad de que dicho
salirse de la pista. Algunas estrategias contempladas son:
sistema debe ser completamente modular. Esto significa que
V-D1. Detección Oportuna del Rival:
el módulo y la antena, fabricados por el equipo o mediante un
Usar los sensores de distancia (VL53L0X) para iden- sistema de detección propio, se utilizarán exclusivamente para
tificar la posición del contrincante y aproximarse con pruebas y recolección de datos, y deberán poder ser retirados
velocidad media. sin afectar el funcionamiento normal del robot durante el
Al estar a menos de 30–40 cm, aumentar la velocidad de combate oficial, cumpliendo estrictamente con las reglas de
embestida para sorprender y desplazar al rival. la competencia.
V-D2. Mantenimiento en el Dohyo:
Configurar los sensores de línea (QTR-8A) para detectar VI-A. Objetivos del Sistema Inalámbrico Modular
la franja blanca con al menos 2–3 cm de anticipación. El objetivo principal de este módulo es:
Permitir el monitoreo en tiempo real de variables críticas VI-D. Estrategias de Telemetría y Recolección de Datos
(por ejemplo, velocidad, consumo, estado de sensores) El sistema inalámbrico modular permitirá implementar es-
durante la fase de pruebas. trategias de telemetría que incluyan:
Recolectar datos que faciliten la optimización y ajuste Monitorización en Tiempo Real: Transmisión de datos
de la estrategia de control, sin interferir en la operación críticos (velocidad, consumo, estado de sensores) a una
autónoma durante la competencia. interfaz de usuario en una computadora o dispositivo
Facilitar la detección de señales enemigas en entornos de móvil.
prueba, posibilitando el desarrollo de estrategias adicio- Registro y Análisis de Datos: Almacenamiento de la
nales que en el futuro podrían incluir análisis del entorno. información recolectada para el análisis posterior, facili-
tando ajustes en la lógica de control, como la calibración
VI-B. Tecnologías Inalámbricas Consideradas y Modalidad de los parámetros del controlador PID.
Modular Detección de Señales Ambientales: Pruebas de un
sistema de detección que, en futuras iteraciones, pueda
Se han evaluado diversas tecnologías para la implementa- identificar señales provenientes del entorno o incluso
ción del módulo inalámbrico: del robot rival, sin que este sistema permanezca activo
Wi-Fi: Permite transmisiones de datos a alta velocidad. durante el combate.
Se prevé el uso de módulos como el ESP8266 o ESP32.
Bluetooth: Ofrece comunicación sencilla y de bajo con-
sumo, adecuada para distancias cortas.
XBee (ZigBee): Confiable y de bajo consumo, utilizado
en aplicaciones de monitoreo.
LoRa: Si bien su tasa de datos es baja, puede ser útil
para pruebas a largas distancias.
Es importante destacar que el sistema inalámbrico será
modular y extraíble. Durante las pruebas y la recolección
de datos, el módulo se conectará al PIC18F4550, mediante
interfaces como UART o SPI, para transmitir información
de diagnóstico. Sin embargo, conforme se acerque la fase
de competencia oficial, el módulo se desconectará o retirará
para cumplir con la regla que prohíbe el uso de comunicación
inalámbrica durante el combate.
Figura 8. Diagrama preliminar del sistema modular de comunicación inalám-
VI-C. Implementación Preliminar y Estrategia de Integra- brica, mostrando el módulo extraíble y su conexión al PIC18F4550.
ción
La estrategia de integración del módulo inalámbrico se basa
en:
Fabricación Propia de la Antena: El equipo desarrolla-
rá una antena específica que se ajuste al diseño modular
del robot. Esta antena se instalará de forma que pueda
ser conectada o desconectada fácilmente.
Interfaz Modular: Se utilizará una interfaz estándar (por
ejemplo, un conector tipo JST o similar) que permita la
conexión/desconexión rápida del módulo inalámbrico sin
requerir modificaciones en el circuito principal.
Pruebas en Entornos Controlados: Durante la fase de
pruebas, el módulo se activará para recolectar datos en
tiempo real, como señales PWM, lecturas de sensores
y estado de la batería, sin que ello afecte la lógica de Figura 9. Ejemplo de interfaz de telemetría para la recolección de datos
control del robot. durante pruebas, sin interferir en el funcionamiento del robot.
Aislamiento durante el Combate: Durante el enfren-
tamiento oficial, el módulo se mantendrá desconectado VI-E. Conclusiones del Capítulo 6
para garantizar que la comunicación RF no interfiera con La implementación modular de comunicación inalámbrica
el funcionamiento normal del robot, en cumplimiento de se plantea como una herramienta esencial para el desarrollo y
las reglas de la competencia. la optimización del robot sumo, permitiendo:
Realizar pruebas y recolectar datos críticos sin afectar el Parámetros del oscilador externo de 20 MHz en las
desempeño en combate. directivas de configuración.
Facilitar la depuración y el ajuste de la lógica de control Tamaño y ubicación de la sección de memoria del
mediante la monitorización en tiempo real. bootloader, ajustándolos al layout de Coquirana 1.
Garantizar que, en la competencia oficial, el módulo
pueda ser retirado sin interrumpir el funcionamiento autó- Estas modificaciones garantizan que el bootloader de Unit
nomo del robot, cumpliendo con las reglas que prohíben Electronics funcione de forma estable en nuestra placa, ofre-
el uso de comunicación RF durante el combate. ciendo menor latencia de arranque y compatibilidad total con
MPLAB IDE.
Esta estrategia modular asegura que el sistema de telemetría
se utilice únicamente en fases de prueba y recolección de
datos, proporcionando al equipo información valiosa para
futuras mejoras, mientras que en el entorno de combate se VII-D. Estrategias de Programación y Control Avanzado
mantiene el rendimiento óptimo del robot.
VII. C APÍTULO 7: I NTEGRACIÓN DEL B OOTLOADER Y La integración final permite:
AVANCES EN P ROGRAMACIÓN
Actualizaciones de firmware en campo sin herramientas
Como parte de los avances del proyecto, se ha integrado JTAG.
un sistema de bootloader en el PIC18F4550. Inicialmente Afinación de parámetros PID y estrategias de combate al
se utilizó el MikroBootloader (disponible en [Link] vuelo.
[Link]/mikrobootloader), adaptado para operar con un Recuperación automática en caso de corrupción de firm-
cristal externo de 20 MHz, lo cual mejora la precisión de los ware.
temporizadores y la comunicación SPI con el CPLD.
VII-A. Objetivos y Ventajas del Bootloader
La incorporación del bootloader aporta múltiples beneficios: VII-E. Relevancia en el Contexto del Proyecto
Actualización Rápida: Reprograma el microcontrolador
vía USB sin herramientas de programación externas. La adopción del bootloader de Unit Electronics consolidó un
Facilidad de Depuración: Agiliza la carga de nuevas flujo de desarrollo ágil y seguro, alineado con las necesidades
versiones de firmware durante las pruebas. de actualización continua de Caquineitor.
Seguridad y Robustez: Incorpora verificación por CRC
y mecanismos de recuperación en caso de fallo.
Adaptabilidad: Facilita la implementación de nuevos
modos de control sin intervención física. VIII. C APÍTULO 8: A RQUITECTURA M AESTRO –E SCLAVO
Y G ESTIÓN DE P ERIFÉRICOS
VII-B. Implementación y Estrategia de Integración
La integración se realizó de la siguiente manera:
Se generó un archivo .hex que combina el bootloa- En este capítulo se detalla la arquitectura de comunica-
der con la aplicación, configurado para el oscilador de ción y la gestión de periféricos entre el microcontrolador
20 MHz. PIC18F4550 y el CPLD MAX II (EPM240T100C5). Este
Utilizando un Pickit 2, se cargó el bootloader en el esquema maestro–esclavo permite delegar la generación de
PIC18F4550 por primera vez. señales PWM de alta resolución al CPLD, liberando al PIC
Se diseñó un development board propio (Coquirana 1) para la lectura de sensores y la toma de decisiones en tiempo
que agrupa pines USB, MCLR, VDD, VSS y señal de real.
activación del bootloader.
VII-C. Adopción del Bootloader de Unit Electronics
Tras validar el funcionamiento con MikroBootloader, se VIII-A. Arquitectura General
cambió al bootloader recomendado por Unit Electronics, des-
crito en: El sistema sigue un modelo maestro–esclavo:
[Link] PIC18F4550 (Maestro): Ejecuta la lógica de control, lee
cargar-bootloader-usb-al-pic18f4550-con-mplab-ide/ sensores (VL53L0X [29], QTR-8A) y forma los paquetes
Aunque la placa Coquirana 1 difiere de la de Unit Electronics, de datos SPI.
adaptamos el procedimiento modificando: CPLD MAX II (Esclavo): Recibe los datos por SPI,
Asignaciones de pines en config.h para MCLR, VDD, decodifica dirección y duty-cycle, y genera internamente
VSS y USB D+/D-. las señales PWM para los drivers BTS7960.
3. Control de Ruta (ACT_CTRL): genera señales
LOAD1/LOAD2 según motores activos.
4. PWM_Gen: produce RPWM/LPWM y señales de di-
rección REN/LEN, asegurando estados mutuamente ex-
cluyentes.
VIII-E. Máquina de Estados SPI en el CPLD
La FSM para el SPI en el CPLD consta de cuatro fases:
arquitectura_maestro_esclavo.png ESPERA: SS alto, espera transmisión.
RECIBIENDO1/LEIDO1: desplazamiento y latch del
primer byte.
RECIBIENDO2/LEIDO2: desplazamiento y latch del
segundo byte.
Al finalizar LEIDO2, actualizar registers y volver a
ESPERA.
VIII-F. Conclusiones del Capítulo
La arquitectura maestro–esclavo permite:
Figura 10. Diagrama de bloques de la arquitectura maestro–esclavo entre Separación de tareas: el PIC se centra en sensores y
PIC18F4550 y CPLD MAX II.
control, el CPLD en PWM de alta resolución.
Rendimiento óptimo: bus SPI dedicado y bit-banging
VIII-B. Restricción del Bus SPI/I2 C y Solución de Bit-
paralelo sin conflictos.
Banging
Modularidad: fácil sustitución de CPLD o extensión de
El PIC18F4550 sólo dispone de un módulo MSSP, que se periféricos sin rehacer firmware.
configura para SPI en comunicación continua con el CPLD. Con esta base, las siguientes etapas (implementación de la
Para no perder el acceso a los sensores VL53L0X (I2 C), se FSM en el PIC y optimización de estrategias de combate) se
implementó un controlador I2 C por software (bit-banging): desarrollarán con una comunicación robusta y de baja latencia.
bitbang_i2c.c/.h: Define pines de SDA y SCL,
genera condiciones START/STOP, lectura/escritura de IX. C APÍTULO 9: L IBRERÍAS Y D RIVERS DE S ENSORES
bytes y ACK/NACK con retardos de ≈ 5 µs para emular En este capítulo se describen las librerías en C puro
100kHz. (XC8) desarrolladas para gestionar los sensores del robot
vl53l0x.c/.h: Inicializa múltiples sensores sumo Caquineitor. Estas librerías permiten operar el bus I2 C
VL53L0X, comprueba Model_ID y gestiona lecturas por software, controlar múltiples sensores VL53L0X y leer
sincronizadas con el pin GPIO1_RANGE_READY arreglos de sensores de línea QTR-8A sin interferir con la
:contentReference[oaicite:0]index=0. comunicación SPI dedicada al CPLD.
Esta estrategia mantiene el MSSP en modo SPI sin inte- IX-A. 9.1 Controlador I2 C por Software (bitbang_i2c)
rrupciones, mientras el bit-banging accede a los VL53L0X de
forma paralela. El protocolo I2 C estándar utiliza dos líneas de propósito
abierto (SDA y SCL) con resistencia de pull-up. Para no
VIII-C. Comunicación SPI Maestro–Esclavo compartir el módulo MSSP del PIC18F4550 con SPI, se
El protocolo SPI se define con tramas de dos bytes: implementó un controlador por software (bit-banging), gene-
Byte 1: Bits 0–1: dirección motor 1 rando manualmente cada condición de bus:
Bits 2–3: dirección motor 2 IX-A0a. Generación de la condición de START y
Bits 4–5: ACT_CTRL[1:0] (habilitación) STOP:
Bits 6–7: reservados START: Con SCL alto, pasa SDA de 1 a 0 (SDA_HIGH
Byte 2: Nibble alto: duty-cycle motor 1 → SDA_LOW) y luego baja SCL.
Nibble bajo: duty-cycle motor 2 STOP: Con SCL alto, pasa SDA de 0 a 1 (SDA_LOW
Cada byte se transfiere con SS↓. . . SS↑ y un delay de 2µs → SDA_HIGH) manteniendo SCL alto.
entre paquetes para asegurar el latch en el CPLD. IX-A0b. Transmisión de cada bit: Para enviar un byte
se repite, de MSB a LSB:
VIII-D. Lógica en el CPLD MAX II
1. Configurar SDA al nivel del bit (0 → drive low, 1 →
En VHDL se implementaron los siguientes módulos: release y dejar pull-up).
1. SPI_Slave: sincronización de dominio, doble flip-flop 2. Pequeña demora (≈ 5 µs).
para SCLK, MOSI y SS. 3. Tirón alto de SCL (drive high), manteniendo SDA
2. Decodificador: extrae dirección, habilitaciones y duty- estable.
cycles. 4. Demora de lectura (≈ 5 µs).
5. Bajar SCL (drive low). • Controla el pin XSHUT para habilitar sensores inde-
6. Demora antes del siguiente bit. pendientes.
IX-A0c. Recepción de ACK/ NACK: Tras enviar 8 bits, • Verifica el Model_ID leyendo el registro correspon-
se libera SDA (entrada) y: diente.
1. Elevar SCL, luego leer el estado de SDA: 0 = ACK, 1 bool vl53l0x_setAddress(uint8_t
= NACK. oldAddr, uint8_t newAddr);
2. Bajar SCL y retomar control de SDA como salida. uint16_t vl53l0x_readRange(void);
IX-A0d. Estructura interna de la librería: • Inicia un measurement, espera Range Ready y obtie-
ne distancia en mm.
bitbang_i2c.h:
bool vl53l0x_checkError(void);
• Macros para asignar dos pines cualquiera del PIC
como SDA y SCL. IX-B0b. Validación:
• Definición de las constantes de retardo Se probaron simultáneamente tres VL53L0X, cada uno
(I2C_DELAY_US). con dirección distinta, confirmando lecturas estables has-
bitbang_i2c.c: ta 125 cm.
La librería gestiona timeouts para evitar bloqueos si un
• i2c_init(sda_pin, scl_pin): configura pi-
sensor no responde.
nes como open-drain/emulación.
• i2c_start() / i2c_stop(): implementan con- IX-C. 9.3 Librería QTR-8A (qtr8x)
diciones de inicio y parada. Para la detección de la línea blanca del dohyo se utiliza un
• i2c_write(byte): envía un byte y devuelve arreglo QTR-8A; la librería qtr8x.c / qtr8x.h provee:
verdadero si recibe ACK. IX-C0a. Funciones principales:
• i2c_read(ack): lee un byte y envía ACK/NACK
void qtr8x_init(uint16_t *minValues,
según el parámetro.
uint16_t *maxValues);
IX-A0e. Pseudocódigo de i2c_write(byte):
• Configura arreglos de calibración de 8 canales (mí-
for bit = 7 down to 0: nimo y máximo).
if (byte & (1 << bit)) { void qtr8x_calibrate(void);
release SDA // linea a ’1’ • Realiza 80 lecturas por sensor en fondos blanco y
} else { negro para poblar minValues y maxValues.
drive SDA low
uint16_t qtr8x_readPosition(void);
}
delay_us(I2C_DELAY_US) • Retorna posición ponderada de la línea entre 0 (ex-
drive SCL high tremo izquierdo) y 1000 (extremo derecho).
delay_us(I2C_DELAY_US) uint16_t qtr8x_readCalibrated(uint8_t
drive SCL low channel);
// leer ACK • Devuelve lectura normalizada de un canal específico.
release SDA IX-C0b. Algoritmo de posición: Se calcula como la
delay_us(I2C_DELAY_US) suma ponderada de cada sensor:
drive SCL high P7
ack = read SDA (lecturai × i) × 1000
pos = i=0 P7
drive SCL low i=0 lecturai
drive SDA low // recuperar como salida donde lecturai está normalizada entre 0 y 1 según valores
return (ack == 0) calibrados.
Con este enfoque, el PIC puede generar un bus I2 C com- IX-C0c. Validación:
pleto a 100 kHz nominal sin depender de hardware dedicado, Se calibraron los 8 canales en un prototipo V1, aseguran-
manteniendo simultáneamente el módulo SPI ocupado con el do detección de línea con al menos 2 cm de antelación.
CPLD. En pruebas dinámicas, la librería respondió a cambios
blanco–negro sin retrasos apreciables, liberando al PIC
IX-B. 9.2 Librería VL53L0X (vl53l0x) para otras tareas.
Para gestionar sensores de distancia ToF VL53L0X, se creó Con estas tres librerías, el PIC18F4550 puede:
la librería vl53l0x.c / vl53l0x.h, que aprovecha el Mantener el bus SPI 100 % dedicado al CPLD para
controlador I2 C por software: PWM.
IX-B0a. Funciones clave: Leer en paralelo sensores ToF y reflectivos sin bloqueos.
bool vl53l0x_init(uint8_t address, Facilitar la abstracción de hardware en el firmware prin-
uint8_t xshut_pin); cipal (FSM, PID, estrategias de combate).
X. C APÍTULO 10: E NCODERS DE R ATÓN Y C ÁLCULO DE XI-A. 11.1 Librerías de Sensores
D ESPLAZAMIENTOS Para operar sensores avanzados sin interferir con el bus SPI,
En este capítulo se detalla el uso de los encoders de ratón se crearon librerías en C puro compatibles con XC8:
reciclados para medir desplazamientos lineales y giros angu- bitbang_i2c: Controlador I2 C por software. Define
lares (yaw) del robot, describiendo la lógica de decodificación SDA y SCL por pines, genera start/stop, lectura/escritura
de cuadratura mediante un LUT de transiciones de Gray, la de bytes y acceso a registros. Se utilizan retardos de 5 µs
conversión de pulsos en milímetros y grados, y la validación para emular 100 kHz.
de rendimiento en bancada. vl53l0x: Gestión de múltiples VL53L0X. Permite ini-
cializar, verificar presencia ( extttModel_ID), leer rango
X-A. 10.1 Transiciones de Gray y Tabla de Búsqueda (LUT)
en mm y reasignar direcciones via pin XSHUT.
Los encoders de ratón proporcionan dos señales A y B qtr8x: Soporta hasta 8 canales QTR-8A. Realiza cali-
en cuadratura (código Gray). Para convertir cada par de bración manual (mínimos y máximos) y calcula posición
bits {A, B} en un incremento o decremento de posición, se ponderada (0–1000) de la línea.
implementó una tabla de búsqueda (LUT) de 16 entradas,
indexada por el valor previo y el valor actual de los bits: XI-B. 11.2 Estructura de Comunicación SPI
La comunicación maestro–esclavo entre PIC y CPLD utiliza
index = (prev_A ≪ 3) | (prev_B ≪ 2) | (cur_A ≪ 1) | cur_B tramas de 2 bytes:
Cada entrada de la LUT devuelve: Byte 1:Bits 0–1 y 2–3: dirección y selección PWM de mo-
+1 si la transición corresponde a un pulso “adelante” tores 1 y 2; bits 4–5: ACT_CTRL[1:0] (activación
(00→01→11→10→00). de motores); bits 6–7: reservados.
−1 si corresponde a un pulso “atrás” (el ciclo inverso). Byte 2:Ciclo de trabajo codificado en 4 bits por motor
0 para transiciones inválidas o rebotes. (nibble alto para motor 1, bajo para motor 2) →
Este enfoque minimiza la lógica de control en el PIC, redu- resolución 6.25
ciendo el tiempo de procesamiento por pulso y garantizando Cada byte se envía en una sesión SPI independiente
un conteo preciso aun con ruido o rebotes menores. (SS↓. . . SS↑), con pausa de 2 µs para garantizar el latch en
el CPLD.
X-B. 10.2 Conversión de Pulsos a Desplazamiento Lineal y
Ángulo de Giro XI-C. 11.3 Lógica en el CPLD MAX II
Una vez obtenidos los pulsos netos ∆p de cada rueda, la En VHDL se implementaron módulos:
transformación a desplazamiento y rotación se realiza así: 1. SPI Slave: sincronizador de dominio, doble FF para
X-B0a. Desplazamiento lineal (∆s): Con encoders de SCLK, MOSI y SS.
PPR = 72 y rueda de circunferencia C = 185,35 mm: 2. Decodificador: extrae campos de dirección, PWM y
activación.
C 3. Control de Ruta (ACT_CTRL): genera señales
∆s = ∆p × = ∆p × 2,57 mm/pulso
PPR LOAD1/LOAD2 según motor(es) activo(s).
X-B0b. Ángulo de giro (∆θ): Si d es la distancia entre 4. PWM1/PWM2: generan RPWM/LPWM y REN/LEN,
los ejes de las ruedas (por ejemplo, 120 mm), y pL , pR son asegurando que nunca coexistan.
los pulsos de rueda izquierda y derecha:
XI-D. 11.4 Máquina de Estados en el CPLD
(∆sR − ∆sL ) (∆pR − ∆pL ) (C/PPR) La FSM del SPI en el CPLD consta de:
∆θ = = [rad]
d d ESPERA: SS=1.
180
Para convertir a grados: ∆θdeg = ∆θ × π . RECIBIENDO/LEIDO: desplazar y latch del primer byte.
ESPERA2/RECIBIENDO2/LEIDO2: procesar segundo
XI. C APÍTULO 11: I MPLEMENTACIÓN DEL F IRMWARE : byte.
L IBRERÍAS , C OMUNICACIÓN Y M ÁQUINA DE E STADOS Al finalizar, actualizar PWM y volver a ESPERA.
En este capítulo se documenta el firmware completo
del PIC18F4550 y su interacción con el CPLD MAX II XI-E. 11.5 Máquina de Estados en el PIC18F4550
(EPM240T100C5), siguiendo una arquitectura modular de- El firmware emplea una FSM con estados:
sarrollada en prototipos previos. Dado que los sensores de ESPERA_INICIO: se lee el botón de calibración (RD2).
línea presentan variaciones debido a factores ambientales y CALIBRANDO: inicialización de SPI robusto, bitbang
desgaste, se implementó un estado de calibración opcional I2 C, ADC y encoders; LED rojo.
antes de cada ronda de combate para asegurar mediciones CAL_LINEA: calibración manual de QTR-8A; LED
precisas y consistentes. Se detallan las librerías de sensores, amarillo y parpadeo en cada cambio blanco–negro.
el protocolo SPI de control de motores, la lógica interna del BUSCAR, ATACAR, EMPUJAR, EVITAR_LINEA,
CPLD y las máquinas de estados implementadas tanto en REUBICAR: lógica principal de combate usando
hardware como en software. lecturas de sensores y encoders.
Subestados de alineación (frontal, lateral y trasero) basan la XII-B. Grupo 1: Inicialización y Arranque
corrección en comparaciones de distancias medidas. XII-B1. ESPERA_INICIO: Estado inicial tras el power-
XI-F. 11.6 Encoders de Ratón y Cálculo de Desplazamientos on o reset.
Se implementó un contador de cuadratura: Acciones:
Utiliza un LUT de 16 entradas para transiciones de Gray • Configurar MSSP (SPI), ADC y fuentes de interrup-
(00→01→11→10 = +1, inverso = –1, demás = 0). ción para encoders.
Con 72 PPR y circunferencia de 185.35 mm, cada pulso • Arrancar la rutina de bit-bang I2 C.
equivale a 2.57 mm. • Encender LED rojo fijo.
El cálculo de yaw se obtiene de pul- Evento de salida (tras 500 ms):
sos·(mm/pulso)÷distancia entre ejes → grados. • Si RD2 está pulsado → INICIO_CALIB.
A 48 MHz, el tiempo de procesado ( 160 ns) es muy inferior • Si RD2 no está pulsado → BUSCAR.
al período de pulsos ( 9.6 ms).
XII-B2. INICIO_CALIB: Transición inmediata si se de-
XI-G. 11.7 Estado de Calibración Guiada por LEDs tectó RD2 pulsado en ESPERA_INICIO.
Este proceso de calibración se ejecuta una única vez, justo al Acciones:
iniciar el robot antes de comenzar las rondas de combate, y no • Apagar LED rojo.
requiere repetirse entre enfrentamientos. Al mantener pulsado • Preparar buffers para muestreo.
RD2 al encender:
Siguiente estado: CAL_LINEA.
1. CALIBRANDO (LED rojo): arranque de periféricos.
2. CAL_LINEA (LED amarillo): muestreo de 80 lecturas XII-C. Grupo 2: Calibración Única (opcional)
por sensor. XII-C1. CAL_LINEA: Rutina de calibración de senso-
3. Al pulsar de nuevo, LED verde indica fin y se transita res de línea (QTR-8A), ejecutada sólo si se entró desde
a BUSCAR. INICIO_CALIB.
Los sensores QTR-8A están en AN0, AN1, AN5, AN6, AN7 Objetivo: Obtener 80 muestras por canal para determinar
y AN11; evitan conflictos con SPI y UART. valores mínimos y máximos.
XI-H. 11.8 Conclusión del Firmware Flujo de control:
La implementación ofrece: 1. Inicializar contador de muestras a cero.
2. Para cada uno de los 8 canales:
SPI dedicado estable con latch robusto.
I2 C por bit-banging sin bloqueos. • Leer valor desde el ADC.
FSM clara y guiada con LEDs. • Actualizar min y max.
Uso eficiente de encoders reciclados. 3. Repetir hasta completar 80 muestras.
Este diseño modular y probado sienta las bases para futuras Acciones al finalizar:
mejoras y versiones del robot sumo Caquineitor. • Calcular umbral:
mı́n + máx
XII. C APÍTULO 12: M ÁQUINA DE E STADOS EN EL Tblanco =
PIC18F4550 2
• Guardar umbral en EEPROM para
En este capítulo se describe con detalle la Máquina de
EVITAR_LÍNEA.
Estados Finita (FSM) implementada en el PIC18F4550, que
• Encender LED amarillo fijo.
actúa como el “cerebro” del robot. Cada estado define una fase
del ciclo operativo, desde el arranque y la calibración hasta Siguiente estado: BUSCAR.
las estrategias de combate y reubicación. La FSM garantiza XII-D. Grupo 3: Combate Autónomo
un comportamiento determinista y modular, facilitando la A partir de este punto la FSM entra en un bucle hasta que
depuración y la futura ampliación. finalice la ronda.
XII-A. Visión General de la FSM XII-D1. BUSCAR: Descripción: Búsqueda del oponente
La FSM consta de tres bloques principales de estados: mediante VL53L0X.
Inicialización y Arranque: Preparación de periféricos y Acciones periódicas:
espera de calibración. • Leer distancia por bit-bang I2 C.
Calibración Única: Rutina automática de ajuste de • Si distancia >60 cm: girar en espiral con ±10 % de
sensores. duty.
Combate Autónomo: Estados dinámicos durante el en- • Si distancia 40 cm: transición a ATACAR.
frentamiento. Transiciones:
Cada transición se basa en eventos (pulsación de botón, fin • A ATACAR al detectar oponente cerca.
de muestreo, detección de línea) y se refleja con indicadores • A EVITAR_LÍNEA si se cruza el umbral de línea.
luminosos (LEDs) para facilitar el seguimiento.
XII-D2. ATACAR: Descripción: Embestida frontal con Cuadro IV
velocidad creciente. LUT DE TRANSICIÓN DE G RAY
Acciones: prev_AB curr_AB ∆
• Incrementar duty-cycle cada 50 ms hasta el máximo. 00 01 +1
01 11 +1
• Enviar por SPI paquete con ACT_CTRL=’11’ y 11 10 +1
valores de duty. 10 00 +1
• Monitorizar sensor de línea en cada ciclo. 00 10 –1
10 11 –1
Transiciones: 11 01 –1
01 00 –1
• A EVITAR_LÍNEA si se detecta línea. Resto de transiciones → 0 (ruido o rebote)
• A REUBICAR si distancia al rival >60 cm.
Cada vez que ocurre un flanco en A o B, se forma un índice
de 4 bits (previo concatenado con actual) que consulta la LUT
XII-D3. EVITAR_LÍNEA: Descripción: Corrección in-
y acumula ∆ ∈ {−1, 0, +1} al contador de pulsos.
mediata al detectar la línea.
Acciones: XIII-B. Conversión Pulsos → Distancia y Ángulo
• Identificar canal que cruzó el umbral. Dado un encoder de 72 pulsos por revolución (PPR) y una
• Reducir duty del motor afectado en 50 %. rueda de diámetro D, se sigue:
• Girar hacia el centro con motor opuesto al 25 %.
• Enviar trama SPI de emergencia. πD πD
mm por pulso = , desplazamiento total = Npulsos ×
Transiciones: 72 72
• A BUSCAR tras 5 lecturas sin línea. Para el cálculo de giro yaw, con distancia entre ejes L:
∆dizq − ∆dder 180
θ [deg] = ×
L π
XII-D4. REUBICAR: Descripción: Realineación tras per-
der contacto o choque. donde ∆dizq y ∆dder son los desplazamientos lineales
medidos por los encoders de cada rueda.
Acciones:
XIV. C APÍTULO 14: C ALIBRACIÓN G UIADA POR LED S
• Leer sensores de distancia frontales y laterales.
• Calcular vector de corrección [∆x, ∆θ]. Antes de iniciar las rondas de combate, el sistema ofrece una
• Ejecutar maniobra PID de realineación. única rutina de calibración de sensores, guiada por indicadores
• Enviar nueva consigna vía SPI. luminosos. Esta secuencia solo se ejecuta una vez al encender
el robot y depende de mantener presionado o soltar el botón
Transiciones:
de calibración (RD2).
• A ATACAR si oponente <40 cm.
• A BUSCAR si no hay detección tras 2 s. XIV-A. Flujo de Estados de Calibración
1. ESPERA_CALIB (LED rojo) Tras el power-on o reset,
el firmware permanece en este estado con el LED rojo
XIII. C APÍTULO 13: E NCODERS DE R ATÓN Y C ÁLCULO
fijo encendido.
DE D ESPLAZAMIENTOS
Inicia MSSP (SPI), ADC, encoders e I2 C por bit-
bang.
En este capítulo se describe la implementación y el análisis
Espera a que el usuario suelte el botón RD2 (míni-
del sistema de encoders de ratón reciclados para medir despla-
mo 500ms).
zamientos lineales y giros angulares del robot. Se detallan la
tabla de transición de Gray utilizada, la conversión de pulsos 2. CAL_LINEA (LED amarillo) Al detectarse la libera-
a milímetros y luego a grados de giro, así como la validación ción de RD2, se apaga el LED rojo y se entra en el
de rendimiento en bancada. estado de calibración de los sensores de línea (QTR-
8A).
Recolecta 80 lecturas por canal IR desde el ADC.
XIII-A. LUT de Transiciones Gray Para cada canal, actualiza valores min y max.
Calcula el umbral para cada sensor:
Para interpretar correctamente las señales A y B del encoder
de cuadratura, se emplea una tabla de 16 entradas (4 bits) que mı́n + máx
Tblanco =
determina el incremento o decremento de pulso según el par 2
{prev_AB, curr_AB}: Guarda todos los umbrales en EEPROM.
3. FIN_CALIB (LED verde) Al completar la toma de expectativas de la competencia y las necesidades de innovación
muestras y el guardado de umbrales, se enciende el LED en la ingeniería.
verde fijo y se mantiene 1s antes de iniciar la primera
XV-B. Bibliografía
ronda.
Indica que la calibración ha finalizado correctamen- R EFERENCIAS
te. [1] Manual del Proyecto Integrador, Universidad de Colima, 2025.
[2] Reglas Oficiales de la Competencia de Robot Sumo, UPIITA-IPN, 2025.
Transición automática a BUSCAR (primer estado de [3] Microchip Technology Inc., PIC18F4550 Datasheet, DS39632E, 2009.
combate). [4] Microchip Technology Inc., BTS7960 Datasheet, consultado en 2025.
[5] MikroBootloader. Disponible en: [Link]
XIV-B. Detalles del Procedimiento de Muestreo mikrobootloader.
[6] IEEE Standards Association, Standards for Electronic System Design,
Frecuencia de muestreo: Aproximadamente 200Hz, su- IEEE, 2020.
ficiente para descartar ruido rápido. [7] Normas de Diseño Mecánico y Electrónico, Instituto Nacional de
Orden de canales: Secuencial de AN0 a AN7 (o mapeo Normas Técnicas, 2021.
[8] IEEE Xplore, Advances in Sumo Robotics and Motor Control, 2022.
físico definido). [9] Springer, Robotics in Competitive Environments: Sumo Robots, 2023.
Almacenamiento: Cada umbral ocupa 1 byte en EE- [10] ScienceDirect, Control Strategies for DC Motors in Robotics, 2021.
PROM; la rutina maneja desgastes mínimos manteniendo [11] K. J. Åström and T. Hägglund, PID Controllers: Theory, Design, and
Tuning, 2nd ed., ISA, 1995.
el bloque en memoria. [12] M. A. Mazidi, R. D. McKinlay, et al., PIC Microcontrollers: An
Robustez: Si algún canal no varía (min=max), se asigna Introduction to Microelectronics, Pearson, 2007.
un valor por defecto medio (0x80) y se marca un error [13] S. Brown and Z. Vranesic, Fundamentals of Digital Logic with VHDL
Design, 3rd ed., McGraw-Hill, 2009.
de calibración. [14] J. H. Lipson and H. Kurman, Fabricated: The New World of 3D Printing,
John Wiley & Sons, 2013.
XIV-C. Relevancia para la Estrategia de Combate [15] N. S. Nise, Control Systems Engineering, 7th ed., Wiley, 2015.
La disponibilidad de umbrales precisos permite que, durante [16] [Link], [Link]
[17] Texas Instruments, [Link]
EVITAR_LÍNEA, el robot detecte con anticipación el borde [18] Pololu, [Link]
del dohyo y aplique maniobras de corrección suaves, evitando [19] RobotShop, [Link]
salidas accidentales sin sacrificar velocidad de embestida. [20] All About Circuits, [Link]
[21] EEVBlog, [Link]
[22] Tutorial de SPI, [Link]
XV. C APÍTULO 15: C ONCLUSIÓN Y B IBLIOGRAFÍA an-introduction-to-spi/.
XV-A. Conclusión [23] Explicación sobre PWM y H-bridges, [Link]
ws/blog/[Link].
El presente anteproyecto ha representado un esfuerzo inte- [24] YouTube, Introducción a la robótica de sumo, [Link]
gral y colaborativo del Equipo de Carbones Calavera "La pjsi1uoyelU?si=lEf31fDhsnmB_mF3.
[25] YouTube, Estrategias para robots sumo, [Link]
Resurrección" para el desarrollo del robot sumo de 3 kg, watch?v=0WRkzKOBLOQ.
denominado Caquineitor. A lo largo del informe se han do- [26] YouTube, Control de motores con FPGA y PIC, [Link]
cumentado los aspectos fundamentales del proyecto, desde la 5JPBil28lzo?si=kkQ555MGTWejIgeR.
[27] YouTube, Implementación de PWM en robots, [Link]
planificación estratégica y la selección de componentes hasta com/watch?v=pW1zSV84MWc.
la implementación de la lógica de control, la comunicación y [28] YouTube, Diseño de robots sumo, [Link]
las estrategias de combate. aXHuZG7kcjI.
[29] STMicroelectronics, VL53L0X Datasheet: Time-of-Flight Ranging Sen-
Caquineitor ha sido diseñado para maximizar la potencia sor, 2017.
de empuje, asegurando al mismo tiempo la maniobrabilidad y [30] Intel (Altera), MAX II Device Handbook, MII5V1-3.3, 2022.
la estabilidad dentro del dohyo. La arquitectura electrónica,
basada en la comunicación SPI entre el PIC18F4550 y la Nota: Los valores, cálculos y documentación complementaria
FPGA Basys2, junto con el uso del driver BTS7960, constituye (incluyendo hojas de datos, avances, y la contabilidad) están
la base de un sistema robusto y eficiente. La incorporación anexados en la carpeta de OneDrive donde se encuentra el
del bootloader mediante MikroBootloader y la posibilidad archivo completo del anteproyecto.
de actualizar el firmware a través de USB son avances que
potencian la versatilidad y la capacidad de adaptación del
sistema.
Además, se han planteado módulos futuros que incluyen
estrategias de control automáticas, una PCB personalizada
y mejoras en la comunicación interna. Estos desarrollos no
solo incrementan el rendimiento competitivo de Caquineitor,
sino que también sientan las bases para futuras iteraciones y
mejoras en el proyecto.
En resumen, el proyecto demuestra la viabilidad técnica y
financiera de un robot sumo competitivo, y sienta las bases
para un desarrollo continuo y escalable, alineado con las