¿Cómo sabe un ratón de bola la dirección?

27

Para cada eje en un mouse mecánico (bola) hay un par de transmisor y receptor IR con una rueda que parece tener solo ranuras simples.

¿Cómo se calcula la dirección?

zaf
fuente
1
Me he estado preguntando esto por un tiempo, ¡gracias por preguntar!
mskfisher
3
@ Quien haya rechazado esto, ¿podría al menos decirle a Zaf por qué lo hizo? Es una pregunta perfectamente razonable
stevenvh

Respuestas:

36

No solo hay un par transmisor / receptor IR, hay dos de ellos. Entre transmisores y receptores hay una rueda ranurada que, al girar, provoca un tren de pulsos en el receptor. (La luz del transmisor está bloqueada, puede pasar, bloqueada nuevamente, etc.)

ingrese la descripción de la imagen aquí

El truco es cómo se colocan los dos receptores, es decir, en cuadratura.

ingrese la descripción de la imagen aquí

Esto significa que los pulsos de un receptor preceden a los pulsos del otro en varios grados (idealmente 90 °). Si la rueda gira hacia el otro lado, los mismos pulsos ahora retrasan a los demás.

ingrese la descripción de la imagen aquí

Observe que en un borde ascendente del canal A, el canal B está en un nivel alto cuando gira en un sentido y en un nivel bajo cuando gira en el otro.




210

ingrese la descripción de la imagen aquí

El patrón específico es típico de la codificación Gray .

sobre la codificación Gray
El binario ordinario tiene la desventaja de que las transiciones de código pueden crear códigos erróneos durante la transición. Tomemos, por ejemplo, el cambio de 0111(7) a 1000(8). Si el bit más a la izquierda es un poco más rápido que los demás, verá por un momento 1111(15), que está totalmente desactivado.
El código gris supera esto reorganizando los códigos para que solo haya un cambio de 1 bit a la vez.

Sin embargo, los codificadores absolutos no lo ayudarán a encontrar la posición absoluta del mouse, porque la rueda gira varias veces mientras mueve el mouse. El patrón "único" se repetirá cada pocos mm y no es tan único después de todo. Además, siempre es posible mover el mouse cuando la computadora está apagada, o puede levantar el mouse y volver a bajarlo un poco más. Ambas acciones pasarán desapercibidas.



stevenvh
fuente
La imagen en la respuesta está rota.
zaf
Pregunta: Este codificador óptico de doble canal funciona para la posición y la velocidad, pero ¿y si necesita saber la distancia total? Entonces, por ejemplo, ¿qué sucede si lo hace girar varias veces, apaga su dispositivo, lo vuelve a encender más tarde y lo hace girar varias veces más? Seguro que podría registrar la distancia a la memoria no volátil cada vez, pero ¿hay alguna forma mecánica de resolver este problema? Estoy pensando en la dirección de un tercer canal ingeniosamente ubicado ... pero no se me ocurre nada.
NickHalden
@stevenvh: están trabajando en ello , las URL se están cambiando del estándar i.imgur.coma stack.imgur.com.
Kevin Vermeer
@stevenvh Hm, me pregunto si alguien ha pensado intentar usar secuencias de DeBruijn en lugar de código gris ...
NickHalden
1
@stevenvh bien, básicamente hay dos receptores alojados en una unidad. Gracias.
zaf