Erkennung eines angeschlossenen USB-Geräts, ohne ständig 5 Volt Strom liefern zu müssen

Ich entwerfe ein Gerät mit dem PIC32MX795-Prozessor, der als USB-Host fungiert. Da es sich um ein batteriebetriebenes Gerät handelt, würde ich es vorziehen, nicht ständig 5 Volt am USB-Anschluss bereitzustellen (das Gerät wird mit einer 3,7-V-Poly-Lithium-Batterie betrieben und verwendet einen DC-DC-Aufwärtswandler, um die 5 Volt zu erzeugen ).

Ich möchte das Gerät so weit wie möglich ausgeschaltet lassen, wenn nichts an den USB-Anschluss angeschlossen ist. Gibt es eine Möglichkeit aufzuwachen, wenn jemand ein USB-Gerät an den Anschluss anschließt?

Selbst wenn ich etwa einmal pro Sekunde für ein paar Millisekunden aufwachen muss, ist das vielleicht akzeptabel, aber ich würde es vorziehen, die 5 Volt nicht jedes Mal einschalten zu müssen.

BEARBEITEN: Nachdem ein Gerät angeschlossen ist und ich Daten von ihm bekomme, möchte ich es nach einiger Verzögerung ausschalten, damit es keinen Strom mehr zieht. Dadurch wird der Benutzer gezwungen, das Gerät zu trennen und wieder anzuschließen, um die Daten erneut zu lesen, was in Ordnung ist.

Antworten (1)

Sie können sich nicht darauf verlassen, was ein Gerät tun wird, wenn es keine gültige USB-Stromversorgung erhält. Beispielsweise schaltet es möglicherweise nicht einmal seine Pull-Up/Down-Widerstände ein, um die Geschwindigkeit anzuzeigen, bis es denkt, dass es an einen USB-Anschluss angeschlossen ist, was es möglicherweise erkennt, indem es sich die Bus-Spannung ansieht.

Wenn Sie eine kleine Verzögerung beim Anschließen eines Geräts tolerieren können, wachen Sie regelmäßig auf und schalten Sie die USB-Stromversorgung für eine Weile ein. Ein Problem besteht darin, dass die Geräte selbst möglicherweise etwas Zeit benötigen, um hochzufahren, sobald die Stromversorgung eingeschaltet ist. Einige meiner PIC-Programmierer haben zum Beispiel absichtliche Wartezeiten von einigen 100 ms, nachdem sie ausgeführt wurden, bevor sie den USB einschalten. Dies soll sicherstellen, dass alles wirklich stabil ist, bevor Sie mit dem Host sprechen. Es gibt keine Garantie dafür, wie lange Sie warten müssen, bis ein Gerät mit dem Host kommunizieren möchte, nachdem es über USB mit Strom versorgt wurde. Eine halbe Sekunde ist wahrscheinlich gut genug für die meisten Fälle, aber das kann man nicht genau wissen.

Eine zuverlässigere Strategie wäre die Herstellung eines Wandlers, der sehr wenig Strom verbraucht, wenn kein Strom von seinem 5-V-Ausgang gezogen wird. Das sollte nicht zu schwer sein. Bei richtiger Ausführung kann der Stromverbrauch an einem 5-V-Ausgang ohne Anschluss einige Mikroampere oder weniger betragen.

USB ist für leichte Geräte auf Kosten einer höheren Belastung des Hosts optimiert. Es gibt kein freies Mittagessen.

Nachdem ein Gerät angeschlossen ist und wir Daten davon erhalten, möchte ich es nach einiger Verzögerung ausschalten, damit es keinen Strom mehr zieht (ich habe dies in meiner Frage nicht klargestellt, werde es bearbeiten). Dadurch wird der Benutzer gezwungen, das Gerät zu trennen und wieder anzuschließen, um die Daten erneut zu lesen, was in Ordnung ist.
Was wäre, wenn ich eine Schaltung wie mein Multimeter aufbauen und bei ausgeschalteter +5-V-Stromversorgung den Widerstand zwischen den +5- und Masseleitungen des USB-Anschlusses messen würde? Ich habe verschiedene Geräte ausprobiert, und alle zeigten einen Widerstand unter 500 K. Eigentlich möchte ich nur etwas spüren, das kein offener Stromkreis ist.
@tcrosley: Das könnte in vielen Fällen funktionieren, aber einige Geräte ziehen möglicherweise nicht viel, bis die Spannung gültige USB-Pegel erreicht.
@OlinLathrop - Mir fällt kein einziges Gerät ein, das keine Klemmdioden für VCC und VSS hat. Jeder USB-PHY, den ich gesehen habe, hat zumindest eine Art Schutz auf dem USB IO. Es wird für den ESD-Schutz des Steckers benötigt. Und selbst wenn das (seltsamerweise) fehlt, muss die intrinsische Diode berücksichtigt werden, die jedem Halbleiter-IC eigen ist.
Wie auch immer, so etwas wie ein fliegender Kondensatorwandler (der im Leerlauf im Grunde keinen Strom verbraucht) ist wahrscheinlich sowieso die beste Idee, wie Olin sagt.
@Fake: Schutzdioden spielen nur eine Rolle, wenn das Signal außerhalb des vorgesehenen Bereichs liegt. Ich empfehle nicht, das absichtlich zu tun.
@OlinLathrop - Die Schutzdioden klemmen die Signalspannungen an Vcc und Gnd. Wenn das Gerät nicht mit Strom versorgt wird, sind Vcc und Gnd beide 0 V, sodass Sie an jedem Pin effektiv eine Diode gegen Masse haben. Ich stimme zu, dass es eine schlechte Idee ist, aber abgesehen davon, das Gerät einzuschalten, ist es das einzige, was mir einfällt.