TFG G5198
TFG G5198
Universidad de Valladolid
Escuela Técnica Superior de Ingenieros de Telecomunicación
Desarrollado por:
Con la finalidad de dilucidar los pasos llevados a cabo durante el desarrollo del
controlador basado en un arma, concretamente una pistola, se expondrán las distintas
decisiones tomadas durante su elaboración en base a diferentes criterios, y se especificará
la elección de diversos parámetros a nivel técnico.
ABSTRACT.
Throughout this document the different phases related to the planning, elaboration and
development of a final product, specifically a controller designed to be used in video
games, will be described. For this purpose, several factors will be taken into account, such
as objectives, technical development processes at software and hardware level, design
and costs, both in economic terms and in terms of human resources.
In order to elucidate the steps carried out during the development of the controller based
on a weapon, specifically a pistol, the different decisions taken during its development
based on different criteria will be presented, and the choice of various parameters at the
technical level will be specified.
PALABRAS CLAVE.
Producto, microcontrolador, circuito, figura, hoja de datos, sistema, desarrollo.
KEY WORDS.
Product, microcontroller, circuit, figure, datasheet, system, development.
1
Universidad de Valladolid
ÍNDICE
1. INTRODUCCIÓN Y OBJETIVOS ................................................................................................. 5
3. HARDWARE .................................................................................................................................. 12
3.1 Búsqueda de componentes ............................................................................................................... 12
3.1.1 Sensaciones del usuario ........................................................................................................... 12
3.1.1.2 Interruptores de final de carrera: ...................................................................................... 15
Estudio teórico......................................................................................................................... 15
Implementación práctica ......................................................................................................... 16
3.1.1.3 LED .................................................................................................................................. 17
Estudio teórico......................................................................................................................... 17
Implementación práctica ......................................................................................................... 18
3.1.1.4 Electroimán ...................................................................................................................... 20
Estudio teórico......................................................................................................................... 20
Implementación práctica ......................................................................................................... 21
3.1.1.5 Motor descompensado...................................................................................................... 22
Estudio teórico......................................................................................................................... 22
Implementación práctica ......................................................................................................... 22
3.1.2 Sensores ................................................................................................................................... 24
Estudio teórico......................................................................................................................... 24
Implementación práctica ......................................................................................................... 26
3.1.3 Microcontrolador ..................................................................................................................... 27
Estudio teórico......................................................................................................................... 27
Implementación práctica ......................................................................................................... 31
3.2 Desarrollo electrónico esquemático ................................................................................................. 31
3.2.1 Análisis general de alimentación y conexiones ........................................................................ 32
3.2.1.1 Alimentación .................................................................................................................... 32
3.2.1.3 Conexiones ....................................................................................................................... 35
LED ......................................................................................................................................... 36
Interruptores ............................................................................................................................ 36
2
Universidad de Valladolid
Display LED ............................................................................................................................ 36
Botones .................................................................................................................................... 37
Motores ................................................................................................................................... 37
Sensores................................................................................................................................... 39
3.2.2 Implementación del desarrollo electrónico esquemático ......................................................... 40
3.2.2.1 Configuración de las conexiones principales del microcontrolador ................................. 42
Entradas Digitales.................................................................................................................... 42
Funciones alternativas de los puertos ...................................................................................... 43
Conexiones USB ..................................................................................................................... 44
3.2.2.2 Conexiones con sensores .................................................................................................. 46
3.2.2.3 Conexiones con motores .................................................................................................. 51
Resistencia ............................................................................................................................... 51
Diodo ....................................................................................................................................... 52
Transistor ................................................................................................................................. 54
Regulador de tensión ............................................................................................................... 57
3.2.2.4 Conexión con diodos LED ............................................................................................... 59
3.2.2.5 Conexión con display ....................................................................................................... 60
3.2.2.6 Conexión con interruptores y botones .............................................................................. 61
3.2.2.7 Otras conexiones y conectores ......................................................................................... 61
Bootloader ............................................................................................................................... 61
ISP ........................................................................................................................................... 61
Conectores ............................................................................................................................... 62
3.2.2.8 Implementación final........................................................................................................ 62
3.3 Diseño de la PCB ............................................................................................................................. 64
3.4 Análisis de potencia ......................................................................................................................... 66
3.4.1 Conjunto de sensores MEMS ................................................................................................... 66
3.4.2 Motor vibrador ......................................................................................................................... 67
3.4.2.1 Regulador de tensión ........................................................................................................ 67
3.4.2.2 Transistor 2N7002 ............................................................................................................ 68
3.4.3 Motor solenoide ....................................................................................................................... 69
3.4.2.2 Transistor NDS331N ........................................................................................................ 69
3.4.4 Microcontrolador ..................................................................................................................... 70
3.4.4.1 Salidas de datos ................................................................................................................ 71
3.4.4.2 Entradas de datos de interruptores y botones ................................................................... 71
3.4.4.3 Salidas hacia diodos ......................................................................................................... 71
3.4.4.4 Salidas PWM para los motores ........................................................................................ 72
3.4.4.5 Otras consideraciones ....................................................................................................... 72
3.4.5 Cómputo global y conclusiones ............................................................................................... 72
3.5 Obtención de materiales .................................................................................................................. 74
3.5.1 BOM ........................................................................................................................................ 74
3
Universidad de Valladolid
3.5.2 Adquisición de PCB ................................................................................................................. 77
3.6 Montaje de componentes ................................................................................................................. 79
4. SOFTWARE.................................................................................................................................... 81
4.1 Instalación del gestor de arranque ................................................................................................... 81
4.2 Bibliotecas empleadas .................................................................................................................. 83
4.2.1 AbsMouse.h ............................................................................................................................. 83
4.2.2 Keyboard.h ............................................................................................................................... 86
4.2.3 MPU9250.h .............................................................................................................................. 86
4.2.4 SevenSeg.h ............................................................................................................................... 88
4.2.5 SoftwareReset.h ....................................................................................................................... 89
4.3 Desarrollo teórico del código implementado ................................................................................... 89
4.3.1 Estructura general del código fuente ........................................................................................ 89
4.3.1.1 Setup................................................................................................................................. 90
4.3.1.2 Loop ................................................................................................................................. 90
4.3.2 Desarrollo del algoritmo de posicionamiento .......................................................................... 91
4.3.2.1 Fundamentos matemáticos ............................................................................................... 92
4
Universidad de Valladolid
1. INTRODUCCIÓN Y OBJETIVOS
Este proyecto tiene como fin llevar a cabo el estudio, desarrollo e implementación de un
dispositivo apuntador, con el propósito de su empleo en entornos recreativos. Para
desempeñar esta labor se tratarán de establecer unos objetivos que servirán como bases
del proyecto planteado, además de describir algunas de las nociones generales necesarias
para poder realizar los diferentes apartados que conforman el grueso del proyecto.
Si tratamos de realizar una descripción del proyecto más exhaustiva tendremos que
complementar los anteriores objetivos con una definición que goce de un mayor grado de
especificidad.
En primer lugar, el dispositivo apuntador será concebido como un control externo que
permitirá su utilización en modos de juego de primera persona, orientados a disparos o
shooters. Para ello el producto tendrá que contar con una serie de elementos que permitan
al usuario reconocer que está utilizando algo similar a una herramienta de disparo, en
5
Universidad de Valladolid
nuestro caso utilizaremos un concepto básico de partida centrándonos en el desarrollo de
un dispositivo que cuente con las características de una pistola.
Para conseguir adaptar la implementación del producto a tal fin, el dispositivo contará
con diversos elementos que faciliten su reconocimiento, como una cubierta plástica que
se asemeje a tal objeto de la vida real. Pero también con otros elementos que puedan llegar
a producir unas respuestas sensoriales semejantes. En el caso de este último objetivo, se
emplearán útiles electrónicos variados, como actuadores y sensores.
6
Universidad de Valladolid
2. ESTUDIO GENERAL DEL SISTEMA
Una vez citados estos objetivos, hemos de centrarnos en cómo será la puesta en marcha
del proyecto. Inicialmente tendrá que plantearse de manera esquemática y conceptual
cuáles serán los módulos necesarios para alcanzar los objetivos. En la Figura 1 se muestra
un esquema representativo sobre los fundamentos de la electrónica y la interfaz de
comunicaciones del proyecto.
7
Universidad de Valladolid
2.2 HID
La idea detrás de estas siglas no es más que el hecho de comprender la necesidad de un
dispositivo que traduzca la información que los seres humanos aportamos a los
ordenadores y otros aparatos electrónicos. El concepto es muy básico, pero tiene como
fin una estandarización, mediante la cual diferentes fabricantes de dispositivos puedan
compatibilizar sus productos con una amplia gama de sistemas.
Con la certeza de utilización de HID, debido a su uso masivo y a las facilidades que
aporta, nos vemos directamente expuestos a USB.
2.3 USB
Es un estándar que define las comunicaciones en un Bus de datos, así como los cables
empleados, los conectores y los protocolos. Fue creado por un grupo de empresas del
sector tecnológico que vieron la necesidad de unificar el proceso de conexión de
periféricos [3]. Además, como su propio nombre indica, transmite datos en serie.
Actualmente se ha convertido, casi de forma completa, en el estándar de facto en lo
referente a las conexiones de periféricos.
USB posee un cableado con cuatro pines diferentes, de los cuales dos son de datos y otros
dos de alimentación, esto último puede verse reflejado en el diagrama de la Figura 1.
Es importante hacer hincapié en sus cuatro cables de conexión, ya que será necesario
hacer una toma de decisión en cuanto a la comunicación con USB y determinar si la
alimentación del sistema vendrá únicamente proporcionada por el conector USB o si, por
el contrario, será necesario dotar al conjunto de una alimentación independiente a
mayores.
8
Universidad de Valladolid
2.4 Microcontrolador
Una vez establecidos los anteriores parámetros, será necesario aportar a nuestro proyecto
su principal componente, el microcontrolador. Este microcontrolador será el interlocutor
primario entre usuario y ordenador. Este, ha de ser compatible con los recursos necesarios
que se han determinado tras la definición de objetivos en un inicio: tendrá que ser
compatible con el protocolo de comunicaciones USB y además tendrá que poder
identificarse dentro del sistema como un dispositivo señalador HID.
2.5 Actuadores
Nos permitirán transformar la energía eléctrica en magnitudes físicas que proporcionarán
diferentes estímulos en el usuario. Estos actuadores serán elementos que produzcan
movimiento físico, de forma que doten de realismo a nuestro dispositivo aportándole
experiencias sensoriales que aumenten el nivel de inmersión durante el empleo del
mismo. Algunos de estos estímulos podrían estar relacionados con la vibración, o
retroceso. Los actuadores serán gestionados desde el microcontrolador, con el propósito
de activarlos en momentos definidos en los que se realicen determinadas acciones como
apretar el gatillo.
2.6 Alimentación
La alimentación será la encargada de aportar potencia a nuestro sistema. De manera que
deberemos determinar cuál es la potencia que utilizarán los distintos elementos: si
9
Universidad de Valladolid
necesitaremos etapas de adaptación de alimentación (transformadores, amplificadores) o
si, por el contrario, tendremos que utilizar varias fuentes independientes.
Además, esta alimentación tendrá que compatibilizarse con la alimentación del conector
USB que tendrá distintos valores en función de la versión de este protocolo. Las
decisiones entorno a la alimentación vendrán delimitadas por los elementos empleados.
2.8 Sensores
Los sensores jugarán un papel fundamental en el dispositivo apuntador y es que serán los
que doten de información al microcontrolador para que este, una vez procesados los datos,
pueda dar indicaciones al equipo en el cual esté conectado.
También se podrían incluir otros sensores para realizar una calibración del dispositivo o
simplemente con el fin de posibles actualizaciones mejorando así la escalabilidad del
producto.
10
Universidad de Valladolid
Como comentario final, queda argumentar que los elementos externos al equipo, es decir,
el microcontrolador, los sensores y los actuadores, tendrán que poseer un diseño
compacto que permita su ensamblado en la carcasa plástica, de manera que se buscará
crear un diseño adaptado a las necesidades globales.
Con esto se podrán cumplir los objetivos relacionados con el aprendizaje sobre los
procesos de un desarrollo electrónico y la utilización de herramientas CAD para la
realización final del circuito.
11
Universidad de Valladolid
3. HARDWARE
3.1 Búsqueda de componentes
Tras describir a grandes rasgos el estudio sobre el sistema, debemos realizar una discusión
sobre los distintos componentes electrónicos que formarán parte de nuestro dispositivo.
Dado que el microcontrolador será el centro neurálgico de nuestro dispositivo, tendrá que
adaptarse al resto de elementos que empleemos durante nuestra elaboración, así como a
las características definidas en el estudio del sistema, motivo por el cual se definirá en
último lugar.
Con el fin de realizar una implementación lo más realista posible, se pasará a enumerar
cuáles serán los parámetros que definan la experiencia de usuario en una situación real,
para después intentar emular los mismos en nuestro producto, mediante distintos
actuadores. En la vida real el disparo de una pistola produce diferentes efectos.
1. Inicialmente la persona que la utiliza tiene que colocar las balas en el cargador e
introducirlo en su interior, después de esto deberá deslizar la corredera de la
pistola para que la bala se desplace del cargador a la recámara.
12
Universidad de Valladolid
2. Una vez la bala está en la recámara, el usuario se encontrará con una resistencia,
en forma de fuerza, al apretar el gatillo, debido a que para efectuar el disparo
tendrá que accionar el martillo.
3. Tras actuar el gatillo, el usuario percibirá un destello producido por la salida de
los diferentes gases expulsados a través del cañón. Esto es consecuencia de la
reacción química originada por la fuerza ejercida por medio del percutor del
martillo en el fulminante de la bala y la pólvora de su interior.
4. Acto seguido a la explosión será notable el retroceso, este retroceso tiene su origen
en un proceso físico que se puede explicar mediante la tercera ley de Newton. La
cual dictamina que, si un objeto ejerce una fuerza sobre otro, entonces el segundo
objeto debe ejercer una fuerza de igual magnitud en dirección opuesta sobre el
objeto inicial [4]. Como consecuencia de este retroceso la corredera es impulsada
hacia atrás de manera que el casquillo de la bala pueda ser liberado. Al contar con
un muelle en el mecanismo de la corredera, esta volverá a su posición inicial e
introducirá una nueva bala en la recámara, permitiendo así replicar el proceso de
manera consecutiva hasta vaciar el cargador y pudiendo volver nuevamente al
paso inicial.
Una vez explicado brevemente este proceso, nos centraremos en la forma de emular estas
sensaciones en nuestro producto de manera análoga. Con lo cual, en nuestro producto:
13
Universidad de Valladolid
3. En lo referente al destello producido por la salida de los gases del cañón, se
tratarán de introducir diversos Light-Emitting Diode (LED) que, con una
configuración grupal de los mismos, aporten una luminancia elevada.
4. Finalmente, con el propósito de asemejar tanto el retroceso de la corredera tras la
explosión, como el retroceso físico del arma, se introducirán dos actuadores. El
retroceso de la corredera será llevado a cabo por un electroimán, concretamente
un motor solenoide que cuente con un muelle para así poder devolver la corredera
a su lugar original. En cuanto al retroceso físico del arma es mucho más complejo
emularlo, dado que no podremos moverla de las manos del usuario, pero sí que
podremos introducir un motor descompensado que actúe como vibrador, con el
fin de reproducir la inestabilidad del objeto en las manos de este.
Será importante tener en cuenta que el retroceso en la corredera ejercido por el motor
solenoide no deberá activar el interruptor de final de carrera de esta, al contrario de lo que
ocurre en la vida real. Esto sucede porque de esta manera podremos asociar la acción de
introducir un nuevo cargador a la recarga en los juegos, utilizaremos el interruptor de
final de carrera como botón para este fin.
Una vez expuestas las necesidades y citados los elementos que nos permitirán llevar a
buen puerto el desarrollo de nuestro producto, pasaremos a explicar de manera detallada
los componentes específicos que llevarán a cabo estas funciones.
14
Universidad de Valladolid
Cabe destacar que, durante el estudio teórico de cada componente, se ha realizado la
búsqueda de elementos que contasen con características tangibles capaces de justificar
sus implementaciones a nivel técnico. Como consecuencia, los elementos teóricos
elegidos durante la búsqueda de componentes cuentan con hojas de datos o datasheet
rigurosos y detallados. Por el contrario, a la hora de intentar acceder a estos elementos
específicos en el mercado global, ha sido prácticamente imposible encontrar los modelos
concretos. Debido a este motivo, se ha recurrido a componentes similares, que en muchas
ocasiones no contaban con información detallada sobre sus características electrónicas,
pero que ofrecían facilidad de adquisición y disminuían los costes considerablemente,
además de ajustarse a los tiempos fijados durante el desarrollo del producto.
15
Universidad de Valladolid
corredera. Ambos interruptores deberán tener una durabilidad mecánicamente elevada,
como consecuencia al reiterado accionamiento de los mismos.
Es por esto que se han elegido los interruptores de final de carrera DG13-B1RA[5]. En
el caso del gatillo contará con un cabezal auxiliar de rodillo que provocará que sea
necesaria menos fuerza para activarlo y de esta manera se obtenga un accionamiento
temprano del interruptor. En el caso de la corredera no se incorporará ningún cabezal
obligando a moverla de manera completa para accionar el interruptor.
Sus dimensiones son pequeñas “Very small size (only 12.8 x 5.8 x 6.5 mm)” [5] y podrán
encajar fácilmente en nuestro diseño, además soportan altos valores de tensión y corriente
“the breaking capacity ranges from small switching currents and voltages to low-voltage
applications up to 3 A 125 V AC”[5] previniéndonos de quemar el interruptor en caso de
una mala conexión de diseño. También poseen tres patillas Single Pole Double Throw
(SPTD) aunque solo utilicemos dos de ellas, la tercera patilla nos podría servir para
implementaciones futuras, mejorando la escalabilidad del producto. Este componente
cuenta además con una vida mecánica alta “depending on the model > 1.000.000
actuations”[5].
Implementación práctica
A la hora de adquirir este elemento se han encontrado problemas de disponibilidad y se
ha obtenido una alternativa viable de cara a su implementación final. El modelo elegido
ha sido el modelo T403 de la empresa GTIWUNG. La principal característica en la que
dista el nuevo componente del interruptor de carrera anteriormente documentado, es su
tamaño, poseyendo unas medidas de 21 x 24.1 x 6.4mm [6] frente a los 12.8 x 5.8 x
6.5mm (sin tener en cuenta patillas ni palancas). En relación con el planteamiento teórico
anterior, podemos establecer múltiples similitudes. En este caso, nos encontramos
nuevamente frente a un interruptor SPDT [6], el cual cuenta con una mayor tolerancia
frente a altos valores de tensión y corriente, siendo estos de 5A y 125V-250V [6].
Respecto a sus dimensiones, podemos observar que estas superan el tamaño del
componente estudiado, sin embargo, estos incrementos no serán muy significativos y
podrán adaptarse en el desarrollo de la carcasa del producto sin producir graves problemas
de diseño. De cara a su durabilidad, no encontramos valores proporcionados en la página
del vendedor, aunque en contraposición se aportan algunas características del
16
Universidad de Valladolid
componente como protección contra sobrecargas y calentamiento, según se observa en la
Figura 2.
3.1.1.3 LED
Estudio teórico
Para la selección de este componente deberemos tener en cuenta que estamos buscando
un diodo emisor de luz que goce de una luminancia elevada, tratando así de imitar de una
manera más fidedigna los destellos provocados por la pólvora. A mayores, el color
emitido por el LED tendrá que ser similar al de una explosión, por esto se ha elegido un
color ámbar.
Como consecuencia, tras examinar su hoja de datos [7], se ha determinado que un buen
candidato para desempeñar este papel sería el LED “Super Bright Amber Yellow LED
RF-WW05C3AYP4-N2”. En la hoja de datos se aprecia que este diodo puede ser un buen
candidato, debido a que soporta un máximo de 5V en polarización inversa y una corriente
de hasta 100mA a temperatura ambiente. También se muestra cómo los destellos del LED
podrán ser de alta frecuencia ya que en [7] se cita “Peak Forward Current (≦1/10 Duty
Cycle, 0.1ms Pulse Wide)” lo que significa que podríamos activar el diodo con un tren
de pulsos de una frecuencia de hasta 10000Hz a la corriente máxima si en el ciclo de
17
Universidad de Valladolid
trabajo no supera el 10% del ancho de pulso total, de esta manera no sobrecalentaremos
el diodo, en nuestro caso estos son valores que cumplirán con creces nuestras necesidades.
El hecho de que estos valores no sean altos reside principalmente en su pequeño tamaño,
también hay que tener en cuenta que buscamos simular este efecto, pero una intensidad
lumínica demasiado elevada provocaría reflejos en la pantalla en la que se utilizase el
dispositivo apuntador, empeorando la visión del puntero en esta.
Implementación práctica
De cara a la obtención del modelo LED expuesto anteriormente, su adquisición no se ha
realizado por motivos económicos. Este tipo de elementos electrónicos se corresponde de
manera directa con un consumo masivo en el que los compradores no suelen presentar
grandes exigencias específicas. A la hora de adquirir este componente se podría haber
optado por emplear el componente expuesto durante el desarrollo teórico, sin embargo,
el precio provocaría que nuestro producto tuviera un incremento en los costes de
1
Dado que no se cuenta con una distancia fija de referencia respecto al observador, se ha supuesto para
𝑎𝑙𝑡𝑢𝑟𝑎 1 𝑃𝑜𝑟 𝑡𝑎𝑛𝑡𝑜
este cálculo que el área es igual al radio al cuadrado = ⇒ Ω = 2𝜋(1 − 𝑐𝑜𝑠𝜃)𝑠𝑟
𝑟𝑎𝑑𝑖𝑜 2𝜋
18
Universidad de Valladolid
producción como consecuencia de forzar unas características no demasiado notables en
la experiencia final del usuario. Es por esto que se ha optado por utilizar un LED genérico
que poseyera un brillo elevado, en este caso del vendedor KY WIN ROBOT [8]. En la
Figura 3 puede observarse un resumen con las principales características aportadas por
el vendedor del producto.
19
Universidad de Valladolid
luminoso será mayor. Suponiendo que el ángulo proporcionado por el vendedor se
expresa en grados sexagesimales:
Además, estaremos disminuyendo el consumo, dado que este diodo emisor de luz trabaja
a la misma intensidad que el mostrado anteriormente, pero únicamente cuenta con un
voltaje de polarización en inversa de 3V[8].
Como argumentos finales a favor, citar que el tamaño de la cúpula del LED en este caso
es incluso inferior [8] a la del LED color ámbar seleccionado durante la búsqueda teórica.
Además, este nuevo LED puede solicitarse en color naranja[8], aportando mayor realismo
al efecto del destello de la explosión.
3.1.1.4 Electroimán
Estudio teórico
En el caso del motor solenoide, nos centraremos en su durabilidad y en la fuerza que
genera, dado que tendrá que ser capaz de mover la corredera.
Este motor [9] funciona con un voltaje en continua de 5V soportando hasta 5.5W. En
cuanto a su vida útil soporta hasta 300 000 ciclos, con un ciclo de trabajo de 1/4 para
ciclos de 4 segundos, lo cual, quizás sea algo ínfimo ya que el producto accionará el motor
solenoide cada vez que se active el gatillo y este último se presionará con mucha
frecuencia. Además, habrá que tener en cuenta el modo de disparo automático que se
quiere implementar, el cual será aún más agresivo. A pesar de esto, puede ser un punto
de partida desde el que comenzar a modelar nuestro sistema.
20
Universidad de Valladolid
insuficiente contar con un retroceso de este valor, sin embargo, sería posible añadir al
montaje de la carcasa piezas plásticas mecánicas que solventaran este problema.
Finalmente, sus dimensiones son adecuadas para implementarlas en un diseño compacto
y funcional.
Implementación práctica
A la hora de realizar la compra del motor solenoide empleado durante la búsqueda teórica
no hemos sido capaces de encontrar un modelo que se adecuara a las condiciones
requeridas de coste temporal y económico. Es por esto, que se ha seleccionado un nuevo
modelo, el cual incorpora algunas características que mejorarán la experiencia de usuario.
Se trata del motor solenoide HS-0730B producido por la empresa Heschen [10]. La
empresa no aporta ningún documento en el que figuren sus características, sin embargo,
arroja luz sobre algunas propiedades del solenoide, estas pueden observarse en la
Figura 4.
Tal y como se muestra en la anterior figura, el motor solenoide posee unas características
similares al utilizado durante la búsqueda de componentes, compartiendo con el solenoide
ZHO-0420S-05A4.5 su fuerza y corriente de operación.
21
Universidad de Valladolid
En cuanto al voltaje, este solenoide trabajará a un voltaje de 6V, aunque podrá ser
utilizado a 5V con la misma intensidad. Al no existir una hoja de datos que lo respalde
podremos intuir que quizás disminuya la fuerza generada por el motor, pero no de manera
significativa (Se ha verificado de manera experimental que el electroimán permite su
actuación a un voltaje de 4.5V y 1A). En cuanto a las dimensiones, es cierto que es
bastante superior al anterior motor solenoide, sin embargo, podría ajustarse sin problema
en el diseño tridimensional. Como ventaja citar que, este nuevo componente posee un
desplazamiento de 1mm, lo que provocará un retroceso mayor en la corredera, aportando
un realismo superior al producto.
Implementación práctica
En el caso de este componente se ha tenido que recurrir a un motor vibrador genérico que
se asemejará en dimensiones, aunque modificará su funcionamiento respecto al motor
vibrador elegido durante la búsqueda de componentes. En este caso, nos encontramos con
un motor sin núcleo, pensado principalmente para productos cómo cepillos de dientes. En
la Figura 5 se muestran las dimensiones del motor seleccionado.
22
Universidad de Valladolid
Figura 5. Dimensiones del motor vibrador aportadas por el vendedor.[12]
En primer lugar, aunque el formato de forma “de moneda” o redondo cambia, el tamaño
sigue siendo reducido. Tal y como figura en su hoja de datos [11], el motor B1034.FL45-
00-015 cuenta con un tamaño de diámetro de 10mm y un grosor de 3.4mm, tamaño similar
el nuevo motor elegido según se puede observar en la Figura 5.
Hemos de añadir que, al tratarse de un motor sin núcleo, obtendremos una respuesta de
mayor aceleración en un periodo de tiempo inferior, consiguiendo un arranque y parada
más cortos al simular la sensación de inestabilidad tras el disparo. Esto se debe a que los
motores sin núcleo poseen una masa menor y según la segunda ley de Newton al disminuir
la masa, obtendremos una aceleración mayor.
23
Universidad de Valladolid
3.1.2 Sensores
Estudio teórico
Los sensores serán los que aporten los datos físicos al sistema. Recordemos que
necesitamos traducir un movimiento en tres dimensiones a una pantalla de dos
dimensiones, esto provocará que desde un inicio descartemos la dimensión de la
profundidad.
El lugar del puntero en pantalla vendrá definido por una línea recta imaginaria que saldrá
del cañón de la pistola hasta su intersección con la pantalla. En caso de salirse de los
márgenes, el apuntador se quedará en el borde de estos.
Dado que hemos descartado la dimensión de la profundidad, las únicas dos acciones que
podremos llevar a cabo con la pistola en el espacio tridimensional serán:
Tendremos que ser capaces de discriminar y cuantificar esos movimientos, por lo que,
para ello, emplearemos un giroscopio y un acelerómetro. En el caso del primer tipo de
movimiento se empleará un sensor giróscopo o giroscopio. Este giroscopio nos permitirá
conocer la aceleración angular, de forma que podremos calcular el ángulo de giro que se
está efectuando.
Con estos dos valores podremos determinar un módulo y una dirección en el espacio, los
cuales nos permitirán representar en dos dimensiones la localización del puntero,
teóricamente:
𝑑𝜃 𝑑𝑣 ∆𝑠
𝜔= 𝑎= 𝑣=
𝑑𝑡 𝑑𝑡 ∆𝑡
𝑡1
Calcularemos el módulo según: 𝑣(𝑡) = ∫ 𝑎(𝑡) 𝑑𝑡 ∆𝑠 = ∫𝑡0 𝑣(𝑡) 𝑑𝑡
24
Universidad de Valladolid
𝑣 𝑠𝑒𝑛(𝜃)
Y la dirección en tres dimensiones con: 𝜔 = 𝑢̂
𝑟
Este sensor cuenta con tres Analog to Digital Converter (ADC) de 16 bits para cada uno
de los sensores internos, lo que nos proporcionará una resolución suficiente en el
movimiento a la hora de mapearlo en pantalla. Para añadir precisión en movimientos
rápidos y lentos cada una de las partes posee características programables. En referencia
a sus fondos de escala tendremos los siguientes rangos [13]:
El sensor podrá utilizar los protocolos Inter-Integrated Circuit (I2C) y Serial Peripheral
Interface (SPI) [13] para comunicarse con componentes externos, por lo que no presentará
una interoperabilidad demasiado compleja respecto a la mayoría de microcontroladores.
Estos protocolos podrán operar a un máximo de 400kHz y 1MHz [13] respectivamente,
motivo que nos incentivará a utilizar SPI.
Finalmente enumerar que su tensión de alimentación vendrá dada entre 2.4-3.6V, con
una fuente de alimentación digital separada.
25
Universidad de Valladolid
Es necesario explicar que todas estas tasas y posibilidades vendrán determinadas por el
conjunto global de elementos y deberemos tener en cuenta varios factores:
En primer lugar, no olvidemos que los sensores únicamente nos proporcionarán datos
binarios provenientes de magnitudes físicas, y que nuestro objetivo final es el de
representar un movimiento en pantalla proporcional a los movimientos físicos ejercidos
sobre nuestro dispositivo. Expuesta la anterior argumentación será necesario entrar a
valorar algunas de las características de los dispositivos señaladores.
Otra de las limitaciones vendrá impuesta por la resolución del monitor en el que se
emplee, de manera que deberemos determinar cuántos píxeles por pulgada o Dot Per Inch
(DPI) establecer en nuestro dispositivo apuntador. Será necesario ajustarlo para que
funcione de manera adecuada en la mayoría de monitores. Y es que, en caso de subir los
DPI obtendremos una mayor granularidad, ganando precisión, pero también
provocaremos que cuando se conecte a monitores de menor resolución sea muy sensible
a pequeñas variaciones provocando que su movimiento sea rápido y descontrolado.
Algunas de estas cuestiones se tratarán en el apartado de software, de cara a la
programación del microcontrolador.
Implementación práctica
El conjunto de sensores MEMS corresponderá con el expuesto durante la búsqueda de
componentes siendo este el modelo MPU-9250. En el caso del conjunto de sensores
26
Universidad de Valladolid
tendremos una problemática asociada, y es que, no se han encontrado versiones que
cuenten con patillaje, siendo el único modelo la versión QFNL, el cual no cuenta con
guías para poder realizar las soldaduras de una forma sencilla. Esto supondrá un motivo
de cambio, en el caso de no contar con la instrumentación adecuada como para poder
soldar este componente a la Printed Circuit Board (PCB).
3.1.3 Microcontrolador
Estudio teórico
A la hora de elegir un dispositivo electrónico que lleve a cabo el papel de
microcontrolador será necesario que cumpla los requisitos suficientes como para poder
gestionar el resto de componentes, así como las exigencias software marcadas al inicio
del estudio del sistema.
27
Universidad de Valladolid
De manera que pasaremos a recopilar de forma breve los requisitos que tendrá que superar
este integrado:
- Será necesario que sea compatible con USB HID, permitiendo operar tanto con el
protocolo USB como con la clase HID de este mismo.
- Una de las características convenientes, sería la de poder operar con la
alimentación facilitada por USB, de manera que no fuese necesaria ningún tipo de
alimentación externa ni etapas transformadoras de voltaje que ocuparían
demasiado tamaño en la PCB.
- Deberá poseer entradas de lectura digitales, con el fin de ser capaz de leer la
información de los interruptores de final de carrera, el conmutador y los botones.
- Necesitará contar con salidas digitales de voltaje que permitan controlar la
iluminación de los LED, pero también con salidas analógicas y generación de
formas de onda Pulse-Width Modulation (PWM) para el caso del modo de disparo
automático.
- Tendrá que ser compatible con los protocolos de comunicación externa del sensor
fijado, ya sea I2C o SPI.
- Finalmente, deberá trabajar a la suficiente frecuencia como para que el conjunto
del sistema funcione fluido, consiguiendo tasas de transmisión y recepción
equiparables a las salidas del sensor y una velocidad de transmisión de datos a
través de USB que garantice una mínima tasa de sondeo.
Es cierto que existe una versión bastante similar de este microcontrolador, siendo esta el
modelo ATmega16U4, sin embargo, la decisión ha venido enfocada al modelo de mayor
memoria Flash relativa a In-System Programming (ISP), de modo que tendremos mayor
cantidad de memoria a la hora de almacenar el código que carguemos en el
microcontrolador desde el dispositivo en el que lo programemos. De esta manera
contaremos con una memoria de 32Kbytes para el código del programa. Esta decisión se
ha tomado con vistas al futuro, dado que, al no conocer aún la cantidad de memoria
necesaria, no se ha desarrollado el software del producto. La inclinación ha sido hacia
una cantidad mayor evitando así problemas de almacenamiento en un futuro y en caso de
28
Universidad de Valladolid
ser suficiente, adaptando el producto para nuevas versiones que implementen funciones
adicionales.
- Este componente cuenta con una compatibilidad total con la versión 2.0 del
protocolo USB (el cual es retrocompatible) “Complies fully with Universal Serial
Bus Specification Rev 2.0” [15]. Además, la utilización del mismo es programable
"USB Bus Connection/Disconnection on Microcontroller Request" [15], de modo
que nos permitirá programarlo a través de USB sin necesidad de emplear los pines
ISP. Al ser compatible totalmente con USB 2.0 podrá emplear la clase HID de
USB siendo capaz de utilizarse como dispositivo apuntador o mouse.
- La tensión de alimentación del protocolo USB 2.0 estará entre 4.75-5.25V [16],
por lo que será válida para alimentar a nuestro microcontrolador que operará a un
voltaje de 2.7-5.5V dependiendo de su funcionamiento.
- El chip posee pines configurables como entradas digitales de lectura, las cuales
podrían utilizarse para detectar eventos de los actuadores. Además, cuenta con
múltiples puertos de este tipo, más que suficiente para obtener información
externa de los actuadores. A mayores, todos ellos pueden ser configurados en
modo de resistencia interna o pull-up resistor, lo que podría facilitar,
energéticamente hablando, la lectura del estado de los interruptores de final de
carrera.
- En cuanto a la salida de datos, los pines pertenecientes a los grupos de puertos B,
C, D, E, y F, según se define en su hoja de datos " output buffers have symmetrical
drive characteristics with both high sink and source capability" [15], por lo que
podremos utilizar estos puertos como puertos de salida para alimentar los diodos
emisores de luz. Por otra parte, el chip nos da la oportunidad de generar formas
de onda moduladas en anchura PWM, así como elegir las características de los
pulsos en los puertos PB5-PB7, PC6-PC7 y PD6-PD7. De modo que estas formas
de onda podrán ser utilizadas para controlar el modo de disparo automático del
motor solenoide.
- El microcontrolador posee compatibilidad con el protocolo SPI e I2C, contando
con las conexiones Serial Clock (SCLK) en el puerto PB1, Master Output Slave
29
Universidad de Valladolid
Input (MOSI) en el puerto PB2, Master Input Slave Output (MISO) en el puerto
PB3 y Select (SS) en el puerto PB0, permitiendo la configuración
Maestro/Esclavo. Es cierto que en la documentación del microcontrolador no se
muestra de forma explícita una compatibilidad con I2C, sin embargo, se podría
implementar mediante SCLK y Serial Data (SDA), utilizando el puerto PD1, el
cual permite conexión SDA mediante Two Wire Interface (TWI), un protocolo
creado por la empresa Atmel, propiedad actual de Microchip que se basa en I2C.
La principal causa que justifica la creación del protocolo TWI es meramente
empresarial, de esta manera se evitan problemas legales con la marca registrada
I2C, propiedad de la empresa Philips, aunque a efectos prácticos TWI es
completamente compatible con cualquier elemento que implemente I2C. En [17]
se especifican las principales diferencias de TWI con I2C y se explica su
funcionamiento de una manera más detallada.
- Finalmente, el dispositivo soporta tasas de transferencia USB de hasta 1.5Mbits/s
que nos permitirán tener un Polling Rate adecuado para un dispositivo que actuará
como mouse.
30
Universidad de Valladolid
del gestor de arranque o bootloader y ampliarán el catálogo de bibliotecas software
disponibles.
Implementación práctica
De cara a la incorporación de este microcontrolador en la PCB se recurrirá a su inclusión
en crudo, es decir, a pesar de que existen integrados de Arduino desarrollados con este
microcontrolador que agilizarían el diseño electrónico, se empleará este componente por
separado con el fin de optimizar al máximo la utilización de los pines de este. Además,
esto aportará un mayor grado de libertad a la hora de tomar decisiones de diseño
electrónico. De esta forma obtendremos un diseño específico ajustado a las necesidades
electrónicas del producto, pero podremos aprovechar sus facilidades software a la hora
de utilizar sus controladores o drivers, así como la compatibilidad con distintos elementos
que aporta su amplia comunidad en lo referente al desarrollo de bibliotecas.
31
Universidad de Valladolid
electrónico esquemático. Para ello se discutirá, en términos generales, la configuración
de las conexiones, así como la alimentación del circuito. Posteriormente se tratará de
realizar un diseño esquemático teniendo en cuenta los parámetros técnicos de cada uno
de los componentes del circuito. Seguidamente se comprobará la viabilidad del diseño
realizado con un análisis de potencia, para concluir con la realización de un esquema
relativo al posicionamiento de componentes en la PCB, siendo este el diseño de la placa
de circuito impreso.
3.2.1.1 Alimentación
En lo referente a la alimentación, trataremos de concluir cómo será la configuración
empleada con la finalidad de determinar las fuentes de corriente y tensión de nuestra PCB.
El propósito es utilizar la alimentación del puerto USB 2.0, de modo que se facilitará la
compatibilidad con nuevas versiones del protocolo como USB 3.2 e inferiores. Es
necesario señalar que en este apartado únicamente se expondrán de forma general los
aspectos relacionados con la alimentación, sin embargo, se discutirá en la sección 3.4 de
análisis de potencia, las consecuencias de emplear unas u otras versiones del protocolo
USB.
De esta manera podremos prescindir de muchos otros elementos que aumentarían el coste
y la complejidad del sistema. A pesar de esto, nos encontramos en una fase temprana del
32
Universidad de Valladolid
desarrollo y podría haber modificaciones futuras que tratasen de mejorar la calidad del
producto de cara a nuevas versiones del mismo.
33
Universidad de Valladolid
Figura 9. Typical Bus Powered Application with 5V I/O. [15]
También puede verse cómo los pines XTAL2 y XTAL1 están conectados a un oscilador
de cristal con dos condensadores a tierra; “Pins XTAL1 and XTAL2 are input and output,
respectively, of an inverting amplifier which can be configured for use as an On-chip
Oscillator” [15]. Esto se debe a que es necesario incorporar un oscilador externo, ya que
el integrado únicamente contará con un oscilador interno de 8MHz. Como consecuencia,
para poder aprovechar la frecuencia de trabajo del modo de 5V será necesario introducir
un oscilador de cristal de cuarzo externo o un resonador cerámico. En el caso de introducir
un cristal con una frecuencia de trabajo de 16MHz los valores recomendados de los
condensadores serán de 22pF para ambos.
Finalmente hay que comentar que, será necesario introducir un condensador de 1µF en el
pin UCAP para un funcionamiento correcto del regulador de voltaje interno, el cual nos
permitirá tener salidas de 3.3V para su empleo en USB. Como aclaración final a la
configuración de los pines de salida para el modo de 5V y la alimentación a través del
bus de entrada USB se adjunta un diagrama de bloques para esta distribución, el cual
puede apreciarse en la Figura 10.
34
Universidad de Valladolid
Figura 10. USB controller Block Diagram Overview. [15]
3.2.1.3 Conexiones
Tras fijar la alimentación del dispositivo principal, será necesario tomar partida en lo
referente a la alimentación de los componentes secundarios, así como sus conexiones para
interactuar con el resto del circuito. En principio, los componentes externos vendrán
alimentados por los pines de salida del microcontrolador, a excepción de los motores. En
este apartado pasarán a describirse los procedimientos empleados para la conexión de los
distintos componentes externos que compondrán el conjunto del sistema.
Según figura en la hoja de datos del microcontrolador “each I/O port can source more
than the test conditions (20mA at VCC = 5V)” [15]. Aunque se especifica que la suma de
todas las salidas de alta intensidad (IOH) en ciertos puertos no deberían exceder los
100mA, por lo que si conectamos muchos de estos pines como salida será necesario tener
en cuenta que quizás no se alcance el amperaje deseado. Estas cuestiones relacionadas
35
Universidad de Valladolid
con la potencia serán tratadas en secciones posteriores de este documento. Dicho esto,
pasaremos a estudiar la configuración para los distintos componentes del producto final.
LED
Para los LED podremos utilizar cualquiera de los pines de salida digitales del
microcontrolador con el fin de controlar el LED y a la vez alimentarlo. Recordemos que
el voltaje en directa es 𝑉𝐹 ~1.8𝑉 y que los valores típicos de intensidad luminosa venían
dados para fotocorrientes de 20mA, por lo que la salida de los pines digitales será
suficiente como para cumplir este objetivo. Aunque se hará necesario incluir resistencias
para limitar la corriente salida a un máximo de 20mA.
Interruptores
En el caso de los interruptores de final de carrera no será necesario ningún tipo de
alimentación, ya que únicamente funcionarán estableciendo una conexión entre los pines
de tierra y los pines de lectura digital del microcontrolador. Para ello se configurarán los
pines de lectura del microcontrolador en el modo pull up. De esta forma se podrá detectar
cuando han sido pulsado los mismos, dado que si la tensión de entrada en ese pin
corresponde con la tensión de referencia de tierra significará que el interruptor ha sido
accionado. En el caso contrario el pin tendrá una tensión que vendrá determinada por el
voltaje que cae en el modo de configuración pull up (correspondiente con un valor de
tensión que se leerá como tensión en alta).
Display LED
Como adición al conjunto de elementos expuestos durante la búsqueda de componentes
se incorpora un display LED de 2 dígitos que permitirá seleccionar al usuario múltiples
configuraciones y parámetros, visualizando los cambios efectuados en dicha pantalla.
Para poder llevar a cabo la incorporación del selector de balas de la recámara será
36
Universidad de Valladolid
necesario que el usuario reciba una realimentación sobre el estado actual de la capacidad
de balas del cargador. Para ello se implementará un display LED de 2 dígitos, que
permitirá seleccionar el tamaño del cargador. En nuestro caso, emplearemos un display
de ánodo común con el fin de intentar reducir el consumo del dispositivo, permitiéndonos
operar con ceros lógicos para su activación o entradas en baja, las cuales necesitarán una
menor potencia para desempeñar la misma función.
Botones
Hasta ahora estos elementos no se habían nombrado en el transcurso del documento, sin
embargo, se hace necesario incluirlos en este punto, dado que tratamos de aportar un
mayor grado de detalle en la construcción de las conexiones.
Motores
En el caso de la configuración de conexiones de los motores necesitaremos utilizar un pin
del microcontrolador que pueda actuar como pin digital y proporcione estos valores de
tensión y corriente, pero que además cuente con la posibilidad de generar un tren de
pulsos modulado con PWM con el fin de implementar el disparo automático.
37
Universidad de Valladolid
los motores, como consecuencia será necesario emplear algún tipo de configuración
electrónica a mayores.
Una de las opciones podría ser la representada en la Figura 11. En esta, puede apreciarse
que se ha incorporado un diodo entre la tensión de alimentación del solenoide y el resto
de componentes. La inclusión del diodo permitiría evitar que la tensión generada por el
solenoide cuando este deja de actuarse volviera hacia el interior del microcontrolador.
Por otro lado, se ha situado un transistor MOSFET de tipo N, el cual actuará como un
interruptor conectando el solenoide con tierra cuando la señal llegue por el pin
correspondiente del microcontrolador.
38
Universidad de Valladolid
Cabe destacar que el motor vibrador poseía una tensión de alimentación en continua de
2.3-3.6V. El microcontrolador seleccionado no posee salidas de ese rango de voltaje y
solo cuenta con un regulador de tensión interno para las salidas USB, con lo cual será
necesario incorporar un regulador de tensión con entrada a 5V y salida a 3.3V.
Sensores
En cuanto a los sensores nos encontraremos en el mismo caso que en el del motor
vibrador. La tensión de alimentación de los sensores integrados será de 2.4-3.6V, sin
embargo, el circuito integrado empleado ya incorpora un regulador de tensión y podremos
conectarlo directamente a 5V. A mayores, será necesario establecer las conexiones del
protocolo SPI utilizado.
Tras haber establecido los componentes principales del sistema, se muestra en la Figura
12 un esquema conceptual que engloba el resumen de conexiones discutidas durante este
apartado.
Figura 12. Esquema conceptual de carácter general con las conexiones del circuito.
39
Universidad de Valladolid
Entre estos elementos se obvian algunos de los componentes que conforman la posible
implementación final como conectores, osciladores, condensadores y resistencias, que
serán analizados en los siguientes apartados del proyecto.
Una vez establecido un primer contacto con el programa Proteus 8.9 y esclarecido el
empleo de bibliotecas externas con el fin de llevar a cabo la realización de los
esquemáticos del proyecto, pasaremos a ver cómo se han implementado las distintas
conexiones del conjunto de elementos electrónicos.
A lo largo de esta sección se tratarán las conexiones desde el punto de vista de sus
interacciones frente al microcontrolador, dado que será este el encargado de controlar el
funcionamiento global del circuito. Así mismo, se aportarán detalles técnicos específicos
de cada una de las secciones asociadas con los componentes principales y los elementos
electrónicos que los conforman. También se arrojará luz sobre la configuración de las
distintas huellas asociadas a los componentes, así como aquellas que se han creado de
manera específica en el programa Proteus 8.9.
40
Universidad de Valladolid
Figura 13. Distintas variantes del microcontrolador ATmega32U4. [15]
41
Universidad de Valladolid
3.2.2.1 Configuración de las conexiones principales del microcontrolador
Entradas Digitales
Tal y como figura en la hoja de datos del microcontrolador, los puertos B, C, D, E, y F
pueden actuar como entradas/salidas (E/S) digitales. Además, poseerán la capacidad de
configurarse en modo pull-up, activándose mediante software.
Cada puerto estará formado por tres direcciones de memoria que contendrán el puerto al
que pertenece (PORTx), la dirección de memoria en la que se encuentra el puerto
(DDRx), y el número de pin del puerto (PINx). Se adjunta en la Figura 15 una pequeña
aclaración visual procedente de la hoja de datos del microcontrolador que permite
comprender el funcionamiento de los puertos.
Figura 15. Esquema representativo sobre las direcciones y registros de los puertos B del
microcontrolador empleado. [15]
De esta manera, podrán utilizarse de forma lógica como pines digitales E/S. El esquema
general de la entrada y salida de datos para los pines digitales del microcontrolador se
muestra en la Figura 16. Es por esto que, en nuestro diseño, utilizaremos principalmente
todos los pines de los puertos B, C, D, E, y F por defecto como pines de E/S digitales,
salvo en algunos casos puntuales en los que utilizaremos las funciones alternativas de los
mismos.
42
Universidad de Valladolid
Figura 16. Esquema circuital representativo sobre el funcionamiento de los pines
digitales en el microcontrolador. [15]
En primer lugar, será necesario utilizar los puertos SPI para poder establecer la
comunicación con el sensor MPU-9250. Con lo que se utilizarán las funciones
alternativas de los puertos PB0 (SS), PB1 (SCLK), PB2 (MOSI) y PB3 (MISO), cuya
descripción de la hoja de datos puede observarse en la Figura 17.
43
Universidad de Valladolid
alternativa. En nuestro caso emplearemos los pines PC6 y PB6. Las descripciones de estos
pines pueden apreciarse en la Figura 18.
Figura 18. Funciones alternativas de los pines que emplearán PWM. [15]
Conexiones USB
Tal y como se ilustró en la sección 3.2.1.1, la alimentación del sistema vendrá
implementada a través de los puertos destinados a USB. Por lo que, continuando con las
configuraciones indicadas en la hoja de datos se conectarán las entradas de voltaje con la
de VBUS. Y siguiendo las recomendaciones aportadas en su hoja de datos, se
incorporarán dos resistencias de 22 ohmnios en los pines de datos USB. El esquema de
estas conexiones se observa en la previamente expuesta Figura 9.
44
Universidad de Valladolid
En cuanto al pin AREF, según se especifica en su hoja de datos, estará destinado a ser la
referencia del conversor analógico digital “This is the analog reference pin (input) for the
A/D Converter.”[15]. Se especifica, también en la hoja de datos del microcontrolador,
como al estar conectado al ADC, se mejorará la precisión de este si se añade un
condensador de desacoplo que permita “filtrar” el ruido de la señal de continua.
Recordemos que la impedancia teórica de un condensador vendrá dada por la relación
matemática:
1
𝑍=
𝑗𝜔𝐶
Por lo que, al llegar una señal ruidosa, el condensador únicamente dejará pasar a través
de él esta señal, concebida como una posible señal de corriente alterna. Por lo tanto,
situando este condensador en paralelo, se conseguirá que la señal ruidosa fluya a través
de este y supondrá una impedancia idealmente infinita que facilitará el transcurso de la
señal en corriente continua al ADC. Sin embargo, el valor del condensador no se
especifica en la hoja de datos.
“To improve the accuracy of the ADC, the analog supply voltage must be decoupled
separately, similar to the digital supply voltage. AREF must also be decoupled. The
typical value for the capacitor is 100nF. If aseparate analog ground (AGND) is present,
the analog ground should be separated from the digital ground so that the analog and
digital grounds are only connected at a single point (at the power supplyGND).” [24].
45
Universidad de Valladolid
Finalmente, para terminar con las conexiones necesarias para el funcionamiento del
microcontrolador (sin contar con sensores ni actuadores), se indica, en la hoja de datos
del mismo, que los pines que estén sin usar será necesario configurarlos en modo pull-up
utilizando la “resistencia interna” del microcontrolador. Según se cita: “If some pins are
unused, it is recommended to ensure that these pins have a defined level.”, “The simplest
method to ensure a defined level of an unused pin, is to enable the internal pull-up”,
“Connecting unused pins directly to VCC or GND is not recommended, since this may
cause excessive currents if the pin is accidentally configured as an output.” [15].
En la práctica, para este caso y el resto de conexiones del circuito que no lleguen a
emplearse, se dejarán sin conectar con ningún otro punto con el propósito de evitar
cortocircuitos o flujos de corriente indeseados que puedan dañar los componentes de la
PCB.
Figura 19. Visualización de alta calidad del conjunto integrado MPU-9250 implementado en una PCB.
46
Universidad de Valladolid
observar una imagen ampliada del conjunto integrado adquirido, en la que se visualizan
de manera más detallada los componentes del mismo.
Tal y como se muestra en la imagen de la Figura 19, nos encontramos ante una
implementación que además de añadir el conjunto de sensores MEMS, aporta un
regulador de tensión, condensadores y resistencias.
Figura 20. Tabla resumen acerca de las funcionalidades de los pines del sensor MPU-9250.[13]
47
Universidad de Valladolid
amortiguamiento de la señal. Esta hipótesis podrá comprobarse cuando tratemos de
esclarecer la implementación del regulador de tensión del motor vibrador.
Acto seguido nos centraremos en los pines RESV, los cuales están reservados a funciones
específicas. Uno de ellos irá conectado con la toma inicial de alimentación, el segundo
pin RESV se dejará con la misma configuración que los pines NC (pin 19) y finalmente
el último pin RESV irá conectado a la toma de tierra del circuito (pin 20).
Siguiendo con las conexiones de los pines del conjunto de sensores, nos centraremos
ahora en los pines AUX_DA y AUX_CL. Estas conexiones están orientadas a I2C, por el
contrario, nosotros utilizaremos el protocolo SPI debido a sus características full-duplex
y a sus altas tasas de transferencia.
Es cierto que sería posible implementar conexiones mediante I2C (TWI) ya que, a pesar
de que en la hoja de datos del microcontrolador no figure su compatibilidad de forma
explícita, el integrado ATmega32u4 posee los pines SDA y SCL que permitirían la
compatibilidad de comunicación con los sensores mediante I2C (TWI). Como en nuestro
proyecto desconocemos aún la tasa de transferencia necesaria para la comunicación con
48
Universidad de Valladolid
el sensor y en vista a desarrollar un producto escalable, nos decantaremos por el empleo
del protocolo SPI. El único inconveniente de SPI sería su falta de control de flujo y la
necesidad de utilizar cuatro de los pines del microcontrolador en vez de dos, sin embargo,
esto no será un problema de cara a la implementación del producto. Dicho esto, los pines
AUX_DA y AUX_CL quedarán sin utilizar.
El pin FSYNC tampoco se empleará, por lo que quedará también sin conectar. En la hoja
de datos no se especifica mucho sobre este pin, sin embargo, parece que podría emplearse
para guardar las mediciones de los sensores en registros y esto, en nuestro caso, no será
necesario, ya que emplearemos las mediciones de los sensores en tiempo real.
Siguiendo con el estudio del patillaje del MPU-9250 nos centraremos en el pin INT. Este
pin se podrá utilizar para gestionar interrupciones. Según se muestra en su hoja de datos
se podrán gestionar 4 tipos de interrupciones "Items that can trigger an interrupt are (1)
Clock generator locked to new reference oscillator (used when switching clock sources);
(2) new data is available to be read (from the FIFO and Data registers); (3)
accelerometer event interrupts; and (4) the MPU-9250 did not receive an acknowledge
from an auxiliary sensor on the secondary I2C bus. The interrupt status can be read from
the Interrupt Status register." [13]. Dado que nosotros trabajaremos con un sistema en
tiempo real y nuestro producto deberá funcionar de manera instantánea al conectarse, no
emplearemos ninguna de las posibles interrupciones que se pueden implementar. Por este
motivo el pin INT quedará sin conectar.
Finalmente, solo nos quedarán por conectar los 4 pines correspondientes con las
conexiones SPI. El pin nCS servirá para seleccionar el chip activo de la conexión SPI,
dado que este protocolo permite múltiples conexiones con distintos chips. Según se cita
en su hoja de datos "The CS lines of the non-selected slave devices are held high, causing
their SDO lines to remain in a high-impedance (high-z) state so that they do not interfere
with any active devices." [13], con lo cual, se podrá implementar esta conexión a pesar de
contar únicamente con un dispositivo SPI conectado. Esta decisión viene propiciada
principalmente con aspectos software, que serán expuestos el en anexo, junto al resto de
código del programa.
El pin SCL irá conectado a la comunicación serie de la señal de reloj del microcontrolador
(SCLK). Y en cuanto a los pines SDI, entrada de datos al sensor y SDO, salida de datos
del sensor, se conectarán respectivamente a los pines MOSI y MISO del
microcontrolador.
49
Universidad de Valladolid
Una vez estudiada la configuración del integrado adquirido, las recomendaciones de
conexión del fabricante y las conexiones que se aportarán desde nuestro circuito con este
integrado, se aporta en la Figura 22 un diseño esquemático proporcionado por un
vendedor que pone a nuestro disposición el mismo producto adquirido.
Figura 22. Diseño esquemático aportado por un vendedor independiente sobre la PCB
que incorpora el conjunto de sensores MPU-9250.
De cara a nuestro diseño únicamente se emplearán los pines VCC, GND, SCL, SDA,
ADO y NCS de la PCB adquirida. A la hora de incorporar este componente a nuestro
diseño esquemático ha sido necesario crear un nuevo diseño desde cero, dado que no se
han encontrado bibliotecas que contengan la huella y modelo de este elemento. Es por
esto que, se ha creado un elemento definido en el diseño esquemático global como U2 al
que se le ha asignado una huella CON10_1x10_HDR_2663. Esta huella se basa
principalmente en un conector de 10 pines de un tamaño algo inferior al que posee este
integrado, pero que nos facilitará una huella más pequeña y permitirá el desarrollo de una
PCB de menor tamaño, con el objetivo de que nuestro producto no posea grandes
dimensiones.
50
Universidad de Valladolid
3.2.2.3 Conexiones con motores
A la hora de realizar las conexiones con los diferentes motores de nuestro circuito será
necesario incorporar una circuitería extra que nos permita proteger el conjunto de
componentes, así como aportar fiabilidad al sistema global. Por lo que, en los siguientes
apartados, se tratará de argumentar la elección de los componentes del circuito de
adaptación de los motores, así como las aportaciones al mismo y las mejoras
incorporadas.
Resistencia
En primer lugar, se aportarán algunas de las bases teóricas en relación a la resistencia con
la que contará esta etapa circuital. Se empleará una resistencia que actuará con una
configuración pull-down. Esto significa que, por defecto, nuestro transistor estará en el
estado apagado, y esta resistencia facilitará la labor. Con el fin de comprender mejor el
funcionamiento, se muestra en la siguiente figura un ejemplo práctico.
51
Universidad de Valladolid
Diodo
Además de incluir esta resistencia, será necesario incorporar un diodo posicionado
electrónicamente en paralelo con el motor a modo de seguridad. Si concebimos de forma
electrónicamente pura el motor, veremos que está formado principalmente por un
bobinado que será el que produzca una fuerza electromagnética, la cual, interactuando
con los imanes situados en el interior de la cavidad del motor permitirá efectuar el giro
deseado en este, accionando el motor. Como consecuencia, podemos decir que, a ojos del
circuito electrónico, el motor se comportará como una bobina. Las bobinas, debido a sus
propiedades, actuarán evitando cambios bruscos de corriente. Si el transistor se apaga
rápidamente, cosa que sucederá, dado que accionaremos el motor con un pulso PWM de
frecuencia elevada en algunos casos, entonces, la corriente que aún se encontraría
circulando a través de la bobina del motor por un tiempo, fluirá a través del diodo y los
valores de corriente terminarán disipándose sin derivar hacia otras partes de la circuitería.
En el caso en el que decidiésemos no incorporar el diodo, la corriente almacenada en el
bobinado no tendría por donde salir, lo que desembocaría en altos valores de tensión en
la patilla del drenador que formará parte del circuito de acondicionamiento y como
consecuencia, probablemente llegaría a quemar el transistor.
En cuanto a la selección del diodo, tendremos que recalcar en un inicio las principales
características de este componente. La Figura 24, obtenida de algunas enseñanzas
aprendidas durante la carrera [25], trata de mostrar las características teóricas de corriente
y voltaje en un diodo, así como sus regiones de funcionamiento.
Figura 24. Curva característica I-V de un diodo de Si de pequeña señal a 300ºK. [25]
52
Universidad de Valladolid
El diodo actuará permitiendo el paso de la corriente cuando entre sus polos se supere la
tensión umbral y oponiéndose al paso de esta, idealmente 0A, cuando se encuentre en la
región de polarización inversa. Sin embargo, habrá que tener cuidado de que el voltaje en
las bornas del componente no supere la región de ruptura inversa, dado que en esta región
de funcionamiento el diodo volverá a permitir el paso de corriente.
Como podemos observar, su tensión de ruptura no será un problema dado que comienza
a partir de los 100V y nunca llegaremos a estos valores en nuestra configuración circuital.
Además, la corriente en inversa posee unos valores muy bajos que podrán considerarse a
efectos prácticos como un diodo ideal. A lo anterior se suma que, su tensión en directa
máxima, será de 1V. A partir de estos valores comenzará a permitir el paso de corriente,
evitando que la corriente que pueda fluir a través motor, cuando el transistor no esté
accionado, consiga disiparse. También debemos de resaltar que el valor de 1V no será
suficiente como para quemar el transistor.
53
Universidad de Valladolid
microcontrolador empleado, se especifican las frecuencias de los pulsos PWM generados,
estos pueden apreciarse en la siguiente figura.
𝑓𝑐𝑙𝑘_𝐼/𝑂 16𝑀𝐻𝑧
𝑓𝑂𝐶𝑛𝑥𝑃𝑊𝑀 = = = 62.5𝐾𝐻𝑧
𝑁 ∗ 256 256
1 1
𝑇𝑅𝑅 = = = 16𝜇𝑠
𝑓𝑂𝐶𝑛𝑥𝑃𝑊𝑀 62.5𝐾𝐻𝑧
Esto sucedería si la señal proviniese directamente del pin PWM asociado y teniendo en
cuenta que utilizásemos la frecuencia máxima, cosa que no sucederá. Sin embargo, vemos
que el tiempo de recuperación del diodo, tal y como se muestra en la Figura 26, es inferior
al tiempo de recuperación requerido en el peor de los casos, siendo este de 4ns.
Transistor
Será necesario incorporar un transistor, ya que, esto nos permitirá controlar el motor con
el tren de pulsos PWM de una manera eficaz, además, de esta forma podremos incorporar,
si fuese necesario en nuevas versiones del producto, fuentes de alimentación externa de
altos valores de voltaje. De este modo, la electrónica incorporada nos permitiría accionar
los motores con pequeños valores de tensión provenientes de los pines del
microcontrolador, pero empleando fuentes de alimentación de valores elevados para los
mismos.
54
Universidad de Valladolid
Figura 27. Curva característica de un transistor MOSFET de canal N. [27]
Para conseguir que el transistor actúe como un interruptor tendremos que realizar la
configuración electrónica de nuestro circuito de forma que esta permita al transistor actuar
en las regiones de corte y saturación.
Para situar el transistor en la región de saturación, será necesario que el voltaje drenador
fuente sea mayor que el voltaje puerta fuente menos el voltaje umbral en un transistor de
canal N. Mientras que para situarnos en la región de corte será necesario que el voltaje
entre drenador y fuente sea mayor que el voltaje umbral. Teniendo en cuenta las
ecuaciones, deberá cumplirse 𝑉𝐺𝑆 ≥ 𝑉𝑇𝐻 , 𝑉𝐷𝑆 ≥ 𝑉𝐺𝑆 − 𝑉𝑇𝐻 para la región de saturación
y 𝑉𝐷𝑆 ≥ 𝑉𝑇𝐻 para la de corte.
55
Universidad de Valladolid
Figura 28. Simulación del circuito de adaptación para conexión con motor
realizada con Proteus 8.9
Contando con que la salida del pin PWM de nuestro controlador será de 5V, oscilando
entre 0 y 5V (Unipolar), se ha incorporado una fuente de alimentación de 5V, que aportará
energía al circuito, y al regulador de voltaje de 3.3V de salida.
No será necesario incluir ningún diodo Zener a mayores con el fin de mejorar la respuesta
frecuencial del transistor, dado que este en su propia construcción ya incluye uno entre
drenador y fuente.
56
Universidad de Valladolid
La conexión con el motor solenoide será similar, con la salvedad de eliminar el regulador
de voltaje y conectarse directamente a la alimentación del circuito de 5V. A mayores, se
sustituirá el transistor 2N7002, por el modelo NDS331N que soporta una tensión de
drenador máxima de 1.3A según se muestra en su hoja de datos [29]. Este cambio es de
vital importancia, dado que el transistor 2N7002 únicamente cuenta con una corriente de
drenador continua máxima de 115mA y no permitiría accionar el motor solenoide, ya que
trabaja a 1A. Respecto al resto de características, son similares en el caso de ambos
transistores.
Regulador de tensión
Tratando de llevar a cabo el conexionado del motor vibrador, será necesario emplear un
regulador de voltaje, dado que la tensión de alimentación de este motor deberá
encontrarse a 3.3V. En este caso, utilizaremos el regulador de voltaje MIC5219-3.3BM5,
el cual nos permitirá obtener una salida a 3.3V cuando se le aporte una entrada a 5V. En
la siguiente figura se incluye un esquema, proveniente de su hoja de datos [30], de las
conexiones del componente.
57
Universidad de Valladolid
Figura 30. Patillaje del regulador de tensión MIC5219-3.3BM5. [30]
En cuanto a sus conexiones, también se aporta una tabla con sus definiciones, proveniente
de su datasheet. La siguiente figura muestra la tabla anteriormente citada.
Figura 31. Tabla ilustrativa sobre la funcionalidad de los distintos pines del regulador. [30]
Como podemos observar, tendremos que habilitar la entrada EN para activar el regulador
de tensión, además incluiremos un condensador de 470pF con el fin de reducir el ruido
de la señal de entrada, proveniente del USB.
En la hoja de datos se aportan algunos ejemplos con una reducción de ruido significativa.
Nosotros implementaremos el modelo siguiendo las conexiones mostradas en la Figura
32. Aunque según se indica su hoja de datos: "For applications < 3V, the output capacitor
should be increased to 22μF minimum to reduce start-up overshoot. Larger values
improve the regulator’s transient response. The output capacitor value may be increased
without limit." [30]. Por este motivo nos decantaremos por un condensador de salida de
22𝜇F mejorando la respuesta en régimen transitorio (velocidad a la que se alcanza un
estado estacionario) y salvaguardando el sistema frente a posibles bajadas de tensión,
dado que estaremos operando con 3.3V. Además, se recomienda emplear condensadores
58
Universidad de Valladolid
electrolíticos de aluminio "The output capacitor should have an ESR (equivalent series
resistance) of about 1Ω or less and a resonant frequency above 1MHz. Ultra-low-ESR
capacitors could cause oscillation and/or underdamped transient response. Most
tantalum or aluminum electrolytic capacitors are adequate."[30]. La utilización de estos
últimos no será empleada, debido al gran tamaño de los condensadores electrolíticos.
Además, tal y cómo se indicó en el apartado 3.2.2.1, se añadirá un condensador de 100nF
en la señal de entrada proveniente de la alimentación USB.
Figura 32. Ejemplo de aplicación del regulador de tensión para condiciones de muy
bajo ruido. [30]
Será necesario adaptar la entrada de tensión a los diodos mediante resistencias. Según se
indica en la hoja de datos del microcontrolador “each I/O port can sink more than the test
conditions (20mA at VCC = 5V, 10mA at VCC = 3V)” [15], siendo el valor máximo de
40mA por pin. Además, el voltaje de un pin digital en alta vendrá determinado por los
valores de la siguiente figura, siendo 4.2 el valor mínimo de voltaje para un pin
configurado en HIGH.
Figura 33. Voltaje de salida para datos en HIGH y LOW del microcontrolador
Atmega32u4. [15]
59
Universidad de Valladolid
Si nos fijamos en la salida I-V de un pin establecido en “alta” tenemos que será de 4.2V
y 10mA de manera típica, pudiendo alcanzar valores mayores.
De esta forma, se incorporarán resistencias con valor de 150 Ω entre las salidas del
microcontrolador y los diodos LED, con el fin de obtener la caída de tensión deseada
entre las bornas de los mismos.
Figura 34. Características principales del display LED de 2 dígitos aportadas por el
vendedor. [31]
60
Universidad de Valladolid
3.2.2.6 Conexión con interruptores y botones
En lo relativo a las conexiones con los interruptores de final de carrera y botones, estas
serán simples, dado que únicamente funcionarán como interruptores y el resto de carga
de trabajo correrá por parte del software. Bastará con conectar una de las patillas del
componente a uno de los pines digitales del microcontrolador y otra a tierra. De esta
manera y aplicando la configuración del pin digital en el estado pull-up, el pin estará
siempre en el estado de la tensión de alimentación y cuando el circuito se cierre porque
el interruptor ha sido accionado, el pin que estará en el estado de lectura, detectará la
caída de tensión permitiendo actuar al software en consecuencia.
La implementación de este pin a tierra viene determinada porque el pin PE2 HWB es un
pin de activa en baja.
ISP
Teniendo en mente el objetivo de cargar, tras la primera construcción del diseño
electrónico, el gestor de arranque, será necesario disponer de una interfaz que nos permita
61
Universidad de Valladolid
llevar a cabo esta tarea. Para ello, se ha creado en el diseño esquemático un conector ISP
que nos facilitará la instalación del bootloader.
Al haber decidido utilizar las facilidades del software Arduino, podremos emplear su IDE
para realizar la incorporación de la memoria de arranque en nuestro microcontrolador, en
Conectores
De cara a obtener un diseño compacto y organizado, se ha decidido segmentar el diseño
circuital en dos partes que vendrán unidas mediante cableado a través de dos conectores.
Este tipo de configuración nos permitirá situar los componentes de forma sencilla en el
lugar que les corresponda, pudiendo así situar, el motor solenoide, los diodos LED, el
interruptor de la corredera y los sensores en la carcasa del arma correspondiente a la
sección del cañón.
Con la finalidad de relajar la dificultad del desarrollo software, se incluye además, en este
resumen, la correspondencia en pines con la biblioteca de Arduino IDE correspondiente
con el integrado Arduino Micro, el cual cuenta con el mismo microcontrolador que hemos
empleado durante el desarrollo electrónico.
62
Universidad de Valladolid
63
Universidad de Valladolid
3.3 Diseño de la PCB
Una vez definido el diseño esquemático, con las respectivas huellas de los distintos
componentes, se ha procedido a realizar el diseño de la PCB. Para ello se ha continuado
utilizando el programa Proteus 8.9.
Tras esto, se ha procedido a incorporar los agujeros de la placa, los cuales servirán para
ajustar parte de la PCB en la carcasa plástica. Se han definido de un tamaño de 3mm de
Figura 36. Reglas de diseño fijadas durante la elaboración del diseño de la PCB
diámetro con la finalidad de poder pasar a través de los mismos tornillería de tipo M3.
Tras haber definido los márgenes e incorporado los componentes en función del espacio
disponible (después de una primera iteración con el diseño de la carcasa que se expondrá
en la sección 5), se ha procedido a emplear la herramienta auto-router del programa. Una
vez realizada la iteración con esta herramienta, debido a las pequeñas dimensiones
requeridas para la PCB no se han podido establecer todas las conexiones y algunas de
ellas han tenido que implementarse de forma manual.
64
Universidad de Valladolid
el tamaño de las vías a un valor V40. Las rutas en las que se han implementado estas
modificaciones han sido las pistas VUSB y GND que se dirigían hacia los motores, dado
que serán estos los elementos que mayor potencia consuman en todo el circuito.
ajustado las serigrafías de los distintos componentes con la finalidad de que fueran
visibles, evitando así huecos de vías, orificios de la PCB y otros elementos. El resultado
final tras el diseño de la PCB puede visualizarse en la Figura 37.
65
Universidad de Valladolid
3.4 Análisis de potencia
Con el fin de tratar de establecer una fuente de alimentación que satisfaga todas nuestras
necesidades, así como comprender si la composición de nuestro circuito es viable desde
el punto de vista del consumo de potencia. Se realizará un análisis de potencia sobre los
elementos activos del circuito.
Nuestro producto ha sido concebido para ser alimentado a través de un conector mini
USB, con lo cual, el conjunto de nuestro circuito vendrá alimentado a través de conectores
USB en principio procedentes de un equipo que generalmente será un ordenador. A lo
largo de este documento y según lo expuesto en [16] y [33], trataremos de determinar cuál
será una alimentación suficiente para el conjunto de componentes de nuestro integrado.
66
Universidad de Valladolid
Dado que el vendedor del conjunto integrado no incorpora características de consumo de
potencia sobre el regulador de voltaje incorporado, únicamente tendremos en cuenta el
consumo de potencia del integrado MPU-9250.
Como podemos observar, en el modo de funcionamiento con los tres sensores, sin emplear
el Digital Motion Processor (DMP) es de 3.7mA. En el caso de no emplear el
magnetómetro y continuar sin utilizar el DPM el consumo será de 3.4mA.
67
Universidad de Valladolid
hoja de datos se muestra la expresión matemática que nos permitirá calcular la potencia
disipada en el regulador de tensión.
Se ha tomado como valor de 𝐼𝐺𝑁𝐷 3mA debido a que para una tensión de habilitación del
regulador superior a 3V (la nuestra será de 5V) y una corriente de salida de 150mA los
valores máximos de 𝐼𝐺𝑁𝐷 serán de 3mA, con lo cual podremos tantear que para 180mA
de corriente de salida se aproximará al valor máximo experimentado para 150mA. En el
peor de los casos, tomando una corriente de salida de 500mA el valor de 𝑃𝐷 = 366𝑚𝑊.
En la hoja de datos de este componente también se refleja cómo realizar el cálculo para
la disipación de potencia máxima del elemento.
Hemos de indicar que, a pesar de que en las características eléctricas del dispositivo se
especifica que los valores numéricos están diseñados para un 𝑉𝐼𝑁 = 𝑉𝑂𝑈𝑇 + 1𝑉 nosotros
tenemos una 𝑉𝐼𝑁 = 𝑉𝑂𝑈𝑇 + 1.7𝑉, sin embargo, situándonos en las peores condiciones,
donde 𝐼𝑂𝑈𝑇 = 500𝑚𝐴 superaríamos la potencia máxima, pero este efecto no será notable,
dado que el motor vibrador no se activará todo el rato.
Finalmente hay que aclarar que, a pesar de que el motor debería trabajar a 3V y estamos
empleando un regulador de tensión con un voltaje de salida de 3.3V la implementación
circuital del transistor acabará originando que sobre el motor haya una caída de ≈ 3𝑉
según se mostró en la simulación del circuito de acondicionamiento del motor.
68
Universidad de Valladolid
muestra que la resistencia térmica es de 625ºK/W=625-273.15=351.85ºC/W y su
temperatura máxima de disipación es de 150ºC, con lo cual obtenemos:
69
Universidad de Valladolid
(𝑇𝐽 (𝑚𝑎𝑥) − 𝑇𝐴 ) (150º𝐶 − 25º𝐶)
𝑃𝐷 (𝑚𝑎𝑥) = = = 500𝑚𝑊
𝜃𝐽𝐴 250º𝐶/𝑊
Este valor supera los 5W, sin embargo, al igual que en el caso del transistor del motor
solenoide, sobre este elemento únicamente caerá una pequeña parte de los 5V
provenientes de la alimentación USB, esto, sumado a que el motor solenoide no será
actuado todo el rato será suficiente como para disipar la potencia que caiga sobre este
elemento. En el caso del modo de funcionamiento automático la potencia media será
incluso menor, dado que el solenoide se actuará con un tren de pulsos.
3.4.4 Microcontrolador
Nuestro microcontrolador será el encargado de distribuir la potencia por el resto del
circuito, a diversos componentes, es por esto que será necesario comprender cuánta
potencia podrá aportar a los distintos elementos del circuito.
Figura 38. Relación entre consumo de potencia y frecuencia de trabajo ATmega32u4. [15]
Tal y como podemos observar, para una frecuencia de 16Mhz trabajando a 5V tendremos
un consumo de corriente de 13mA aproximadamente, con lo que su potencia máxima, sin
contar los periféricos será de 5V*13mA=65mW.
70
Universidad de Valladolid
En cuanto a los periféricos trataremos de analizar los distintos elementos que emplearán
las salidas del microcontrolador.
Como podemos observar, las salidas de datos configuradas en alta tendrán un valor
máximo de 4.2V y 10mA, mientras que las salidas configuradas en baja tendrán un valor
de 0.7V y 10mA.
Es difícil cuantificar cual será el consumo de los pines de datos, dado que no estarán
enviando información todo el tiempo, además de enviar datos en alta y baja. Con lo cual
supondremos para el análisis de potencia que poseen una impedancia de salida ≈ 0 y una
impedancia de entrada ≈ ∞, es por esto que su consumo no será tenido en cuenta, dado
que únicamente consumirán potencia durante las transiciones.
En cuanto a los LED incorporados en la corredera el vendedor detalla como para una
máxima luminosidad deberemos emplear un voltaje de trabajo entre los 3.2 y los 3.4
71
Universidad de Valladolid
voltios. Si tenemos en cuenta que la corriente máxima aportada por los pines es de 10mA,
obtendremos una potencia de 33mW por cada LED, siendo en total 99mW.
Sensores 9.25mW
Motor vibrador 540mW
Motor solenoide 5W
Microcontrolador 65mW
Periféricos microcontrolador 99mW (LED)
Potencia total necesaria 5.71W
Amperaje total necesario 5.71W/5V=1.142A
Según se cita en [33] “The VBUS Current Handling Capability field (B6…5) Shall
indicate whether the cable is capable of carrying default current (500mA USB2, 900mA
USB3.2 x1, 1.5A USB3.2 x2)”, por tanto, como conclusiones a los resultados obtenidos
72
Universidad de Valladolid
queda descartada la idea de emplear un único conector USB 2.0 el cual posee una
corriente máxima de 500mA [1]. El empleo de un único conector USB 3.0-3.2 para la
toma de corriente tampoco sería una solución completamente eficiente siendo su corriente
máxima 900mA [2].
Figura 39. Adaptador dual USB 3.0 datos y carga - USB 2.0 carga
De esta forma se podría utilizar el producto con un solo cable USB 3.0 en caso de no
contar con varios puertos, obteniendo una corriente máxima de 900mA. También se
podría emplear el adaptador en dos USB 2.0 obteniendo una corriente máxima de 1A, en
caso de no contar con puertos USB 3.0. En estos dos casos se vería reducida la fuerza de
los motores.
73
Universidad de Valladolid
fuerza en los motores. Esto sucede porque los cálculos realizados están pensados de cara
a una situación crítica en la que se emplee toda la potencia posible de manera simultánea
y esto prácticamente no sucederá durante su utilización.
3.5.1 BOM
A la hora de definir la factura de los materiales se ha elaborado una tabla en la que figuran
distintos aspectos económicos de interés como el precio de las unidades individuales, la
inversión total de cara a la obtención de los componentes electrónicos, pero también los
costes originados tras la adquisición de elementos complementarios inmiscuidos en el
desarrollo del producto.
74
Universidad de Valladolid
75
Figura 40. Tabla resumen con costes generales e inversión inicial
Universidad de Valladolid
76
Universidad de Valladolid
En la sección 1 del anexo que incorpora este documento se incluirán algunos detalles
sobre los anuncios de compra y enlaces, con el fin de no sobrecargar la parte principal de
la memoria.
Figura 41. Configuración para la generación de ficheros gerber mediante el programa Proteus 8.9
77
Universidad de Valladolid
Se ha seleccionado el formato RS274X por ser el más antiguo, con el objetivo de asegurar
la mayor compatibilidad en el proceso. Es necesario destacar que con anterioridad a la
generación de los ficheros gerber, se ha procedido a realizar una comprobación de
preproducción en el programa Proteus 8.9 tratando de verificar que no existían errores de
diseño en la PCB.
Una vez establecida la configuración de los ficheros de salida, el propio programa permite
visualizar de forma gráfica la configuración para la creación de la PCB, esta información
se muestra en la Figura 42.
Figura 42. Salida gráfica en el programa Proteus 8.9 tras la generación de los ficheros
gerber.
78
Universidad de Valladolid
Una vez generados los ficheros gerber y agrupados en un archivo comprimido en formato
“.ZIP”, se ha realizado la solicitud de fabricación en PCBWay. Tras la verificación de los
ficheros por parte de la empresa, se ha dado el visto bueno a la información aportada y el
pedido se ha aceptado para su fabricación.
En la sección 1 del anexo que incorpora este documento se incluirán algunos detalles
sobre las características de la PCB seleccionadas en PCBWay, con el fin de no
sobrecargar la parte principal del documento.
En la Figura 43 se muestra una imagen comparativa entre el estado inicial y final de las
PCB tras la incorporación de sus distintos elementos.
79
Universidad de Valladolid
Finalmente, puede observarse una fotografía a tamaño completo de todos los
componentes del circuito tras el montaje en la siguiente figura.
80
Universidad de Valladolid
4. SOFTWARE
A lo largo de esta sección se tratarán los temas relacionados con la implementación del
código fuente en el microcontrolador utilizado, así como los fundamentos matemáticos
teóricos en los que se basa el código. Además, se explicarán los pasos llevados a cabo a
la hora de preparar el entorno de trabajo.
Dado que nuestro circuito no era reconocible mediante USB, se ha recurrido a emplear
un programador USBasp. El programador USBasp consiste en un circuito integrado que
cuenta con un microcontrolador Atmel AVR (perteneciente a la misma familia de
microcontroladores que el empleado en nuestro circuito), así como un conector ISP y
81
Universidad de Valladolid
otros elementos pasivos necesarios como condensadores y resistencias. Su principal
característica es que contiene un firmware preinstalado de fábrica compatible con los
drivers USB, por lo que será reconocido por nuestro ordenador. En la Figura 45 se
muestra una imagen del programador USBasp adquirido para la instalación del
bootloader.
Tras haber conectado el programador USBasp, se han realizado las conexiones ICSP entre
el programador y nuestro circuito, siguiendo el esquema de conexiones expuesto en la
Tras haber realizado la instalación del bootloader, nuestro circuito ha sido reconocido por
el equipo informático como un Arduino Micro, mediante el conector USB, lo cual nos
permite emplear las bibliotecas disponibles para Arduino, así como su IDE.
82
Universidad de Valladolid
4.2 Bibliotecas empleadas
A lo largo de este apartado pasarán a describirse las bibliotecas empleadas provenientes
del conjunto de bibliotecas compatibles con Arduino. Para ello, se expondrá la
argumentación relativa a la decisión de incorporar algunas de ellas, además de esclarecer
de forma básica el funcionamiento de las mismas.
4.2.1 AbsMouse.h
Inicialmente nos centraremos en la implementación del movimiento del ratón. Durante el
estudio general del sistema de este documento se discutió la necesidad de implementar
un microcontrolador que fuera compatible con USB HID, en este punto podrá dilucidarse
la validez de la conclusión anteriormente aportada.
83
Universidad de Valladolid
Esta característica producía que los movimientos en pantalla no fueran precisos
de cara a nuestro dispositivo apuntador, con lo cual recaería en tarea del usuario
deshabilitar esta opción en el O.S. y la forma de proceder en cada sistema varía
de forma amplia. En la Figura 46 se muestra cómo la opción de aceleración
(denominada en Windows 10 como “Mejora la precisión del puntero”) viene
marcada por defecto.
84
Universidad de Valladolid
Como consecuencia de estos inconvenientes, se ha recurrido a un posicionamiento
absoluto que, a pesar de poseer un desarrollo de programación con mayor complejidad y
gozar de una menor compatibilidad con aplicaciones y dispositivos, presentaba una mayor
precisión en el movimiento.
Para poder modificar estos valores sería necesario modificar el descriptor USB, más
concretamente, modificar el fichero de código “Mouse.cpp” en el que se definen las
características de funcionamiento para así poder incorporar un posicionamiento absoluto
y más bit en los parámetros de las funciones encargadas del movimiento. Por suerte,
debido a la amplia comunidad con la que cuenta Arduino ha sido posible encontrar una
biblioteca que incorporaba las modificaciones buscadas, esta biblioteca se denomina
“AbsMouse.h” y es una aportación independiente de uno de los usuarios de Arduino. Su
implementación puede consultarse en el repositorio de código GitHub [36].
Consultando el código fuente del descriptor USB HID para el mouse, nos encontramos
con que se incorporan 16 bit para el posicionamiento del cursor en pantalla en los ejes x
e y tal y cómo se muestra en la Figura 47, quedando reservados 15 de ellos para el
desplazamiento (valores de 0 a 32767). En esta figura puede apreciarse cómo se incorpora
a mayores un posicionamiento absoluto.
Otras características de interés que incorpora esta biblioteca, se observan en la Figura 48,
donde se muestran los métodos “init” y “move”, los cuales permiten inicializar la
biblioteca estableciendo la resolución de la pantalla y se calculan de forma automática los
valores máximos del movimiento en función de la resolución.
85
Universidad de Valladolid
Figura 48. Código fuente del fichero "AbsMouse.cpp" relativo a los métodos de inicialización y
movimiento del cursor. [36]
Esta biblioteca nos permitirá paliar los problemas hallados en el código nativo
proporcionado por Arduino, además de incorporar otros métodos alternativos para los
botones del ratón tales como “press” o “release”.
4.2.2 Keyboard.h
Las bibliotecas nativas de Arduino presentan la posibilidad de incorporar pulsaciones de
teclado. De manera que emplearemos esta biblioteca con la finalidad de que los botones
sean reconocidos por los distintos sistemas operativos como si se tratase de teclas de un
teclado convencional. En la referencia de funciones de Arduino se especifican los
distintos métodos disponibles para esta biblioteca[37].
4.2.3 MPU9250.h
A la hora de realizar la programación relativa al sensor MEMS incorporado, se ha
recurrido a la biblioteca “MPU9250.h” concebida para sistemas de vuelo eficaces. La
decisión que ha llevado a elegir esta biblioteca se fundamenta en su amplia utilización,
su documentación avanzada, las posibilidades de modificación y su compatibilidad con
el protocolo SPI.
86
Universidad de Valladolid
Además de esto, la biblioteca “MPU9250.h” se fundamenta en otras bibliotecas
orientadas a IMU (Inertial Measurement Unit) con un recorrido de desarrollo que goza
de gran solidez y cuenta con datos que se ajustan a los parámetros de interés que
caracterizaremos en nuestros sensores, tal y como se muestra en la Figura 49. Según se
cita en la descripción de la biblioteca “This driver conforms to the IMU interface” [38].
También hemos de añadir que su elección ha venido determinada por haber sido
desarrollada de manera específica para nuestro conjunto de sensores “This library
communicates with InvenSense MPU-9250 and MPU-9255 Inertial Measurement Units
(IMUs).”[38].
Figura 49. Campos de datos pertenecientes a la estructura ImuData que recoge los datos del
sensor.[39]
En la definición de la biblioteca “imu” [39] pueden consultarse con mayor detalle las
clases, métodos y atributos empleados.
87
Universidad de Valladolid
Continuando con las características de esta biblioteca, cabe destacar que uno de los
factores determinantes ha sido la compatibilidad con SPI, la cual muchas otras no
implementan de una forma estable. En la Figura 50 se muestra la compatibilidad con la
clase SPI que permite iniciar de forma sencilla la comunicación mediante este protocolo
a través del pin de selección de chip.
Figura 50. Objeto MPU9250, entrada al bus SPI y pin de selección de chip del fichero MPU9250.cpp
Finalizando con las características principales de esta biblioteca, las cuales aumentan el
interés de elección de la misma, se muestra en la Figura 51 cómo se implementa la lectura
y transformación de los datos a unidades métricas con las que podemos trabajar
𝑚
provenientes de la lectura de los sensores, dotándonos con salidas de datos en para el
𝑠2
𝑟𝑎𝑑
acelerómetro, para el giroscopio y 𝜇𝑇 en el caso de los datos del magnetómetro.
𝑠
Figura 51. Lectura y conversión de los datos en unidades de ingeniería del fichero MPU9250.cpp
4.2.4 SevenSeg.h
A la hora de realizar la configuración del display LED de siete segmentos, se ha procedido
a utilizar la biblioteca “SevenSeg.h”[40] por ser una de las bibliotecas mejor
documentadas en cuanto a su funcionamiento y ser compatible con displays de siete
segmentos y dos dígitos que cuenten con conexiones compartidas entre sus LED. De esta
forma nos estaremos ahorrando la programación desde cero sobre los ciclos de reloj
empleados en mostrar diferentes “carácteres” para cada uno de los dígitos, engañando al
ojo humano.
88
Universidad de Valladolid
Su documentación es sólida y cuenta con un manual en el que se explican las distintas
funcionalidades de forma exhaustiva [41].
4.2.5 SoftwareReset.h
Concluyendo con las bibliotecas empleadas, se ha incorporado la biblioteca
“SoftwareReset.h” [42] con el fin de poder realizar un “reinicio” del microcontrolador.
De esta forma, se permitirá al usuario modificar los parámetros del cargador y otras
configuraciones, realizadas únicamente al inicio, sin la necesidad de desconectar y
conectar nuevamente el dispositivo.
Durante la sección 4.2 de este documento se han descrito las características generales de
las bibliotecas empleadas, sin embargo, cabe destacar que los métodos empleados y la
descripción del código de estas bibliotecas, así como sus funcionalidades, serán descritas
mediante comentarios junto al código proporcionado en el anexo de este documento con
la finalidad de no sobrecargar el grueso principal del mismo.
89
Universidad de Valladolid
Los programas desarrollados con el IDE Arduino cuentan con dos partes principales: la
función setup() y la función loop(). Estas partes están destinadas a la inicialización
del programa y a el bucle de ejecución respectivamente.
Tras haber definido las macros, se crean las variables globales que formarán parte del
programa relativas a los cálculos que determinarán la posición. Además de esto se
incorporan instancias de objetos propios de las bibliotecas “SevenSeg.h” y
“MPU9250.h”.
4.3.1.1 Setup
Esta función es la primera de las dos principales, en lo que al IDE Arduino se refiere. En
nuestro caso se emplea para llevar a cabo las tareas de configuración inicial, inicialización
de valores relativos a los objetos de las bibliotecas incorporadas y otros aspectos como la
calibración.
El código de esta función consta, en primer lugar, con un menú que permitirá ajustar
diferentes configuraciones tales que el tamaño del cargador, la resolución, la distancia del
jugador a la pantalla y otros aspectos cómo las pulgadas de la pantalla empleada. Los
detalles de los menús y las posibilidades de configuración se aportarán en el anexo de
este documento en forma de manual de usuario.
4.3.1.2 Loop
La segunda función principal del código se encargará de ejecutar el código de su interior
de manera cíclica una y otra vez.
90
Universidad de Valladolid
A su inicio, se establece la lectura de los sensores para cada uno de los ciclos de ejecución
del bucle. Así mismo, se incorpora el algoritmo que determinará la posición en pantalla,
teniendo en cuenta los valores procedentes de la lectura del sensor y las variables globales
preparadas tras la configuración en la función setup().
La decisión de trabajar de forma única con las lecturas de datos asociadas al giróscopo
viene propiciada por los errores de cuantificación, de los algoritmos probados. El error de
cuantificación en el caso de los dos sensores restantes era incompatible con la precisión
buscada. El problema principal reside en que las pantallas actuales cuentan con
resoluciones elevadas.
Tras haber realizado múltiples pruebas software aplicando distintos algoritmos, incluso
tratando de aminorar el error de cuantificación de los datos provenientes del acelerómetro,
91
Universidad de Valladolid
se ha determinado que la implementación que aportaba mejores sensaciones de usuario
era la que únicamente se basaba en el giroscopio.
Aclaradas las decisiones del tratamiento de los datos se pasarán a relatar los algoritmos
introducidos desde un punto de vista matemático.
En primer lugar, trataremos de calcular las proporciones de la pantalla utilizada, para ello
debemos aclarar que únicamente trabajaremos con dos relaciones de aspecto distintas,
siendo estas 16:9 y 21:9.
92
Universidad de Valladolid
Obtenidos los valores de la resolución y las pulgadas podremos calcular la altura y la
anchura de la pantalla. En primer lugar, realizaremos una conversión de unidades de
pulgadas a centímetros: 𝐶𝑒𝑛𝑡í𝑚𝑒𝑡𝑟𝑜𝑠 = 𝑃𝑢𝑙𝑔𝑎𝑑𝑎𝑠 ∗ 2.54, con la finalidad de obtener el
valor de la diagonal. Posteriormente aplicaremos el teorema de Pitágoras para calcular la
anchura y altura:
16 21 𝑁𝑢𝑚𝑒𝑟𝑎𝑑𝑜𝑟
𝑅𝑒𝑙𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝑎𝑠𝑝𝑒𝑐𝑡𝑜 = ó =
9 9 𝐷𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑑𝑜𝑟
𝐷𝑖𝑎𝑔𝑜𝑛𝑎𝑙 2
𝑐=√
𝑁𝑢𝑚𝑒𝑟𝑎𝑑𝑜𝑟 2 + 𝐷𝑒𝑛𝑜𝑚𝑖𝑛𝑎𝑑𝑜𝑟 2
Una vez calculadas las dimensiones de la pantalla y dado que la salida del giroscopio
viene proporcionada en rad/s, tendremos que calcular el ángulo de barrido de las
dimensiones de anchura y altura en función de la distancia del jugador a la pantalla. En
la Figura 53 se muestran los parámetros a calcular.
La distancia será un parámetro configurable por parte del usuario, con lo cual, poseyendo
la distancia y la anchura, podremos calcular la hipotenusa de uno de los dos triángulos
93
Universidad de Valladolid
rectángulos mostrados en la Figura 53, y con ello el ángulo β, que multiplicado por dos
nos aportará el ángulo de barrido completo α.
𝐴𝑛𝑐ℎ𝑢𝑟𝑎 2
𝐻𝑖𝑝𝑜𝑡𝑒𝑛𝑢𝑠𝑎 = √( ) + 𝐷𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎2
2
𝐴𝑛𝑐ℎ𝑢𝑟𝑎
2 𝜋
𝛼 = 2 ∗ 𝛽 = 2 ∗ 𝑎𝑟𝑐𝑠𝑒𝑛 ( )∗ 𝑟𝑎𝑑
𝐻𝑖𝑝𝑜𝑡𝑒𝑛𝑢𝑠𝑎 180
Llegados a este punto, hemos podido obtener el ángulo de barrido en radianes, sin
embargo, el giroscopio nos aporta los datos en rad/s. Con lo cual, será necesario calcular
el tiempo que tarda el programa en llegar a la lectura de los datos del giroscopio con la
finalidad de obtener una referencia en rad/s. Esta tarea se ha realizado mediante la
práctica, haciendo uso de la función millis() y efectuando una resta entre el contador
del tiempo de ejecución al inicio del bucle y al final de la lectura de los datos.
Ahora nuestros datos de referencia estarán en rad/s, donde los radianes son los calculados
respecto a las dimensiones de la pantalla y los segundos es el tiempo que tarda el programa
en llegar hasta la lectura del sensor.
Á𝑛𝑔𝑢𝑙𝑜 𝑑𝑒 𝑏𝑎𝑟𝑟𝑖𝑑𝑜
𝑟𝑎𝑑/𝑠𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 = → 𝑟𝑎𝑑/𝑠𝑠𝑒𝑛𝑠𝑜𝑟
𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒𝑙 𝑏𝑢𝑐𝑙𝑒 𝑒𝑛 𝑐𝑜𝑛𝑠𝑢𝑙𝑡𝑎𝑟 𝑠𝑒𝑛𝑠𝑜𝑟
Teniendo los datos en las mismas unidades, podremos realizar una cuantificación de los
datos del sensor en función de la resolución. Al inicializar AbsMouse e indicar la
resolución, se escalan los valores de coordenadas máximos en función de la resolución
de la pantalla. De esta manera, los máximos puntos en pantalla quedan definidos por los
valores máximos de la resolución vertical y horizontal.
94
Universidad de Valladolid
AbsMouse.move((((angRad_state[0]-
IMU.getGyroY_rads())*(resolucion[0]/angRad[0]))),mouse_y_be
fore);
En la anterior línea de código se expone la idea matemática principal del funcionamiento.
𝑃í𝑥𝑒𝑙ℎ𝑜𝑟𝑖𝑧𝑜𝑛𝑡𝑎𝑙
= (𝑟𝑎𝑑/𝑠𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎_𝑎𝑐𝑡𝑢𝑎𝑙𝑒𝑠 − 𝑟𝑎𝑑/𝑠𝑣𝑎𝑟𝑖𝑎𝑐𝑖ó𝑛_𝑠𝑒𝑛𝑠𝑜𝑟 )
𝑟𝑒𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛ℎ𝑜𝑟𝑖𝑧𝑜𝑛𝑡𝑎𝑙
∗( )
𝑟𝑎𝑑/𝑠𝑟𝑒𝑓𝑒𝑟𝑒𝑚𝑐𝑖𝑎_𝑚á𝑥𝑖𝑚𝑜𝑠
La anterior expresión podría haberse concebido de una forma más intuitiva transformando
los rad/s del sensor directamente a radianes. Esta opción ha sido descartada con el fin de
reducir la carga computacional en cada lectura del sensor y trabajar con valores fijos.
𝑃í𝑥𝑒𝑙ℎ𝑜𝑟𝑖𝑧𝑜𝑛𝑡𝑎𝑙
= (𝑟𝑎𝑑𝑟𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎_𝑎𝑐𝑡𝑢𝑎𝑙𝑒𝑠
𝑟𝑒𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛ℎ𝑜𝑟𝑖𝑧𝑜𝑛𝑡𝑎𝑙
∗( )
𝑟𝑎𝑑𝑟𝑒𝑓𝑒𝑟𝑒𝑚𝑐𝑖𝑎_𝑚á𝑥𝑖𝑚𝑜𝑠
95
Universidad de Valladolid
5. DISEÑO DE LA CARCASA
A la hora de proceder con el diseño de la carcasa del producto, se ha partido de un diseño
que ya poseía la parte externa creada. De manera, que no se ha desperdiciado demasiado
tiempo en la realización de la estética exterior, pudiendo así asignar un mayor trabajo en
la parte interna, que será la que determinará las funcionalidades del arma y permitirá
implementar los componentes seleccionados según sus limitaciones físicas.
Esta pistola fue creada en 1911 [43] y es por esto, que cuenta con una historia
relativamente larga. Como aliciente, su longeva edad le ha permitido intervenir en
múltiples series, películas y videojuegos, constatando así su atractivo icónico y aportando
un valor añadido al producto final.
Algunos de estos ejemplos pueden ser su utilización en películas como “Indiana Jones y
el Reino de la Calavera de Cristal”, “La Momia”, incluso en películas más recientes como
“Wonder Woman” [44]. Además, en el grueso de la industria del videojuego ha sido
empleada en diversos títulos a lo largo de los años e.g. “Call of Duty” y sus múltiples
versiones, “Battlefield” o “FarCry”, entre otros muchos.
96
Universidad de Valladolid
5.1 Desarrollo del diseño tridimensional
Al tener definido el concepto de diseño, únicamente era necesario encontrar un desarrollo
lo suficientemente avanzado cómo para poder partir de él. Buscando por la red se encontró
un buen diseño que permitiría llevar a cabo la realización de un prototipo de carcasa
interior, partiendo de piezas con cierto grado de realismo.
Por lo que, se decidió utilizar el diseño que se muestra en las Figuras 54 y 55. Este diseño
fue elegido por presentar un tamaño proporcional a la realidad y mostrar un despiece que
facilitaría la edición tridimensional.
97
Universidad de Valladolid
El diseño proviene de la página web Thingiverse, una plataforma donde la comunidad de
usuarios aporta diseños tridimensionales orientados a impresión. En concreto, se ha
empleado un réplica a tamaño proporcional de la pistola Colt 1911 [46].
Tras haber encontrado un diseño que podría adaptarse a las necesidades del proyecto, se
realizó un bosquejo a papel y boli, con el fin de dilucidar si esta opción sería válida por
su tamaño. El diseño inicial a escala puede observarse en la Figura 56.
98
Universidad de Valladolid
Después de haber comprobado que el diseño podría ser manipulable y que las
dimensiones en tamaño real eran las esperadas, se dio paso a la edición del diseño en tres
dimensiones. Para ello se utilizó la herramienta online Tinkercad[47].
En los inicios, la edición tridimensional se centró en eliminar las partes internas que no
serían útiles, como el cañón interno de la corredera, así como a intentar aprovechar la
mayor parte del interior del diseño, pero sin restar cualidades de resistencia a la carcasa.
Una vez se había “limpiado” el diseño inicial para poder empezar a operar con él,
comenzaron a incorporarse partes que permitían encajar las piezas. Esto fue necesario,
dado que el diseño venía pensado para pegar las piezas unas con otras mediante
superficies lisas, sin embargo, nosotros necesitaremos encajar las piezas con
disposiciones mecánicas. Una de las primeras aportaciones fue la incorporación de railes
tanto en la base como en la corredera de la pistola, para así poder encajar las piezas de
una forma sólida, facilitando el deslizamiento de la corredera. La implementación de este
mecanismo puede observarse en la Figura 58.
Tras haber realizado el sistema de guías pasaron a incorporarse otras partes del diseño
interior. Principalmente se vació el espacio asignado al cargador y se introdujeron los
espacios relativos al gatillo. Este último puede apreciarse en la Figura 59. En la Figura
60 se muestra una imagen de la pieza del gatillo que se acoplará en el espacio habilitado
mostrado en la Figura 59.
99
Universidad de Valladolid
Figura 5959. Posicionamiento y railes para la incorporación del gatillo.
El funcionamiento del gatillo se basaría en una pieza suelta, de forma que al encajar
ambas partes simétricas de la base de la pistola este quedara sujeto, pero pudiendo
desplazarse a lo largo de los raíles marcados. El gatillo posee dos salientes, el saliente
inferior posee una mitad cilíndrica y una última parte con forma de prisma, esta forma ha
sido concebida así con el fin de incorporar un muelle que permita al gatillo volver a su
lugar de origen tras ser accionado. Este muelle no se desplazará de su posición gracias a
que se ha creado una guía que impedirá movimientos descontrolados.
Por otra parte, el saliente superior mostrado en la Figura 60, ha sido concebido con el fin
de accionar un interruptor de final de carrera con rodillo y por esto posee una superficie
inclinada en su punta, permitiendo así que el rodillo del interruptor se desplace sin
problemas a lo largo de esta.
100
Universidad de Valladolid
Una vez expuestos estos cambios, pasaremos a comentar las modificaciones llevadas a
cabo en la corredera.
101
Universidad de Valladolid
Figura 61. Diseño tridimensional de componentes.
Cabe destacar que se ha prescindido de algunos elementos que cuentan con conexiones
en la PCB, siendo estos los diodos LED y el interruptor de modo automático. La decisión
de eliminar estos elementos ha venido propiciada principalmente por una cuestión
estética. Y es que, sería necesario realizar perforaciones en la corredera para poder
incorporar estos elementos. Dichas perforaciones empeorarían de forma sustancial el
aspecto final del producto, haciéndolo menos atractivo. A pesar de esto, la PCB cuenta
con estas conexiones incorporadas y se podrían añadir en futuras implementaciones de la
carcasa.
Continuando con la explicación del diseño, se pasará a explicar una modificación llevada
a cabo que dista de las explicaciones aportadas en el resto del proyecto. Esta modificación
se basa en la interacción del solenoide con la corredera.
102
Universidad de Valladolid
que se incorporará el martillo del arma. En las Figuras 63 y 64 se aporta una explicación
gráfica sobre el funcionamiento anteriormente descrito.
Figura 63. Vista tridimensional sobre la incorporación de la pieza móvil del martillo.
103
Universidad de Valladolid
Como conclusión a esta sección del documento, se aporta una vista de la sección del
diseño en la que se incorporan todos los componentes. Esta vista puede apreciarse en la
Figura 65. Los elementos mostrados en color púrpura corresponden a los muelles que
permitirán devolver a su posición inicial las piezas móviles.
Esta sección pretende mostrar la experiencia llevada a cabo en relación a los procesos de
impresión tridimensional y tiene como objetivo dar a conocer la dificultad y profundidad
de una materia hasta ahora desconocida. Para ello se tratará de proporcionar una
perspectiva de futuro que permitirá tener en cuenta diversos factores a la hora de
planificar de manera global nuevas iteraciones del proyecto.
104
Universidad de Valladolid
Inicialmente, se ha decidido, teniendo en cuenta que existían posibles fallos en el diseño,
imprimir parte de la pieza de la base, con el objetivo de familiarizarse con los procesos
llevados a cabo, la utilización de impresoras y adquirir conocimientos sobre el tema.
La impresora empleada posee una cama caliente, la cual será configurada a 60ºC, de unas
dimensiones de 235x235x270mm. Además, posee un único extrusor con un nozzle de
0.4mm de diámetro de salida, en el que se empleará un plástico de ácido poliláctico (PLA)
blanco de 1.75mm de diámetro.
105
Universidad de Valladolid
En la Figura 66 se muestra un ejemplo de una de las piezas que conforman la carcasa del
dispositivo, junto con sus configuraciones.
Figura 65. Preparación de impresión tras aplicar el "rebanado" de las distintas capas.
Una vez generados los ficheros “.gcode”, únicamente quedará incorporarlos a una
memoria, en nuestro caso una microSD, para después poder seleccionar la impresión de
la pieza desde la impresora.
106
Universidad de Valladolid
Figura 66. Contenido del fichero .gcode generado tras slicing mediante Ultimaker Cura.
5.3 Postprocesado
Una vez impresas las piezas en tres dimensiones será necesario realizar algunas
modificaciones en estas con la finalidad de mejorar la calidad de la carcasa.
107
Universidad de Valladolid
Figura 67. Visualización del proceso de retirada de soportes.
Una vez retirados los soportes ya contaremos con las piezas diseñadas. Sin embargo, en
algunos casos, la impresora 3D empleada no ha sido tan precisa como el diseño generado
mediante herramientas CAD. Es por esto, que se ha decidido aplicar masilla en algunas
de las partes de las piezas con el objetivo de suavizar los bordes y aportar mayor calidad
al diseño final. En la Figura 69 puede apreciarse una comparativa entre piezas sin el
aplique de masilla y con él.
En la figura mostrada anteriormente parece no haber una gran diferencia. Esto es cierto a
priori, pero tras realizar un lijado de las piezas las diferencias son notables en la textura.
108
Universidad de Valladolid
6. COSTES HUMANOS
A la hora de entrar a valorar los costes humanos se ha tenido en cuenta una planificación
temporal inicial. Esta planificación ha sido modificada a lo largo del desarrollo del
proyecto. Para ello se ha empleado el programa de planificación de proyectos
GanttProject [49].
Mediante este programa, se han establecido, inicialmente, unos márgenes temporales para
cada uno de los apartados del proyecto. Posteriormente, se han ido modificando en
función del trabajo práctico correspondiente. A continuación, se mostrarán los tiempos
empleados en los distintos apartados del proyecto. Estos tiempos nos servirán como nueva
referencia a la hora de planificar nuevas iteraciones del proyecto o proyectos similares.
Las Figuras 70, 71 y 72 muestran los tiempos empleados durante la realización de las
distintas tareas del proyecto.
Se puede observar cómo algunos de los tiempos aparecen marcados en color verde,
debido a que se han podido realizar en el tiempo inicialmente estimado o han supuesto un
tiempo inferior al previsto. Por otro lado, las barras de color rojo representan retrasos y
ampliaciones de desarrollo en dichas tareas.
109
Universidad de Valladolid
Figura 72. Representación del coste temporal de trabajo - Parte 1.
Figura 71.Representación del coste temporal de trabajo - Parte 2.
110
Universidad de Valladolid
Finalmente, a fin de facilitar la visualización de los apartados y los tiempos empleados,
se aporta un listado en forma textual en la Figura 73.
Figura 73. Listado generado con GanttProject sobre el flujo temporal del
proyecto.
111
Universidad de Valladolid
7. IMPLEMENTACIÓN FINAL
Una vez realizado el montaje de componentes y la impresión de la carcasa, se ha
procedido con la incorporación del circuito en el interior de esta. En las siguientes figuras
se refleja el resultado físico final del producto, así como la incorporación de la circuitería
en el mismo.
Figura 74. Sección del producto final tras incorporar el circuito electrónico a la carcasa.
112
Universidad de Valladolid
Figura 75. Producto final tras la incorporación del circuito y su ensamblado.
113
Universidad de Valladolid
SIGLAS.
Computer Assisted Design (CAD)
Select (SS)
114
Universidad de Valladolid
Resistance-Capacitor (RC)
Entrada/Salida (E/S)
Full HD (FHD)
Quad HD (QHD)
UltraWide (UW)
Ultra HD (UHD)
STereoLithography (STL)
115
Universidad de Valladolid
REFERENCIAS.
[1] “Human Interface Devices (HID) Information | USB-IF.”
https://www.usb.org/hid (accessed Jun. 23, 2021).
[2] Mike Bergman et al., “Device Class Definition for Human Interface Devices
(HID), Firmware Specification Version 1.11,” 2001. Accessed: Jun. 23, 2021.
[Online]. Available:
https://www.usb.org/sites/default/files/documents/hid1_11.pdf.
[7] “Data Sheet for 5mm Super Bright Amber Yellow LED 5C3 Series Class : P Part
No : RF- WW05C3AYP4-N2 Data Sheet For 5mm Super Bright Amber Yellow
LED – Class : P.” .
[10] “solenoid electromagnet HS-0730B DC6V 5N 10mm stroke push pull frame –
Heschen.” https://heschen.com/es/products/hs-0730b-dc-6v (accessed Jul. 06,
2021).
116
Universidad de Valladolid
[12] “Micro Motor Sin Núcleo NdFeB 615.”
https://es.aliexpress.com/item/1005001297087992.html?spm=a2g0o.detail.10000
13.3.5106b462hjFgRj&gps-
id=pcDetailBottomMoreThisSeller&scm=1007.13339.169870.0&scm_id=1007.1
3339.169870.0&scm-url=1007.13339.169870.0&pvid=f98db6b5-2355-4426-
9322-ba26597dcd88&_t=gps-id:pcDetailBottomMoreThisSeller,scm-
url:1007.13339.169870.0,pvid:f98db6b5-2355-4426-9322-
ba26597dcd88,tpp_buckets:668%230%23131923%2339_668%230%23131923%
2339_668%23888%233325%2312_668%23888%233325%2312_668%232846%
238108%231977_668%235811%2327174%2320_668%232717%237563%2358
1_668%231000022185%231000066059%230_668%233468%2315617%23825_
668%232846%238108%231977_668%235811%2327174%2320_668%232717%
237563%23581_668%233164%239976%23811_668%233468%2315617%2382
5 (accessed Jul. 06, 2021).
[16] Compaq et al., “Universal Serial Bus Specification,” Group, 2000, [Online].
Available: https://www.usb.org/document-library/usb-20-specification%0A%0A.
[17] Microchip, “What is TWI? How to Configure the TWI for I2C Communication,”
Microchip Technol. Inc., 2018, [Online]. Available:
http://ww1.microchip.com/downloads/en/DeviceDoc/90003181A.pdf.
[19] “ATMEGA32U4-AUR .”
https://es.aliexpress.com/item/32916694199.html?spm=a2g0s.8937460.0.0.2bbd2
117
Universidad de Valladolid
e0esBeger (accessed Jul. 06, 2021).
[22] SamacSys Ltd, “Proteus - SamacSys - Configuring Library Loader for Proteus
8.8 or later.” https://www.samacsys.com/proteus/ (accessed Jul. 08, 2021).
[23] SamacSys Ltd, “Component Search Engine: Free Symbols, footprints, & 3D
models.” https://componentsearchengine.com/ (accessed Jul. 08, 2021).
[24] Atmel, “AVR042 : AVR hardware design considerations,” Appl. Note, 2015,
[Online]. Available: http://ww1.microchip.com/downloads/en/appnotes/atmel-
2521-avr-hardware-design-considerations_applicationnote_avr042.pdf.
118
Universidad de Valladolid
[33] U. S. B. Power and D. Specification, “Universal Serial Bus Power Delivery
Specification Revision: 3.1 Version :1.1 Release date : Juñy 2021,” 2021,
[Online]. Available: https://www.usb.org/document-library/usb-power-delivery.
[41] S. Marholm, “Arduino SevenSeg 1.2.1,” pp. 1–21, 2017, [Online]. Available:
https://raw.githubusercontent.com/sigvaldm/SevenSeg/master/extras/SevenSeg.p
df.
119
Universidad de Valladolid
revolution/history-of-colt-45-video (accessed Aug. 18, 2021).
[44] “M1911 pistol series - Internet Movie Firearms Database - Guns in Movies, TV
and Video Games.” http://www.imfdb.org/wiki/M1911_pistol_series#Film
(accessed Aug. 18, 2021).
[46] Martin Smith - gustofusion (Thingiverse user), “Colt 1911 Replica Prop -
Thingiverse.” https://www.thingiverse.com/thing:3535584 (accessed Aug. 19,
2021).
120
Universidad de Valladolid
ANEXO
1.Obtención de materiales
A continuación, se muestran las imágenes de compra sobre los elementos adquiridos
para el desarrollo del proyecto:
121
Universidad de Valladolid
122
Universidad de Valladolid
123
Universidad de Valladolid
124
Universidad de Valladolid
125
Universidad de Valladolid
126
Universidad de Valladolid
127
Universidad de Valladolid
2. Código implementado
#include <AbsMouse.h>//Similar a Mouse.h pero con posicionamiento
absoluto y 16 bit
#include <Keyboard.h>//Permitirá que los botones pulsados se reciban
como teclas del teclado alfanumérico
#include "MPU9250.h"//Biblioteca para calibrado y lectura de sensores
#include <SevenSeg.h>//Biblioteca para seleccionar el display
#include <SoftwareReset.h>//Reinicio por software
#define RETROCESO 10
#define VIBRACION 5
#define DISPA 7
#define DISPB 21
#define DISPC 20
#define DISPD 19
#define DISPE 18
#define DISPF 9
#define DISPG 8
#define DIGIT1 12
#define DIGIT2 4
#define DISPDP 6
128
Universidad de Valladolid
int mouse_x_before=resolucion[0]/2;//Posición inicial del mouse, dado
que emplearemos posicionamiento absoluto
int mouse_y_before=resolucion[1]/2;
void setup() {
//Se establece la configuración de los pines de los botones en modo
pull-up, el de los motores en forma de salida
pinMode(CORREDERA,INPUT_PULLUP);
pinMode(BOTON1,INPUT_PULLUP);
pinMode(BOTON2,INPUT_PULLUP);
pinMode(BOTON3,INPUT_PULLUP);
pinMode(GATILLO,INPUT_PULLUP);
pinMode(BOTON3,INPUT_PULLUP);
pinMode(RETROCESO,OUTPUT);
pinMode(VIBRACION,OUTPUT);
129
Universidad de Valladolid
disp.clearDisp();
130
Universidad de Valladolid
balas=1;
}
}
if (digitalRead(BOTON2)==HIGH && boton2 == true){
boton2 = false;
}
//MENÚ AVANZADO
while(men_av==true){
submen_sel=0;
submen_sel_fix=false;
disp.clearDisp();//Modo menú avanzado (AX)
disp.changeDigit(0);
disp.writeDigit('A');
disp.changeDigit(1);
disp.writeDigit(men_sel);
disp.clearDisp();
131
Universidad de Valladolid
}
if(men_sel_fix==true){
switch(men_sel){
case 0://Seleccion de resolución
while(submen_sel_fix==false){
disp.clearDisp();//Modo submenú resolución
disp.changeDigit(0);
disp.writeDigit('R');//Resolución
disp.changeDigit(1);
switch(submen_sel){
case 0:
disp.writeDigit('H');//"HD" 1366x768(16:9)
break;
case 1:
disp.writeDigit('F');//FHD 1920x1080 (16:9)
break;
case 2:
disp.writeDigit('Q');//QHD 2K 2560x1440(16:9)
break;
case 3:
disp.writeDigit('Y');//UltraWide 3440x1440 (21:9)
break;
default:
disp.writeDigit('U');//UHD "4K" 3840x2160 (16:9)
}
disp.clearDisp();
if(digitalRead(BOTON1)==LOW && boton1 == false){//Botón 1
cambia de opción
boton1=true;
submen_sel++;
if(submen_sel>5){
submen_sel=0;
}
}
if (digitalRead(BOTON1)==HIGH && boton1 == true){
boton1 = false;
}
if(digitalRead(GATILLO)==LOW && gatillo == false){//Gatillo
selecciona la opción
gatillo=true;
switch(submen_sel){
case 0://"HD" 1366x768(16:9)
resolucion[0]=1366;//Vector que indicará la resolución
del programa
resolucion[1]=768;
break;
case 1://FHD 1920x1080 (16:9)
resolucion[0]=1920;
resolucion[1]=1080;
break;
case 2://QHD 2K 2560x1440(16:9)
resolucion[0]=2560;
resolucion[1]=1440;
break;
case 3://UltraWide 3440x1440 (21:9)
resolucion[0]=3440;
resolucion[1]=1440;
break;
default://UHD "4K" 3840x2160 (21:9)
resolucion[0]=3840;
resolucion[1]=2160;
132
Universidad de Valladolid
}
mouse_x_before=resolucion[0]/2;//Posición inicial del
mouse, dado que emplearemos posicionamiento absoluto
mouse_y_before=resolucion[1]/2;
submen_sel_fix=true;
men_sel_fix=false;
}
if (digitalRead(GATILLO)==HIGH && gatillo == true){
gatillo = false;
}
if(digitalRead(BOTON3)==LOW && boton3==false){//Si deseamos
salir sin cambios
boton3=true;
submen_sel_fix=true;
men_sel_fix=false;
}
if (digitalRead(BOTON3)==HIGH && boton3 == true){
boton3 = false;
}
}
break;
case 1://Selección de pulgadas
submen_sel=1;
while(submen_sel_fix==false){
if(submen_sel<10){
disp.clearDisp();//Modo submenú pulgadas
disp.changeDigit(0);
disp.writeDigit('P');//Pulgadas
disp.changeDigit(1);
disp.writeDigit(submen_sel);
}
else{
disp.write(submen_sel);
}
disp.clearDisp();
133
Universidad de Valladolid
}
if (digitalRead(GATILLO)==HIGH && gatillo == true){
gatillo = false;
}
disp.clearDisp();
if(digitalRead(BOTON1)==LOW && boton1 == false){//El botón 1
cambia entre las opciones
boton1 = true;
submen_sel++;
if(submen_sel>9){
submen_sel=1;
}
}
if (digitalRead(BOTON1)==HIGH && boton1 == true){
boton1 = false;
}
if(digitalRead(GATILLO)==LOW && gatillo == false){//El
gatillo selecciona la opción deseada
gatillo=true;
distancia=submen_sel*10;
submen_sel_fix=true;
men_sel_fix=false;
}
if (digitalRead(GATILLO)==HIGH && gatillo == true){
gatillo = false;
}
if(digitalRead(BOTON3)==LOW && boton3==false){//Si deseamos
salir sin cambios
boton3=true;
submen_sel_fix=true;
men_sel_fix=false;
}
if (digitalRead(BOTON3)==HIGH && boton3 == true){
boton3 = false;
}
}
break;
134
Universidad de Valladolid
submen_sel=0;
while(submen_sel_fix==false){
disp.clearDisp();//Modo submenú disparo automático
disp.changeDigit(0);
disp.writeDigit('-');//Ráfaga
disp.changeDigit(1);
disp.writeDigit(submen_sel);
disp.clearDisp();
if(digitalRead(BOTON1)==LOW && boton1 == false){//Alterna
entre las opciones sí o no
boton1 = true;
submen_sel++;
if(submen_sel>1){
submen_sel=0;
}
}
if (digitalRead(BOTON1)==HIGH && boton1 == true){
boton1 = false;
}
if(digitalRead(GATILLO)==LOW && gatillo ==
false){//Selecciona la opción
gatillo=true;
modo_auto=submen_sel;
submen_sel_fix=true;
men_sel_fix=false;
}
if (digitalRead(GATILLO)==HIGH && gatillo == true){
gatillo = false;
}
if(digitalRead(BOTON3)==LOW && boton3==false){//Si deseamos
salir sin cambios
boton3=true;
submen_sel_fix=true;
men_sel_fix=false;
}
if (digitalRead(BOTON3)==HIGH && boton3 == true){
boton3 = false;
}
}
//POSICIONAMIENTO
//Se realizan los cálculos de optimización del posicionamiento, en
función de los valores seleccionados por el usuario
//Calculo de ángulo en radianes respecto posición en pantalla
//inicialmente se calcula la relación de aspecto solo habrá 2-->
21:9 y 16:9 (viene ya recogido en la variable relasp)
if((resolucion[0]/resolucion[1])>=2){
135
Universidad de Valladolid
relasp[0]=21;
relasp[1]=9;
}
else{
relasp[0]=16;
relasp[1]=9;
}
//Ahora ya poseemos los datos del ángulo máximo que podrá barrer el
usuario.
//Se ha observado que el sensor se lee aproximadamente cada 13ms
***********de media, con lo cual será necesario dividir los rad/s
entre los milisegundos que tarda en leerse para obtener los radianes
//Ahora realizaremos una cuantificación de los píxeles de la pantalla
a los valores intermedios de los ángulos en radianes
//para cada iteración del bucle map(value, fromLow, fromHigh, toLow,
toHigh) se empleará algo similar a esta función pero implementado
manualmente
angRad[0]=angRad[0]*(1000/11);//tarda 11ms ES NECESARIO AJUSTARLO EN
FUNCIÓN DEL TIEMPO DE EJECUCIÓN DEL CÓDIGO DEL BUCLE, PARA PASARLO A
RAD (o *1/0.013)
angRad[1]=angRad[1]*(1000/11);
angRad_state[0]=(angRad[0]/2);
angRad_state[1]=(angRad[1]/2);
136
Universidad de Valladolid
disp.changeDigit(1);
disp.writeDigit('A');
disp.clearDisp();
} //Si no presionas el gatillo se queda en bucle
//Selección del ancho de banda del DLPF (Digital Low Pass Filter)
IMU.setDlpfBandwidth(MPU9250::DLPF_BANDWIDTH_5HZ);//Bajamos el ancho
de banda del filtro desde 184 (Valor por defecto), hasta 5, con el fin
de suavizar las variaciones.
void loop() {
137
Universidad de Valladolid
//Control de posición y establecimiento de gestos
if (digitalRead(BOTON1)==HIGH){//Si el botón de gestos está activado
ya no moveremos el ratón (BOTON1) y dejaremos de tener en cuenta los
valores del sensor
if(abs(IMU.getGyroZ_rads())>0.05 && angRad_state[1]<=angRad[1] &&
angRad_state[1]>=0 ){//Evitamos que se mueva ante pequeñas
variaciones, y si nos salimos de los márgenes no realizará movimientos
en pantalla
AbsMouse.move(mouse_x_before,(angRad_state[1]-
IMU.getGyroZ_rads())*(resolucion[1]/angRad[1]));//modo suave de mayor
precisión
mouse_y_before=(angRad_state[1]-
IMU.getGyroZ_rads())*(resolucion[1]/angRad[1]);
}
if(abs(IMU.getGyroZ_rads())>0.05){//Si nos salimos de los márgenes
de la pantalla se seguirán contando los movimientos, aunque el puntero
no se mueva
angRad_state[1]=angRad_state[1]-IMU.getGyroZ_rads();
}
//Movimiento horizontal
if (IMU.getAccelX_mss()<-4){
Keyboard.write('s');
}
if (IMU.getAccelX_mss()>4){
Keyboard.write('w');
}
138
Universidad de Valladolid
}
139
Universidad de Valladolid
if (digitalRead(BOTON3)==LOW && boton3 == false){//Botón de acción 2
(Botón 3)
boton3 = true;
Keyboard.write('z');//Se asigna la tecla z
}
if (digitalRead(BOTON3)==HIGH && boton3 == true){
boton3 = false;
}
140
Universidad de Valladolid
3. Manual de usuario
141
Universidad de Valladolid
142
Universidad de Valladolid
143
Universidad de Valladolid
144
Universidad de Valladolid
145
Universidad de Valladolid
146
Universidad de Valladolid
147
Universidad de Valladolid
148
Universidad de Valladolid
149
Universidad de Valladolid