7 votos

Envío de señales al puerto USB mediante C

Quiero enviar una simple señal de 5V al puerto usb. El aislamiento del cable USB será retirado y conectado a un relé que está conectado a un sistema de puerta eléctrica. Creo que debería escribir este código en C. ¿Puede alguien darme una pista?

3 votos

¿señal de 5v al puerto usb? No estoy seguro de entender lo que quieres.

0 votos

Vale, la electrónica no es mi especialidad. Necesito enviar una señal desde el puerto usb al cable usb. Eso es todo, no importa lo que dije acerca de 5V antes :)

0 votos

¿Qué tal un dispositivo USB a Serie y sólo controlar una de las señales como Listo para Enviar, o similar?

8voto

user4245 Puntos 324

No puedes hacer lo que quieres con sólo conectar un relé al puerto USB.

El USB es un bus, con un protocolo en serie que se ejecuta en él. Es necesario que interactúe con ese bus utilizando los protocolos adecuados.

Necesitará un "dispositivo" de uso capaz de ser programado para responder a un estímulo informático y activar una señal externa.

Hay muchas maneras de conseguirlo, desde productos ya preparados, pasando por kits de bricolaje, hasta circuitos integrados discretos que puedes utilizar para construir tu propio sistema.

Personalmente, recomendaría uno de los muchos kits de bricolaje disponibles, como el Placa de interfaz de experimentos USB Velleman K8055 . Hay muchos otros como este.

Si quieres entrar en el meollo de la cuestión, tienes que mirar cosas como los microcontroladores (en los que se basa el Velleman), que pueden ser programados para hacer muchas cosas diferentes. Algunos de ellos tienen soporte USB incorporado, pero se necesita un conocimiento bastante profundo del protocolo USB para llegar a manejarlo. La mayoría de la gente utiliza un chip "FTDI" para convertir el USB en RS-232 primero.

Si desea un producto estándar, puede considerar la posibilidad de un puerto de impresora paralelo USB, que puede programar y acceder como si fuera un puerto paralelo (Centronics) conectado directamente a su ordenador. Esto le daría 8 salidas que puede activar y desactivar.

Sin embargo, hay que tener en cuenta una cosa más: la mayoría de las salidas de los ordenadores o microcontroladores no son lo suficientemente potentes como para accionar directamente un relé. Tendrás que alimentar la señal a través de algún circuito "conductor" para conseguir la suficiente potencia. Esto puede ser tan simple como un solo transistor, o puede estar buscando algo más complejo como un MOSFET, etc. Ah, y tenga cuidado con la "Back EMF" - un relé es una "carga inductiva".

0 votos

¿Es posible utilizar el RJ45 sólo para enviar una señal? o ¿tengo que utilizar un microcontrolador?

0 votos

El RJ45 es un puerto Ethernet, que también tiene protocolos y señalización de los que preocuparse. Tan complejo (o más) que el USB.

1 votos

@user5369 - El puerto Ethernet, al igual que el puerto USB, no es un sistema de señalización de un solo extremo. Las señales se envían por la línea usando corrientes diferenciales, no haciendo la línea alta o baja. Los puertos paralelos de impresora y los puertos serie RS232 son casi los únicos conectores que probablemente encuentres en tu PC que utilicen señalización single-ended que podrías poner "alta" o "baja" a tu gusto.

7voto

Binarytales Puntos 1145

El USB no es tan sencillo como usted parece creer. El USB tiene un protocolo de comunicación que no permite simplemente dar una salida alta o baja.

Probablemente la forma más sencilla de hacerlo es utilizar un microcontrolador conectado a través de usb utilizando un método de serie a USB. Puedes usar un FTDI chip para hacerlo. Después de conectarse al chip FTDI, el ordenador instalará un puerto serie virtual. Entonces puedes enviar datos a este puerto serie y el microcontrolador los recibirá a través de UART. El microcontrolador puede entonces leer los paquetes que envías y puedes tener 1 paquete para 'on' y otro para 'off'. El microcontrolador simplemente pondría un pin alto o bajo basado en el último paquete que recibió.

Otra opción a considerar sería utilizar directamente el puerto serie. Muchos ordenadores te dan control sobre los pines de tipo clear to send. Si puedes conseguir esta capacidad, entonces sólo sería cuestión de tener un programa que conmutara el estado de claro a enviar.

2voto

lillq Puntos 4161

El USB es un sofisticado bus de serie que permite la comunicación entre un host (su PC) y hasta 127 dispositivos (todo tipo de productos que conectes a tu PC). Así que parece que no tienes acceso directo al bus, de todas formas no puedes simplemente encender y apagar cosas con él. Pero hay varias soluciones para esto.

Los ordenadores vienen con cada vez menos EIA232 (a menudo referido con su antiguo nombre RS232), pero a veces se necesita uno. Algunas empresas especializadas en interfaces, llamadas puentes que convierten el bus USB en EIA232. FTDI es un conocido fabricante de esos puentes, y en otras respuestas se ha sugerido utilizar señales de control EIA232 para controlar un relé. Esto puede funcionar, pero de hecho es un uso inadecuado de EIA232.

Un producto menos conocido de FTDI es el FT245R Convertidor USB a FIFO, que permite controlar E/S de uso general vía USB. Este producto de Diseño DLP es un módulo listo para usar basado en el FT245R.

USB245 module

Utiliza una de las E/S para conmutar un relé mediante un transistor. (Las E/S no pueden suministrar la corriente necesaria para accionar el relé directamente).


Ver también esta respuesta a una pregunta relacionada.

1voto

Andrew Walker Puntos 9038

Conmutar directamente los 5v sólo sería posible si tuvieras información de programación de bajo nivel y derechos de acceso para el chip USB PHY o hub, es decir, la capacidad de activar/desactivar el VBUS de 5v (y hacerlo específicamente para un puerto en particular, si necesitas mantener otros dispositivos como un teclado usb funcionando).

Definitivamente hay sistemas en los que esto sería posible (el único puerto USB de una tableta con la que estuve jugando hace poco, por ejemplo), pero es un hack muy específico de la implementación y no portátil.

La mayoría de las veces, las sugerencias que todos los demás te dan de utilizar un chip USB-I/O como un FT245 o un microcontrolador habilitado para USB o incluso una placa de relé USB lista para usar son preferibles, ya que funcionan a través de controladores que se basan en el protocolo USB estándar y no dependen del conocimiento íntimo de los chips particulares utilizados para implementar la interfaz del host o el hub.

EDIT: Estoy tratando de recordar, en realidad puede haber comandos estándar para activar / desactivar VBUS de los puertos específicos de aguas abajo en un hub, pero en la práctica pocos hubs realmente tienen el dispositivo de conmutación de potencia necesaria para implementar eso. Encontrar uno que lo tenga puede no ser más fácil/barato que comprar la placa de relé USB.

0voto

jackrabbit Puntos 2990

Como otros han señalado, el USB es un bus, por lo que es necesario utilizar un dispositivo en el otro extremo para traducir los comandos del bus en acciones físicas. La forma más fácil de hacerlo es utilizar un número de productos existentes diseñados para esto sin necesidad de escribir código para el extremo incrustado - por ejemplo, Phidgets tienen toda una gama de dispositivos - esta placa de relés es probablemente lo que quieres.

Si estás preparado para aprender un poco de programación embebida, un Arduino o un teensy podría ofrecer opciones más asequibles y pirateables.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X