-         

Ergebnis 1 bis 8 von 8

Thema: USB Switch selber bauen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    25.01.2009
    Ort
    Wiesbaden
    Alter
    35
    Beiträge
    44

    USB Switch selber bauen

    Anzeige

    Moin zusammen und fröhliche Weihnachten,

    gleich vorneweg, ich erwarte über die Feiertage keine Antwort -> es gibt schließlich Wichtigers in diesen Tagen!!! Ich will es nur schonmal "loswerden".

    Also ich will mir einen kleinen USB-Switch bauen um zum Beispiel meinen Drucker an 2 PC's anzuschließen, und dann mittels Schalter den PC zu wechseln.

    Da ich noch Anfänger im Bereich der Elektronik bin, stelle ich mir das wahrscheinlich viel zu einfach vor, und übersehe einige grundlegende Details.

    Ich hoffe, dass mir jemand bezüglich meines angehängten Schaltplans und Controllercode, helfen kann dieses Projekt zu einem qualmfreien Ende zu führen.

    Ich bin mir nicht so schlüssig, ob ich was das "Durchschleifen" der Signale betrifft, so richtig vorgegangen bin. Müssen D- und D+gekreuzt werden?

    Gruß
    Demian

    Code:
    'General
    $regfile = "m8def.dat"                                      'ATMega8-Declaration
    $crystal = 3686400                                          'Quarz: 3,6864 Mhz
    
    'Interrupts
    On Int0 Switchusb                                           'USB-Switch Routine
    Enable Int0                                                 'activate INT0 interrupt
    Config Int0 = Rising                                        'when pushing button
    Enable Interrupts                                           'allow interrupts global
    
    'Variables
    Dim USB As Bit                                              '0=USB1, 1=USB2
    
    'Input USB
    Config Portb.0 = Input                                      'VBUS
    Config Portd.5 = Input                                      'GND
    Config Portd.6 = Input                                      'D+
    Config Portd.7 = Input                                      'D-
    
    'Output USB 1
    Config Portc.1 = Output                                     'LED
    Config Portc.2 = Output                                     'D-
    Config Portc.3 = Output                                     'VBUS
    Config Portc.4 = Output                                     'GND
    Config Portc.5 = Output                                     'D+
    
    'Output USB 2
    Config Portb.1 = Output                                     'LED
    Config Portb.2 = Output                                     'D-
    Config Portb.3 = Output                                     'VBUS
    Config Portb.4 = Output                                     'GND
    Config Portb.5 = Output                                     'D+
    
    'Initialize
    USB = 0                                                     'start with USB 1
    Portd.2 = 1                                                 'enable internal pullup for button
    
    'Mainloop
    Main:
    
    Select Case USB
          Case 0
             Portb.1 = 0                                        'USB 2 LED off
             Portc.1 = 1                                        'USB 1 LED on
             Portc.2 = Portd.7                                  'D- of USB Input to D- of USB Output
             Portc.3 = Portb.0                                  'VBUS from USB Input to VBUS of USB Output
             Portc.4 = Portd.5                                  'GND of USB Input to GND of USB Output
             Portc.5 = Portd.6                                  'D+ of USB Input to D+ of USB Output
          Case 1
             Portc.1 = 0                                        'USB 1 LED off
             Portb.1 = 1                                        'USB 2 LED on
             Portb.2 = Portd.7                                  'D- of USB Input to D- of USB Output
             Portb.3 = Portb.0                                  'VBUS from USB Input to VBUS of USB Output
             Portb.4 = Portd.5                                  'GND of USB Input to GND of USB Output
             Portb.5 = Portd.6                                  'D+ of USB Input to D+ of USB Output
    End Select
    
    
    Goto Main
    
    
    
    Switchusb:
    Toggle USB
    
    Return
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken usb_switch.jpg  

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    26.09.2006
    Ort
    Ruhrpott
    Beiträge
    70
    Hallo,

    ob sich der Aufwand lohnt so einen USB-Switch selbst zu bauen?

    http://www.pearl.de/c-1422.shtml

    Qualmfrei wird es wohl auch sein.

    MfG Karl

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    25.01.2009
    Ort
    Wiesbaden
    Alter
    35
    Beiträge
    44
    Moin Karl,

    naja, die Teile hätte ich alle hier, wenn das so wie in der Schaltung überhaupt funktioniert. Klar gibt es fertige Lösungen, aber da fehlt ja der Spaß an der Sache und das "Erfolgserlebnis".

    Gruß
    Demian

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    16.12.2009
    Ort
    Grünburg
    Alter
    22
    Beiträge
    24
    Wenn du deinen Drucker an mehreren Pc's anschließen möchtest würde ich das über ein Netzwerk lösen, dann haben alle zugriff auf den Drucker.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    25.01.2009
    Ort
    Wiesbaden
    Alter
    35
    Beiträge
    44
    das mit dem Netzwerk kann ich so leider nicht machen, weil das eine ein Dienstrechner ist und der andere mein privater.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Du willst doch nicht allen Ernstes die USB-Signale per Software weiterreichen?
    Mal kurz durchrechnen:
    Einen Durchlauf der mainloop würde ich mit mindestens 20 Takten veranschlagen. Das heißt, die Signale werden mit einer Frequenz von 184kHz abgetastet. Es lassen sich also laut Abtasttheorem höchstens Signale mit 92kHz übertragen.

    Nun werfen wir mal nen Blick in den USB-Standard.
    Selbst bei Low-Speed-Devices (üblich für Mäuse etc.) beträgt die Datenrate schon 1,5Mbit und somit ist die zu übertragende Frequenz 1,5Mhz. Der AVR ist daher viel zu lahm.

    Außerdem werden auf D+ und D- differentielle, bidirektionale Signale übertragen. Das heißt, die Pegel sind nicht 0V/5V, sondern irgendwo dazwischen, und die Richtung der Signale ändert sich ständig. Das ist mit den IO-Pin eines AVRs nicht machbar.

    Und das Schalten der Versorgungsspannung dürfte wirklich zu Rauchwolken führen, weil der AVR keine 500mA liefern kann.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    25.01.2009
    Ort
    Wiesbaden
    Alter
    35
    Beiträge
    44
    ok, ich geb mich geschlagen. Das mit den Takten ausrechnen usw. sind für mich noch böhmische Dörfer.

    Hätte das am liebsten auch einfach per Schalter gelöst, da entfällt wenigstens die externe Stromversorgung, habe aber keinen passenden rumfliegen und auch bei Conrad keinen gefunden.

    Danke für die Tipps, nen Versuch wars wert. Muss ich wohl doch eine Fertig-Lösung bestellen.

    Gruß
    Demian

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.07.2009
    Ort
    Gustorf
    Beiträge
    217
    Hallo,
    die selbe Idee hatte ich nun auch. Naja eigendlich hatte ich die Idee für 3 USB Anschlüsse und einem DVI Anschluss, aber in der Theorie ist es das selbe

    Würde es denn funktionieren wenn man schlicht jede Menge Relais verwendet?

    Per Schalter wird ein Stromkreis geschlossen welcher in diesem Fall 5 Relais leitend macht. Diese 5 Relais sind dann die d, d-, vbus, gnd vcc Leitungen des USB Kabels. Also insgesammt 10 kleine Relais. Würde das funktionieren oder gibt es dort eine einfachere Methode? Mir graut es nämlich vor den 35 Pins des DVI Kabels, möchte aber nicht 40€ für 4 switchte ausgeben :S

    Es grüßt,
    Basteltisch

Berechtigungen

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