jueves, 17 de marzo de 2016

MOD Saturn sin interruptores y sin procesador

Índice de entradas de MODs para la Sega Saturn.
Con Interruptores: Parte 1      Parte 2   
Sin interruptores: Sencillo    Con micro   Mi versión


Tras la entrada anterior en que se cambia entre las tres zonas y la velocidad usando el botón de RESET con un micro controlador, voy a hacer casi lo mismo, pero usando solo componentes discretos, esta entrada va mas de electrónica digital que otra cosa.

NOTA IMPORTANTE: Esta entrada es la parte teórica del montaje, no voy a desarrollar el prototipo en este momento, pero si alguno lo desea probar ya tiene la información para hacerlo, pero no aseguro de que funcione al no haberlo probado por mi mismo.

El circuito se comportará de esta manera solo usando el pulsador de RESET:
  • Al pusar brevemente el botón de RESET irá cambiando entre regiones, alternando entre EUROPA PAL, EUROPA NTSC, JAPÓN y USA. 
  • Al pusar un periodo largo el RESET se reseteará la consola. 
De esta forma se puede establecer la consola en una región y resetearla para que se active, y cambiar sin resert entre PAL/NTSC para europa.

Para este montaje hay dos partes, ya que está pensado para poder aplicarlo a mas consolas, la primera es general y se puede usar en varios montajes, la segunda es específica para cada consola:

  1. El circuito de entrada de reset y salida del reset mas el detector de tiempo de pulsación, parte genérica que se puede aplicar en mas consolas.
  2. El selector de zonas y velocidad que activa los Led es específico para la Saturn. La placa de led irá por separado.

1. Selector del Reset o cambio de zona

Este es el esquema general de esta parte del circuito, dividida en 5 partes que desglosaré de manera individual:


Bloques del circuito del selector de RESET o cambio de Zona

1.1. Entrada y salida del pulsador de RESET

El primer elemento que necesitamos es la señal de reset, que viene del pulsador, más su retorno hacia el circuito para que se efectúe el reset en sí. El problema es lo que se conocen como rebotes, al acercarse el pulsador a su tope se producen una serie de pequeños traspasos de electricidad entre las dos placas aun separadas pero próximas, estos pequeños picos de corriente no se aprecian normalmente por ser muy pequeños, pero los circuitos digitales son muy rápidos y pueden detectarlos,indentificándolos como pulsaciones rápidas en lugar de como rebortes. Por tanto lo primero será eliminar los rebotes. Para ello  se pueden usar circuitos mas o menos complicados, lo mejor es un Trigger de Smith, pero yo usaré un pequeño retardo que es más sencillo y da buenos resultados en general:

Entrada del RESET y salida para RESET y cambio de zona


Tenemos arriba la entrada desde el pulsador de RESET con el anti-rebotes, que es un sencillo temporizador, al pulsar el reset se carga el condensador C1, cuando cae el voltaje por el rebote este se descarga manteniendo la corriente en el circuito, así en cada rebote hasta que se mantiene la corriente estable en el pulsador, y el condensador ya no influye. Al soltar el pulsador ocurre lo mismo, pero cuando se han separado completamente las láminas del pulsador se descarga el condensador y libera el circuito. Este pequeño retraso no influye apenas al soltar el pulsador.

Debajo están la salida hacia el circuito de Reset y la salida hacia el cambio de zona, cuyas señales provienen del selector del punto 1.4.

1.2. Temporizador

Para esta parte se usa un circuito muy probado, un 555 como mono-estable, cuando recibe un impulso pone su salida a nivel alto y empieza a contar el tiempo hasta que se cumple, en ese momento pone otra vez la salida a nivel bajo, y permanece así hasta recibir otro pulso. El tiempo de retardo se calcula usando una resistencia y un condensador, con la fórmula Tseg = 1'1 x Rmega x Cmicros

De esta manera si usamos un condensador de 1uF (un 105) y una resistencia de 2MOmios el retardo será de 2'2 segundos, ambos son valores sencillos de encontrar y el tiempo sobre 2 segundos pienso que es el adecuado, con una resistencia de 3M seria de 3'3 segundos, y con una de 4M sería de 4'4 segundos, podéis elegir el valor que deseéis, en el esquema he puedo 3M pero creo que es mucho tiempo y que con 2M es suficiente

Temporizador
El circuito es muy sencillo, En la salida TMP no hay señal alguna, al recibir la señal de RESET (filtrada de rebotes) se activa el temporizador durante el tiempo configurado, durante ese tiempo la señal TMP estará activa, y al transcurrir el periodo se desconecta. Al añadir un inversor disponemos de la señal invertida en todo momento.

1.3. Detector de liberación del botón de reset

Para elegir si se desea un reset o un cambio de zona miraremos si el 555 sigue activo al soltar el botón de RESET, en este caso sabremos que han soldado el botón antes del tiempo indicado y realizamos el cambio de zona, si ya no está activo es que han pasado los 3'3 segundos y debemos aplicar en su lugar el reset.

Para ello debemos detectar el flanco de bajada de la señal de reset, para lo que se emplea un inversor y una puerta NOR:
Funcionamiento del detector de flanco de bajada
Cuando hay una señal en la entrada el inversor la replica invertida en su salida, pero este elemento introduce un pequeño retraso en el circuito, por lo que justo en el momento de caer la señal durante un pequeño tiempo que tarda en cambiar el inversor ambas señales están abajo, por lo que activa la puerta y se produce en su salida un impulso.

Detector de liberación del botón de Reset

1.4. Selector de Reset o cambio de zona

Con la señal de flanco ya podemos mirar si se está en el tiempo o fuera del mismo, para lo que necesitamos comparar la señal del temporizador y la inversa de la misma con la de flanco, buscando cual de las dos está activa y actuar en consecuencia.

Selector de Reset o cambio de zona con puertas AND


Como es fácil de entender, se puede elegir cual deseamos que responda a la pulsación larga si el reset o el cambio de región, simplemente hay que intercambiar en este ultimo esquema las dos salidas.

Para simplificar el montaje, cambio las puertas AND por una NOR mas un inversor, y así quitamos un chip del montaje final.

Selector de Reset o cambio de zona con puertas NOR

1.5. Alimentación

La parte de alimentación de los chips con sus condensadores de desacoplo, estos no son estrictamente necesarios ya que los cambios no son rápidos ni continuos, pero es buena costumbre añadirlos:
Alimentación de los chips

Si somos muy puristas habría que añadir el poner a masa las entradas de las puertas no usadas, pero no lo haremos por simplificar el circuito.

2. Parte específica para la Saturn

Esta segunda parte es específica para la Saturn, pero es sencillo adaptarla a otras consolas como la Sega MegaDrive, que soportan solo las cuatro zonas que contemplamos. 

Selector de zonas para la Sega Saturn

2.1. Entrada de cambio de zona

En esta parte tenemos la entrada de cambio de zona, que proviene del montaje anterior desde el punto 1.1. del mismo. También pongo la salida de masa para la placa de leds.

Entrada de cambio de zona y masa para los Led

2.2. Contador asíncrono binario de 2 bits

Montaré un contador de 2 bits, con el puedo contar de 0 a 3 por lo que tengo las cuatro combinaciones posibles que voy a explotar. Usaré un contador asíncrono clásico con dos flip-flop J-K:
Contador asíncrono de 2 bits
El primero recibe la señal de cambio de zona, activando alternativamente su salida SC0, la que se envía al segundo  flip-flop que lleva la cuenta del segundo bit en su salida SC1, ambos disponen de las señales inversas, por lo que las usaré directamente y me ahorro inversores /SC0 y /SC1 serán las inversas. En esta disposición el sistema tomará los valores 00, 01, 10, 11, 00, 01... consecutivamente al recibir la señal de cambio de zona.

2.3. Selector de zonas y velocidades

Lo que nos interesa es realmente disponer de cuatro posibilidades de cambio: Europa PAL, Europa NTSC, Japón NTSC y USA NTSC, el resto de posibilidades no las usamos ya que no aportan mas funcionalidad. Montamos la tabla con lo que necesitamos:

Región Contador Jumper Leds
C0 C1 JPA JPB JPC JPD JPV LDJ LDU LDE LD6 LD5
Europa PAL 0 0 0 0 1 1 1 0 0 1 0 1
Europa NTSC 1 0 0 0 1 1 0 0 0 1 1 0
Japón NTCS 0 1 1 0 0 0 0 1 0 0 1 0
USA NTSC 1 1 0 0 1 0 0 0 1 0 1 0

Con esto vemos directamente y sin necesidad de simplificar mucho que las funciones que necesitamos para cada Jumper y para cada Led, que son las siguientes (las pongo en NOR para usar el chip mas sencillo en este caso):

JPA = /C0 AND C1 = NOT(C0 OR /C1)
JPB = no conectado
JPC = C0 OR /C1 = NOT(JPA)
JPD = /C1
JPV = /C0 AND /C1 = NOT(C0 OR C1)

LDJ =  /C0 AND C1 = JPA
LDU = C0 AND C1 = NOT(/C0 OR /C1)
LDE = /C1 = JPD
LD6 = C0 OR C1  = NOT(JPV)
LD5 = /C0 AND /C1 = JPV

Los desarrollos de algunas de las fórmulas, por si queréis verlos son (usando . por AND y + por OR):

JPC = (/C0 . /C1) + (C0 . /C1) + (C0 . C1) → Propiedad asociativa saco factor común /C1
JPC = /C1(/C0 + C0) +(C0 . C1) → Algo OR su contrario es siempre 1 y algo AND 1 es ese algo
JPC = /C1 + (C0 . C1) → por absorción
JPC = /C1 + C0

JPD = (/C0 . /C1) + (C0 . /C1) → Propiedad asociativa saco factor común /C1
JPD = /C1(/C0 + C0) → Algo OR su contrario es siempre 1
JPD = /C1

LD6 = (C0 ./C1) + (/C0 .C1) + (C0 .C1)  → Propiedad asociativa saco factor común C1
LD6 = (C0 ./C1) + C1(/C0 + C0)  → Algo OR su contrario es siempre 1 y algo AND 1 es ese algo
LD6 = (C0 ./C1) + C1 → por absorción 
LD6 = C0 + C1

Con todas las señales de entrada desde el contador y las de salida para jumpers y led, montamos el selector final que es el siguiente:

Selector de zona para la Saturn con 5 led de salida


Se puede alterar este montaje para usar 4 led en lugar de 5, solo es cuestión de usar esta otra tabla donde elimino LDE:

Región Contador Jumper Leds
C0 C1 JPA JPB JPC JPD JPV LD5 LD6 LDJ LDU
Europa PAL 0 0 0 0 1 1 1 1 0 0 0
Europa NTSC 1 0 0 0 1 1 0 0 1 0 0
Japón NTCS 0 1 1 0 0 0 0 0 0 1 0
USA NTSC 1 1 0 0 1 0 0 0 0 0 1

LD5 =  /C0 AND /C1 = JPV
LD6 = C0 AND /C1 = NOT(/C0 OR C1)
LDJ =  /C0 AND C1 = JPA
LDU = C0 AND C1 = NOT(/C0 OR /C1)

Selector de zona para la Saturn con 4 led de salida


Este cambio realmente no simplifica el montaje ya que cambiamos un puerto NOT por un NOR que tenemos libre.

2.4. Alimentación

Solo resta la parte de alimentación de los chips, con sus condensadores de desacoplo, estos no son estrictamente necesarios ya que los cambios no son rápidos ni continuos, pero es buena costumbre añadirlos:
Alimentación de la placa del selector de zonas

3. Placa de leds

La placa es la misma de los otros montajes, los 5 leds y sus resistencias, además de la masa, es lo que hace falta para montarla. Evidentemente si se desea usar solo 4 leds se elimina la entrada _LE, R32 y el LED3.

Conclusión

Con estos circuitos tenemos el montaje de un selector de 4 zonas para la Saturn, y con pequeñas modificaciones aplicable a otras consolas. No es tan sencillo como el que usa un micro-controlador PIC, pero no necesita un programador específico ya que todos los chips son discretos, solo hay que montar las tres placas y cablearlas internamente y entre sí, lo que no es demasiado difícil pero si laborioso al disponer de tantos chips. Recomiendo estudiar bien los diagramas antes de lanzarse, entenderlos bien, y luego establecer un esquema de conexiones entre los chips para abordarlo con éxito.

Aunque solo es un desarrollo teórico y no lo he probado, pongo los esquemas de las tres placas para ayudar si alguno quiere probarlo, yo ayudaré en lo que pueda si lo intentas. Como es mi costumbre, están pensadas para placa de topos, aunque sería muy sencillo hacerlo en una placa de circuito. Los puentes están marcados en rojo.

Posible placa de selección del RESET

Placa de selección de zona

Placa de leds

No hay comentarios:

Publicar un comentario