Skocz do zawartości

[Czujniki] Czujnik przesunięcia z myszki optycznej


Elvis

Pomocna odpowiedź

Osobiście temat jest interesujący. Wydaje mi się, że do większość myszek będzie w ten sam sposób obsługiwany. Może trochę więcej detali opisu, przerobienia myszki by się przydało, w tej chwili trochę zbyt tajemniczo to brzmi.

Nie jako zmuszasz mnie do przyśpieszenia skończenia 2 części artykułu w której chcę też przedstawić moją wizję pomiaru przemieszczenia/prędkości.

Link do komentarza
Share on other sites

Wydawało mi się, że opis jest czytelny. Przeróbka była bardzo prosta. Pewnie inne myszki będą miały w innych miejscach podłączenia, więc nie piszę co gdzie jest na płytce. Każdy powinien szybko zorientować się co i jak.

1) podłączyłem GND płytki ewaluacyjnej do GND myszki (pin 6 układu PAW3101DB)

2) zasilanie 5V podłączone do zasilania myszy (pin 7)

3) wolny pin IO z płytki (wybrałem PG0) podłączyłem do SCLK (pin 4)

4) kolejny wolny pin IO (u mnie PG1) podłączyłęm do SDIO (pin 3)

Jedynie pkt.4 był ciekawy, pozostałe to proste podłączenie przewodów. Na płytce pompy linia SDIO była połączona przez rezystor 100Ohm. Dzięki temu podczas przełączania wysyłanie/odbieranie danych nie występuje zwarcie. Więc podłączyłem płytkę przez ten rezystor.

Pozostało jeszcze odłączyć układ który był w oryginalnej myszce - wystarczyło przeciąć ścieżki od SDIO i SCLK do niego.

Link do komentarza
Share on other sites

Ja sobie poradzę, tylko nie wiem jak inni by to odczytali. A jakby spojrzeć na myszkę jako całość, od razu odczytywać z linii PS/2? ( tak tylko rzucam hasłem, nie przyglądałem się jeszcze standardowi myszki PS/2)

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

PS/2 jest łatwo dekodować, trudniej byłoby w przypadku myszki po USB.

Ale moim celem nie było używanie całej myszy w robocie. Chciałem sprawdzić, czy ma sens wylutowanie sensora z myszki i użycie we własnym projekcie.

Po eksperymentach widzę, że największy problem to część mechaniczna. Soczewkę i czujnik trzeba bardzo dokładnie umieścić - najprościej wykorzystać kawałek obudowy myszki.

Spostrzeżeniami postanowiłem się podzielić i stąd ten artykuł 🙂

Link do komentarza
Share on other sites

PS/2 jest łatwo dekodować, trudniej byłoby w przypadku myszki po USB.

USB-->PS/2 (Nie wszystkie gryzonie tak działają)

VDC +5V 1 --- 4 VDC +5V

Data- 2 --- 1 Data

Data+ 3 --- 5 Clock

Ground 4 --- 3 Ground

IMG_4a7ed3185d5648493.gifIMG_4a7ed34369776141.gif

Link do komentarza
Share on other sites

Dioda led w myszce optycznej umieszczona jest tak, ze tylko przy bardzo niewielkiej odległości oświetla podłoże pod czujnikiem myszki - próbowałeś umieścić leda prostopadle do podłoża, żeby cały czas oświetlał podłoże pod czujnikiem?

Wydaje mi się, że to powinno pomóc.

Link do komentarza
Share on other sites

Co do przejściówki USB<->PS/2 to nie wiem na jakiej zasadzie to działa, ale to ciekawy offtopic. Może ktoś to kiedyś analizował? Bo chociaż elektrycznie przejściówka to nic wielkiego, to jednak protokół USB jest dużo bardziej skomplikowany niż PS/2. Ciekawe na jakiej zasadzie następuje wybór protokołów.

[ Dodano: 04 Sie 09 07:26 ]

Jak chodzi o led-a, to sprawdzę wieczorem czy oświetlenie podłoża da lepsze rezultaty.

Obawiam się jednak, że nie pomoże. W myszce, pod sensorem znajdują się 2 soczewki. Pierwsza jest przy sensorze, druga przy ledzie. Wygląda na to że sam sensor nie widziałby podłoża prawidłowo - wymaga soczewki (w datasheecie piszą o tej soczewce). Z drugiej strony soczewka prawdopodobnie ogniskuje na określoną odległość.

Soczewka przy ledzie pewnie nie jest konieczna, ale przez nią trudniej zamontować leda pionowo.

[ Dodano: 04 Sie 09 08:38 ]

Niestety pomimo wielu prób poprawy podświetlenia, nie udało mi się uzyskać układu działającego na odległość. Może komuś uda się to lepiej, ale według mnie sensor działa, tylko dociśnięty do podłoża. Czyli tak jak typowa myszka.

Link do komentarza
Share on other sites

Może lepsze wyniki osiągnął byś wykorzystując mysz laserową, zamiast opartej na zwykłym LED? Warto też może pokombinować z optyką (zmiana ogniskowej soczewek, żeby przystosować układ do pracy na większą odległość) - w każdym razie powodzenia z taką zabawą 😎

Link do komentarza
Share on other sites

Zastanawia mnie ten problem z odlegloscia od podloza. Dzisiaj mam troche wiecej czasu, juz dawno zdobylem myszke z ukladem pan3101 i zaczynam zabawe. Ciekawe co z tego wyjdzie, ja mam nadzieje ze uda mi sie chociaz osiagnac 1,5 cm od podloza.

Mozna cos pokombinowac z laserem od cd-romu, bardzo latwo tam sterowac glowica, Co moze by umozliwilo miec ruchoma ta soczewke.

[ Dodano: 07 Sie 09 02:55 ]

a wiec napisalem szybko kod w bascomie i nic nie ruszylo oto kod:

$regfile = "m32def.dat" 
$crystal = 8000000

$swstack = 200
$hwstack = 200
$framesize = 200

Config Lcdpin = Pin , Db4 = Porta.5 , Db5 = Porta.4 , Db6 = Porta.3 , Db7 = Porta.2 , E = Porta.6 , Rs = Porta.7

Dim Flaga As Bit
  Flaga = 0

Declare Sub Error

Declare Sub Myszka(byval Address As Byte , Byval Zapis As Byte) 
  Dim Stan As Byte
  Dim X As Byte
  Dim Y As Byte
  X = 0
  Y = 0

Config Sda = Portc.1
Config Scl = Portc.0

Cursor Off
Cls
Locate 1 , 1
Lcd "0" 
Do

  Call Myszka(&B00010000 , Stan) 

  If Stan.7 = 1 Then
     Call Myszka(&B00010001 , X) 
     Call Myszka(&B00010010 , Y) 
  End If

Locate 2 , 1
Lcd "X: " : Lcd X : Lcd "Y:" : Lcd Y

  If Err = 1 Then Call Error

Loop Until Flaga = 1
End

' *********** myszka *********
Sub Myszka(byval Address As Byte , Byval Zapis As Byte) 

I2cstart
  I2cwbyte Address                                         '0x16
  I2crbyte Zapis , Nack
I2cstop

End Sub

' ******** error *******
Sub Error

  Cls
  Locate 1 , 1
  Lcd "error" 
  Flaga = 1

End Sub

ma ktos pomysl co jest zle?

Link do komentarza
Share on other sites

Mogłbyś podać linka do datasheetu tego układu? Znalazłem tylko do PAN301A, do PAN3103 jakoś nie moge.

Program zupełnie nic nie wyświetla, czy czasem coś się pojawia przy ruszaniu myszą?

[ Dodano: 09 Sie 09 07:00 ]

Bascoma nie znam, ale zobacz czy parametr Zapis nie powinen być przekazywany przez referencję?

Sub Myszka(byval Address As Byte , Byval Zapis As Byte) 
Link do komentarza
Share on other sites

patrz prosze tylko na to czesc:


I2cstart
  I2cwbyte Address                                         '0x16
  I2crbyte Zapis , Nack
I2cstop

End Sub 

Kod mialem wczesniej napisany w 3 subach, ale stwierdzilem, ze nie bede robil siary i go troche zmniejsze.

Czasem cos sie wyswietla, ale totalnie bzdury, np. w Y pojawia mi sie czasem 127 i zawsze ta liczba i zawsze w Y.

Link do komentarza
Share on other sites

Nie wiem czy czytasz z dobrych rejestrów. Mam tylko datasheet do PAN301 i tam były inne numery rejestrów, dlatego pytałem o linka do dokumentacji.

W tym co znalazłem rejestr Delta_X ma adres 0x03, a Delta_Y 0x04. O ile rozumiem czytasz rejestry 0x11 i 0x12.

Link do komentarza
Share on other sites

Widzę, że te układy są prawie identyczne. Ja miałem problemy z odczytem z rejestrów 0x02, 0x03, więc czytam z 0x17 i 0x18 - tam już działa poprawnie.

Jesteś pewien, że te układy są zgodne z I2C? Ja ręcznie napisałem procedury komunikacji i działają. Przy i2c wyjścia są OC, a nie wiem, czy ten układ ma wbudowane podciągi.

Jak już coś odczytasz, to chyba jeszcze jeden błąd - rejestry Delta_X, Delta_Y zawierają przesunięcie od poprzedniego odczytu, więc trzeba ich wartości dodawać do większej zmiennej X i Y (większej niż 8 bitów). Poza tym Delta_ to 8-bitowe liczby ze znakiem. W C wystarczy rzutować na signed char i po kłopocie, nie wiem jak to uzyskać w bascomie.

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.