Regresar   Foro de marcianitos.org > Construcción y restauración de máquinas recreativas > Zona de trabajo > Tutoriales en proceso

 
 
Old 05-oct-2007, 13:13   #1
Marcos75
Marciano
 
Avatar de Marcos75
[TUTORIAL] Simular controles analógicos giratorios con interruptores

Hola a todos.

He preparado un pequeño tutorial en el que "intento" explicar (no se me da muy bien, lo reconozco) cómo construir un pequeño circuito que permita simular un control analógico (volante, spinner, pedal, etc) con la pulsación de los interruptores de un panel de control típico (con manetas y botones).

Espero vuestras sugerencias, no sólo en la modificación del circuito, sino también en la forma de redactar el tutorial para que quede claro.

¡Gracias!

Un saludo.

1. Introducción

Este tutorial trata de dar una idea de cómo simular un control analógico, como por ejemplo un volante, con los joystick de nuestra recreativa.

Como ejemplo tomaré la construcción del circuito para el juego Chequered Flag de Konami, pero esta misma idea puede aplicarse a otros juegos que se controlen con volantes, spinners, e incluso pedales.

2. Materiales

Para realizar este pequeño conversor serán necesarios los siguientes materiales:

• Soldador, estaño y cable.
• Una placa perforada de tiras (de esas en la que todos los agujeros de una misma fila están conectados por una misma pista). Vale cualquier otro soporte que se te ocurra para construir el circuito.
• 1 integrado 74HC04 (puertas inversoras)
• Varias resistencias de los valores que necesites (una vez hechos los cálculos)

3. Fundamentos

Por lo general un control analógico de este estilo se gestiona simplemente con una tensión entre 0 y 5 voltios variando en determinado pin del conector donde van los controles. Para conseguir esa tensión variable, se utiliza un potenciómetro conectado entre 0 y 5 voltios, cuyo cursor se conecta a dicho pin. Como ejemplo se muestra en la figura el conector de los controles del Chequered Flag.



En la imagen puede verse como se debe conectar un potenciómetro en los pines 1, 3 y 4 del conector correspondiente. El pin 1 está conectado a 5 voltios (+Vcc) y el pin 4 está conectado a 0 voltios (GND). En el pin 3 habrá una tensión entre 0 y 5 voltios, dependiendo de la posición del cursor del potenciómetro: es un simple divisor de tensión entre +Vcc y GND. Este último pin será el que realmente se tome como entrada para el control del volante, pedal, o lo que sea.

Si giramos el potenciómetro (volante) hacia la izquierda la tensión se acercará a 0 voltios, y si lo giramos a la derecha la tensión se acercará a 5 voltios. Como nosotros no podemos conseguir todo el rango de tensiones entre esos valores, nos vamos a centrar en conseguir únicamente 3 valores:

0 V: Supone girar a la izquierda.
5 V: Supone girar a la derecha.
2,5 V: Supone tener el volante centrado.

Y el valor de esos 3 que tenga que haber en el pin 3 (el que gestiona el giro) deberá controlarse con la pulsación de 2 interruptores: joystick derecha y joystick izquierda.

4. El circuito

Un circuito que es capaz de hacer lo que se ha descrito antes es el siguiente:



Vayamos por partes. Lo primero es explicar qué son esas RPullDown que aparecen. Pues bien, esa es la resistencia que se ve desde los pines del conector Jamma correspondientes a los controles de joystick derecha y joystick izquierda, a masa. Es decir, las tendremos que medir en nuestra placa, colocando el multimétro en posición óhmetro, con una punta en masa y la otra en el pin correspondiente del conector Jamma. Ambos valores (el correspondiente al pulsador joystick derecha y el correspondiente al pulsador joystick izquierda) serán muy parecidos. Los anotamos.

El siguiente paso será calcular RA, RB y RC. Su valor tiene que ser tal que, sin tener ningún interruptor pulsado (volante en el centro), la tensión en Vo sea de 2,5 V aproximadamente. Para que así suceda, RA debe tener el mismo valor que (RB + RC) // RPullDown. Elegimos tres resistencias que cumplan esa condición, y listo. Recuerdo que para calcular el valor Ro del paralelo de dos resistencias R1 y R2 debe hacerse:

Ro = (R1 * R2) / (R1 + R2)

Con eso conseguiremos que el coche vaya recto cuando no se pulse ningún botón. Para que el coche gire a la izquierda es muy sencillo. Basta con que Vo sea 0 V. Como precisamente al pulsar un interruptor del panel de control lo que sucede es que el pin correspondiente del conector Jamma se pone a GND (0 V), basta llevar la señal del pin 20 del conector Jamma (joystick 1 izquierda) a Vo. De esa forma al pulsar joystick izquierda, estaremos colocando Vo a masa.

Conseguir que Vo sea 5 V cuando pulsamos joystick derecha tiene más miga. Para ello se me ha ocurrido utilizar un inversor lógico. La salida de ese inversor deberá ser 0 V mientras no se esté pulsando derecha, para que no interfiera en el resto del cálculo que hemos realizado. Y cuando pulsemos derecha, su salida debe ser 5 V. De esa forma nos aseguramos que Vo será también aproximadamente 5 V.

Para garantizar que la salida del inversor es 0 V, su entrada debe ser cercana a 5 V. Eso se consigue haciendo que (RE // RPullDown) sea al menos 10 veces mayor que RD. Elegimos dos resistencias RD y RE que cumplan eso, y listos. Ahora el pin 21 del conector Jamma (el que controla el joystick 1 derecha) debe conectarse también a la entrada del inversor. De esa forma, al pulsarlo estaremos llevando la entrada del inversor a masa, con lo cual su salida será 5 V, y así conseguiremos, tal y como se ha explicado antes, que Vo sea cercana a 5 V.

5. Construcción

La construcción del circuito es relativamente simple. Una vez situado el integrado 74HC04 en la placa perforada, debemos alimentarlo. Vcc y GND pueden obtenerse fácilmente en el juego Chequered Flag de los pines 1 y 4 del conector de controles de la primera figura. Vcc debe ir al pin 14 del integrado y GND al pin 7. Si no, también podemos traer la alimentación de los pines 3 y 1 respectivamente del conector Jamma.

Por otro lado hay que conectar los controles de izquierda y derecha. Para ello conectamos el pin 20 del conector Jamma (izquierda) a Vo (pin 3 del conector de controles en el caso del Chequered Flag); y el pin 21 del conector Jamma (derecha) a la entrada del inversor (pin 1).

Y las resistencias y demás las conectamos tal y como se muestra en el esquema del circuito, teniendo en cuenta que la salida del inversor es el pin 2 del 74HC04. Hay que tener en cuenta que RPullDown no hay que incluirla en el circuito (por eso aparece en el esquema en trazo discontinuo). Simplemente es una resistencia que la propia placa del juego va a incluir, con lo cual hay que considerarla en los cálculos.

Por si sirve de referencia, los valores que yo tomé para este juego concreto fueron:

RA = 2K7
RB = 10K
RC = 1K
RD = 1K
RE = 10K

Y la resistencia que medí entre los controles y masa fue de:

RPullDown = 3K5

Un ejemplo de cómo quedaría el circuito terminado es el siguiente (muchísimas gracias a Miguel González por sacar estas fotos tan buenas):



Lo primero es que si contáis resistencias salen 8 en lugar de 5. La explicación es que el acelerador del juego Chequered Flag es también un control analógico, con lo cual aprovechando que el integrado 74HC04 tiene cuatro inversores, he utilizado otro de ellos para simular el acelerador. Este caso es más simple, porque no requiere una posición central o intermedia como sí ocurre con el volante: solamente 0 V cuando el acelerador está sin pisar, y 5 V cuando el acelerador está pisado. El circuito sería muy similar al anterior, salvo que en este caso no haría falta el divisor de tensión formado por RA, RB y RC.

Y el circuito integrado en la placa quedaría de la siguiente forma:



Podéis ver que el circuito por un lado se conecta a un conector adicional que lleva la placa, cuyos pines pueden verse en el primer esquema de este tutorial, y por otro lado al conector Jamma. Del conector Jamma salen 5 cables: 3 de ellos (izquierda, derecha y acelerador [botón 1]) van a nuestro circuito. Los otros dos son el freno y el cambio de marcha. Estos últimos no son analógicos, pero necesitan ir al conector adicional superior a los pines 6 y 7.

¡Y listo!

6. Alternativas

Propone nuestro amigo Fistro una alternativa de construcción para este circuito, utilizando dos relés: se mantiene el divisor de tensión del esquema original para obtener los 2,5 V que se requieren para que el volante esté centrado, y los 0 V y 5 V se llevan al pin de control del giro mediante dos relés gobernados por los pulsadores de izquierda y derecha. El esquema se muestra en la siguiente figura:



Este esquema electromecánico tiene sus ventajas y sus inconvenientes con respecto al esquema electrónico: la principal ventaja es que no requiere cálculos de resistencias ni nada por el estilo, y es más fácil de construir. Como desventaja podríamos destacar el menor tiempo de respuesta ante la pulsación de los controles.

Muchas gracias a Fistro por esta aportación tan interesante.

7. Mejoras

Este circuito se puede mejorar seguramente de mil maneras.

La primera que se me ocurre es: para suavizar los giros, en el caso de que sean demasiado bruscos, se puede colocar entre Vo y GND un condensador, para modificar los tiempos de subida y bajada de la señal. ¿Su valor? Creo que lo mejor es montar un zócalo, e ir probando hasta dar con el valor que más se ajuste a nuestro gusto.

Apunta nuestro amigo Rom Check OK! otra mejora que permitiría controlar el grado de giro del volante. Este circuito supone que al girar a derecha o izquierda, estamos girando el volante a tope en esa dirección mientras mantengamos pulsado el joystick. Pues bien, si queremos que al pulsar el joystick en realidad es como si girásemos el volante únicamente un porcentaje, podemos sustituir las resistencias por potenciómetros. De esa manera podríamos hacer que la salida Vo no fuese ó 0 V ó 5V, sino que fuese por ejemplo 1,5 V y 3,5 V. Únicamente habría que tener en cuenta que sería necesario calibrar el circuito; es decir, habría que ajustar todas las resistencias de manera que, cuando no se pulse ninguna dirección, Vo sea lo más cercana posible a 2,5 V (volante centrado).

Editado por Marcos75 en 10-oct-2007 a las 09:38.
   
Old 05-oct-2007, 14:09   #2
Armenta
Moderador General
 
Avatar de Armenta
muy buena la idea tio, tenemos algun pcb o alguna foto de montaje para que puedan trastear los marcianos?
   
Old 05-oct-2007, 14:16   #3
Macarro
Administrador
 
Avatar de Macarro
Macho, que se sale por todos ladosssss .

Pero voy a hacer una crítica, en el caso de emuladores, no sería más sencillo buscar algún software que hiciera algo parecido? Me da (NO ESTOY SEGURO) que con ppjoy (el driver del IPP para windows) viene un programa que permite crear joysticks virtuales a partir del teclado y que estos joysticks pueden ser también analógicos.
   
Old 05-oct-2007, 14:18   #4
Marcos75
Marciano
 
Avatar de Marcos75
Pues la verdad es que al final le vendí el juego Chequered Flag (para el cual diseñé este circuito) a un compañero del foro: Miguel González. Le pediré si por favor puede hacer unas fotos para añadirlas al tutorial...

Gracias por el apunte.

Un saludo.
   
Old 05-oct-2007, 14:19   #5
Marcos75
Marciano
 
Avatar de Marcos75
Quote:
Originalmente publicado por Macarro Ver post
Macho, que se sale por todos ladosssss .

Pero voy a hacer una crítica, en el caso de emuladores, no sería más sencillo buscar algún software que hiciera algo parecido? Me da (NO ESTOY SEGURO) que con ppjoy (el driver del IPP para windows) viene un programa que permite crear joysticks virtuales a partir del teclado y que estos joysticks pueden ser también analógicos.
Gracias Macarro. La idea de este circuito es usarlo en una recreativa Jamma pura y dura, sin PC ni nada por el estilo... Es para que los (excesivamente) puristas, como yo, puedan jugar a sus juegos de coches, por ejemplo, con la placa original y sin tener que utilizar una recreativa con volante.

Por supuesto, tal y como apuntas, con los emuladores la cosa es más sencilla. Incluso el MAME trae integrada esa posibilidad, creo.

Editado por Marcos75 en 05-oct-2007 a las 14:22.
   
Old 05-oct-2007, 14:56   #6
Rom Check OK!
Marciano
 
Avatar de Rom Check OK!
Impecable trabajo. Te has ganado un puntito
Se me ocurre algo para agregarle : un ajuste de "sensibilidad", sustituyendo las resistencias por "presets" cuyos valores oscilen entre los que se calcularon. De ese modo, podemos tener la sensación de un volante más "duro" o hasta de una dirección "hidráulica".

A mi me ha tocado jugar en varios arcades en que, siendo el juego el mismo, la sensibilidad del volante era notoriamente distinta. En algunos apenas al moverlo se iba el coche de lado a lado de la pista. En otros, tenía que dar casi un giro completo.

Saludos, y felicitaciones!!!
   
Old 05-oct-2007, 16:15   #7
Marcos75
Marciano
 
Avatar de Marcos75
Quote:
Originalmente publicado por Rom Check OK! Ver post
Se me ocurre algo para agregarle : un ajuste de "sensibilidad", sustituyendo las resistencias por "presets" cuyos valores oscilen entre los que se calcularon. De ese modo, podemos tener la sensación de un volante más "duro" o hasta de una dirección "hidráulica".
Me parece una muy buena idea. Sinceramente no sé lo que son los "presets", pero efectivamente jugando con los valores de las resistencias puedes hacer que el giro a derecha izquierda no sea de 0 y 5 voltios, sino de, por ejemplo, 1,5 y 3,5 voltios. Con eso consigues que el coche gire más despacio.

Aunque personalmente me decantaría más por la sugerencia que añado en el último punto: añadir un condensador que haga que la tensión suba a 5 V o caiga a 0 V más lentamente. Así tendríamos la sensación de que el coche está girando algo más progresivamente cuando pulsamos joystick izquierda o joystick derecha.

¿Podrías indicarme qué son exactamente los presets? Podríamos añadirlo al último apartado de "mejoras"...
   
Old 06-oct-2007, 20:04   #8
Rom Check OK!
Marciano
 
Avatar de Rom Check OK!
Los Presets son llamados a veces "trimpots" o resistencias variables. Son como potenciómetros pero para montar en placa.

Son estos :



Junto con tu solución del condensador, puede quedar de P.M.

Saludos!!!
   
Old 07-oct-2007, 13:41   #9
Marcos75
Marciano
 
Avatar de Marcos75
Gracias, Rom Check OK! Actualizo el tutorial con tus sugerencias y con un par de fotos de como quedaría el montaje. Además incluyo los valores de resistencia que yo calculé para el caso concreto del juego Chequered Flag.

Un saludo.
   
Old 07-oct-2007, 20:49   #10
Fistro
Invitado
Hola Marcos75, veo que controlas el tema, pero con ese circuito no consigues emular un control analógico, es como girar el volate de un lado a otro de una tacada sin puntos intermedios para darle un toque gradual, pero no se le puede pedir mas a ese circuito como bien dices en el post, la idea del condensador es buena.

Como veo que aceptas sugerencias te comento que el circuito este lo puedes sustituir por dos resistencias y dos relés, menos complicado de montar, no hace falta placa de circuito impreso y lo puede hacer cualquiera sin conociemientos de electronica.
Dos resistencias para hacerte un simple circuito divisor de tensión, las dos resistencias serán iguales por la ley de ohm, si puedes ver el valor del potenciometro del volante mejor que mejor, vas a tiro hecho, si el potenciometro es de 10K, pues las resistencias tienen que ser de 5K, esto ya lo sabes, si no dispones de la info del potenciometro del volante original tienes que hacer un truco, sabemos que dos resistencias iguales en serie hacen el divisor de tension, pero la corriente variará segun el valor de estas, tienes que saber la coriente que consume la entrada de 2,5v de tu placa jamma, que sería el volante centrado, no?, pues alimentas ese pin con 2,5v y mides la corriente, ahora sabes la corriente que tiene que entregar tu divisor de tension, calcula las resitencias y su potencia a disipar.
Ya tenemos los valores de las resistencias, he realizado un croquis del esquema a utilizar, he respetado la "polarización" de los switches izquierda y derecha de una maca (masa o negativo) para poder "mover" nuestro sencillisimo circuito.



Saludos!!

Editado por Fistro en 07-oct-2007 a las 21:28.