atarionline.pl port joysticka a pomiar napięcia - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorbocianu
    • CommentTime5 Oct 2016
     
    Zastanawiam się, jak sprytnie i prosto wykorzystać wejścia wiosełek jako wejście analogowe (pomiar napięcia z zakresu 0-5).

    Defaultowo działają one jako pomiar rezystancji, zliczając ilość czasu potrzebnego do naładowania wewnętrznego kondensatora - czyli teoretycznie potrzebny byłby potencjometr 1M sterowany napięciem - czy nie da sie tego zrealizować jakoś prościej - kluczować to jakimś tranzystorem?
    Jestem noga jeżeli chodzi o elektronikę niecyfrową, więc tylko wydaje mi się, że tak można by to jakoś zrobić, ale do końca nie wiem jak :/

    Znalazłem tylko coś takiego:
    ->link<-

    Tu zmieniamy rezystancje tranzystora mikrofonem, który nie jest żródłem napięcia, więc pewnie 1:1 nie zadziała mi takie rozwiązanie - ale może ktoś wie jak z zrobić coś podobnego?

    Prostymi słowy - mam napięcie z zakresu 0-5v i chciałbym móc je w jakimś przybliżeniu odczytać przez port wiosełek.
    Każda pomoc mile widziana :)
    • 2: CommentAuthorwieczor
    • CommentTime5 Oct 2016 zmieniony
     
    Praktycznie to tak naprawdę w porcie wiosełek odbywa się właśnie pomiar napięcia z zakresu 0-5 :) Rezystor po prostu zmniejsza napięcie podawane z innego pinu. Jednakże uważałbym z podawaniem tegoż napięcia z zewnętrznego źródła. Teoretycznie używając tranzystora powinno się dać zrobić miernik w zasadzie dowolnego zewnętrznego napięcia (oczywiście nie wyłącznie tranzystora).
    • 3:
       
      CommentAuthorbocianu
    • CommentTime5 Oct 2016 zmieniony
     
    no właśnie nie uważałem i podałem tam napięcie z zewnętrznego źródła - ale nie działa to tak jak powinno :D a w zasadzie nie działa wcale :) cały czas dostaję 228 - niezależnie od napięcia wyjściowego.

    ale raczej nic nie popaliłem, bo wiosełka dalej czyta.

    Tak czy owak, utknąłem w martwym punkcie - mam trochę tranzystorów i oporników w domu, ale metodą prób i błędów chyba nic nie wskóram :D

    Brakuje mi wiedzy - liczę na Was.
    • 4:
       
      CommentAuthorbocianu
    • CommentTime5 Oct 2016
     
    @wieczor: no właśnie pomiar napięcia jest tylko teoretycznie - bo praktycznie to atari mierzy rezystancje, która ogranicza prąd ładowania.

    Czas ładowania kondensatora w pokeyu jest liniowo zależny od rezystancji wiosełka - napięcie na wiosełku jest zawsze 5v. Opornik jest włączony szeregowo, a nie równolegle (jako dzielnik napięcia), więc ogranicza nam prąd ładowania a nie dzieli napięcie. Przynajmniej tak to rozumiem ze specyfikacji pokeya i schematu podłączenia wiosełek.
    • 5: CommentAuthorrj1307
    • CommentTime5 Oct 2016
     
    To jest ciekawe: ->link<-

    Spróbował bym z transoptorem, od razu była by optoizolacja.
    • 6: CommentAuthormono
    • CommentTime5 Oct 2016 zmieniony
     
    @bocianu, wieczor: Dobrze Bocianu to rozumiesz.
    POKEY mierzy właśnie CZAS który mija od rozpoczęcia ładowania kondensatora do momentu osiągnięcia na nim napięcia referencyjnego. Rezystancja podpinana przez port joya ogranicza prąd ładowania kondensatora a więc reguluje prędkość z jaką zostanie osiągnięte na nim napięcie referencyjne.
    Wartość licznika CZASU można podejrzeć na bieżąco (jak rośnie) w rejestrze POTx ($D200..$D207).
    Pomiar startowany jest przez zapis do rejestru POTGO ($d20b) - wszystkie liczniki zaczynają wtedy zliczać od 0. Licznik jest zatrzymywany kiedy osiągnięte jest napięcie referencyjne na kondensatorze (komparator mówi, czy wartość napięcia jest mniejsza czy nie). Stany komparatorów dla kolejnych liczników znajdują się w POTST ($d208).
    Dokładność pomiaru, czyli zegar taktujący liczniki (fi2 lub fi2/114) ustawia się w SKCTL ($d20f). Pewnie zależnie od tego też zmienia się układ pomiarowy (albo dodatkowo ograniczany jest prąd).

    Edit: Na szczęście to wszystko jest niezależne od generowania dźwięku :)
    Wykorzystałem licznik POT7 (nie podpięty w XL/XE) z zegarem fi2/114 do zliczania linii skanningowych w programie demonstracyjnym dla VBXEFXULA :)
    • 7: CommentAuthorwieczor
    • CommentTime5 Oct 2016
     
    Wszystko pokaszaniłem - oczywiście prąd nie napięcie. Tranzystory FET w odpowiednich warunkach i zakresach zachowują się jak sterowany napięciem rezystor, ale to juz lepiej wygooglaj bo elektronik ze mnie teoretyczny i to orientacyjnie :)
    • 8:
       
      CommentAuthorbocianu
    • CommentTime6 Oct 2016
     
    no ja właśnie z tranzystorami tez raczej na bakier - wczoraj poczyniłem jakieś eksperymenty "na czuja", ale bez sukcesów.

    Zapytałbym na elektrodzie, ale pewnie dostane zjebę, że już było pincet razy :)
    • 9: CommentAuthorrj1307
    • CommentTime7 Oct 2016
     
    Jaką dokładność pomiaru potrzebujesz, tzn. z jakim skokiem? Czy pomiar co 0,02V byłby dobry? Czy zakres to tylko do 5V, bez możliwości podłączenia wyższego napięcia?
    • 10:
       
      CommentAuthorjhusak
    • CommentTime7 Oct 2016 zmieniony
     
    Na pierwszy rzut oka problem jest prosty, ale po zastanowieniu się nie jest. Pierwsze (właściwie drugie), co mi przychodzi do głowy to: nie da się.
    Ale jeszcze pomyślę, jak to zrobić nie-siłowo (tzn bez przetwornika AC lub co najmniej komparatora.)

    Bo z komparatorem jest prosto. Kondensator jest ładowany przez potencjometr. Trzeba napięcie z bolca potencjometru podać na jedno wejście komparatora, wyjście komparatora podać np. na przycisk nr 2 i mierzyć linię obrazu, w której zadziała komparator.
    • 11:
       
      CommentAuthorbocianu
    • CommentTime7 Oct 2016
     
    @rj1307 : dokładność do 0.02 w zupełności wystarczy. zakres tylko do 5v - zasilanie do urządzenia z którego czytam napięcie idzie też z portu joysticka.

    @jhusak: no, mi tez się wydawało proste, wszystko już polutowałem, przypinam i nie działa. I dopiero wtedy zacząłem myśleć i sprawdzać jak działa pokey i wiosełka. Nie wiem czemu, ale zawsze byłem przekonany że paddle to dzielnik napięcia, a tu taki zonk.

    A pomysł z komparatorem spoko, ale może być za wolny - musze zrobić około 10 pomiarów na ramkę - czyli i tak używam trybu szybkiego pomiary w pokeyu, bo wtedy mam co dwie linie odczyt.

    Myślę jeszcze o transoptorze z fotorezystorem? Może to jest jakieś wyjście? Musiałby mieć liniową chatakterystykę jak najbardziej... ale tam też pewnie trzeba jakoś sterować jasnością diody prądem, a nie napięciem z tego co pamiętam.
    • 12: CommentAuthormarekp
    • CommentTime7 Oct 2016
     
    Podłączałem kiedyś do Atari fotorezystor i działało to bardzo dobrze w połączeniu z normalną żarówką. (Albo diodami. Były ztcp 3 sztuki - 0: ciemno, 3 najjaśniej). Reszta to mozolna regulacja doświadczalna za pomocą oporników, papierków i kleju. Czyli ch..j nie precyzja i jakieś tam 0.000....00000002 czegośtam ;-). Mi wystarczało :-P
    @Bocian: Piszę bom ciekaw co to będzie robić?
    • 13:
       
      CommentAuthorbocianu
    • CommentTime7 Oct 2016
     
    marekp: tajemnica :D nie chcę psuć niespodzianki.
    • 14: CommentAuthorrj1307
    • CommentTime7 Oct 2016 zmieniony
     
    dokładność do 0.02 w zupełności wystarczy. zakres tylko do 5v - zasilanie do urządzenia z którego czytam napięcie idzie też z portu joysticka.

    Poszedł mail :)
    • 15: CommentAuthormono
    • CommentTime7 Oct 2016 zmieniony
     
    @bocianu: Podłączasz analogowy joystick do Atari? :>

    W jednym gnieździe joya masz 2 przetworniki AC, więc w dwóch gniazdach 4.

    Jeśli masz n źródeł multipleksowanych, to może wystarczyłoby po prostu zamiast multipleksować podać je jednocześnie na osobne przetworniki? Pomiar dokonywany jest przecież równocześnie.

    Jeśli masz jedno źródło to możesz spróbować zwiększyć dokładność pomiaru (przy pomiarze szybkim rozdzielczość pomiaru spada, bo najmłodszy bit jest nieważny) rozdzielając sygnał na wszystkie przetworniki np przez jakiś dzielnik i sumując z wagami wartości pomiarów. Ale wtedy chyba bez jakiejś elektroniki się nie obejdzie (tranzystory, diody itp).
    • 16:
       
      CommentAuthorjhusak
    • CommentTime8 Oct 2016 zmieniony
     
    Pomiar szybki zwraca binarne wartości, ale prawie natychmiast.
    Jak chcesz 10 razy na ramkę, to najprościej i najszybciej można to na atmedze zrobić, da się w pół godziny ze wszystkim zmieścić i mieć zrobione.
    • 17:
       
      CommentAuthorbocianu
    • CommentTime8 Oct 2016
     
    @mono: mam dwa źródła multipleksowane i korzystam z pot0 i pot1.
    Jak już mówiłem wystarczy mi pomiar niedokładny - byle coś mierzyło nawet zgrubnie, więc o jeden bit rozdzielczości mniej mi nie robi krzywdy. Potrzebuje zebrać 14 pomiarów na ramkę, czyli po 7 z każdego źródła, szybki pomiar daje zatem rade, pozostaje kwestia jak to napięcie zmierzyć :D

    @jhusak: zaprzęganie Atmegi to już będzie overkill, chciałem bardzo tego uniknąć. Myślałem że da się to jakoś prosto zrobić, ale chyba widzę, że porwałem się z motyką na słońce :)

    A tak na marginesie pytanko - do POTGO wpisujemy cokolwiek żeby rozpocząć pomiar? czy jakąś konkretną wartość?
    • 18:
       
      CommentAuthorjhusak
    • CommentTime8 Oct 2016
     
    Cokolwiek jak pamiętam.
    Ale eksperymentowałem z tym szybkim przetwarzaniem i wychodził mi jeden bit informacji, czyli nadaje się na jeszcze jeden szybki trigger. Może coś źle robiłem.

    @mono? opisz twoje doświadczenia.
    • 19:
       
      CommentAuthorbocianu
    • CommentTime8 Oct 2016
     
    mi na szybkim przetwarzaniu działa normalnie - jak daje potka, to zbiera pomiary z całkiem niezłą dokładnością. i mieści spokojnie 7 pomiarów w ramce - robię naprzemiennie strzał do POTGO i pomiar co 8 linii.
    • 20: CommentAuthorrj1307
    • CommentTime8 Oct 2016
     
    Jak już mówiłem wystarczy mi pomiar niedokładny - byle coś mierzyło nawet zgrubnie, więc o jeden bit rozdzielczości mniej mi nie robi krzywdy.

    Jeśli nie Atmega to możesz spróbować tak:
    Napięcie mierzone podaj na dzielnik napięcia 1:2 tak, by uzyskać zakres 0-2,5V. Następnie na wzmacniaczu operacyjnym dodaj offset tak, by na jego wyjściu uzyskać zakres jakiś 1-3,5V w zależności od zastosowanej diody. Z fotorezystora i diody LED zrób transoptor (wystarczy koszulka termokurczliwa, są takie gotowce ale cena ok. 30zl/szt.), fotorezystor musiał by mieć 1MOhm "na ciemno". Zasil diodę z wyjścia OP i podłącz fotorezystor pod port joya :)
    • 21:
       
      CommentAuthorbocianu
    • CommentTime8 Oct 2016
     
    @jhusak: a skąd czytałeś tę wartość która dawała Ci wynik jednobitowy? Tylko z allpot czy normalnie z pot0-7 jak przy odczycie wolnym?

    Mi też początkowo szybkie odczyty nie działały, bo nigdzie w dokumentacji ze znalazłem, że po każdym pomiarze trzeba rozładowywać kondensator. Normalnie robi to system w każdym VBLK, ale jak robisz więcej niż jeden odczyt w ramce, to musisz sobie sam zapewnić rozładowanie kondensatora ustawiając na chwilę 3 bit w SKCTL na 0 i potem spowrotem na 1 (fast pot read). Ja to robie przed każdym zapisem do potgo:

    LDA #3
    STA SKCTL ; zerujemy bit
    LDA #7
    STA SKCTL ; ustawiamy szybki odczyt
    STA POTGO ; zerujemy poty i startujemy nowy pomiar