Publicado por: augustof | segunda-feira, julho 26, 2010

Conhecendo melhor a placa Mega Joystick

Baseada no microcontrolador ATMEGA 16-16PI, a placa Megajoy é uma placa mega (foto dos componentes)poderosa interface para projetos de cockpits caseiros, que se comunica com o PC através da porta USB e é reconhecida pelo Windows como um joystick. É uma placa de baixo custo para aqueles que pretendem montar um cockpit mais simples, mas isso não significa que seja um “simples joystick”, pois a mesma suporta 8 entradas análogicas de alta resolução (10 bits) que podem ser conectadas a vários controles analógicos como manche (yoke), pedais de leme (rudder), throttle, flaps, atuadores, etc, e além do mais suporta 64 teclas simples (push buttons), 16 interruptores de alavanca tipo chave toggle, 4 chaves rotativas e 1 hat switch.
Para um painel simples, basta interligar as chaves, potenciômetros e demais controles a esta placa.
Parte do projeto desta placa é baseado na leitura de uma matriz de diodos (linhas e colunas), onde o microcontrolador envia um sinal a um barramento e faz a leitura de outro. Caso uma tecla seja pressionada, ele verifica qual  linha e  coluna estão “fechadas” e, através da programação interna, envia ao PC a informação da tecla que está pressionada.
Esta varredura é feita de uma forma muito rápida, pois sua freqüência de operação é de 16 MHz. Quando se usa um cristal nessa freqüência, ele pode atingir até 16 MIPS (MIPS é a sigla para Milhões de Instruções por Segundo; ela é a medida para a velocidade da computação de um programa). Outra parte do projeto é baseada na leitura de entradas analógicas, provenientes de potenciômetros externos (ou até mesmo sensores ou placas, cujos sinais sejam compatíveis com as entradas do Atmega). O microcontrolador analisa a tensão presente nas linhas de entrada de uma de suas portas internas e envia (através da porta USB) uma codificação para o PC, informando a posição do cursor de um potenciômetro ou a situação de um sensor.

O Atmega16

O Atmega16 é um microcontrolador de 8 bits de baixo consumo,baseado na arquitetura RISC, podendo executar até 1 milhão de instruções por MHZ de operação (até 16 MIPS), permitindo o projeto de um poderoso sistema, com uma ótima relação de consumo versus velocidade de operação.
Dentre todas suas características podemos destacar as seguintes:

** 131 instruções
** 32 registradores internos de uso geral
** Memória Flash de 16K Bytes que suporta até 10.000 ciclos de escrita/deleção de dados
** Memória EEPROM de 512 Bytes que suporta até 100.000 ciclos de leitura/deleção de dados
** Memória SRAM de 1K
** Conversor Analógico/Digital de 8 canais com resolução de 10 bits
** 32 linhas programáveis de Entrada/Saída
** Tensão de operação de 2,7 a 5,5V (Atmega16L) e 4,5 a 5,5V (Atmega16)
** Baixo consumo: Ativo = 1,1 mA, Modo Idle = 0,35 mA e modo Power down < 1uA

Abaixo, o diagrama de blocos desse componente:

Diagrama de blocos - ATMEGA
O funcionamento relativo à parte das chaves da placa Mega Joystick pode ser analisada no esquema abaixo, onde vemos a porta C e a porta B do Atmega.

LEITURA DAS ENTRADAS
Em um ciclo de operação, um sinal é enviado da porta C – saída 0 (PC0) às  chaves SW1 e SW9, através dos diodos D1, D9 (e demais diodos e chaves ligados à esta porta). Da mesma forma, no próximo ciclo um sinal idêntico é enviado da porta C – saída 1 (PC1) ao diodos D2, D10 e às chaves SW2 e SW10….
Considerando que todas as chaves estejam abertas como mostrado acima, nenhum sinal chegará às entradas da porta B (PB0 a PB7).
Assim que um sinal é liberado pela porta C, o microcontrolador faz uma varredura por todas as entradas da porta B, à procura deste sinal. Consideremos agora que a chave SW1 seja fechada pelo usuário: o sinal proveniente da porta C (PC0), passará pelo diodo D1 e chegará à entrada da porta B (PB0).
Como o microcontrolador faz uma varredura muito rápido, ele detectará este sinal presente em PB0, e “saberá” que o mesmo é proveniente de PC0, devido aos ciclos internos da CPU. Internamente à CPU, uma informação será tratada para ser enviado ao PC (e conseqüentemente ao Flight Simulator ou qualquer jogo que estiver utilizando este Mega Joystick), através da porta USB. A grosso modo dizemos que a CPU envia um sinal para PC0, “varre” todas as portas B (PB0 a PB7), envia outro sinal para PC1, “varre” novamente as portas PB0 a PB7 e assim sucessivamente até encontrar uma chave fechada (sinal de PC em PB).
A função dos diodos é não deixar que um sinal de uma porta C retorne para outra porta C ao se fechar 2 chaves simultaneamente.
Nessa “matriz” de linhas e colunas de diodos e chaves, temos 16 entradas para chaves tipo toggle, 64 para chaves tipo push button, 1 hat switch e 4 chaves rotativas.
As entradas relativas às chaves rotativas são tratadas de forma um pouco diferente, pois a CPU analisa a entrada de sinal e identifica o sentido de rotação da chave (que no caso será um encoder). Isso nos dá a oportunidade de ligar 4 encoders para os rádios.
Já para as entradas analógicas, a porta utilizada para a leitura dos sinais é a porta A (PA0 a PA7).
A linha de alimentação de 5 volts é ligada aos extremos (sentido horário) dos potenciômetros.

LEITURA DAS ENTRADAS ANALÓGICASComo o extremo oposto (sentido anti horário) está ligado ao terra, ao se mover o cursor a tensão irá varia de 0 a 5 volts. Esta tensão será então enviada às entradas da porta A do Atmega.
Este, por sua vez, faz uma leitura (como nas chaves) de todas as entradas, uma a uma, e verifica qual o nível de tensão presente.
Este nível de tensão é tratado internamente e convertido em uma informação para o PC, conforme a posição do potenciômetro em questão.
Se este potenciômetro for usado para as manetes de potência, por exemplo, o cursor todo à frente enviará uma tensão de 5 volts e o Atmega informará ao PC (e conseqüentemente ao Flight Simulator) que queremos potência máxima.
Bem, depois dessa breve introdução ao funcionamento da placa, vamos à parte prática, que consta das ligações dos periféricos, ou seja, as chaves, potenciômetros e encoders.

Identificação dos conectores na placa

Para ligação dos periféricos nesta placa, devemos seguir a figura abaixo para identificarmos os conectores das chaves e potenciômetros:
Placa-base

Os potenciômetros deverão ser ligados nos conectores identificados como “AXES” no centro da placa.
As 64 chaves tipo push button (contato momentâneo), deverão ser ligadas aos conectores identificados como J3 a J10 (identificados como “PULSE SWITCHES”).
Já as chaves tipo toggle, deverão ser ligadas aos conectores J11 e J12 (identificados como “TOGGLE SWITCHES”).
As 4 chaves do hat switch deverão ser ligadas à barra de pinos “HAT SWITCH” na parte inferior central da placa e as 4 chaves rotativas às barras de pinos com identificação “ROTARY SWITCHES”

Ligação dos potenciômetrospotenciômetros
Podem ser ligados potenciômetros com valores entre 10K e 100K ohms, sempre do tipo LINEAR. Valores muito alto podem colocar o circuito vulnerável a ruídos e valores muito baixo podem consumir uma corrente alta o suficiente para prejudicar o funcionamento da porta USB, uma vez que toda a alimentação da placa sai dessa porta e ela tem limitação nesse sentido.
Considerando que sejam ligados 8 potenciômetros de 10k ohms, como eles estão ligados em paralelo com a fonte, a resistência total será dada por:

CÁLCULO RT
A fórmula para o cálculo da resistência total dos potenciômetros acima poderia ser simplificada para 10000 (10K) / 8 já que TODOS os 8 potenciômetros são iguais.  A fórmula apresentada acima (1/RT = ….) é a correta para o cálculo de vários resistores em paralelo, desde que tenham valortes diferentes entre sí.
Com a resposta acima (1250 Ohms), a corrente consumida será dada por : 5V / 1250 ohms = 0,004 A (ou 4 mA).
Se fosse usado potenciômetro de 100K ohms, a resistência total seria de 12500 ohms e a corrente passaria para 0,0004 A (ou 0,4 mA ou ainda 400 uA).
Percebe-se então, que quanto maior o valor dos potenciômetros menor será a corrente consumida da porta USB, mas temos o problema do ruído. Um valor mais adequado seria então 47k ohms, pois estaria no meio da faixa.
Outro fator que influencia (e muito) para o aparecimento de ruídos é o cabo a ser utilizado. Este cabo deverá ser obrigatoriamente com blindagem (malha) e esta deverá ser aterrada apenas de um dos lados, seja nos potenciômetros ou no lado da placa.
Um excelente cabo para esta finalidade é o cabo utilizado para áudio.
Esse aterramento pode ser visto na figura abaixo:

Aterramento potenciômetros
Lembre-se: não faça o aterramento nas 2 extremidades desse cabo. Caso opte por aterrá-lo na extremidade da placa, ligue a malha  ao terminal GND do conector.

Identificação dos terminais dos conectores “AXES”:
1 = +5 Volts
2 = Sinal
3 = GND

Para as conexões desses potenciômetros vamos nos orientar pela figura abaixo.
Ligação dos potenciômetros
Siga o mesmo procedimento para os demais potenciômetros da placa.

Nota: Caso não use todos os potenciômetros, para evitar entrada de ruídos na placa, através das entradas não utilizadas, feche os pinos 2 (sinal) e 3 (GND)  através de solda ou mesmo um jumper.

Um outro método para se evitar ruídos nas entradas dos potenciômetros, é usando capacitores de poliéster, caso o aterramento não seja suficiente.
Para tal, devemos soldar um capacitor de um valor entre 100 nF e 470 nF (poliéster).
Mas lembre-se: quanto maior for o valor desse capacitor haverá um “retardo” maior na entrada do sinal, pois o mesmo irá  ter uma carga / descarga de acordo com a tensão vinda do potenciômetro.
Este capacitor deverá ser ligado entre os pinos 2 e 3 da placa, no próprio conector como mostrado a seguir:

Ligação do capacitor
Estes capacitores poderão ter as seguintes inscrições:

Para 100 nF:   100nF ou 100K ou 0,1 uF
Para 220 nF:   220nF, ou 220K ou 0,22uF
Para 330nF:   330nF ou 330K ou 0,33uF
Para 470nF:   470nF ou 470K ou 0,47uF

Poderíamos usar até capacitores eletrolíticos para este filtro, mas o retardo entre a movimentação do potenciômetro e a resposta do circuito seria tão grande que iria acabar prejudicando o projeto.
Se optar por eletrolítico, tente no máximo 1 uF, mas observe a polaridade do mesmo, pois se for invertido o mesmo poderá até explodir.
(Positivo no pino 2 e Negativo no pino 3).
A tensão desse capacitor poderá ser 16 ou 25V.

Mapeamento das chaves na placa:

Todas as chaves são mapeadas por uma matriz de linhas e colunas referentes às portas B, C e D do Atmega (PB0 a PB7, PC0 a PC7 e PD4 a PD7).
Para conectarmos as chaves nesta placa devemos conhecer este mapeamento pois ele é fundamental para nos guiar na montagem do painel.
Cada conector (de J3 a J15)  está ligado a uma matriz, formada pelo cruzamento das tres portas informadas acima.
Analisando a figura abaixo, vemos as matrizes que compõem os conectores J3 a J10 (para as chaves tipo Push Button).

Mapeamento das chavesPara o J3, por exemplo, qualquer chave que for pressionada irá fechar uma das portas C (PC0 a PC7) à porta B0 (PB0).
Observe no detalhe as chaves 0,1,2,3 e 4.
O mesmo é válido para os demais conectores (J4 a J10), porém o que muda é a porta B que será fechada com as demais portas C (agora de PB1 a PB7).
A porta D (PD4 a PD7) não aparece nesta figura pois é da matriz dos conectores J11, a J15 (Chaves Toggle, Rotary switches e jumpers de configuração).
A placa Megajoy possui 2 modos de configuração de mapeamento (Modo 0 e Modo 1), selecionáveis através do Jumper “MODE“.  Quando usamos o Modo 1, Primeiramente definimos as chaves Push Button, depois as Toggle e em seguida as Rotary switches. Se o Modo 2 for selecionado, teremos inicialmente as Rotary switches, depois as Toggle e finalmente as chaves Push Buttons.
Essa configuração foi implementada devido ao fato de que,  em algumas antigas versões, o Windows não reconhecia mais que 32 botões por joystick instalado.  A partir da versão 5 do DirectX isso foi resolvido, mas o FS2004 ainda preserva este problema.
Então, se você pretende usar primeiramente as 4 Rotary  switches e depois as 16 chaves Toggle, o modo a ser usado deverá ser o 2, mas se quiser usar os 64 Push Buttons e depois as 16 chaves Toggle, o modo a ser usado será o 1. As tabelas completas dos mapeamentos das chaves são mostradas abaixo, conforme os modos 1 e 2:

Mapeamento Modo 1
Mapeamento Modo 2
Baseado na tabela do MODO 1, vemos que as 64 posições iniciais são as chaves tipo Push button. Em seguida temos as 16 chaves tipo Toggle, da seguinte forma:
Quando a primeira chave estiver ABERTA (1), será simulada a chave nº 65 na tabela, e quando esta mesma chave estiver FECHADA, a simulada será a chave nº 73.
Isso se aplica as demais chaves, da 66 até a 96, sendo que uma mesma chave Toggle (física) ocupa 2 posições na tabela, ou seja, uma aberta e uma fechada.
Logo em seguida temos as 4 Rotary switches (97 a 112) , que funcionam da seguinte forma na tabela:
A Rotary 1 ocupa as posições 97, 98, 105 e 106.
Se esta chave for girada LENTAMENTE e no sentido HORÁRIO (CW), a simulação será a chave nº 97.
Se esta mesma chave for girada LENTAMENTE no sentido ANTI-HORÁRIO  (CCW), a simulação será a chave nº 98.
Se esta mesma chave for girada RAPIDAMENTE no sentido HORÁRIO  (FCW), a simulação será a chave nº 105.
Se esta mesma chave for girada RAPIDAMENTE no sentido ANTI-HORÁRIO  (FCCW), a simulação será a chave nº 106.
Seguindo este exemplo, podemos analisar as demais Rotary switches, pois o funcionamento é idêntico.
A tabela 2 mostra a inversão das chaves conforme descrito anteriormente (primeiro as Rotary, depois as Toggle e por último as Push Button).
A utilização de um modo ou outro vai depender do projeto do usuário.
Nota: O Windows reconhece até 32 chaves, então um recurso utilizado para reconhecimento das 112 chaves é o programa MjoyMapper (http://www.sotaoptics.com/download/misc/MJoyMapper.zip). Este programa é bem pequeno e basta que sejam definidas as 112 chaves conforme a necessidade do simulador.
Bem, depois dessa explicação do mapeamento, vamos para as ligações das chaves.

Ligação das chaves tipo Push button:

chaves push button
Existem vários fabricantes e modelos desse tipo de chave, então vou usar como exemplo um tipo bastante comum, que é a da série 31.000 Margirius, mas nada impede que seja usada de outro modelo ou fabricante.
Este push button possui um visor transparente, onde podemos colocar uma lâmpada. A Metaltex tem muitos modelos que possuem 1 ou 2 leds internos, mas para usar esse tipo de push button devemos ter uma placa para seu acionamento (as placas do FSBUS ou similares).
Esse tipo de chave deverá ser ligado nos conectores identificados como J3 a J10 (lado direito da placa) conforme mostrado a seguir:

Ligação dos Push Buttons

Como mostrado no detalhe, cada conector (J3 a J10) possui uma linha de terminais comuns, ou seja, todas as chaves deverão ser ligadas desses pinos para os pinos logo abaixo, como mostrado no desenho.
Se a placa for configurada como MODO 1, o primeiro Push Button será a chave nº 1, o segundo será a chave nº 2 e assim sucessivamente até o Push Button 64.
Mas se o MODO 2 for o escolhido, o primeirao Push Button será a chave nº49, o segundo será a chave nº 50 e assim até o último Push Button (chave 112).
Para esta orientação, siga as tabelas mostradas acima (mapeamento).


Respostas

  1. Exelente a explicação do projeto.
    Como no tutorial das placas Fsbus Com, e as demais, ficou uma jóia.
    Eu comprei do Jean as seguintes placas: COM, Display para os rádios, a LED, a IO,e tambem
    uma Steppmotor, e agora que eu montei a COM, mas não consegui testar pois requer uma dll e eu encontrei um montão de arquivo na internet e não sei qual baixar pra fazer os testes. Estou acompanhando seus artigos pra tirar minhas dúvidas. São exelente, você é mestre.
    Valeu

  2. Belo tutorial, parabéns.

    A um bug no modo 2 do Mjoy16, que limita o numero de botões push button neste modo.

    Para emular os botões acima do 32 o SVMapper é melhor que o MjoyMapper, pois acrescenta funçõs como delay, repeat, distinção entre chave ligada e desligada… É um aperfeicoamento do MjoyMapper
    desenvolvido por terceiros.

    Av8r.

  3. Olá.
    Pesquisando sobre cockpit caseiro, encontrei este pagina e gostei dos recursos que podem ser feitos com a Megajoy.
    Gostaria de saber de seu valor e como posso adquerir?

  4. Gente, quem é Jeam. Onde eu posso comprar esse placa ?

    Abraço gente
    Ward

  5. Maravilhoso tutorial, assim fica bem prático seguir com o projeto, e da mais vontade de seguir com o restante das placas Fsbus.
    Valeu…

    Luis Durans

    • Obrigado pelos elogios Luis,

      Estou meio parado nessas placas devido ao trabalho, mas assim que puder colocarei mais informações sobre tais placas.

      Abraços,

      Antonio Augusto


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Categorias

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.