La forma más fácil y económica de obtener salidas digitales de una computadora al mundo real

8

Necesito varias salidas digitales para conectar mi computadora al mundo real, sin embargo, parece que este trabajo no es tan fácil como esperaba.

He analizado varios métodos diferentes, desde tarjetas de E / S digitales dedicadas, microcontroladores con interfaces USB, puertos serie, puertos paralelos, etc. Sin embargo, todas las soluciones parecen ser demasiado caras, demasiado trabajo o la tecnología es demasiado antigua.

Espero tener más de 64 salidas digitales funcionando a aproximadamente 1 kHz cada una, controlables individualmente. Hasta ahora, la mejor idea que se me ocurre es pegar las salidas de un puerto serie a una serie de 8 bits a un registro de desplazamiento paralelo y enviar caracteres a través de la conexión serie cuando quiera cambiar y enviar (ejecute desde un puerto USB a un puerto serie). adaptador). Todavía no he probado esto, así que no sé si funcionará.

¿Hay algún otro método rápido y sucio para obtener un número bastante grande de salidas digitales baratas de la computadora que pueda controlar fácilmente con comandos de C ++ muy básicos?

    
pregunta Faken

3 respuestas

7

Suena como si quisieras encender algunas luces de navidad. :-)

¿Algo está mal con el uso de un arduino o similar? Sería bastante fácil ampliar el número de puertos IO si el número de puertos en mega 1280/2560 no fuera suficiente. Puede conducirlo a través del terminal serial / USB. Puede usar registros de desplazamiento en los pines de salida del arduino o puede usar el expansor de puerto i2c y conducir a través de eso.

El uso de componentes estándar como ese le dará la menor cantidad de tiempo de creación de prototipos.

Nota, mi camino puede no ser el más barato. Pero es efectivo y realmente te hará rodar rápidamente.

    
respondido por el Rob
3

El registro de desplazamiento de serie a paralelo funcionará. Usando el puerto SPI lo harás No tengo ningún problema con la tasa de actualización de 1KHz. IIRC en un ATmega328 con un cristal de 8MHz (o superior) debería poder obtener 1Mbits por segundo. Muchos otros microcontroladores funcionará también.

Otra opción es usar múltiples microcontroladores. Por ejemplo, usar un ATmega328 (que es de alrededor de $ 5 con los pasivos) le daría 18 líneas mientras mantiene las líneas TXD y RXD libres. En paralelo a las líneas RXD y luego todos los uCs recibirán las mismas cadenas de comando. Necesitaría analizar las cadenas de comando en la unidad de usuario. Use un cable FTDI para llegar a USB. Agregue un gestor de arranque Arduino a la unidad de usuario y podría usar las herramientas de Arduino.

La conversión de serie a paralelo es más directa. Si tu aplicación puede Si usa salidas de drenaje abierto, puede usar un controlador LED de 16 canales. Esto significaría añadir cuatro chips.

    
respondido por el jluciani
1

La opción más sencilla que he encontrado parece ser IOIO-OTG . Es un dispositivo USB OTG externo basado en un controlador PIC, diseñado para Android, pero que se puede utilizar con una PC, a través de Eclipse y el Kit de herramientas de desarrollo de Android. Tiene 46 pines GPIO 3.3v , además de un montón de otras cosas útiles. No tiene los 64 pines necesarios para su proyecto, pero podría usar unos pocos registros de desplazamiento en serie a paralelo, como lo mencionó jluciani (o usar en su lugar controladores de motores paso a paso, y usar menos pines).

También hay esta placa de IO USB basada en PIC , que hace cosas similares , pero tiene menos pines.

    
respondido por el naught101

Lea otras preguntas en las etiquetas