Brasil

SETI@Home: units

  Seti@Home

 
.
Mail

.


você esta em: / hardware -> projetos

. Joystick de PC no MSX

Projeto por: André Ruiz.

.

Back
   Este pequeno artigo descreve os passos para construir um adaptador de joystick de PC (analógico) no MSX. Hoje em dia é muito mais simples encontrar um joystick de PC para comprar, do que um joystick "digital", que normalmente é usado no MSX (e até mesmo nos Atari 2600). Eu só testei com o meu joystick (o que aparece nas fotos lá em baixo), mas isto deveria funcionar com qualquer joystick de PC.

   AVISO: Eu não sou profissional da área de eletrônica e não tenho o conhecimento necessário para fazer isto de forma perfeita. Eletrônica para mim é um hobby, e como todo hobby, eu o exerço no tempo livre, que não é (nem de longe) suficiente para estudar os detalhes e saber de todos os princípios que regem a coisa toda. Então, esteja avisado. Este circuito pode fritar a entrada de joystick do seu micro, e eu não vou ser responsável por isso. Ele também pode chutar o seu cachorro, esconder a chave do seu carro quando você estiver atrasado para o trabalho e fazer derreter o sorvete da sua geladeira além de desmagnetizar seu cartão de crédito. Não me culpe por nada disso :))) Mas, se for um incentivo, pra mim funcionou perfeitamente. Ah, o texto também deve ter várias incorreções sobre o assunto, além de erros de gramática. Se você os reportar, eles serão corrigidos :)

   O princípio de funcionamento é simples: O joystick de PC nada mais é do que dois potenciômetros de 120K e duas chaves normalmente abertas. Os potenciômetros são ligados entre o +5v e o pino do eixo correspondente. As chaves são ligadas nos pinos dos botões. Observe no diagrama abaixo:

foto

   Se você abriu seu joystick e achou um CI lá dentro, não se assuste. Ele deve ter recursos de auto-fire, turbo-mode, etc., e é pra isso que esse CI serve. Na verdade, no final das contas, o CI imita o circuito original. O meu joystick por exemplo, "parece" digital, porque ele tem um manche (direcional) com chaves, ao invés de potenciômetros. O CI gera automaticamente resistências equivalentes a 0% (esquerda, cima), 50% (centro) e 100% (direta, baixo), como se eu realmente tivesse uma alavanca analógica e a colocasse nessas posições quando a movesse.

   Então, se alimentarmos o joystick com 5v (o que é simples, o MSX já tem 5v na saída do joystick), e pudermos medir a tensão que retorna pela resistência interna do joystick, saberemos em que "posição" o manche está. Depois disso, usamos comparadores de tensão para obter um sinal digital (alto ou baixo) conforme esta tensão está acima ou abaixo dos limites regulados nos potenciômetros externos (de calibragem).

   Os botões, no joystick de PC, já usam o esquema idêntico ao do MSX (aberto quando não pressionados, e GND quando pressionados). Nesse caso, basta ligar os dois pinos dos botões do joystick de PC diretamente nos pinos de botões do joystick do MSX.

   Para montar o adaptador, você vai precisar de:

1 DB15 fêmea com capinha
1 DB9 fêmea com capinha
4 leds (opcional)
4 resistores de 100 ohms (para os leds, opcional)
2 resistores de 120K
2 potenciômetros de 100k
1 CI LM339N
20cm cabo 8 vias

   Os leds são opcionais, mas, como você vai ver nas fotos, fica muito legal colocá-los!! :)

   Vamos começar pelo lado do DB9. As ligações são muito simples. Solde os 8 fios do cabo de 8 vias nos pinos do DB9, deixando de fora apenas o número 8. O pino 8 e o pino 9 podem servir de GND (terra), você escolhe. No MSX, o terra oficial é o pino 9, mas no atari era o 8. Como o MSX normalmente mantém o pino 8 (que é um pino de saída) em sinal baixo, o adaptador vai servir também, mas podem existir certos momentos (se alguém mexer no sinal do pino 8 antes de usar o joystick) que o adaptador pare de funcionar (nunca vi acontecer).

fotofotofotofoto

   Fure a capinha, coloque os leds. Core as perninhas deles bem curtinhas (1mm mais ou menos). Solde os resistores por dentro, e depois passe cola quente em tudo pra fixar. Solde o cabo de 8 vias no conector, e ligue os fios dos leds. Agora você já pode fechar o conector, esta parte está pronta:

foto

   Vamos agora ao DB15.  Todo o resto será montado dentro dele e, como vocês verão, o espaço é mais que suficiente. Só pra se ter uma idéia de como as peças ficarão dentro do conector, olhe este exemplo, com elas ainda soltas, apenas posicionadas:

foto

   Agora pegue o CI, entorte as pernas dele pra fora, até quase ficarem paralelas. Corte fora as pontinhas mais finas de cada perna, deixando apenas a parte mais grossa (pra economizar espaço). Pré-estanhe cada perna, isso faz muita diferença mais tarde. Aqui temos uma foto do CI já preparado, e colado na tampa do plug com cola quente:

foto

   Na outra tampa, faça dois furos como na foto abaixo. Você vai colocar ali, pelo lado de fora, os dois potenciômetros para calibragem. Eu usei os que tinha em casa na hora que fazer, mas você pode escolher algum mais bonitinho :))

foto

   Faça todas as ligações, conforme o esquema que está mais no final da página. Eu aconsolho a ligar o cabo de 8 vias no conector DB15, para que ele fique bem preso, ao invés de tentar ligá-lo direto no CI e puxar alguns fios para o conector. Você já deve ter colocado os potenciômetros do lado de fora e os colados com cola quente também.

foto

   Agora é só fechar o DB15, e está pronto!! Veja abaixo o adaptador pronto:

foto

   Veja aqui o esquemático para a ligação das peças com o CI. Mais abaixo eu explico como calibrá-lo na hora de usar.

   Veja também algumas fotos dele em funcionamento, com os leds acendendo conforme a direção que você move o joystick.

   Quando estiver plugado apenas, todos os leds devem permanecer apagados. Se você ligar o adaptador no MSX, sem nenhum joystick de PC conectado na sua entrada, a tensão recebida nos pinos do eixo-x e eixo-y será 0v e o adaptador irá pensar que você está pressionando para cima e para a esquerda (diagonal). Isto é normal (veja mais sobre este funcionamento mais abaixo).

foto

   Pressionando "para baixo" , o led de baixo acende:

foto

   Para a esquerda, idem...

foto

   Direita...

foto

   Para cima...

foto

   E em diagonal, acendem dois juntos (neste exemplo, para baixo e para a esquerda):

foto

   Para entender a calibragem, é interessante entender como varia a tensão nos eixos X e Y do joystick do PC.

   No eixo-X, quando o manche está todo para a ESQUERDA, a resistência é 0 ohms. Nesse caso, teremos 5v de retorno pelo pino do eixo-X. Se movermos o manche todo para a DIREITA, a resistência passará por 60K ohms no centro, e chegará a 120K ohms no extremo direito. Isto significa que teremos 0v (simplificando a história toda) retornando pelo pino do eixo-X.

   No eixo-Y, ocorre o mesmo. Quando o manche está todo para CIMA, temos 0 ohms de resistência interna, e 5v de retorno. Se movermos para BAIXO, teremos 120K ohms de resistência e 0v de retorno.

   Quando algum eixo está na posição central, ele tem aproximadamente 60K ohms de resistência, e pode-se medir aproximadamente 2,5v de retorno no pino correspondente.

   O que interessa aqui é definir uma tensão mais baixa que 2,5v no primeiro potenciômetro, para que ela seja usada de referência nas comparações da ESQUERDA e CIMA, e uma outra tensão de referência que seja mais alta que 2,5v para que seja usada como referência nas comparações da DIREITA e de BAIXO. Então o primeiro potenciômetro controla o limite para ESQUERDA+CIMA, e o segundo controla o limite para DIREITA+BAIXO.

   Cada potenciômetro tem 3 regiões: nas duas extremas, os leds estão sempre apagados ou sempre acesos, não interessa se você movimenta o manche ou não. Na região central, o led acende/apaga conforme você movimenta. O seu trabalho será achar as divisões entre essa região do centro e as duas laterais, e colocar o potenciômetro na média das posições. Faça isso com um dos eixos, o outro vai de brinde.

   É isso aí... se tiverem mais dúvidas ou sugestões, me escrevam.

   O texto, as fotos e o diagrama são todos de minha autoria. Você pode reproduzir este artigo em qualquer lugar que desejar, apenas me envie um e-mail avisando. Por André Ruiz.



© 2003 by MSXPró

.
Esta página é melhor visualizada em
resolução de 1024x768 @ True Color
Utilizando o navegador Mozilla

Visitante:

.

Valid HTML 4.01 Transitional   Valid CSS!