-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: USB Gamepad - Redesign

  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222

    USB Gamepad - Redesign

    Anzeige

    Hi, ich habe hier ein altes Gamepad mit USB-Anschluss. Dieses möchte ich dazu nutzen meinen Roboter zu steuern.

    Den USB-Anschluss kann bzw. will ich nicht nutzen, da ich das Protokoll nicht kenne und ein reverse-engineering viel zu aufwendig bis kaum machbar ist. Daher möchte ich nur die Platine behalten auf der sich die Tasterkontakte befinden und mir ein eigenes Protokoll bzw. eigene Elektronik drumherum basteln.

    Im Grunde befinden sich auf der Platine diese typischen Drucktaster. Das einfachste wäre die Taster als Pullup zu verschalten und dahinter dementsprechend ein Latch in Form eines D-FF's. Damit ich nicht soviele I/O's verschenke, hab ich mir noch überlegt hinter den Latches einen Multiplexer zu packen, sodass ich nur ein I/O Pin + Takt brauche + paar Pins für den Multiplexer zum ansteuern. Bzw. den Takt erzeuge ich mit einem 2. I/O Pin. Komischerweise ist der "Joystick" nicht als Poti ausgeführt, sondern für die Richtung Links, Rechts Oben Unten als Drucktaster ausgeführt.

    Was mir grad einfällt, das ich extrem schnell abtasten muss, sodass mir kein Tastendruck entgeht.

    Schaltung, siehe Anhang "Gamepad design"

    Das Gamepad hat 12 Drucktaster, als D FF mit CLear Pin nehm ich zweimal den 74LS273 jeweils 8 Bit. Für den Multiplexer habe ich mir den 74HCT151 rausgesucht (8:1), kostet nur 20Cent.

    Anschließend will ich per USART-Schnittstelle, abhängig davon welcher Taster gedrückt wurde ein entsprechendes ASCII Zeichen an den Roboter senden.

    Was haltet ihr von der Schaltung, gibt es Einwände? Oder gibt es bessere Lösungen, Ideen? Vielleicht hat das jemand schon mal umgesetzt und hat wertvolle Tipps für mich

    Grüße
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken gamepad design.gif  

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Hallo!

    Mein Vorschlag wäre: dafür einen 8-bit Schieberegister 74XX166 verwenden und durch "/PE" gespeicherte D0-D7 seriell per 2 Pins "CP" und "D7" einlesen. Für mehr Bits kann man die Schieberegister kaskadieren.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Hey,

    an ein Schieberegister hatte ich auch erst gedacht, aber ich hatte diese in Errinnerung die einen seriellen Eingang und mehere paralelle Ausgänge haben.

    Das ist eine gute Idee und vielen Dank für den passenden Typ, mit 8 Eingängen und einem seriellen Ausgang spare ich mir den Multiplexer. So ein Schieberegister besteht ja auch nur aus D-FFs.

    Ich werde mir zwei solcher Bausteine besorgen und zunächst mit dieser Variante versuchen.

    Hast du zufällig einen solchen Baustein in deiner Bastelkiste? Dann brauch ich nicht extra wegen einem Baustein im Internet bestellen.

    Grüße

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Zitat Zitat von µautonom Beitrag anzeigen
    Hast du zufällig einen solchen Baustein in deiner Bastelkiste?
    Leider nicht, bloss die 164-er, da die 166-er ich schon lange nicht benötigt habe.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Schade,

    den 166-er konnte ich bei csd nicht finden, nehme stattdessen den 165 er, der sollte auch gehen, der hat noch einen zusätzlichen seriellen Eingang + invertierten Ausgang.

    Werde mal im Kaufen Forum nachfragen ob den jemand hat und eventuell gegen etwas tauschen würde.
    Grüße

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Ich habe bei mir noch zwei 74LS166 gefunden, sonst geht der 165-er genauso.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  7. #7

  8. #8
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Huhu,
    es tut sich was

    Die Taster des Steuerkreuzes kann ich schon mal abfragen. Hab nen kurzes Video gemacht.

    Sobald Taster "Up" betätigt wird, blinkt die LED einmal. Bei "Right" zweimal, "Left" dreimal und bei betätigen der "Down"-Taste viermal.

    Vielleicht ein paar kurze Wort zum Video. Auf der linken Seite sieht man das modifizierte Steuerkreuz des Gamepads. Auf dem Steckbrett befindet sich oben der 166er und dadrunter der Attiny2313. Zu Abfrage der Taster benötigt der 166 nur zwei Pins, ein Takt-und der ein Shift/*Load-Eingang.

    Bei Shift/*Load=0 werden die anliegen Pegel "gespeichert" im Datenblatt als Load bezeichnet. Sobal der Pegel wieder auf High ist, befindet sich der 166 im Shift Modus. Nun können die Bits per Takteingang geshiftet werden. Die geshifteten Bits können anschließend am QH Ausgang abgefragt werden. Wichtig ist zu wissen das nach dem "Load" Vorgang der anliegende Pegel am H-Eingang schon am Ausgang QH anlieget, dieses Bit muss man vor dem Shiftenabfragen, da es ansosnten verloren geht.

    Die Taster werden alle 60ms abgefragt, ich denke das sollte reichen um jeden Tastendruck zu regestrieren. Software ist noch nicht optimal aber für die ersten Tests reicht es. Notfalls werde ich zur Sicherheit die Taster mehrmals abfragen, so das ich sicher sein kann das die Pegel gültig sind.

    Hatte rein aus Neugier die Taster als Pulldown verschaltet um den Stromverbauch zu testen. Bei TTL ist es nicht sinvoll ist, wenn das ganze später Batterie betrieben wird, aufgrund des erhöhten Stromverbrauches im Ruhezustand. Hatte zuerst einen sehr großen Pulldown mit 10k genommen, gemessen habe ich 0,36V und das hat der 166er schon als high erkannt? Das habe ich noch nicht so ganz verstanden, laut Datenblatt liegt der max. Low-Pegel bei 0,8V. Werds nochmal nachmessen, den ich vermute das es ne höhere Spannung am Pulldown abfallen muss. Die Pullup-Version funktioniert zumindest.

    Der nächste Schritt wird die Kaskadierung zweier 166er, sodass ich alle Taster abfragen kann.
    In der Schaltung fehlt noch eine ganze Menge. Ein Schalter zum einschalten des Joypads, die Spannungserzeugung, Bluetooth-Modul zur kabellosen Übertragung und das dazugehörige Übertragungsprotokoll. Demnächst folgt der neue Stand.

    Für denjenigen, der sich mit dem 74LS166 auseinandersetzen muss bzw. sich für den Code interessiert, findet diesen im Anhang für den Attiny2313 und den dazugehörigen Schaltplan.

    Grüße
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken joypad_1.jpg  
    Angehängte Dateien Angehängte Dateien

  9. #9
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Zitat Zitat von µautonom Beitrag anzeigen
    Hatte zuerst einen sehr großen Pulldown mit 10k genommen, gemessen habe ich 0,36V und das hat der 166er schon als high erkannt?
    Für besseres Verständnis habe ich eine TTL Eingangsstufe skizziert, die in Datenblätter (DB) nur selten zu sehen ist. Der Eingang kann ruhig in "der Luft" hängen und dann wird er auch als high erkannt (bei CMOS nicht).

    Übrigens, bei kurzen Leitungen an TTL Eingängen ("Antennen" für Störungen) sind oft keine "pull-up's" notwendig.
    Code:
    
                       VCC          +-------+--------+
                        +           | TTL N | TTL LS |
                        |       +---+-------+--------+
                       .-.      | R |  4k   |   40k  |
                       | | R    +---+-------+--------+
                       | |
                       '-'
                        |
                       ---
                       v \--
                      / T
         Input >-----/
    
    (created by AACircuit v1.28.6 beta 04/19/05 www.tech-chat.de)
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von µautonom
    Registriert seit
    04.04.2007
    Ort
    Paderborn
    Beiträge
    222
    Hi,

    das Bild, das du als Code gezeichnet hast habe ich noch in einem Datenblatt für einen UND-Baustein gefunden, nur die Widerstandsangabe habe ich nirgends entdecken können In deiner Skizze erkennt man sehr gut, was passiert wenn man das ganze als Pulldown Version aufbaut. Es fließt im "Ruhezustand" ständig Strom durch den Pulldown-Widerstand.

    Die Kaskadierung läuft nun auch und ich kann alle Taster abfragen. Mir gefällt der Chip, da für die Kaskadierung nur eine kleine Änderung im Code benötigt wird, statt 8 mal muss 16mal getaktet werden Und man braucht insgesamt nur drei Pins. Schaltplan werde ich später hochladen, Eagle gefällt mir nicht, zu umständlich.

    Ich habe vor das Gamepad mit zwei 1,2V NiMH Akkus zu versorgen. Laut Messung vebraucht die gesamte Schaltung ca. 30mA. Jetzt ist die Frage ob eine Ladungspumpe ausreichend ist oder ich einen kleinen Step-Up aufbauen muss. Werde ich noch ausprobieren müssen. Wird ganz interessant sein, da ich noch nie eine Ladungspumpe aufgebaut habe, mal sehen wieviel Strom man unter "Last" erzeugen kann. Im Grunde muss ich 5V nur für den 166er erzeugen, also wird weniger Strom benötigt.

    Der Attiny2313 arbeitet schon bei 1,8V. Habe die Pegel für den 166er verglichen:

    Attiny2313 ( @Vcc=2,4V (2*1,2V) ):
    VOL=0,5V
    VOH=2,5V(min.)

    Die 2,5V sollten schon für einen Logic-Level Mosfet reichen, um diesen für die Ladungspumpe zu schalten.

    VIL=0,2*Vcc=0,48V(max.)
    VIH=0,7*Vcc=1,68V(min)

    74LS166 (@Vcc=5V):
    VIL=0,8V(max.)
    VIH=2V(min.)

    VOL=0,5V(max.)
    VOH=2,7V(min.)

    Die nächsten Erkenntnisse sowie Bilder werden hoffentlich folgen

    EDIT: Hab gerade im Datenblatt nachgesehen, leider habe ich nicht die V-Version des Attiny2313 die mit 1,8V versorgt werden kann, nur mit minimalen 2,7V

    Grüße
    Geändert von µautonom (15.12.2012 um 16:36 Uhr)

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Redesign Quadrocopter
    Von Che Guevara im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 1
    Letzter Beitrag: 06.10.2011, 09:01
  2. Antworten: 10
    Letzter Beitrag: 11.07.2011, 22:24
  3. Gamepad=>COM;VB(SharpDev)
    Von mar_phil im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 1
    Letzter Beitrag: 20.03.2008, 23:05
  4. Gamepad auslesen
    Von mar_phil im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 16.02.2008, 17:14
  5. Saitek Gamepad
    Von µautonom im Forum Elektronik
    Antworten: 13
    Letzter Beitrag: 09.06.2007, 11:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •