it-swarm.com.de

Steuerung der Stromversorgung des USB-Anschlusses?

Weiß jemand, wie man USB-Pins an einem bestimmten USB-Port steuert? Ich denke, es ist definitiv in Assembler möglich, aber was ist mit C++ oder C #?

Ich möchte einen USB-Akku als Stromversorgung für eine LED oder ähnliches verwenden können. Dann würde ein Programm es ein- und ausschalten und es blinken lassen.

Ich weiß, dass es sinnlos klingt, aber ich muss es für etwas Fantastisches tun.

Ich weiß auch, dass möglicherweise ein benutzerdefinierter Treiber erforderlich ist.

28
Kristina Brooks

USB ist nicht trivial, also werden Sie wahrscheinlich Probleme haben. Mit standardmäßigen seriellen Ports, die für solche Dinge seit Ewigkeiten verwendet werden, wären Sie (IMHO)/​​viel/besser dran, mit vielen Beispielen. Wenn auf Ihrem Zielcomputer kein serieller Anschluss verfügbar ist, können Sie ein USB-> Serielles Schnittstellenkabel verwenden.

Davon abgesehen, möchten Sie wahrscheinlich @: http://sourceforge.net/projects/libusbdotnet/

LP, Dejan

7
Dejan Stanič

Sie können die Pins eines USB-Ports nicht einfach umschalten. Zeitraum. USB ist ein serielles Protokoll. Der Connector enthält

  1. Leistung. Der Host kann die Stromleitungen steuern, da er bei Überlastung die Stromversorgung unterbrechen kann. Dies geschieht durch den USB-Host-Treiber, dh den Treiber des Host-Adapters im PC. Dies bedeutet nicht, dass Sie einen benutzerdefinierten Gerätetreiber benötigen, der möglicherweise für Hardware erforderlich ist, die keine der Geräteklassen verwendet, die das Betriebssystem bereits Treiber bereitstellt.
  2. Daten. Die Daten werden über ein serielles Protokoll gesendet, sodass Sie diese Pins nicht steuern können, wenn Sie USB verwenden.

Wenn Sie IO -Ports benötigen, benötigen Sie mehr Logik. Sie benötigen mindestens etwas, das dem USB-Protokoll folgt, das heißt eine Art Mikrocontroller (oder einen speziellen USB-Gerätecontroller wie die FTDI USB-Controller. Der FT232 und der FT245 eignen sich besonders gut zum Arbeiten). Für eine Low-End-Lösung auf Mikrocontroller-Basis könnte der V-USB-Treiber für AVR-Controller interessant sein.

Für das einfache Bit-Banging IO am PC verwenden Sie die parallele Schnittstelle. USB ist wirklich nicht dafür gemacht oder geeignet.

10
bluebrother

Laut http://www.gniibe.org/development/ac-power-control-by-USB-hub/index

USB 2.0 unterstützt nominell die Leistungsumschaltung pro Port:

Hub Descriptor:
[...]
  wHubCharacteristic 0x0089
    Per-port power switching
[...]

Leider berichtet der Autor, dass die Firmware von Hubs zwar unterstützt wird, dies jedoch zu unterstützen scheint, aber die Hersteller haben auf der Leiterplatte Ecken geschnitten.

6
android.weasel

Es gibt keine Software-Kontrolle über die Stromversorgungs- und Masse-Pins eines USB-Ports, zumindest bei PC-Chipsätzen. Dies wird vom USB-Controller in Hardware gehandhabt. Sehen Sie sich einen USB-Parallelport-Adapter an, wenn Sie die Software über TTL -Spannungen steuern möchten.

3
Andy Ross

Ich denke, das Ein- und Ausschalten der USB-Stromversorgung ist nicht so eine großartige Möglichkeit, dies zu tun: Möglicherweise ist Ihr USB-Controller dazu in der Lage, aber es wäre keine "normale" Sache.

Am einfachsten ist es wahrscheinlich, einen FTDI FT245 USB-> Parallel-Chip zu verwenden. Wenn Sie nur ein paar blinkende Lichter blinken möchten, gehen Sie vielleicht aus und kaufen Sie ein Standard-USB-> Parallel-Druckerkabel und eine Schnittstelle dazu ... Sie erhalten 8 Bit Ausgabe mit sehr einfacher Softwaresteuerung und vieles mehr mehr mit nur ein bisschen Arbeit.

Oder gehen Sie das Ganze und holen Sie sich einen Mikrocontroller mit eingebautem USB ... die Möglichkeiten sind endlos!

3
NickZoic

Ich denke, dass Sie nach einem USB-Gerät suchen. Ein einfaches Ladegerät könnte hergestellt werden, indem ein Regler eingestellt oder verstärkt wird, um die 5 V-Spannung zu erhöhen, oder ein Regler, um eine niedrigere Ladespannung zu erreichen. Zum Ein- oder Ausschalten ist ein USB-Gerät erforderlich. 

1
kenny

Es kann möglich sein , das Gerät ein- und auszuschalten, indem Sie einen USB-Stick "sicher entfernen", aber ich bin es Da dies nicht 100% ig sicher ist, wird möglicherweise nur ein Signal an das Gerät gesendet, das angibt, dass es nicht angeschlossen ist, wodurch es sich selbst ausschaltet.

Am besten bauen Sie ein USB-Gerät auf, das tatsächlich mit dem Computer kommuniziert (möglicherweise über einen benutzerdefinierten Treiber, aber Sie können wahrscheinlich auch einen Standardtreiber wie ein HID-Gerät verwenden). Sie würden den Computer veranlassen, "Ein" oder "Aus" (oder alles andere, was Sie sich einfallen lassen können) an Ihr Gerät zu senden, um die Signale nach Belieben zu interpretieren (wahrscheinlich durch Ein- und Ausschalten der LED, über die Sie gesprochen haben). Das ist nicht so schwer, wie es sich anhört. Sie können Mikrocontroller mit USB-Schnittstelle an Bord kaufen, z. B. den Arduino oder einige der High-End-PICs. Viele Hersteller dieser Art von Mikrocontrollern verfügen über Dokumente, in denen erklärt wird, wie eine USB-Schnittstelle mit ihnen hergestellt wird.

1
rmeador

Es gibt keine Möglichkeit, dies für die tatsächlichen Stromversorgungs- und Erdungsstifte durchzuführen. Und Sie sollten wahrscheinlich this Teil des Wikipedia-Artikels von USB lesen.

1
John D.

Sie benötigen entweder ein Entwicklungsboard mit programmierbaren E/A-Pins (a.k.a.PIO) oder ein UART (RS232).

Die einfachste Methode ist das Verbinden der LED mit dem Clear To Send (CTS) und entweder mit Masse oder mit VCC. Der Ausgang der CTS-Leitung schaltet die LED ein oder aus, je nachdem, ob das andere Ende mit Masse verbunden ist oder nicht. Die normalen I/O-Pins könnten verwendet werden, sie dienen jedoch zur seriellen Datenübertragung im UART. Der UART bildet normalerweise einen 8-Bit-Charakter aus diesen Pins. überträgt aber die RTS (Request To Send) - und CTS-Werte direkt durch.

Wenn Sie ein PIO verwenden, müssen Sie nur ein Bit in einer Variablen setzen und diese Variable an die Adresse des PIO-Sets schreiben. Sie müssen möglicherweise auch die Bits einrasten. Einige PIO-Pins merken sich den Wert, bis der nächste Wert geschrieben wird (als "Latched" bezeichnet), andere erinnern sich an den Wert, solange er geschrieben wird.

1
Thomas Matthews

Die Frage ist die Kontrolle der Stromstärke von USB. Die meisten Antworten scheiterten daran, die verschiedenen mA-Werte von USB und deren Auswirkungen auf Volt zu berücksichtigen.

Ein gemeinsamer USB 1.0- und 2.0-Ausgang entspricht 500 mA oder 0,5 A. 500 mA mal 5 Volt entspricht 2,5 Watt Leistung.

Mit 1 A erhalten Sie die vollen 5 Watt. USB 2.0 kann mit dem ASUS Ai Charger auf 1,2 A oder 1200 mA eingestellt werden, um eine Ausgangsleistung von 6 Watt zu erhalten.

0
mtelesha