Skąd myszka z piłką zna kierunek?


27

Na osi mechanicznej myszy (kulkowej) znajduje się para nadajnika i odbiornika podczerwieni z kołem, które wygląda tak, jakby miało tylko proste szczeliny.

Jak obliczany jest kierunek?


1
Zastanawiam się od dłuższego czasu, dziękuję za pytanie!
mskfisher

3
@ ktokolwiek głosował za tym - czy mógłbyś przynajmniej powiedzieć zafowi, dlaczego to zrobiłeś? To całkowicie rozsądne pytanie
stevenvh

Odpowiedzi:


36

Nie ma tylko pary nadajników / odbiorników IR, są dwie z nich. Pomiędzy nadajnikami i odbiornikami znajduje się koło ze szczeliną, które podczas obracania powoduje ciąg impulsów w odbiorniku. (Światło z nadajnika jest zablokowane, może przejść, ponownie zablokowane itd.)

wprowadź opis zdjęcia tutaj

Sztuka polega na tym, jak umieszczone są dwa odbiorniki, a mianowicie w kwadraturze.

wprowadź opis zdjęcia tutaj

Oznacza to, że impulsy jednego odbiornika poprzedzają impulsy drugiego o kilka stopni (najlepiej 90 °). Jeśli koło skręci w drugą stronę, te same impulsy są teraz opóźnione względem pozostałych.

wprowadź opis zdjęcia tutaj

Zauważ, że na zboczu narastającym kanału A kanał B znajduje się na wysokim poziomie podczas skrętu w jedną stronę, a na niskim poziomie podczas skrętu w drugą stronę.

edit (o enkoderach absolutnych)
Nie byłem w pełni usatysfakcjonowany moją odpowiedzią na komentarz JGorda (niektóre nieścisłości), stąd ta powtórka
Opisany powyżej system jest znany jako enkoder inkrementalny, ponieważ wykrywa zmiany względne, z jednej pozycji do drugiej. Po pełnym obrocie kody są powtarzane kilka razy, więc nie możesz poznać swojej absolutnej pozycji, patrząc tylko na kod.
Aby temu zaradzić, istnieją enkodery absolutne . Zamiast dwóch kanałów w kwadraturze mają znacznie więcej kanałów, tworząc unikalny wzór dla każdej pozycji obrotu. 10-kanałowy koder może odróżnić lub 1024 różne pozycje. Enkodery wałów w robotach są jeszcze dokładniejsze. 210

wprowadź opis zdjęcia tutaj

Specyficzny wzór jest typowy dla kodowania Graya .

o kodowaniu Graya
Zwykły plik binarny ma tę wadę, że przejścia kodu mogą tworzyć błędne kody podczas przejścia. Weźmy na przykład zmianę z 0111(7) na 1000(8). Jeśli skrajny lewy bit jest nieco szybszy niż pozostałe, zobaczysz na chwilę 1111(15), co jest całkowicie wyłączone.
Szary kod rozwiązuje ten problem, zmieniając rozmieszczenie kodów, tak aby zmieniał się tylko 1 bit na raz.

Enkodery absolutne nie pomogą ci jednak znaleźć absolutnej pozycji myszy, ponieważ koło obraca się kilka razy podczas poruszania myszą. „Unikalny” wzór będzie się powtarzał co kilka mm i wcale nie jest taki wyjątkowy. Poza tym zawsze można poruszać myszą, gdy komputer jest wyłączony, lub możesz podnieść mysz i odłożyć ją nieco dalej. Oba działania pozostaną niewykryte.


Dalsza lektura
„Sterujące enkodery wału” Circuit Cellar numer 250, maj 2011, s. 28 i nast


Obraz w odpowiedzi jest uszkodzony.
zaf

Pytanie: Ten dwukanałowy enkoder optyczny działa dla pozycji i prędkości, ale co jeśli trzeba znać całkowitą odległość? Na przykład, co jeśli obrócisz kilka razy, wyłączysz urządzenie, włączysz później i ponownie kilka razy. Na pewno możesz za każdym razem rejestrować odległość do nieulotnej pamięci, ale czy istnieje mechaniczny sposób rozwiązania tego problemu? Myślę w kierunku sprytnie umieszczonego trzeciego kanału ... ale nic nie mogę wymyślić.
NickHalden

@stevenvh - Pracują nad tym , adresy URL są zmieniane ze standardowego i.imgur.comna stack.imgur.com.
Kevin Vermeer

@stevenvh Hm, zastanawiam się, czy ktoś pomyślał, aby spróbować użyć DeBruijn Sequences zamiast szarego kodu ...
NickHalden

1
@stevenvh w porządku, w zasadzie są dwa odbiorniki umieszczone w jednym urządzeniu. Dzięki.
zaf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.