Vamos a contar cómo gestionan la mayoría de las placas de recreativa la pulsación de los controles, con el objetivo de que podamos resolver un problema relativamente común: el fallo al pulsar alguno de los controles.
Típicamente, los controles de nuestra recreativa son interruptores que, por un lado conectan a la placa de juego, y por otro lado a masa (GND). De esa forma, cuando pulsamos un botón o movemos la palanca, lo que hacemos es cerrar el circuito y llevar masa a la correspondiente entrada de la placa.
Esa señal de entrada se recoge en una serie de bufferes de entrada, cuya misión es "construir" una señal TTL a partir de la señal analógica de entrada, y dejar esa señal ya digital en el bus de datos, señal que recogerá luego el procesador durante un periodo de interrupción.
En definitiva, la base de funcionamiento es la siguiente:
* El buffer espera tener a su entrada Vcc cuando el control no esté pulsado, y GND cuando el control esté pulsado.
* El segundo caso se consigue fácilmente como ya hemos dicho, ya que al pulsar un interruptor llevamos masa a la entrada del buffer (
a3).
* Para que a la entrada del buffer haya Vcc en reposo, lo que se hace es conectar una resistencia desde la entrada del buffer a Vcc. Esa resistencia (
R) debe ser mucho menor que la resistencia equivalente de entrada del buffer (
Req), que de hecho suele ser alta.
* En definitiva, se ha formado un divisor de tensión en el que si no se pulsa el botón, la mayor parte de la tensión cae en
Req (al ser Req >> R), y en
a3 tenemos una tensión cercana a 4 - 5 Voltios; y al pulsar el botón llevamos masa a
a3: aquí el papel de
R es fundamental, ya que por ella circula toda la corriente entre GND y Vcc.
En la práctica necesitaremos un buffer por cada control. Para un juego típico de 2 jugadores y tres botones por jugador, necesitaremos 7 bufferes (4 de la maneta y 3 de los botones) por jugador, más el de inicio de partida, más el del monedero. En total al menos 18 bufferes.
Por ello lo que se utiliza son integrados con un gran número de bufferes (por ejemplo
74LS245 ó
74LS244, que tienen 8 cada uno), y a sus entradas se colocan arrays de resistencias conectadas a Vcc, en lugar de resistencias discretas (aunque estas últimas también se ven en determinadas placas).
Además estos integrados son fáciles de identificar por dos motivos:
* Suelen situarse muy cercanos al conector de la placa.
* Sus entradas tienen continuidad directa con dicho conector. Es decir, si buscas el buffer que controla el botón 1 del jugador 1, simplemente tienes que buscar continuidad entre el pin 22 del JAMMA y los integrados de bufferes.
Aunque a veces el array de resistencias puede estar roto y ser la causa de un problema, o puede haber una pista rota, los fallos típicos que nos solemos encontrar con los controles (que el control no responde a la pulsación del interruptor, o que el control permanece activo aún sin pulsar el interruptor) suelen deberse casi siempre a problemas en el integrado de bufferes. Cambiarlo es la solución.
Para identificar que es ese el problema lo tenemos muy fácil:
* Situamos la punta lógica en el pin del conector JAMMA del control que nos falla. La lectura de la punta tiene que ser nivel alto cuando el botón no está pulsado, y nivel bajo cuando el botón está pulsado. Si no es así, y el correspondiente array de resistencias está bien (mide la resistencia entre la entrada correspondiente del buffer y Vcc para comprobarlo), cambia el integrado.
* Si eso está correcto, identifica en la hoja de especificaciones del integrado de bufferes cuál es la salida correspondiente a la entrada que te está dando problemas, y haz la misma comprobación con la punta lógica (nivel alto en reposo, nivel bajo al pulsar el botón). Si no es así, cambia el integrado.
A modo de anécdota, comentaré mi experiencia con los controles de una Double Dragon. Cuando la compré todo iba bien. Pasados unos meses la probé, y comprobé que el puñetazo de uno de los jugadores se quedaba pulsado. Pero si subía la tensión de la fuente a 5,4 Voltios, el control volvía a funcionar. ¿Cómo se explica eso?
Bueno, los problemas que suelen tener los bufferes es que se degradan y sus entradas, por ejemplo, tienden a cortocircuitarse a masa. Es decir, esa
Req de la que hablábamos antes disminuye mucho. Cuando
Req es menor que
R, se da la circunstancia de que en reposo el divisor de tensión del que hablábamos antes hace que en
e3 la tensión ya no sea cercana a 4 - 5 voltios, sino próxima a 1 - 2 Voltios, y el control se queda siempre pulsado.
Lo que yo estaría observando en mi caso es que
R es aproximadamente igual a
Req, con lo cual en
e3 tenía una tensión en torno a 2,5 Voltios, justo el límite TTL entre nivel alto y nivel bajo. Eso hacía, probablemente, que al aumentar un poco Vcc, en
e3 consiguiese una tensión de unos 2,6 Voltios (nivel alto), y todo funcionase bien, pero si disminuía Vcc la tensión en e3 caía a 2,3 Voltios, por ejemplo, con lo que el buffer entendía que a su entrada había un nivel bajo, y de esa forma el control permanecía pulsado.