Autor Wątek: USB - możliwości joysticków  (Przeczytany 5432 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Sundowner

  • *
  • Chasing the sunset
USB - możliwości joysticków
« dnia: Października 07, 2005, 18:04:35 »
Od razu napiszę, żeby nie było nieporozumień: piszę tutaj wyłącznie o joystickach tradycyjnych nie posiadających układu FF, jako, że w chwili obecnej układ ten wymusza mniejszą precyzję o ponad połowę (max 512 punktów).

Rozpoczynając prace projektowe nad joystickiem pierwszą rzeczą jaka przychodzi do głowy, jest pytanie – czy zrobić joystick podłączany pod USB, czy może pod port MIDI ?

No cóż GamePort odchodzi powoli do lamusa, żadna z nowych płyt głównych już go nie ma, zamieniony został na większą liczbę bardziej uniwersalnych wejść USB i FireWire, poza tym na MIDI możemy zrobić kontroler z 4 przyciskami i 4 osiami, by mieć więcej musimy i tak w jakiś sposób zakodować informacje z joy’a a potem dekodować je jakimiś sterownikami. Zbudowanie zaawansowanego joysticka USB jest dużo łatwiejsze, szczególnie od czasu gdy dostępne są plany układów Mjoy, nie wymagające żadnych dodatkowych sterowników, wymagają tylko lutownicy i kilkunastu elementów elektronicznych.

Precyzja joysticka oczywiście zależy od ilości danych jakie jesteśmy w stanie przesłać – w wypadku MIDI były to wartości 16 bitowe czyli cały zakres ruchu joy’a można było podzielić na 32768 punkty, czyli przyjmując że joystick ma zakres ruchu równy 40 stopniom od jednego krańcowego położenia do drugiego, mamy rozdzielczość dochodzącą do 0.0013 stopnia. Jest to totalny Overkill w wypadku joysticków jakie normalnie możemy zakupić, gdyż żaden nie ma aż tak dobrych potencjometrów, które mogłyby wychwycić taka zmianę kąta. W wypadku klasycznych konstrukcji pod USB ilość informacji jest ograniczona do 10 bitów na oś, co daje nam 1024 punkty, czyli możemy mierzyć z dokładnością do 0.04 stopnia , co w wypadku konstrukcji dostępnych w sklepie nadal jest wartością jedynie teoretyczną, gdyż jakość użytych w nich potencjometrów również pozostawia wiele do życzenia i nie wydaje mi się by były w stanie zmierzyć wychylenie z dokładnością większą od 0.2 stopnia. Gdybyśmy zagłębili się w kod źródłowy Mjoy’a prawdopodobnie moglibyśmy zmienić go by całą przepustowość wykorzystywaną na 6 osi była wykorzystywana tylko przez 2, co oczywiście skutkowałoby 12 bitami danych na oś i dokładnością do 0.014 stopnia. I natrafiamy na pierwsza barierę jaką jest czułość potencjometrów – oczywiście jest zbyt mała !

W tym momencie możemy sięgnąć po coś innego lub po potencjometry wyższej klasy.

Potencjometry precyzyjne, które być może dały by nam możliwość dojścia do takiej precyzji pomiarów niestety tanie nie są, a ich ceny zaczynają się od 200 euro, a potrzebujemy takie dwa ;) możemy oczywiście zrobić przekładnię pozwalającą na wykorzystanie większego zakresu potencjometru, jednakże komplikuje to budowę i należy pamiętać przy jej konstruowaniu by uwzględnić mechanizm kasowania luzów.

Co mamy oprócz potencjometrów oporowych ? Mamy czujniki halla, „potencjometry optyczne” i tensometry.

Czujniki halla oczywiście tanie nie są, choć mają całkiem niezłą renomę jako dodatek do Cougara dlatego nie będę ich tutaj opisywał.

Natomiast przy optyce zatrzymam się na chwilę gdyż sprawa wymaga omówienia i jest całkiem ciekawa. Zastosowanie tzw „optycznych potencjometrów” pozwala na stworzenie joysticka prawie całkowicie „care free” teoretycznie taki układ nigdy się nie zajeździ i nigdy nie straci na precyzji, stosowany jest w takich machinach jak Saitekowskie X52 i EVO Force, oraz nie produkowanych już joystickach Microsoftu – Precision i Sidewinder. Czymże jest ten potencjometr optyczny? A no niczym szczególnym, jeżeli ktoś kiedyś rozbierał mysz kulkową, cała zabawka składa się z ośki, na której jest tarcza ze szczelinami, przez które świecą niesymetrycznie ustawione diody IR , światło przechwytują receptory i wysyłają jako impuls do układu zbornego, który liczy te impulsy i według kolejności ich przychodzenia stwierdza, czy ruch odbywa się w lewo, czy w prawo. Wszystko ładnie, pięknie, ale problemem jest precyzja i rozmiary. Jeżeli chcemy większej precyzji, musimy zrobić więcej szczelin i o mniejszej ich szerokości – oczywiście tutaj w pewnym momencie trafiamy na problem technologiczny, bo nie możemy zejść poniżej pewnej szerokości otworów, oraz konstrukcyjny, bo nagle tarcza zaczyna nam zajmować tyle miejsca co joystick – w zasadzie nie tędy droga, powszechnie korzysta się z przekładni zwielokratniających prędkość obrotu , tutaj natrafiamy na kolejny problem jakim są luzy na kołach zębatych (potrzeba ich kasowania) oraz rozmiary tychże przekładni.

Dla przykładu – dla konstruowanego przeze mnie joy’a doszedłem do wniosku iż zaprojektuje go tak by możliwe były wychylenia o maksymalnie 25 stopni, a sama wajcha będzie miała około 30cm wysokości, co w efekcie daje mi dokładność pomiaru do 0.25mm ruchu przy wykorzystywaniu tylko 10 bitów informacji na oś. Jest to wartość w miarę normalna i w pełni można wykorzystać taką dokładność… problemem natomiast staje się układ mający to wychwycić. Nagle okazało się, że gdybym skonstruował potencjometr optyczny z talerzem z 36 otworami, to musiałbym wykonać do niego przekładnię zmieniającą szybkość obrotu 1:200 ! Absurd. I od razu wiadomo dlaczego czujniki zastosowane w X52 nie przypadają ludziom do gustu – po prostu mają o wiele za małą precyzję !

Na koniec pozostał nam pomiar siły przyłożonej na drążek, czyli system znany z F-16 plusem jest wystarczająca precyzja i łatwość wykorzystania, problem pojawia się w trakcie użytkowania W F-16 joystick porusza się o bardzo mały zakres, aby dać pilotowi choć trochę informacji co robi, jednakże ilości siły my sami nie możemy przecież zmierzyć i nie wiemy czy nie dajemy jej za dużo – to jest zawsze największy problem młodych pilotów na tych maszynach. Rozwiązanie tego problemu jest bardzo proste – zastosować system znany z samolotów F-15, F-14D i F/A-18– to są samoloty systemami kontroli lotu półaktywnymi i aktywnymi FBW. Ich drążki poruszają się jak w klasycznych myśliwcach, jednakże nie mierzy się ich wychylenia. Wychylają się tylko dlatego by pilot dokładnie wiedział co robi z maszyną, a w wypadku gdy układy FBW zawiodą, by mógł działać z wystarczającą siła na stery poprzez awaryjne połączenia mechaniczne. Informacje dla FBW zbiera układ identyczny z  tym stosowanym na F-16 – mierzącym siłę na drążku. Im drążek dalej wychylamy, tym układ go centrujący działa z większą siłą = musimy większa siłę przyłożyć by go pokonać i ta siła jest właśnie mierzona. Oczywiście nadal problemem pozostaje cena tensometrów, jednakże będąc tańsze od czujników halla i potencjometrów precyzyjnych, a posiadające większą dokładność niż układy optyczne dają nam spore możliwości.

Tyle na temat najważniejszego elementu w naszych joyach, reszta jest już prosta.

Offline Ros

  • *
  • Uziemniony
Re: USB - możliwości joysticków
« Odpowiedź #1 dnia: Października 07, 2005, 18:34:54 »
Cytat: Sundowner
Tyle na temat najważniejszego elementu w naszych joyach, reszta jest już prosta.

Taaa, jak dla kogo :D To podaj mi listę części do kupienia i Twój nr konta i poproszę taki joystick :D Sorry za OT, ale nie mogłem się powstrzymać widząc Twój tekst.
Pozdrawiam
Though I fly through the Valley of Death I shall fear no Evil for I am at 80,000 feet and climbing
36 Quai des Orfevres

Offline Sundowner

  • *
  • Chasing the sunset
USB - możliwości joysticków
« Odpowiedź #2 dnia: Października 07, 2005, 19:40:22 »
Pisząc o "reszcie" miałem na myśli przyciski itp. ale samo zaprojektowanie i wykonanie wajchy trudne nie jest.

Zależy od tego co chcemy zrobic i z czego, bierzemy pilnik, piłę i trochę gwoździ, albo znajdujemy kogoś z obrabiarkami CNC (dwa ekstrema ;) ). Można też np wykorzystac posiadanego juz joya, tylko go odpowiednio przerobic, by dobic do możliwości jakie daje ci układ Mjoy.

Aby zaprojektowac własnego joya potrzeba zaledwie kartki, ołówka i linijki (choc dwie ekierki i cyrkiel znalazłyby zastosowanie ;) ) i podstawowa wiedza z rysunku technicznego, jaka przykładowo mi była wpajana w szkole podstawowej na zajęciach z techniki. Można tez wykorzystac bajeczny program co sie zowie Solid Works gdzie projektowanie jest prostsze niż doliczenie do 10, a projektujemy od razu części w 3D i jako wynik możemy miec program dla obrabiarki CNC, lub rysunki techniczne D, a po drodze możemy jeszcze sprawdzic jak elementy będą ze sobą współpracowac. Natomiast jak ktoś czuje się dobry z matematyki to może użyc AutoCAD'a i tam odpowiednie rysunki wykonac, a i CorelDRAW też może do tego posłużyc.

Wykonanie może byc jeszcze łatwiejsze, wystarczy podstawowa wiedza z obróbki materiałów, jaką jeżeli nikt nie nabył w szkole średniej, technikum, wyższej, czy na zajęciach kółka żeglarskiego ( ;) ) to może znaleźc w internecie, do którego wszyscy mamy dostęp, a nawet jak ktoś jest bardziej leniwy, bądź ma wyższe ambicje może poszukac kogoś takiego jak nasz Olo8 czy Waylander, kto ma dostęp do odpowiednich obrabiarek i materiałów.

Podstawa to miec pomysł i chęci (trochę pieniędzy tez się do tego przyda ;) )

Iche

  • Gość
USB - możliwości joysticków
« Odpowiedź #3 dnia: Października 07, 2005, 20:25:29 »
Cytuj
Czymże jest ten potencjometr optyczny? (...)
Jeżeli chcemy większej precyzji, musimy zrobić więcej szczelin i o mniejszej ich szerokości – oczywiście tutaj w pewnym momencie trafiamy na problem technologiczny, bo nie możemy zejść poniżej pewnej szerokości otworów,


No nie możemy, ale dostepne są sensory z tarczami kodowymi:
http://www.wobit.com.pl/produkty/przetworniki/obrotowo_kodowe/obrotowo_kodowe.htm

Cennik na dole :D.

Wychodzi jednak drogo. Jeżeli przy wychyleniu 25st., bez przekładni, chcemy uzyskać czułość 5 działek na 1 st. wychodzi przetwornik o czułości 1800 działek/obrót - około 400 zł. No i rozmiary, z tego co mi sie wydaje trochę za duże na joystick.

Waylander

  • Gość
USB - możliwości joysticków
« Odpowiedź #4 dnia: Października 07, 2005, 20:58:35 »
Cytat: Sundowner
, albo znajdujemy kogoś z obrabiarkami CNC (dwa ekstrema ;)


 :twisted:  :twisted:  Zapraszam jakby co. Kolega o ktorym gadaliśmy na gg wczoraj zakupił nowe centrum obróbkowe  :twisted:  :twisted:  :twisted:  Jest kosmiczne  :twisted:  :twisted:  8)  :D  :mrgreen:

Offline Josiv

  • *
  • Zerstörer
    • http://www.kg200.zary.com.pl
USB - możliwości joysticków
« Odpowiedź #5 dnia: Października 07, 2005, 21:39:06 »
Ciekawy artykuł z tym jest jedno ALE co do dużego błędu merytorycznego.
X52 nie posiada "potencjometrów optycznych" posiada sensory halla, ale tylko na 2 głównych osiach. Ponieważ jest to w miarę nowa technologia ( w joystickach) nie obeszło się bez problemów. Część egzemplarzy produkowanych w czasie okresu premiery joya od pewnego -do pewnego numeru fabrycznego ma przypadłość ogrooomnego deadzone.
W normalne egzemplarzach czułość jest całkiem dobra (nie wiem jaka). Jednak nadal mogła by być o niebo większa.
Za wielki deadzone w 1 partii i też za zmniejszoną (wykastrowaną) czułość, odpowiada ta sama rzecz. Otóż sensory Halla działają na podstawie prawa halla :P (tak sobie napisalem  głowy nie dam :) ) i żeby wyniki na kabelku przypominały te z potencjometrów zwykłych potrzeba jeszcze jedna kość sterująca, gdzie na stale (hardware) jest wpisany deadzone i jaka krzywą są modelowane odpowiedzi sensora. I tutaj  próba korekcji nie liniowej odpowiedzi sensorów halla wyszła średnio (a czipu za bardzo przeprogramować nie można). Na szczęście świetna rosyjska tradycja rozwiązywania problemów młotkiem dala kolejne nadspodziewane efekty. Wystraszy zrobić prosty układzik wzmacniacza logarytmicznego i mamy brak deadzone oraz piękny liniowy przebieg. Wsadzamy go za czujnikiem przed wejściem na płytkę.
Więcej na: http://www.simhq.com/simhq3/sims/boards/bbs/ultimatebb.php?ubb=get_topic;f=127;t=000568#000000
http://redclones.netsoft.ru/phpBB2/viewtopic.php?p=10533#10533
http://forum.sukhoi.ru/showthread.php?p=514245#post514245
_____ | _____             █▀ ██ ▀█▀      ORLIK
 _\__(o)__/_                   ▼             /
      ./ \.                www.eagles.pl ---
Graf -1973-†2006 ..ó?o........ó?o.ó?oó?o...

Offline Sundowner

  • *
  • Chasing the sunset
USB - możliwości joysticków
« Odpowiedź #6 dnia: Października 07, 2005, 23:21:13 »
Ciekawe, nie wiedziałem, że X52 na hallach jest, gdzieś zasłyszałem, że też na optykach.

Schmeisser

  • Gość
USB - możliwości joysticków
« Odpowiedź #7 dnia: Października 08, 2005, 10:35:58 »
A ja jestem zatwardziałym przeciwnikiem usb jako interface joysticka z kilku zasadniczych powodów które po raz kolejny tu wymienie.

- rozdzielczość sygnałowa - na dobrą sprawę czy jest to 10 czy 16 bitów nie jest istotne. Istotne jest to by joystick miał minimum 1024 punkty na oś ( dla sturmovika oczywiscie , dla locka moze być i 256). Dla mnie preferowalne jest 1800 -2000 punktów na oś. Powyzej tej wartości zaczyna się sajgon, gdyż sięgamy granicy technologicznej potencjometra węglowego, o czym wspomniał sun.
Maksimum tego co udało mi sie uzyskać z potencjometra i joya podpiętego na midi to 2500 punktów na oś.

Drugim , kto wie czy nie ważniejszym parametrem jest częstotliwość próbkowania i sposób czytanmia danych z urządzenia.
Magistrala USB, to w gruncie rzeczy taka miniaturowa sieć LAN w komputerze - z własnym protokołem transmisji , kolejką, priorytetami , etc.  Kontroler joysticka na USB co jakiś przedział czasu mówi do USB_huba 'mam dane - odbierzesz' , a hub odpowiada ' no dawaj
'. I wtedy jest git, gorzej jak odpowie 'czekaj , prześle tylko kilka pakietów dla drukarki, odbiore, kilkaq pakietów z modemu i sprawdzę czy mysz nie ma czegoś dla mnie'

A joystick jak to joystick, odpowiada ' no poczekam , przecież nie mam nic do gadania'
Częstotliwość odczytywania danych z joya na usb , wynosi do 60 Hz.

W przypadku interfacu MIDI wygląda to mniej więcej tak że zajeżdza przedstawiciel  biblioteki DirectInput do portu MIDI, skrzypiąc skórzanym płaszczem , wysiada z opla Blitza, i bawiąc sie zamkiem lugera mówi ' Poproszę dane na temat stanu lini cyfrowych ( buttony) oraz analogowych ( osie) '. Ta metoda w przypadku urządzenia nazywa sie pooling, i świat może się kończyć , na reichstagu powiewać kufajmański sztandar, ale stan portu midi zostanie sprawdzony zadaną , z góry określona ilość razy w ciągu sekundy. A nirazu więcej ani razu mniej, Befehl ist befehl und ordnung muss sein.

Defaultowo jest sprawdzany :D 22 000 razy na sekunde , czyli połowa możliwości standardowego portu midi, lub troszke poniżej tego co może dobra karta muzyczna. ( z oversamplingiem)

Co to powoduje ? Powoduje to iż przebiegi impulsów sterujących mają 'zaokrąglone' czy zbocza czy tez  obrazowo mówiąc 'mają więcej detali'  co w efekcie daje dużo bardziej dokładne  'czucie' maszyny oraz precyzję.

Dlaczego ? Z tego samego powodu dlaczego ruskie wygrały wojne :D Bo było  ich dużo - tak samo tutaj , może i interfejs jest podatny na zakłócenia, alecz dostarcza dużej ilośći danych , a tym samym obniża relatywny poziom szumów.


poniżej wykres
zielona krzywa - rzeczywisty przebieg impulsu
niebieska - krzywa Direct input po interpolacji danych z portu midi
żółta - po interpolacji danych z usb


na osi czasu
czerwone - punkty sprawdzania stanu midi
zółte - j.w dla usb

Jak widać stopien przekłamań maleje wraz z ilośćia pomiarów. W grze objawia się to charakterystycznym 'pływaniem' - podobnym do tego jakie odczuwamy ustawiając suwak filtrowania na MAX , który zresztą robi programowo to samo co widać na wykresie pracy sprzętu :)


Offline Sundowner

  • *
  • Chasing the sunset
USB - możliwości joysticków
« Odpowiedź #8 dnia: Października 08, 2005, 14:10:42 »
Wszystko się zgadza, z tym, ze nie bierzesz pod uwagę, tego co ja nazywam czynnikiem ludzkim - my nie możemy reagowac szybciej niż docierają do nas impulsy, a te docierają do nas tylko w postaci wizualnej, którą możemy próbkowac z częstotliwością max 30Hz, co oznacza, że USB daje nam dwa razy większą częstotliwośc niż jest nam potrzebna ;) więc nie powinniśmy odczuwac jakiejkolwiek różnicy między USB a MIDI i jeżeli ją odczuwamy to zdecydowanie coś innego jest tego przyczyną.

Natomiast podatnośc MIDI na zakłócenia, na co słusznie zwróciłeś uwagę jest już sporym problemem, bo bardzo ważną rzeczą jest powtarzalnośc pomiaru, a ta w wypadku urządzeń pod GamePort wypada gorzej niż USB.

PS i przestań bawic się tabletem, tylko zrób pożądny wykres w matlabie, statystyce, lub corelu !  :D

Bociek

  • Gość
USB - możliwości joysticków
« Odpowiedź #9 dnia: Października 08, 2005, 14:12:28 »
A ja proponuję podejść do problemu z drugiej, praktycznej strony. Nawet najlepiej wyłożona teoria nie działa na wyobraźnię tak jak praktyka. Dlatego też spory o to czy MIDI czy USB jest lepszy proponuję sprawdzić dzięki programowi testującemu JOYTESTER.
Tutaj jest link do owego programiku:
http://ilza.net/~eagles/download/joytester2.zip
Po ściągnięciu i uruchomieniu przeprowadzamy prosty test, mianowicie staramy się drążkiem zaktreślić spiralę o jak największej ilości okręgów. Warunek jest taki, aby nie nachodziły one na siebie. W przypadku zetknięcia się linii, test jest nieważny. Można go wielokrotnie powtarzać, ważne żeby uzyskać jak najlepszy wynik. Będą tu także wchodziły w grę inne czynniki - nie tylko elektronika, takie jak drżenie ręki i jakość mechanizmu. Jeśli się to uda, robimy PRINT SCREEN, zapisujemy jako plik graficzny i wrzucamy na forum.

Oczekuję na wyniki testów w szczególności posiadaczy MIDI i joyów opartych na rezystorach optycznych.
Poniżej zamieszczam wynik swojego testu - 11 okręgów. Zaznaczam że mam mjoya (USB) o mechaniźmie własnoręcznie wykonanym niecentrowanym.

Schmeisser

  • Gość
USB - możliwości joysticków
« Odpowiedź #10 dnia: Października 08, 2005, 15:55:49 »
Sun ja tą różnicę czuje, i widze na co moge sobie pozwolic z 500 punktami , 1000 i 1500 puniktów na oś , i wiem że róznice są spowodowane tylko i wyłącznie tym. Z Bockiem chwile przegadaliśmy i padło stwierdzenie że 'Mjoy zachowuje się zupełnie jak analogi które miałem wczesniej' , tak wiec nie tylko ja widzę tą różnice