Opisuję tu projekcik na AVR do samodzielnego montażu:
W przypadku niektórych projektów bardzo przydatny jest obwód umożliwiający podłączenie 12 przycisków (w tym 4 przycisków kierunkowych) do komputera za pomocą portu USB. Oto kilka przykładów:
Domowy kontroler w stylu Arcade i małe szafki zręcznościowe
Prosty kontroler (1 przewód na przycisk) na USB. Np .: Neo-Geo, Atari ...
Korzystając z odpowiedniego oprogramowania po stronie komputera, wejścia można wykorzystać do innych celów. Np .: Przełączniki, wyłączniki krańcowe, alarmy ... Czystsze rozwiązanie niż modyfikacja istniejącego kontrolera gier
W zależności od twoich umiejętności możesz zbudować obwód na płytce uniwersalnej za pomocą elementów przelotowych lub zbudować wersję do montażu powierzchniowego za pomocą mojej małej płytki drukowanej PCB2 .
Nie wymaga sterowników!
Zgadza się, ponieważ standard USB określa klasy urządzeń. Używam ludzkiego urządzenia wejściowego (HID), które pozwala mi powiedzieć komputerowi, że podłączone urządzenie USB jest joystickiem i ma 2 osie oraz 4 lub 8 przycisków. Kolejną miłą rzeczą jest to, że adapter powinien współpracować ze wszystkimi systemami operacyjnymi obsługującymi urządzenia HID. (Przetestowałem i działa przynajmniej na Win98, Win2K, WinXP i Linux)
Ten projekt wykorzystuje mikrokontroler ATmega8 firmy Atmel. Ten mikrokontroler nie obsługuje USB w sprzęcie, więc użyłem tylko oprogramowania USB sterownika Objective Development . Sterownik ten pozwala mikrokontrolerowi AVR, np. ATmega8, na komunikowanie się przez USB z minimalnymi elementami zewnętrznymi. W rezultacie interfejs można łatwo i tanio zbudować
Pliki: ftp://ftp.piracz.com.pl/pubilc/public/R ... tick%20A8/
Wiele mikrokontrolerów ma tak zwane „bajty bezpieczników”. W przypadku ATmega 8a istnieją dwa bajty: bajt wysoki i bajt niski. Te bajty służą do konfigurowania niektórych aspektów mikrokontrolera. Jakiego rodzaju zegara użyć? Kryształ? Rezonator? Wewnętrzny zegar RC? Zezwolić na programowanie przez ISP? Bardzo ważne jest, aby ustawić bezpieczniki na właściwe wartości. Zastosowanie niewłaściwych wartości może sprawić, że MCU nie będzie nadawać się do użytku.
Oto odpowiednie wartości bezpiecznika dla tego projektu:
wysoki bajt = 0xc9 , niski bajt = 0x9f
Film komentujemy na forum PCB powstało na nowo https://youtu.be/rwl1kVxSlDE
Kontroler Joystick Atmega8
Czy jest dostępny kod źródłowy wsadu, bo jeśli tak, to można by zmienić część pinów z portu B na port D, tam jest sporo nieużywanych pinów, łatwiej by było projektować płytkę, bo linie SPI nie kolidowały by z liniami do manipulatora.
Na filmie robiłeś zasilanie AVR z 3.3V, czy nie należało by zastosować układu dopasowującego poziomy USB (+5V) do poziomów AVR, bo nie powinno się go sterować napięciami wyższymi od napięcia zasilania oraz czy R1 podciągający wejścia RX i TX do poziomu zasilania pozostaje na potencjale +5V z USB czy należało by go przepiąć do +3.3V?
No i jak wspominałeś na filmie, a w sumie tego nie zrobiłeś aż się prosi o rezystor na porcie RESET oraz o kondensatory odprzęgające 100n na VCC i AVCC, bo jeśli całość zasilana jest z USB to tam z +5V wychodzi sieczka jeśli chodzi o szarpnięcia zasilaniem i inne zakłócenia.
Na filmie robiłeś zasilanie AVR z 3.3V, czy nie należało by zastosować układu dopasowującego poziomy USB (+5V) do poziomów AVR, bo nie powinno się go sterować napięciami wyższymi od napięcia zasilania oraz czy R1 podciągający wejścia RX i TX do poziomu zasilania pozostaje na potencjale +5V z USB czy należało by go przepiąć do +3.3V?
No i jak wspominałeś na filmie, a w sumie tego nie zrobiłeś aż się prosi o rezystor na porcie RESET oraz o kondensatory odprzęgające 100n na VCC i AVCC, bo jeśli całość zasilana jest z USB to tam z +5V wychodzi sieczka jeśli chodzi o szarpnięcia zasilaniem i inne zakłócenia.
Dobre uwagi, ten schemat na forum jest na dużą atmegę 8 PU działa bez stabilizatorów ka na filmie przerabiam to na małą 20AL i tak się nad tym zastanawiałem diody zenera na 3,3V nie na 3,6V i r1 za lm 1117 3,3V to tylko tyle ze zmian no można reset podciągnąć do vcc R 10K
- BoloKonstruktor
- Posty: 2
- Rejestracja: środa 22 sty 2020, 10:13
- Lokalizacja: Gorlice
- Kontakt:
Źródło do tego sterownika jest dostępne na tej stronie: https://www.raphnet.net/electronique/us ... dex_en.php
W źródle jest wydzielony plik konfiguracyjny z definicjami pre-procesora więc łatwo można porty dostosować do projektowanej PCB.
[Poprawka]
Jednak nie ma tak dobrze. Z tego co na szybko przejrzałem to w pliku konfiguracyjnym w definicjach pre-procesora można ustawiać tylko porty do usb. Ale w plikach main.c i twelve.c można wejścia pozmieniać tylko niestety w kilku miejscach kodu więc, aż się prosi żeby dopisać konfiguracje wejść w definicjach pre-procesora, najlepiej w makrach.
W źródle jest wydzielony plik konfiguracyjny z definicjami pre-procesora więc łatwo można porty dostosować do projektowanej PCB.
[Poprawka]
Jednak nie ma tak dobrze. Z tego co na szybko przejrzałem to w pliku konfiguracyjnym w definicjach pre-procesora można ustawiać tylko porty do usb. Ale w plikach main.c i twelve.c można wejścia pozmieniać tylko niestety w kilku miejscach kodu więc, aż się prosi żeby dopisać konfiguracje wejść w definicjach pre-procesora, najlepiej w makrach.
Schemat już poprawiony do pobrania w eagle na ftp. link w poście
- Załączniki
-
- joy.jpg (114.83 KiB) Przejrzano 3679 razy
ale to nie ma znaczenia, w górę wszystkie chodzą do 5.5V, różnica jest od dołu zasilania, że schodzą aż do 2.7V i w częstotliwościach maksymalnych pracy, więc aby nie zaciemniać można by wywalić ten stabilizator.piracz pisze: ↑wtorek 18 lut 2020, 06:55 Dobre uwagi, ten schemat na forum jest na dużą atmegę 8 PU działa bez stabilizatorów ka na filmie przerabiam to na małą 20AL i tak się nad tym zastanawiałem diody zenera na 3,3V nie na 3,6V i r1 za lm 1117 3,3V to tylko tyle ze zmian no można reset podciągnąć do vcc R 10K
tak się zastanawiam także jakby płytkę zrobić w kształcie dongla wkładanego bezpośrednio do gniazda USB zawsze to kilka kabli mniej, można zrobić odpowiednio ukształtowany laminat ze stykami lub złącze lutowane (zrobienie laminatu w warunkach amatorskich trochę trudne w wycinaniu)