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 examinado varios métodos diferentes, desde tarjetas de E / S digitales dedicadas, microcontroladores con interfaces USB, puertos seriales, puertos paralelos, etc. Sin embargo, todas las soluciones parecen ser demasiado caras, demasiado trabajo o la tecnología está demasiado anticuada.
Espero tener más de 64 salidas digitales funcionando a aproximadamente 1 kHz cada una, controlable individualmente. Hasta ahora, la mejor idea que se me ocurre es pegar las salidas de un puerto serie a un registro de desplazamiento de serie a paralelo de 8 bits y enviar caracteres por la conexión en serie cada vez que desee cambiar y emitir (ejecutar desde un puerto USB a puerto serie adaptador). Todavía no lo he probado, así que no sé si funcionará.
¿Existe algún otro método rápido y sucio para obtener una cantidad bastante grande de salidas digitales baratas de la computadora que pueda controlar fácilmente con comandos C ++ muy básicos?
fuente
Respuestas:
Parece que pretendes encender algunas luces navideñas. :-)
¿Tiene algo de malo usar un arduino o similar? Sería bastante fácil expandir la cantidad de puertos IO si la cantidad de puertos indicados en el mega 1280/2560 no es suficiente. Puede conducirlo a través de un terminal serial / USB. Podría usar registros de desplazamiento en los pines de salida del arduino o podría usar el expansor de puerto i2c y pasar por eso.
El uso de componentes estándar como ese le dará la menor cantidad de tiempo de creación de prototipos.
Tenga en cuenta que mi camino puede no ser el más barato. Pero es efectivo y realmente lo hará rodar rápidamente.
fuente
El registro de desplazamiento de serie a paralelo funcionará. Usando el puerto SPI no tendrá problemas con la velocidad 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 también funcionarán.
Otra opción es usar múltiples microcontroladores. Por ejemplo, usar un ATmega328 (que cuesta alrededor de $ 5 con los pasivos) le daría 18 líneas mientras mantiene las líneas TXD y RXD libres. Paralelamente a las líneas RXD y luego todos los uC recibirán las mismas cadenas de comando. Tendría que analizar las cadenas de comandos en el uC. Use un cable FTDI para llegar a USB. Agregue un gestor de arranque Arduino al uC y podría usar las herramientas Arduino.
La conversión de serie a paralelo es más sencilla. Si su aplicación puede usar salidas de drenaje abierto, puede usar un controlador LED de 16 canales. Esto significaría agregar cuatro chips.
fuente
La opción más simple que he encontrado parece ser el IOIO-OTG . Es un dispositivo USB OTG externo basado en controlador PIC, diseñado para Android, pero utilizable con una PC, a través de Eclipse y el Kit de herramientas de desarrollo de Android. Tiene 46 pines GPIO de 3.3v , así como muchas otras cosas útiles. No tiene los 64 pines necesarios para su proyecto, pero podría usar solo algunos registros de desplazamiento de serie a paralelo, como lo menciona jluciani (o usar controladores de motor paso a paso, y usar menos pines).
También existe esta placa USB IO basada en PIC , que hace cosas similares, pero tiene menos pines.
fuente