Come fa un topo a palla a conoscere la direzione?


27

Per ogni asse su un mouse meccanico (a sfera) c'è un trasmettitore IR e una coppia di ricevitori con una ruota che sembra avere solo semplici fessure.

Come viene calcolata la direzione?


1
Me lo chiedevo da un po ', grazie per avermelo chiesto!
mskfisher,

3
@weverever downvoted this - potresti almeno dire a zaf perché l'hai fatto? È una domanda perfettamente ragionevole
stevenvh,

Risposte:


36

Non c'è solo una coppia trasmettitore / ricevitore IR, ce ne sono due . Tra trasmettitori e ricevitori c'è una ruota scanalata, che, ruotando, provoca un impulso nel ricevitore. (La luce del trasmettitore è bloccata, può passare, bloccarsi di nuovo e così via.)

inserisci qui la descrizione dell'immagine

Il trucco è come vengono posizionati i due ricevitori, ovvero in quadratura.

inserisci qui la descrizione dell'immagine

Ciò significa che gli impulsi di un ricevitore precedono gli impulsi dell'altro di un numero di gradi (idealmente 90 °). Se la ruota gira dall'altra parte, gli stessi impulsi ora ritardano gli altri.

inserisci qui la descrizione dell'immagine

Notare che su un fronte di salita del canale A il canale B è ad alto livello quando si gira in una direzione e basso quando si gira nell'altra direzione.

modifica (sugli encoder assoluti)
Non ero completamente soddisfatto della mia risposta al commento di JGord (alcune imprecisioni), quindi questa ripresa
Il sistema sopra descritto è noto come encoder incrementale perché rileva cambiamenti relativi, da una posizione all'altra. Durante una rotazione completa, i codici vengono ripetuti più volte, quindi non puoi conoscere la tua posizione assoluta semplicemente guardando il codice.
Per ovviare a questo, esistono encoder assoluti . Invece di due canali in quadratura hanno molti più canali creando un modello unico per ogni posizione di rotazione. Un codificatore a 10 canali può distinguere o 1024 posizioni diverse. Gli encoder per alberi nei robot sono ancora più precisi. 210

inserisci qui la descrizione dell'immagine

Il modello specifico è tipico della codifica Gray .

sulla codifica Gray
Il binario ordinario ha lo svantaggio che le transizioni di codice possono creare codici errati durante la transizione. Prendi ad esempio la modifica da 0111(7) a 1000(8). Se il bit più a sinistra è un po 'più veloce degli altri, vedrai per un momento 1111(15), che è totalmente spento.
Il codice grigio risolve questo problema riorganizzando i codici in modo da modificare solo 1 bit alla volta.

Gli encoder assoluti non ti aiuteranno a trovare la posizione assoluta del mouse, poiché la ruota gira più volte mentre sposti il ​​mouse. Il modello "unico" si ripeterà ogni pochi mm e non è poi così unico. Inoltre, è sempre possibile spostare il mouse quando il computer è spento, oppure è possibile sollevare il mouse e rimetterlo un po 'più in basso. Entrambe le azioni non verranno rilevate.


Ulteriori letture
"Control Shaft Encoder" Circuit Cellar issue 250, maggio 2011, p.28 ss-


L'immagine nella risposta è rotta.
zaf,

Domanda: questo encoder ottico a doppio canale funziona per posizione e velocità, ma se fosse necessario conoscere la distanza totale? Quindi, per esempio, cosa succede se lo fai girare più volte, spegni il dispositivo, lo riaccendi più tardi e lo fai girare più volte. Sicuro di poter registrare ogni volta la distanza dalla memoria non volatile, ma esiste un modo meccanico per risolvere questo problema? Sto pensando nella direzione di un terzo canale abilmente posizionato ... ma non riesco a trovare nulla.
NickHalden,

@stevenvh - Ci stanno lavorando , gli URL vengono cambiati dallo standard i.imgur.coma stack.imgur.com.
Kevin Vermeer,

@stevenvh Hm, mi chiedo se qualcuno ha pensato di provare a usare le sequenze DeBruijn piuttosto che il codice grigio ...
NickHalden,

1
@stevenvh va bene, fondamentalmente ci sono due ricevitori alloggiati in una unità. Grazie.
zaf,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.