Comment une souris boule connaît-elle la direction?

27

Pour chaque axe sur une souris mécanique (boule), il y a une paire d'émetteur et de récepteur IR avec une molette qui ne semble avoir que de simples fentes.

Comment la direction est-elle calculée?

zaf
la source
1
Je me pose la question depuis un moment, merci de demander!
mskfisher
3
@qui a rejeté cela - pourriez-vous au moins expliquer à zaf pourquoi vous l'avez fait? C'est une question parfaitement raisonnable
stevenvh

Réponses:

36

Il n'y a pas seulement une paire émetteur / récepteur IR, il y en a deux . Entre les émetteurs et les récepteurs, il y a une roue à fentes qui, lorsqu'elle tourne, provoque un train d'impulsions dans le récepteur. (La lumière de l'émetteur est bloquée, peut passer, à nouveau bloquée, etc.)

entrez la description de l'image ici

L'astuce est de savoir comment les deux récepteurs sont placés, à savoir en quadrature.

entrez la description de l'image ici

Cela signifie que les impulsions d'un récepteur précèdent les impulsions de l'autre d'un certain nombre de degrés (idéalement 90 °). Si la roue tourne dans l'autre sens, les mêmes impulsions sont maintenant à la traîne des autres.

entrez la description de l'image ici

Notez que sur un front montant du canal A, le canal B est à un niveau élevé lorsque vous tournez dans un sens et à un niveau bas lorsque vous tournez dans l'autre sens.




210

entrez la description de l'image ici

Le modèle spécifique est typique du codage Gray .

à propos du codage Gray
Le binaire ordinaire a l'inconvénient que les transitions de code peuvent créer des codes erronés pendant la transition. Prenons par exemple le changement de 0111(7) à 1000(8). Si le bit le plus à gauche est un peu plus rapide que les autres, vous le verrez pendant un moment 1111(15), ce qui est totalement désactivé.
Le code gris surmonte cela en réorganisant les codes afin qu'il n'y ait qu'un seul changement de bit à la fois.

Les encodeurs absolus ne vous aideront cependant pas à trouver la position absolue de la souris, car la molette tourne plusieurs fois lorsque vous déplacez la souris. Le motif "unique" se répétera tous les quelques mm et n'est pas si unique après tout. De plus, il est toujours possible de déplacer la souris lorsque l'ordinateur est éteint, ou vous pouvez soulever la souris et la reposer un peu plus loin. Les deux actions ne seront pas détectées.



Stevenvh
la source
L'image dans la réponse est cassée.
zaf
Question: Cet encodeur optique double canal fonctionne pour la position et la vitesse, mais que faire si vous aviez besoin de connaître la distance totale? Ainsi, par exemple, que se passe-t-il si vous le faites tourner plusieurs fois, éteignez votre appareil, rallumez-le plus tard et faites-le tourner plusieurs fois. Bien sûr, vous pouvez enregistrer la distance à la mémoire non volatile à chaque fois, mais existe-t-il un moyen mécanique de résoudre ce problème? Je pense en direction d'un troisième canal intelligemment placé ... mais je ne peux rien trouver.
NickHalden
@stevenvh - Ils y travaillent , les URL sont passées de la norme i.imgur.comà stack.imgur.com.
Kevin Vermeer
@stevenvh Hm, je me demande si quelqu'un a pensé à utiliser des séquences DeBruijn plutôt que du code gris ...
NickHalden
1
@stevenvh bien, fondamentalement, il y a deux récepteurs logés dans une seule unité. Merci.
zaf