¿Qué microcontrolador debo usar?


10

Estoy tratando de encontrar el mejor paquete de microcontrolador para que mis programas informáticos se comuniquen con el mundo real. Espero una gran cantidad de pines de E / S (hasta ahora 64 digitales es todo lo que necesito, nada sofisticado como analógico y PWM) que puedo leer y escribir directamente llamando a las funciones de mi programa que se ejecuta en mi CPU.

No quiero descargar programas en el microcontrolador para ejecutarlos, más bien me gustaría algo que simplemente se conecta a mi USB y me da un montón de pines de E / S controlados por la CPU que puedo controlar desde mis programas C ++.

¿Cuál sería el mejor paquete de microcontrolador para mí? Espero algo que sea bastante económico pero a prueba de futuro, ya que funciona con USB y tiene controladores de 64 bits para sistemas operativos modernos como Windows 7. Sería capaz de conectar más de uno de estos microcontroladores con el mismo programa de computadora. gran bono también (futura expansión).

Editar: no necesito altas velocidades de muestreo (quizás 10 Hz para leer entradas, 1 kHz para señales de salida) y la mayoría de los pines se usan solo para salida. Estoy trabajando con computadoras nuevas (core i7 860), por lo que incluso si el muestreo es un poco ineficiente o lento, aún debería estar bien (solo tenga un hilo dedicado a E / S y haga que el programa principal se comunique con él).

Tampoco necesito los 64 pines de E / S en un solo paquete de microcontrolador. Si puedo interconectar muchos paquetes de microcontroladores al mismo tiempo, eso también funcionaría (en realidad sería ideal poder interconectar muchos paquetes de microcontroladores más pequeños, eso significa que es fácil de expandir).

He mirado esto: http://www.schmalzhaus.com/UBW32/index.html

¿Alguien ha tenido alguna experiencia con algo como esto? ¿Alguna idea de si funcionará o no? La principal preocupación es que es el microcontrolador el que ejecuta el programa, no mi CPU.


1
¿Qué velocidad de datos necesitas?
Kevin Vermeer

@reemrevnivek: calculo que necesitaría una frecuencia de muestreo de aproximadamente 10 Hz para entradas y 1 kHz para salidas, E / S muy lenta.
Falso

En su caso, el proyecto que ha encontrado probablemente funcionará bastante bien. Es un sistema ya ensamblado (no se necesita soldar siempre es bueno) y parece tener un firmware muy básico para darle acceso a todos los puertos que necesita. Las bajas tasas de muestreo significan que la conexión en serie funcionará suficientemente bien. 40 $ no te llevará a la bancarrota, ¿verdad? Si es así, simplemente pruébelo antes de buscar una solución más costosa.
Wouter Simons

Respuestas:


4

Falso

El UBW32 es un muy buen camino, por lo que puedo decir de sus requisitos. Soportará exactamente lo que necesita, siempre y cuando esté de acuerdo con 3.3VI / O (algunos son tolerantes a 5V, pero no todos). Es económico ($ 40) y es muy fácil hablar con cualquier lenguaje que pueda soportar puertos seriales (que es prácticamente todos: básico, C, C #, procesamiento, etc.)

Puede usar cualquiera de los 76 pines de E / S como entradas o salidas. El firmware de fábrica que se incluye le permitirá hacer lo que desea hacer, no se requiere programación en el lado integrado. Llevar esos datos a la PC a través de USB (a solo 10Hz) no será un problema. Conseguir que las salidas vayan a 1KHz probablemente también funcionará bien.

Si tiene alguna pregunta, por favor hágamelo saber. Estoy feliz de ayudarte.

* Brian Schmalz UBW32 creador


Buena junta, Sr. Schmalz
Wouter Simons

Bueno, esto es definitivamente reconfortante. Ser un ingeniero mecánico para empezar y conocer poco sobre programación y menos aún sobre electrónica; Una plataforma preconstruida que interactúa con C / C ++ es exactamente lo que necesitaba para unir el aspecto de programación de la electrónica y el microcontrolador. ¡Gracias por tu ayuda!
Falso

9

Recomiendo un Teensy ++ 2.0 (o cualquier otra placa de desarrollo AT90USB1286)

128KB Flash, 8KB RAM, 46 pines de E / S, 8 entradas analógicas

$ 24

Las placas Teensy funcionan con USB y pueden proporcionar un puerto COM virtual (clase de dispositivo de comunicaciones USB). Puede utilizar este enlace en serie para su protocolo de control de pin. Esto funciona sin ningún controlador personalizado en Windows, OSX y Linux.

Para crear el firmware de control de pin, hay TeensyDuino o el viejo C.

Al golpear un poco, el cuello de botella será la interfaz USB del microcontrolador. Por lo tanto, es posible que desee transferir protocolos como I2C y SPI al microcontrolador. Para esto puedes usar mi Bus Ninja .

Agregar Teensies adicionales a su configuración es simple, solo necesita un puerto USB por dispositivo, presentando un puerto COM virtual por dispositivo.

(Nota. Este enfoque funcionará igualmente bien con una amplia gama de procesadores ARM y otros, simplemente no conozco ninguna placa de desarrollo barata con software disponible).

Otra forma podría ser usar un Arduino y un Caterpillar Shield para expandir la E / S. En una placa personalizada que construí alrededor del mismo expansor de E / S pude actualizar 256 salidas a más de 1KHz.


4

Creo que lo que quieres no es un microcontrolador, sino algo así como una tarjeta de E / S PCI-6509 de National Instruments . También puede obtener versiones de USB, pero tienen muchas menos E / S que el PCI-6509. National Instruments también le venderá controladores C ++.

Si eso parece demasiado caro, puedes probar algo como el Labjack U3 .


He utilizado el labjack, realmente ralentiza su computadora si hace algo más serio (mayor frecuencia de muestreo), pero es ideal para una lógica simple de baja frecuencia de muestreo. Los sistemas de NI son maravillosos, pero el paquete de software es demasiado caro para uso doméstico. (Al menos para mi uso en el hogar.)
Wouter Simons

4

La solución que describe no existe para precios más bajos. El problema es que desea ejecutar el software de control en un sistema que no está diseñado para ello. Serializar 64 puertos y empujarlo a través de USB a altas velocidades de muestreo ralentiza enormemente la computadora host.

Hay soluciones que funcionan para aplicaciones de bajo rendimiento como el mencionado labjack. Pero la solución real que necesita para manejar altas tasas de IO involucrará un sistema programado. La pregunta es qué programación tiene que usar para implementar el sistema.

LabView es un software muy costoso (que funciona muy bien, no me malinterpretes). Utiliza un lenguaje gráfico para diseñar software y compila el código que se ejecuta en un sistema FPGA o ARM. Todos los componentes son demasiado caros para una aplicación incrustada de alto volumen, pero absolutamente maravillosos en un entorno de prueba debido al rápido desarrollo y alto rendimiento que ofrece.

Una solución menos costosa es encontrar un sistema que ejecute Linux con muchas E / S. EmbeddedARM.com es un sitio que ofrece muchos tipos de productos para esto. El código que puede escribir puede estar en scripts de shell, java, C, etc.

Los sistemas Arduino proporcionan microcontroladores que pueden desarrollarse con un entorno de desarrollo más simple. Su naturaleza de código abierto significa que ya hay muchos proyectos para aprender.


3

No conozco ninguno con 64 pines GPIO, eso es mucho, es posible que tengas que construirlo tú mismo.

Utilizo esto para probar interfaces de serie, pero también tiene 23 pines GPIO.

Si solo buscas en Google 'USB to GPIO' hay un montón de proyectos que lo han hecho, no vi ninguno en las primeras páginas con 64 GPIO, este es el más cercano que encontré, con 32 pines.

Construir uno no sería muy difícil, probablemente solo usaría una pic18 de 100 pines con USB PHY incorporado (dependiendo de sus requisitos de velocidad, una CPU más potente puede estar en orden)

no tendría que hacer demasiada codificación para que funcione mientras su proveedor de uC ofrezca un esqueleto de controlador USB.

Tendría que construir una PCB para ello, ya que los chips que son lo suficientemente grandes como para tener 64 pines GPIO generalmente no vienen en paquetes de orificio pasante. También podría usar un microcontrolador más pequeño y usar IC de expansor de puerto externo para sus GPIO, pero eso sería un diseño más complejo y más complejo de programar.

También puede mirar las placas de desarrollo que enrutan todos los pines de E / S a los encabezados y tienen USB. Estos probablemente serán mucho más caros, ya que probablemente tendrán un montón de cosas que no necesita.

Un último consejo, si encuentra una placa con RS232 pero con 64 pines GPIO disponibles, puede usar un adaptador RS232 a USB, tengo algunos de estos que me han funcionado bien. Sin embargo, esto lo limita a la velocidad de la interfaz RS232.


3

El entorno de NI Labview es costoso, pero hará lo que necesite (a través de USB, Ethernet o PCI, según lo que obtenga).

El Arduino Mega tiene 54 pines, lo que te acerca, por $ 60. Sin embargo, no es un analizador lógico listo para usar; tendrías que escribir o encontrar un boceto para hacer esto. Puede haber uno disponible, no lo sé. Esto debería ser bastante simple con tarifas bajas de autobús. Cada instrucción en el Mega ocurre a 16MHz, por lo que tendrá una velocidad de transmisión bastante baja, tendrá suerte o será muy inteligente si puede obtener una señal de 115200 baudios.

Al final, este es un proyecto muy diferente si está muestreando a 9600 baudios o a 50MHz. Recuerde, el USB funciona a 480 MHz (en teoría; su velocidad de datos real será menor debido a latencias y sobrecarga), por lo que no puede hacerlo mejor que 480/64 = 7.5MHz sin almacenamiento en búfer. Con almacenamiento en búfer y cantidades obscenas de dinero (más que su automóvil), los analizadores lógicos pueden obtener 68, 102 o 136 canales a velocidades de datos de gigahercios.

Te sugiero que trates de averiguar si puedes usar una herramienta que te brinde 8 canales más o menos, y tratar de analizarlos por separado.

EDITAR: Aargh, ¿qué estaba pensando? Si va a velocidades lentas como esa, entonces trabajar sobre un enlace en serie es definitivamente el camino a seguir. Uso el sistema de módulos ADAM 4000 de Advantech todo el tiempo en el trabajo; son robustos, fáciles de usar (se interconectan fácilmente con un protocolo ASCII a través de un puerto COM, o usan el software GUI incluido), ampliables y bien compatibles. Obtenga un 4500 (RS-232, use un convertidor USB o un puerto COM en su computadora (si todavía tiene uno)) o un controlador 4501 (Ethernet con servidor web incorporado), enlace en un montón de módulos 4053, 4055 y 4056, y estás listo para ir


Oh. pero son bastante costosos ... como $ 100 a $ 150 por 16 canales.
Kevin Vermeer

Tengo un analizador lógico de puerto intronix 34 para probar mi software (es decir, conectar las entradas a las salidas de los pines controlados por el microcontrolador). Creo que cuesta alrededor de 500 $, pero tampoco es realmente E / S digital, ¿verdad? No está destinado a programar una lógica personalizada, solo para analizar canales. La mía puede funcionar a una velocidad de muestreo de 500Mhz, pero generalmente no necesito esa velocidad, a menos que los periféricos que quiero que el microcontrolador controle soporten velocidades de hasta 200Mhz más o menos (que generalmente no necesitan). - De todos modos, larga historia corta. Creo que un analizador lógico no es lo que necesita la persona que hace la pregunta.
Wouter Simons

Definitivamente soy yo, pero no O. No, estaría de acuerdo en que el analizador lógico no es lo que la persona necesita, dada la nueva información.
Kevin Vermeer

2

Esta cosa tiene 70 GPIO y una interfaz USB por $ 50.


¿Puedes usar las funciones de llamada para leer y escribir datos de pin directamente desde los programas C ++ que se ejecutan en tu CPU?
Faken

Iba a sugerir que NXP tendría algo basado en ARM con algunas E / S, y si no podía obtener lo suficiente de ellas para simplemente abofetear I2C IO expansores. No se puede superar el precio de esa cosa, y es plug and play. Excelente trabajo.
akohlsmith

No tengo idea. Lo acabo de ver en la publicación de nuevos productos de Sparkfun.
endolito

2

Sí, parece que el UBW32 funcionaría bien para usted, y el firmware predeterminado le permite controlar los pines de E / S desde su software en su PC.

De acuerdo con "cómo explotar bit SPI e interfaces paralelas en un FT232R" , aparentemente puede bit-bang 8 pines digitales (¿posiblemente más?) En el FT232R controlado por software en su PC.

Tablero de arranque de $ 15 para FT232RL

Parece que lo que realmente quieres es una interfaz de E / S digital; No necesita ni desea un microcontrolador programable. Si solo quisieras 16 bits, iría con un par de placas FT232RL. Sin embargo, parece que un solo UBW32 de $ 40 parece que le dará las 64 E / S que desea por un costo menor que 8 de las placas FT232RL que necesitaría para obtener 64 E / S.

Estoy descubriendo que se está volviendo cada vez más común: a veces cuesta menos lanzar un microcontrolador completo a un problema, a pesar de que tiene un millón de transistores "adicionales" que nunca usaré, que usar una solución cableada.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.