Detección de un dispositivo USB enchufado sin tener que suministrar energía de 5 voltios todo el tiempo

Estoy diseñando un dispositivo usando el procesador PIC32MX795 que actuará como host USB. Dado que es un dispositivo que funciona con batería, preferiría no suministrar 5 voltios todo el tiempo en el puerto USB (el dispositivo funcionará con una batería de polilitio de 3,7 V y usará un convertidor elevador de CC-CC para generar los 5 voltios ).

Me gustaría mantener el dispositivo apagado tanto como sea posible siempre que no haya nada conectado al conector USB. ¿Hay alguna forma de despertar cuando alguien conecta un dispositivo USB al conector?

Incluso si tengo que despertarme una vez cada segundo durante unos pocos milisegundos, eso podría ser aceptable, pero preferiría no tener que encender los 5 voltios cada vez.

EDITAR: después de enchufar un dispositivo y obtener datos de él, luego de un retraso, me gustaría apagarlo para que ya no consuma corriente. Esto obligará al usuario a desenchufar el dispositivo y volver a enchufarlo para volver a leer los datos, lo cual está bien.

Respuestas (1)

No puede contar con lo que hará un dispositivo cuando no recibe alimentación USB válida. Por ejemplo, es posible que ni siquiera encienda sus resistencias de subida/bajada para indicar la velocidad hasta que piense que está conectado a un USB, lo que podría detectar al observar el voltaje de alimentación del bus.

Si puede tolerar un pequeño retraso cuando se conecta un dispositivo, despiértese periódicamente y encienda la alimentación USB durante un rato. Un problema es que los dispositivos pueden tardar un poco en activarse una vez que se aplica energía. Algunos de mis programadores de PIC, por ejemplo, tienen esperas deliberadas de unos 100 ms después de ejecutarse antes de encender el USB. Esto es para asegurarse de que todo esté realmente estable antes de hablar con el host. No hay garantía de cuánto tiempo debe esperar para que un dispositivo quiera hablar con el host después de recibir alimentación del USB. Medio segundo probablemente sea suficiente para la mayoría de los casos, pero no puedes estar seguro.

Una estrategia más confiable sería hacer un convertidor que consuma muy poca energía cuando no se extraiga corriente de su salida de 5V. Eso no debería ser demasiado difícil. Si se hace correctamente, el consumo de una salida de 5 V sin nada conectado puede ser de unos pocos microamperios o menos.

USB está optimizado para dispositivos livianos a expensas de una mayor carga para el host. No hay almuerzo gratis.

Después de enchufar un dispositivo y obtener datos de él, luego de un retraso, me gustaría apagarlo para que ya no consuma energía (no aclaré esto en mi pregunta, lo editaré). Esto obligará al usuario a desenchufar el dispositivo y volver a enchufarlo para volver a leer los datos, lo cual está bien.
¿Qué pasa si construyo un circuito como mi multímetro, y cuando la alimentación de +5v está apagada, mido la resistencia entre los cables +5 y de tierra del conector USB? Probé varios dispositivos diferentes y todos mostraron una resistencia inferior a 500K. En realidad, solo quiero sentir algo que no sea un circuito abierto.
@tcrosley: Eso podría funcionar en muchos casos, pero es posible que algunos dispositivos no consuman mucho hasta que el voltaje alcance niveles USB válidos.
@OlinLathrop: no puedo pensar en un solo dispositivo que no tenga algún tipo de diodos de sujeción a VCC y VSS. Cada USB PHY que he visto tiene al menos algún tipo de protección en el USB IO. Es necesario para la protección ESD del conector. E incluso si eso (extrañamente) falta, hay que tener en cuenta el diodo intrínseco nativo de cada circuito integrado semiconductor.
De todos modos, algo como un convertidor de condensador volador (que básicamente no usa energía sin carga) es probablemente la mejor idea, de todos modos, como dice Olin.
@Falso: los diodos de protección solo importan si la señal está fuera del rango previsto. No recomiendo hacerlo deliberadamente.
@OlinLathrop: los diodos de protección sujetarán los voltajes de la señal a Vcc y Gnd. Si el dispositivo no tiene alimentación, tanto Vcc como Gnd serán 0 V, por lo que tendrá un diodo a tierra en cada pin. Estoy de acuerdo en que es una mala idea, pero aparte de encender el dispositivo, es lo único que se me ocurre.