Construye tu volante para videojuegos (DIY)

Mario Sacco . Vista 27093 veces

Si te has sentido un hombre frustrado al entender que un buen videojuego de carreras de coches se juega con un volante de manejo en vez de con las flechitas del teclado, este es el artículo que estabas esperando. Gracias a la maravilla de un acelerómetro de tres ejes MMA7260Q vas a poder construir tu propio volante de juego o experimentar más allá en el desarrollo de esta plataforma que hoy te traemos. Quizás mañana nos cuentes que has transformado este proyecto en un verdadero Wiimote para ordenador hecho completamente con tus manos o quién sabe que otra clase de maravilla. Hoy, seguramente disfrutarás como nunca antes tus juegos de carreras con este volante que tanto necesitabas. Si creías que los volantes de manejo eran para unos pocos afortunados que podían pagar muchos billetes por ellos, llegó la hora de demostrarte que tú también puedes tener uno. Por supuesto, fabricado por ti mismo, que es lo más importante.


  • En artículos anteriores, hemos conocido los acelerómetros y hemos podido aprender, entre otras cosas, que son dispositivos de reducidas dimensiones y que poseen la propiedad de detectar movimientos según el modo de trabajo al que se los someta. En el modo dinámico, este componente es capaz de entregarnos una información proporcional a las aceleraciones que es sometido junto al elemento que lo lleve consigo durante los ensayos. Es decir, en el ejemplo ya analizado, se lo instala en un automóvil y se puede medir de esa aplicación las aceleraciones y desaceleraciones a las que los ocupantes del vehículo son sometidos y que son provocadas por el manejo demostrativo del conductor del coche. Además de este modo dinámico, existe una forma estática de utilización y el resultado es expresado a la salida de un acelerómetro con variaciones de señal, generadas dentro del propio dispositivo, al interactuar éste con la gravedad de la tierra.



    Los habrás visto hacer de las suyas en el Wiimote o en los teléfonos de alta gama rotando las imágenes según la posición en que el usuario decida manejar su equipo. Con el continuo abaratamiento de costos, los acelerómetros se están haciendo presentes cada día con más fuerza en la electrónica de consumo y de alcance masivo. Desde un indicador de nivel utilizado en albañilería, pasando por tobilleras que pueden monitorear cada paso al caminar, hasta el volante que hoy te vamos a mostrar, las aplicaciones se encuentran en los lugares más inesperados, casuales y creativos, llevando soluciones sencillas a grandes problemas que los usuarios deben enfrentar a diario. Vale recordar, además, que son capaces de detectar pequeños movimientos en los tres ejes dimensionales (X, Y, Z) siendo muy requeridos en la actualidad por la mecatrónica y la robótica para resolver los informes de movimientos y posición hacia los sistemas de control.

    El acelerómetro de la firma D-TEC utilizado en los ensayos El acelerómetro de la firma D-TEC utilizado en los ensayos

    Por último, antes de entrar de lleno en la construcción del volante y considerando la amplia variedad de estos dispositivos que existe en el mercado, podemos decirte que utilizaremos un acelerómetro con salida analógica para cada eje, de los que sólo utilizaremos dos (X e Y). Hacemos esta salvedad ya que actualmente se están difundiendo mucho las prácticas con la última generación de acelerómetros que poseen salida I2C y SPI, modelos que esperamos próximamente ensayar y traerte algún montaje atractivo con ellos. La ventaja que poseen por sobre los dispositivos de salida lineal es que poseen mayor inmunidad al ruido, mayor sensibilidad y precisión y no requieren de ajustes de escalas ni arreglos matemáticos dentro del programa del microcontrolador para poder obtener los valores correctos en la salida. Una trama de datos con el valor exacto nunca permite márgenes de error o dudas en la conversión.

    Nuestro circuito
    Armado en torno a un PIC 16F877A, utilizaremos para nuestro volante la información obtenida de dos ejes del acelerómetro que ingresaremos a través de las entradas analógicas AN0 (A Ene Cero) y AN1 (A Ene Uno). Allí procederemos a colocar los valores leídos obtenidos a cada momento dentro de dos variables del tipo WORD las que serán comparadas en forma constante y, de acuerdo a su valor, realizarán a la salida de los primeros cuatro bits del puerto C acciones específicas, como te mostramos en el siguiente video.



    Seguramente, ya te has dado cuenta de lo sencillo que es acceder a una aplicación que nos permitirá aglutinar un conjunto de elementos que sabíamos que existían y que ahora comprendemos, poco a poco, cómo se comienza a cristalizar el bosquejo de nuestro volante. Habrás observado en el video que el display alfanumérico indicaba dos variables que fluctuaban conforme al movimiento que se ejercía sobre el protoboard. A una de ellas la llamamos DOBLAR y a la otra ACELERAR. En el listado del programa verás otro nombre para la segunda variable, pero es un sinónimo con el que no podrás confundirte. Además de las variables, al inicio del listado de programa, puedes ver las rutinas de definición de parámetros para el display LCD y para el conversor analógico-digital. Luego, los TRIS que determinan la función de entrada y/o salida de los puertos utilizados y el correcto ajuste del registro ADCON1 dentro del microcontrolador, para poder realizar una correcta adquisición de señales desde cada salida del acelerómetro.

    Encabezado del programa donde vemos las definiciones de las variables y el resto de las declaraciones Encabezado del programa donde vemos las definiciones de las variables y el resto de las declaraciones

    Los valores obtenidos en los conversores ADC del PIC no requieren ningún arreglo matemático para ser expuestos en el display debido a que éste será retirado en operación normal del volante. Sólo está previsto su uso para observar la variación numérica que muestra al mover el conjunto hacia atrás o adelante (avanzar/frenar) y hacia los costados (doblar) durante los ensayos. Por lo tanto, tal como el ADC recupera datos desde un mínimo (que no es cero y ya veremos por qué) hasta 1023, así los verás en el display y los utilizarás dentro del programa del microcontrolador comparando los resultados obtenidos con valores preestablecidos. Estas comparaciones ejecutarán acciones según la lectura que el acelerómetro entregue. Es decir, menos de un valor, indicará una cosa; más de otro valor, significará otra, y así adecuarás tu programa y tus valores predeterminados según el ejemplo que te dejamos. Esto es así debido a que nunca dos construcciones son idénticas y los resultados siempre están expuestos a ajustes, por pequeños que estos sean.

    Esto ocurre habitualmente cuando se pasa de un prototipo a una unidad terminada y montada, siempre que se utilicen las entradas analógicas. Las capacidades parásitas a las que un sistema es expuesto al trabajar en placas de prueba provocan variaciones respecto al montaje definitivo que una lectura digital por bus I2C no provocaría, por ejemplo. Es por esto que si decides montar el circuito que te proponemos, deberás revisar que los valores que utilizamos para su ajuste también sean útiles en tu desarrollo. Si esta condición no se cumple, puedes cambiar los valores de comparación en el código fuente que te dejamos al final del artículo.

    Rutina de comparación de los valores obtenidos en una de las entradas del ADC Rutina de comparación de los valores obtenidos en una de las entradas del ADC

    En las partes del código donde encontramos las instrucciones HIGH o LOW y a continuación el nombre del puerto C seguido del pin involucrado, estarás activando o apagando los LED indicadores de cada acción que ejecute el sistema. Esta misma conexión será la encargada de habilitar las llaves internas del CD4066B que se conectarán en paralelo con cada botón correspondiente a las flechas de movimiento del cursor, ubicadas en un teclado convencional. De esta forma, ayudado por un elemento que ya no utilizas (el viejo teclado), te podrás valer para realizar con comodidad el trabajo. Es muy importante en este punto de la construcción que seas altamente prolijo y cuidadoso ya que deberás soldar los cablecillos que salen del CD4066B y llegan a la placa del teclado para su conexión.

    Deberás utilizar el cable más fino que consigas y un teclado que tengas fuera de uso. Si no posees suficiente práctica con el soldador (o cautín), puedes ocasionar daños en las vías de conexión que culminarán con el teclado en el bote de basura. Si no posees cables bien finos y buena práctica en soldar cosas muy pequeñas, pide ayuda a alguien antes de emprender este difícil paso. Y lo más importante: no te equivoques de vías de conexión. Marca su recorrido si es necesario para no confundir los lugares a soldar porque, además de ser un problema el hecho de trabajar en un espacio tan pequeño, si te equivocas en el recorrido de una vía, deberás hacer el trabajo dos veces con el riesgo que ello implica.

    Mucha atención y cuidado al trabajar dentro del teclado Mucha atención y cuidado al trabajar dentro del teclado

    Controla bien con el multímetro la continuidad de las vías antes de soldar los cables y asegúrate que lo harás en los lugares correctos y de la forma correcta. Luego, al otro extremo, conecta los cables (sin errores) al CD4066B. Podrás notar que algunos botones comparten la misma vía y eso ayuda a que sea menor la cantidad de cables a soldar en la placa del teclado. Por lo general, con cinco cables se resuelven las ocho conexiones necesarias de las cuatro llaves electrónicas. Con mucho cuidado, alineas bien el teclado de membrana con la placa y tapas el conjunto sin olvidarte ningún tornillo. Muchas anotaciones, cables de diversos colores y un ambiente tranquilo te ayudarán a no cometer errores. Controlar la ansiedad que provoca saber lo que estás construyendo es algo complejo, pero en NeoTeo estamos seguros que tú podrás lograrlo.

    Retomando la explicación de funcionamiento del circuito, puedes observar en la entrada RA3 un zener ajustable LM336 2.5V que utilizaremos como referencia de tensión a medir en las entradas analógicas. Es decir, debido a que el acelerómetro trabaja con una alimentación de 3.3 Volts y en sus extremos de medición entrega valores comprendidos entre 0.85 Volts y 2.45 Volts, necesitamos tener un tope de escala (cuando la conversión alcanza la posición 1023) de 2.5Volts para un mejor desempeño del sistema. Si utilizáramos la referencia fija de 5 Volts, la medición “a fondo de escala” sólo llegaría hasta la mitad y el error de lectura sería mayor y más complejo de solucionar. De este sencillo modo, utilizamos todo el rango del conversor para medir la señal en las entradas del ADC.

    Circuito propuesto para tu nuevo volante Circuito propuesto para tu nuevo volante

    Para obtener los 3.3 Volts a partir de los 5 Volts utilizados por el resto del circuito, empleamos un regulador serie llamado AZ1117 3.3. Gracias a que el módulo acelerómetro que hemos seleccionado (o el que tú decidas utilizar) es un sistema que consume muy poca energía (medio miliamper) en condiciones normales de uso, no será necesario que el regulador cuente con disipador de calor y podrás utilizar cualquier encapsulado sin inconvenientes. También puedes alimentar el módulo con una resistencia limitadora y un zener de 3.3 Volts, pero siempre será conveniente el empleo de reguladores fijos y evitar las sorpresas que puede depararnos un error en el cálculo de la resistencia limitadora.

    Distribución y montaje de nuestro prototipo Distribución y montaje de nuestro prototipo

    Como puedes apreciar, el montaje no reviste mayor complejidad a la que ya estamos acostumbrados y, con paciencia y con los materiales necesarios, en una tarde ya tienes que tener listo tu prototipo de pruebas para ensayar su funcionamiento. En la imagen puedes ver que hemos colocado un interruptor en la parte superior izquierda para activar o desactivar el sistema. Hemos colocado varios capacitores de desacoplo en la línea de alimentación para evitar ruidos eléctricos que puedan perturbar el funcionamiento del sistema y, por último, la recomendación de siempre: prolijidad, paciencia y confianza en ti mismo, un conjunto de elementos que te llevarán siempre hacia buenos resultados. Si todo está correctamente conectado, controlado y ensayado por partes, como vimos en los videos anteriores, al conectar podrás tener un funcionamiento muy similar al siguiente:



    Conclusiones
    Este montaje que te mostramos es la piedra fundamental del gran sistema de manejo que puedes llegar a construir. En muchas oportunidades ocurre que soñamos con algo o deseamos ese algo y no tenemos la mínima idea de cómo llegar a lograr el objetivo. Aquí el camino está marcado y las posibilidades de ampliación son muchas. Por ejemplo: en el código del microcontrolador, las comparaciones son simples. “Dobla – No Dobla”, “Acelera – No Acelera”. Tú puedes expandir estas rutinas colocando fases intermedias de doblado para hacer más suave el doblado, si es necesario. Es decir, que apenas se salga de la “ventana” permitida para viajar en línea recta, exista una primera instancia donde la salida al CD4066B sean pulsos muy breves que no signifiquen doblar bruscamente sino que permitan una mayor suavidad y un mejor dominio del volante. También puedes agregarle pulsadores al sistema y otro sistema de llaves electrónicas para comandar operaciones en el juego que requieran pulsar más teclas.

    O sea, a partir de aquí los agregados corren por tu conveniencia y posibilidades. Hasta puedes montar todo el sistema del acelerómetro dentro de un fino volante cubierto en cuero de serpiente y acomodarlo junto a una delicada butaca de competición creando así un sistema digno de exposición. Tú decides hasta dónde llegas. El paso inicial ya lo has dado al comprender el funcionamiento del volante y al acordarte que tienes por allí un teclado que ya no utilizas. Sólo resta conseguir un puñado de componentes y comenzar a disfrutar las carreras de coches como si estuvieras en el mejor de los videojuegos de salón. Además, en la Web encontrarás mucha info sobre acelerómetros (marcas, modelos, cantidad de ejes, variedad de precio) y su optimización de funcionamiento. Nosotros sólo hemos probado este modelo de la marca D-TEC y, como pudiste apreciar, el funcionamiento es óptimo; el que falla es el que empuña el volante. Seguramente tú lo harás mejor.

    Acelerómetros  D-TEC Download:  Código fuente para el volante


    Edición 17/12/2009: Como ya nos tiene acostumbrados con sus trabajos, el amigo Yesbond de Colombia, fiel seguidor de NeoTeo, ha construído su propio volante para videojuegos basado en las explicaciones vertidas en este artículo. Como pueden apreciar en las imágenes, la construcción es posible y sólo es cuestión de empeño, esfuerzo, ganas de progresar, y avanzar. ¡Vamos amigos! ¿Quién sigue con sus demostraciones? ¡Felicitaciones Yesbond! Gracias por estar siempre con NeoTeo.



¿Y tú, qué opinas?

  • #1 Seppuku
    Seppuku viernes, 04 de diciembre de 2009, 16:23

    muy bueno che interesante voy a ver si consigo un acelerometro de estos

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #2 <a href="../../foro/member.php?u=16990" target="_self">kirajas</a>
    kirajas viernes, 04 de diciembre de 2009, 16:27

    Uffffff que suerte!!!! y yo que iba ahora a comprarme un volante para mi nuevo juego de coches.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #3 <a href="../../foro/member.php?u=23627" target="_self">paulocsoft</a>
    paulocsoft viernes, 04 de diciembre de 2009, 16:44

    Muy buen artículo Mario!!!

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #4 <a href="../../foro/member.php?u=12892" target="_self">rodny</a>
    rodny viernes, 04 de diciembre de 2009, 16:50

    Muy bueno... pero no entiendo como se podrían implementar acciones de doblado mas suave o acelerado/frenado moderado, si en últimas utilizamos los comandos del teclado y lo que hace el circuito con el aceleromentro es traducir las acciones del volante por las teclas de dirección... Suponge q para tener un control mas fino se requeriria utilizar un gamepadcon analogos en vez del teclado...

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #5 Fede
    Fede viernes, 04 de diciembre de 2009, 17:48

    Sí, NeoTeo no es un blog más...

    Responder >> Attention Minus Plus Votos: 1 de 1
  • #6 Gabo
    Gabo viernes, 04 de diciembre de 2009, 17:50

    Mario sabes como se pueden conseguir los MMA7260Q (o cualquier otro acelerometro) aca en la argentina? digamos sin tener que pagar una fortuna por ellos.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #7 Desiderium
    Desiderium viernes, 04 de diciembre de 2009, 18:15

    #4Aplicas una especie de PWM.... la suavidad dependeria de la frecuencia de pulsación que soporte el teclado, la pc y el videojuego...

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #8 Diego
    Diego viernes, 04 de diciembre de 2009, 20:54

    Hola, yo tengo un protoboard tirado por ahi, no podrias hacer varios articulos de introduccion a la electronica y tambien para poder programarlos, porque la verdad me interesa, saludos desde ARGENTINA!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #9 ChUkIsLuKiS
    ChUkIsLuKiS viernes, 04 de diciembre de 2009, 21:02

    muy bueno mario , lo malo que no soy bueno en la electronica xd, muy bueno gracias.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #10 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 22:48

    #3Gracias Fabian !

    Saludos !

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #11 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 22:53

    #7Exacto.
    En las conclusiones está escrito:
    ".... donde la salida al CD4066B sean pulsos muy breves que no signifiquen doblar bruscamente ....", eso signifiqua que no simule una acción de manera constante de la tecla, sino que imite un acto de pequeños impulsos que en la realidad sería una señal variable en frecuencia.
    Para lograrlo, habría que modificar la rutina propuesta por otra, donde la lectura de las variables se transformen en un valor de frecuencia de salida a través del pin.
    A mayor inclinación del volante = mayor frecuencia a la salida del pin = más dobla el coche.

    Saludos !

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #12 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 22:54

    #5Gracias Fede ! :)

    Saludos !

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #13 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 23:01

    #6Hola Gabo !

    Donde yo lo compré, lo menciono en el artículo (al final puse el enlace al site de esta empresa) me lo cobraron lo correcto. Debes tener en cuenta que no son componentes taaaaaaaan baratos, pero además tenés la ventaja que te lo entregan listo para usar en un formato "manejable".
    Además es gente de Argentina. Sinó debieras caer en comprarlo en el exterior y tal vez se pierda en aduana o te cobren cargos extras y te salga tremendamente caro ... es decir, siempre será más rápido y barato comprarlo en el país.

    Además puedes consultarlo on-line con esta gente.

    Saludos !

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #14 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 23:03

    #8Hola Diego !

    Hay muchos artículos de Electrónica Básica aquí en NeoTeo. Utiliza el buscador del sitio y comienza por los componentes básicos: Resistores, Diodos, Transistores, Condensadores (Capacitores).

    Encontrarás buen material como para iniciar algunas prácticas.

    Saludos !

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #15 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 23:06

    #9Gracias a Uds ChUkIsLuKiS por los saludos y hacerse presente en los comentarios.

    Es una alegría muy importante saber que lo que hacemos les gusta. Además, nunca es tarde para empezar amigo. Mientras existan las ganas y la constancia, los buenos resultados llegan solos.

    Saludos y Gracias a Uds.!

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #16 <a href="../../foro/member.php?u=16002" target="_self">juaneletas05</a>
    juaneletas05 viernes, 04 de diciembre de 2009, 23:11

    Wow, te pasaste, que excelente artículo...

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #17 <a href="../../foro/member.php?u=8" target="_self">Mario</a>
    Mario viernes, 04 de diciembre de 2009, 23:20

    #16Gracias Ciul !

    Es una alegría grande saber que les gusta lo que hacemos !

    Saludos !

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #18 <a href="../../foro/member.php?u=18623" target="_self">LucasVega</a>
    LucasVega sábado, 05 de diciembre de 2009, 00:11

    Hola Mario:
    Creo que la mayoria de las personas que nos gusta la electronica, tambien nos gustan los video juegos. Por ejemplo yo desde pequeño, cuando salia del cole corria directo a la drogueria a juga, contra, mario bross, tetris y todos lo juegos de mi epoca, y siempre me preguntaba, como uno podria llegar a controlar un juego, era un misterio. Y bueno ahora se como funciona, pero con este articulo de verdad que vas ha cumplir uno de mis sueños de chico, muchas gracias Mario, de verdad que nos despiertas la creatividad y animos para levantarnos cada dia y saber que nada puede ser demasiado dificil como para no hacerlo.

    Un gran abrazo desde Colombia.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #19 ICesarI
    ICesarI sábado, 05 de diciembre de 2009, 02:02

    Chévere. Justo lo que necesito para videojuegos de aviación.

    Responder >> Attention Minus Plus Votos: 0 de 0
  • #20 Ramiro
    Ramiro sábado, 05 de diciembre de 2009, 04:15

    Excelente el artículo mario.... una duda los volantes comerciales trabajan con resistencias variables en lugar d acelerometros??
    Pero excelente la idea ya que resuelve todo el sistema con solo dos canales del AD..

    Responder >> Attention Minus Plus Votos: 0 de 0
  • « «« Anterior12Siguiente »» »
    Cargando...Cargando...

  • nuevo comentario
    Nombre

    Campo obligatorio

    Email

    Escriba una dirección de correo electrónico con el formato sunombre@ejemplo.com.

    Campo obligatorio

 
Ir arriba