Encender/apagar una unidad USB sin desenchufarla

Tengo una cámara que utiliza una unidad flash USB para almacenar imágenes. La secuencia de inicio de la cámara requiere que las unidades USB NO se conecten al inicio... solo después de que las placas de la cámara se hayan inicializado. Estoy activando la cámara con un arduino, pero también me gustaría poder apagar y encender la cámara a través del arduino en caso de que algo salga mal durante la operación (estaré monitoreando la cámara de forma remota).

La situación de la energía es manejable a través de un relé y pirateando el interruptor de apagado de la cámara; donde me quedo atascado es en las unidades USB. Necesito poder "desconectar" las unidades flash USB mientras la cámara realiza su secuencia de inicio. Mi idea actual es colocar un cable USB corto macho a hembra entre la unidad flash y el puerto de la cámara, luego conectar el cable de alimentación de ese cable. Si paso eso a través de un transistor u optoaislador y rompo el circuito de alimentación, ¿pensará la cámara que el USB está desconectado?

¡Me encantaría tener alguna idea sobre cómo hacerlo bien!

Es casi seguro que funcionará. Otra solución sería poner un concentrador autoalimentado en el medio y encenderlo y apagarlo.

Respuestas (2)

Me he enfrentado a un problema similar en el que se tuvo que "desconectar" una memoria USB de una computadora portátil durante un procedimiento de prueba. Hubo un problema con la computadora que siempre intentaba asignar una nueva letra de unidad a la unidad USB que hizo que las secuencias de prueba se interrumpieran. (Tenga en cuenta que la unidad USB era parte de la unidad que se estaba probando y parecía una unidad nueva con cada UUT. El problema era el hecho de que los scripts de la secuencia de prueba tenían una comprensión fija de la letra de la unidad USB. Y además de eso la computadora portátil de prueba se quedaría rápidamente sin letras de unidad después de probar un par de docenas de unidades.

Resolver el problema tomó varios pasos. El primero fue desconectar la unidad USB. En la electrónica de la estación de prueba, utilicé un interruptor de alimentación USB IC del tipo que se usa en los concentradores USB. Esto dio una señal de nivel lógico para encender y apagar el USB. Para las líneas D- y D+, utilicé un interruptor de línea de señal USB IC de Fairchild Semiconductor. (No es que componentes como estos estén disponibles en una amplia selección en el mercado). El interruptor también ofrecía una señal de nivel lógico para apagar/encender las líneas D+ y D-.

La segunda parte de la solución fue que el script de prueba en la computadora portátil tenía que eliminar la letra de unidad asignada del sistema operativo Windows. Eso requirió una investigación profunda para aprender cómo hacerlo mediante programación a través de la API de Windows. Tenga en cuenta que la unidad USB tuvo que desconectarse antes de cancelar la asignación de letras de unidad.

Interesante detalle adicional

Tenga en cuenta que en otro momento tuve un caso casi similar de un chip serie USB incrustado dentro de un dispositivo que se estaba probando. Cada vez que llegaba una UUT nueva, la computadora de prueba intentaba asignar un nuevo número de puerto COMM virtual al puerto serie USB. La solución a eso fue casi idéntica a la descrita anteriormente.

Si paso eso a través de un transistor u optoaislador y rompo el circuito de alimentación, ¿pensará la cámara que el USB está desconectado?

Sí, si incluye una gestión activa de energía VBUS (entre su "cámara" y su dispositivo conectado por USB), la unidad USB será "invisible" para el puerto USB hasta que VBUS esté encendido. Si no hay VBUS, la unidad USB alimentada por bus no podrá extraer D+ (no indicará el evento "conectar").

Puede mantener el VBUS apagado usando cualquier medio, un relé, un transistor, lo que sea. Una forma de ingeniería es usar el llamado "interruptor de lado alto", como este .

Técnicamente hablando, su cámara debe tener este interruptor incluido en el hardware si su firmware/hardware no puede manejar el estado de conexión USB antes de la inicialización, y su firmware debe activar este interruptor VBUS solo cuando esté listo para dar servicio al puerto USB.