La mejor interfaz de PC para hardware personalizado simple

¿Qué interfaz de su PC utiliza para conectarse a hardware personalizado simple?

La interfaz más utilizada fue RS232 hace algún tiempo y hoy en día probablemente sea USB, pero ¿no sería más sencillo para los principiantes usar el puerto paralelo para controlar circuitos realmente simples como motores paso a paso o LED? Tengo la impresión por lo que he leído hasta ahora que el puerto paralelo no fue realmente diseñado para cosas como esa, pero no estoy seguro de las posibles limitaciones con respecto a eso.

Desafortunadamente, puedo encontrar muy poca literatura sobre cómo usar el puerto paralelo, probablemente porque está algo desactualizado para el hardware profesional.

¿Hace alguna diferencia para la decisión sobre la interfaz más adecuada si solo usaré la salida o también la entrada?

Debo agregar que, por supuesto, sé sobre Arduino, pero no quiero que se me oculte ninguna complejidad.

Además, estoy usando Linux y tengo un puerto paralelo disponible. Así que actualmente estoy sesgado hacia el puerto paralelo.

El Puerto Paralelo ha muerto Jim. Los adaptadores USB a serie/Uart son la solución más común ahora.
O incluso conexiones directas de USB a MCU.
Arduino no tiene que esconderte ninguna complejidad...
Bueno, ser de código abierto y ocultar la complejidad no es lo mismo y me gustaría enfatizar que el último punto es, por supuesto, absolutamente legítimo y sensato. Pero estoy buscando una solución simple a un problema simple. Arduino está diseñado para hacer cosas mucho más elaboradas que regular motores o LED, pero si piensas en las bibliotecas de software adicionales que hay detrás, es más complicado que el puerto paralelo.
Lo que encuentro sorprendente y tal vez cualquiera de ustedes pueda ayudarme es que si el parport es tan fácil de usar, debería haber muchos tutoriales antiguos para controlar circuitos personalizados con él de universidades o escuelas, pero no puedo encontrar ninguno.
La principal compensación a tener en cuenta no es tanto el hardware externo, sino esto. Los puertos paralelos tienen problemas de disponibilidad que están en gran parte obsoletos en los sistemas recientes, mientras que el USB tiene problemas de latencia (aunque el USB puede mover grandes volúmenes de datos rápidamente, lleva mucho más tiempo, en términos informáticos, hacer un viaje de ida y vuelta en el bus USB que lo hace en un puerto paralelo de bus local). Tienes que decidir qué es más intolerable para tu proyecto; para resolver ambos, a veces es necesario descargar no solo la E/S sino también el "pensamiento" a un potente micro externo.
logix4u.net/parallel-port/… ¿ primer éxito en google?

Respuestas (7)

El puerto paralelo es excelente cuando usa Windows 98 o DOS. Todos los sistemas operativos modernos de Windows han cambiado drásticamente la forma en que funciona la interfaz del puerto paralelo, lo que hace que sea casi imposible interactuar con otra cosa que no sea una impresora. Y el puerto paralelo es básicamente obsoleto en este punto de todos modos. Además, es básicamente imposible realizar un control cronometrado con precisión desde una computadora de propósito general. Si su objetivo es milisegundos, no está tan mal. Pero si quieres bajar mucho más, se vuelve muy, muy difícil hacerlo de manera confiable. Es mejor enviar comandos de alto nivel a un microcontrolador o similar. Obtendría un Arduino si nunca antes ha usado un microcontrolador.

Si desea realizar una interfaz seria con el hardware, probablemente usará USB. Si necesita serie RS232, obtenga un chip convertidor de USB a serie. Estos están fácilmente disponibles en compañías como FTDI y Exar. La mayoría de las placas que hago tienen un encabezado en el que puedo conectar una pequeña placa adaptadora USB serie, o tienen un chip USB serie integrado. Ethernet es otra opción si necesita una comunicación de mayor velocidad, pero admitir Ethernet en su dispositivo suele ser un poco más complicado que una interfaz serial simple. También es posible interactuar con PCI, PCI express y Serial ATA si realmente necesita el rendimiento.

Editar: ya no puedo recomendar FTDI con la conciencia limpia sin mencionar también que FTDI ha lanzado un controlador que contiene un código para destruir intencionalmente (y probablemente ilegalmente) chips FTDI "falsificados". Consulte http://www.eevblog.com/forum/reviews/ftdi-driver-kills-fake-ftdi-ft232/ y http://www.eevblog.com/forum/reviews/ftdi-driver-kills-fake- ftdi-ft232/msg535270/#msg535270 para obtener más detalles. Si está considerando usar FTDI, debe sopesar los riesgos de que sus dispositivos fallen en el campo debido a este controlador, ya sea debido a que los chips falsificados se deslizan en su producción de alguna manera o algún problema con la detección de falsificaciones en el controlador FTDI.

¡Segundo FTDI! Fantásticos chips USB UART. Interfaz muy simple desde el lado del hardware. Desde el lado del host, se puede abrir un puerto COM virtual o acceder a un controlador de nivel inferior. Tengo un buen envoltorio de python alrededor de los controladores FTD2XX que proporciona una buena interfaz de python
¿Qué ventaja le da el controlador FTD2XX sobre un puerto COM virtual? Utilizo exclusivamente chips FTDI debido a su excelente soporte de controlador: funciona de forma inmediata en Linux y es pan comido instalarlo en Windows. De hecho, tuve un problema muy extraño con un chip serie USB Exar en una placa Atlys FPGA: aceleraron el dado y activaron el control de flujo de hardware de forma predeterminada. El controlador estándar de Linux no admite cambiar el control de flujo, el controlador Exar bloqueó mi computadora y el pin CTS está atado en la parte superior del tablero. Tuve que modificar las placas FPGA para que funcionara.
Ah, bueno, todavía hay Prolific, así como chips que funcionan con los controladores CDC estándar integrados en cada sistema operativo.
Prolific hizo algo similar, activando pantallas azules cuando se detectaban chips "falsificados". Terminó ganándose a Prolific la reputación de ser poco confiable. Tuve un par de cables prolíficos hace un montón de años que nunca parecían funcionar bien, así que terminé buscando cables FTDI. Supongo que al menos FTDI está siendo sincero al respecto. Aún así, cabrearon a mucha gente con eso. Definitivamente hay muchos chips alternativos ahora, por lo que si no necesita usar algunas de las características especiales de los chips FTDI, uno de ellos podría ser una opción mejor (y probablemente más barata).

Creo que tienes un par de opciones.

Puertos paralelos

Los puertos paralelos siguen siendo la solución más sencilla para controlar circuitos simples. Todavía existen kits que le permiten usar el puerto paralelo para controlar un conjunto de relés.

Una búsqueda rápida en la web de "kit de relé de puerto paralelo" arroja una gran cantidad de resultados. He incluido los PDF de dos de esos kits, porque contienen listas de piezas y diagramas de bloques:

El software para controlar esos kits puede ser un poco complicado, pero encontré una ingeniosa biblioteca de Python que funcionó muy bien tanto en Windows como en Linux: http://pyserial.sourceforge.net/pyparallel.html

La mayoría de las placas base modernas ya no vienen con un puerto paralelo, pero hay muchas tarjetas de expansión económicas que proporcionan uno o dos puertos paralelos. Alternativamente, puede comprar una PC económica todo en uno que aún tenga un puerto paralelo, como el Intel Atom DH2500.

Tenga en cuenta que los cables de puerto USB a paralelo generalmente no funcionarán para este tipo de cosas. Hay trucos que pueden hacerlos funcionar, pero los trucos solo funcionan para ciertos cables.

Finalmente, si desea utilizar el puerto paralelo para una instalación permanente, tenga en cuenta que durante la puesta en marcha, todos los relés se encenderán y apagarán brevemente. No hay mucho que pueda hacer al respecto, a menos que desee reescribir el BIOS de su PC.

Microcontroladores

He estado jugando con placas Arduino durante un par de meses. Es muy fácil hacer que envíe texto a la PC en el puerto serie USB, e imagino que tampoco será demasiado difícil hacer que escuche los comandos seriales de la PC.

Alternativamente, programar la placa para que haga todo el control por sí misma también es una muy buena solución. Hay montones de placas de expansión, incluidos conjuntos de relés. Las placas Arduino también son muy fáciles de alimentar: las he visto funcionar desde aproximadamente 5v hasta 20v, aunque creo que recomiendan entre 9v y 12v para uso a largo plazo.

No debería tener demasiados problemas para encontrar ayuda con los proyectos de Arduino. La comunidad para ellos es enorme y están diseñados en gran medida para los aficionados. Recomiendo encarecidamente su kit de inicio para las personas que recién comienzan con la electrónica.

Puertos serie (incluido USB)

Aprender a diseñar y construir hardware de puertos USB todavía está en mi lista de TODO. Si bien no los he usado yo mismo, he escuchado cosas buenas sobre dos libros en particular:

Solo cuestan alrededor de $ 25 cada uno, y si tiene preguntas más específicas después de leerlos, estoy seguro de que puede encontrar más ayuda haciendo preguntas específicas aquí.

Ideas de sótano de ganga

Nunca descartes las salidas analógicas de la tarjeta de sonido para poder controlar muchas cosas. Puede enviar FSK (modulación por cambio de frecuencia) a varios cientos de baudios perfectamente bien. Por supuesto, esto se puede decodificar con el chip apropiado.

Incluso puede enviar tonos que se pueden decodificar para activar o desactivar cualquier cosa que razonablemente se le ocurra. Varios tonos (cada uno con su propio decodificador) pueden controlar varias salidas simultáneamente.

Incluso he visto a una persona adjuntar un fotodiodo a parte de la pantalla de su PC y decodificar los cambios relativos en el brillo; esto tenía una pequeña área dedicada de la pantalla utilizada para transmitir datos. No puedo decir qué tan bien funcionaría con pantallas LCD, pero recuerdo que proporcionaba cientos de baudios en un CRT.

La placa de desarrollo USB Bit Whacker 18F2553 de SparkFun le permite controlar 16 líneas GPIO (ya sea de entrada o salida) desde la PC. Utiliza un Microchip PIC18F2553 y se conecta a la PC a través de USB, y aparece como un puerto COM RS-232 virtual.

ingrese la descripción de la imagen aquí

El tablero cuesta $24.95. Hay una versión más elegante del Bit Whacker que usa un PIC32MX795 que tiene 78 líneas de E/S disponibles y cuesta $39.95. Lo he usado en un proyecto y donde lo controlé usando scripts de Python.

Si tuviera que diseñar un dispositivo que interactúe con una computadora, usaría una interfaz USB HID. No requerirá ningún controlador en el lado de Windows y realmente será plug'n'play. La interfaz en el lado de la PC será un poco más difícil (en comparación con un puerto serie), pero lo he hecho antes y simplemente funcionó.

La interfaz de facto en las computadoras personales del hogar y la oficina es USB

Las interfaces más comunes para dispositivos electrónicos simples son I2C, SPI, 1-wire y GPIO (etc.)

Por lo tanto, no sorprende que pueda comprar cosas como adaptadores USB a GPIO como este o este

Los puertos paralelos son increíbles para un hardware realmente simple. Tengo una pequeña placa que hice hace unos 10 años que proporciona 8 salidas de controlador de solenoide y 4 entradas digitales protegidas desde un puerto paralelo. El problema es que son (1) muy limitados y (2) obsoletos en las computadoras de "oficina". Probablemente aún pueda encontrar computadoras integradas que las tengan y, si "solo está jugando", hay un flujo constante de PC antiguas disponibles que las tienen. Es más difícil usarlos en Windows, pero en Linux son triviales de usar si tiene acceso de root.

Sin embargo, con el costo de los microcontroladores pequeños hoy en día, es mucho más eficiente poner todas las E/S en uno y usar la PC como interfaz de usuario, comunicándose con el micro a través de una conexión en serie o inalámbrica.