Bagaimana mouse bola tahu arahnya?


27

Sumbu depan pada mouse mekanik (bola) ada pasangan pemancar dan penerima IR dengan roda yang terlihat seperti hanya memiliki celah sederhana.

Bagaimana arahannya dihitung?


1
Saya sudah lama bertanya-tanya, terima kasih sudah bertanya!
mskfisher

3
@ siapa pun yang menurunkan ini - bisakah Anda setidaknya memberi tahu zaf mengapa Anda melakukannya? Ini pertanyaan yang masuk akal
stevenvh

Jawaban:


36

Tidak hanya ada pasangan pemancar / penerima IR, ada dua di antaranya. Antara pemancar dan penerima ada roda berlubang, yang, ketika berputar, menyebabkan kereta pulsa di penerima. (Lampu dari pemancar diblokir, bisa lewat, diblokir lagi, dan sebagainya.)

masukkan deskripsi gambar di sini

Kuncinya adalah bagaimana kedua penerima ditempatkan, yaitu di quadrature.

masukkan deskripsi gambar di sini

Ini berarti bahwa pulsa dari satu penerima mendahului pulsa yang lain dengan sejumlah derajat (idealnya 90 °). Jika roda berputar ke arah lain, pulsa yang sama sekarang tertinggal dengan yang lain.

masukkan deskripsi gambar di sini

Perhatikan bahwa pada sisi naik dari saluran A, saluran B berada pada level tinggi ketika berputar ke satu arah, dan rendah ketika memutar ke arah lain.

edit (tentang encoders absolut)
Saya tidak sepenuhnya puas dengan balasan saya untuk komentar JGord (beberapa ketidakakuratan), maka reprise ini
. Sistem yang dijelaskan di atas dikenal sebagai enkode inkremental karena mendeteksi perubahan relatif, dari satu posisi ke posisi berikutnya. Selama rotasi penuh kode diulang beberapa kali, sehingga Anda tidak dapat mengetahui posisi absolut Anda hanya dengan melihat kode.
Untuk mengatasinya ada encoders absolut . Alih-alih dua saluran dalam quadrature mereka memiliki lebih banyak saluran menciptakan pola unik untuk setiap posisi rotasi. Encoder 10 saluran dapat membedakan atau 1024 posisi yang berbeda. Encoder poros dalam robot bahkan lebih akurat. 210

masukkan deskripsi gambar di sini

Pola spesifiknya khas untuk pengkodean Gray .

tentang kode abu-abu
biner biasa memiliki kelemahan bahwa transisi kode dapat membuat kode yang salah selama transisi. Ambil contoh perubahan dari 0111(7) menjadi 1000(8). Jika bit paling kiri sedikit lebih cepat daripada yang lain, Anda akan melihat sejenak 1111(15), yang benar-benar mati.
Kode abu-abu mengatasi ini dengan mengatur ulang kode sehingga hanya ada 1 bit yang berubah pada suatu waktu.

Encoders absolut tidak akan membantu Anda menemukan posisi mouse absolut, karena roda berputar beberapa kali saat Anda menggerakkan mouse. Pola "unik" akan berulang setiap beberapa mm dan tidak terlalu unik. Selain itu, selalu mungkin untuk memindahkan mouse saat komputer mati, atau Anda dapat mengangkat mouse dan meletakkannya lagi sedikit lebih jauh. Kedua tindakan tersebut tidak akan terdeteksi.


Bacaan lebih lanjut
"Encoder Shaft Kontrol" Masalah Cellar Circuit 250, Mei 2011, p.28 ff-


Gambar dalam jawaban rusak.
zaf

Pertanyaan: Enkoder optik saluran ganda ini berfungsi untuk posisi dan kecepatan, tetapi bagaimana jika Anda perlu mengetahui jarak total? Jadi misalnya, bagaimana jika Anda memutarnya beberapa kali, mematikan perangkat Anda, menyalakannya kembali nanti, dan memutarnya berkali-kali. Tentu Anda bisa merekam jarak ke memori non-volatile setiap kali, tetapi apakah ada cara mekanis untuk memecahkan masalah ini? Aku sedang berpikir ke arah saluran ketiga yang ditempatkan dengan cerdik ... tapi aku tidak bisa menemukan apa pun.
NickHalden

@stevenvh - Mereka sedang mengerjakannya , URL sedang diubah dari standar i.imgur.comke stack.imgur.com.
Kevin Vermeer

@stevenvh Hm, saya bertanya-tanya apakah ada yang berpikir untuk mencoba menggunakan DeBruijn Sequences daripada kode abu-abu ...
NickHalden

1
@stevenvh baik-baik saja, pada dasarnya ada dua penerima yang bertempat di satu unit. Terima kasih.
zaf
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.