Como um mouse de bola sabe a direção?

27

Para cada eixo em um mouse mecânico (bola), há um par de transmissor e receptor de infravermelho com uma roda que parece ter apenas fendas simples.

Como é calculada a direção?

zaf
fonte
11
Eu estive pensando nisso por um tempo, obrigado por perguntar!
mskfisher
3
@ qualquer pessoa que tenha votado contra isso - você poderia ao menos dizer ao zaf por que fez isso? É uma pergunta perfeitamente razoável
stevenvh

Respostas:

36

Não há apenas um par transmissor / receptor de infravermelho, existem dois deles. Entre transmissores e receptores, há uma roda com fenda que, ao girar, causa um trem de pulsos no receptor. (A luz do transmissor está bloqueada, pode passar, bloqueada novamente e assim por diante.)

insira a descrição da imagem aqui

O truque é como os dois receptores são colocados, ou seja, em quadratura.

insira a descrição da imagem aqui

Isso significa que os pulsos de um receptor precedem os pulsos do outro em um número de graus (idealmente 90 °). Se a roda girar para o outro lado, os mesmos pulsos agora ficam atrás dos outros.

insira a descrição da imagem aqui

Observe que em uma borda ascendente do canal A, o canal B está em um nível alto ao virar para um lado e baixo ao virar para o outro lado.




210

insira a descrição da imagem aqui

O padrão específico é típico da codificação de Gray .

sobre a codificação Gray
O binário comum tem a desvantagem de que as transições de código podem criar códigos errados durante a transição. Tomemos, por exemplo, a alteração de 0111(7) para 1000(8). Se o bit mais à esquerda for um pouco mais rápido que os outros, você verá por um momento 1111(15), que está totalmente desligado.
O código cinza supera isso reorganizando os códigos para que haja apenas 1 bit mudando por vez.

Os codificadores absolutos não ajudarão você a encontrar a posição absoluta do mouse, no entanto, porque a roda gira várias vezes enquanto você move o mouse. O padrão "único" será repetido a cada poucos mm e, afinal, não é tão único. Além disso, sempre é possível mover o mouse quando o computador está desligado, ou você pode levantá-lo e colocá-lo novamente um pouco mais. Ambas as ações não serão detectadas.



stevenvh
fonte
A imagem na resposta está quebrada.
Zaf
Pergunta: Este codificador óptico de canal duplo funciona para posição e velocidade, mas e se você precisasse saber a distância total? Por exemplo, e se você girar várias vezes, desligar o dispositivo, ligá-lo mais tarde e girar mais vezes. Claro que você pode registrar a distância para a memória não volátil a cada vez, mas existe uma maneira mecânica de resolver esse problema? Estou pensando na direção de um terceiro canal habilmente colocado ... mas não consigo pensar em nada.
NickHalden
@stevenvh - Eles estão trabalhando nisso , os URLs estão sendo alterados do padrão i.imgur.compara stack.imgur.com.
Kevin Vermeer
@stevenvh Hm, gostaria de saber se alguém já pensou em tentar usar DeBruijn seqüências em vez de código cinza ...
NickHalden
11
@stevenvh certo, basicamente existem dois receptores alojados em uma unidade. Obrigado.
ZAF