¿Qué microcontrolador debo usar?

11

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, lo único que necesito es 64 digitales, nada especial 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 que se ejecute, sino que me gustaría algo que simplemente se conecte a mi USB y me dé 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 que esté preparado para el futuro, ya que funciona con USB y tiene controladores de 64 bits para el sistema operativo moderno como Windows 7. Ser capaz de interactuar con más de uno de estos microcontroladores con el mismo programa de computadora sería una gran bono también (futura expansión).

Editar: no necesito altas tasas 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, todavía debería estar bien (solo tiene un hilo dedicado a E / S y el programa principal se comunica con él). / p>

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 visto esto: enlace

¿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.

    
pregunta Faken

8 respuestas

4

Faken,

El UBW32 es un muy buen camino, por lo que puedo decir de sus requisitos. Soportará exactamente lo que necesita, siempre y cuando esté bien con 3.3VI / O (algunos son tolerantes a 5V, pero no todos). Es barato ($ 40) y es muy fácil hablar con él en cualquier idioma que sea compatible Puertos serie (que son prácticamente todos ellos: Básico, C, C #, Procesamiento, etc.)

Puede usar cualquiera de los 76 pines de E / S como entradas o salidas. El firmware original que se envió le permitirá hacer lo que quiera hacer, sin necesidad de programación en el lado incorporado. Llevar esos datos a la PC a través de USB (a solo 10Hz) no será un problema. Lograr que las salidas lleguen a 1KHz probablemente también funcionará bien.

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

* Brian Schmalz Creador de UBW32

    
respondido por el EmbeddedMan
9

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

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

$24

Las tarjetas Teensy tienen alimentación USB y pueden proporcionar un puerto COM virtual (clase de dispositivo de comunicaciones USB). Podría hacer uso de 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 la antigua C.

Al golpear los bits, 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á igual de bien con toda una 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.

    
respondido por el Toby Jaffey
4

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

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

    
respondido por el pingswept
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 pasarlo a través de USB a altas tasas de muestreo ralentiza enormemente la computadora host.

Hay soluciones que funcionan para aplicaciones de bajo rendimiento como la mencionada Labjack. Pero la solución real que necesita para manejar altas tasas de IO implicará un sistema programado. La pregunta es qué programación debe 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 código para ejecutar en un sistema FPGA o ARM. Todos los componentes son demasiado caros para una aplicación incrustada de alto volumen, pero son absolutamente maravillosos en un entorno de prueba debido al rápido desarrollo y alto rendimiento que se ofrecen.

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 shell scripts, java, C, etc.

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

    
respondido por el Wouter Simons
3

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

Utilizo este para las interfaces seriales de prueba de banco, pero también tiene 23 pines GPIO.

Si solo busca en Google 'USB to GPIO' hay un montón de proyectos que han hecho esto, no vi ninguno en las primeras dos páginas con 64 GPIOs este es el más cercano que he encontrado, con 32 pines.

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

no tendría que hacer demasiada codificación para que funcione, siempre y cuando su proveedor de uC ofrezca un controlador de USB.

Tendría que crear un PCB para él, ya que los chips que son lo suficientemente grandes para tener 64 pines GPIO generalmente no vienen en paquetes de orificio pasante. También puede usar un microcontrolador más pequeño y usar IC de expansión 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. Es probable que estos sean mucho más caros, ya que probablemente tengan un montón de cosas que no necesitas.

Un último consejo, si encuentra una tarjeta 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.

    
respondido por el Mark
3

El entorno de NI Labview es costoso, pero hará lo que necesite (por USB, Ethernet o PCI, dependiendo de lo que obtenga)

El Arduino Mega tiene 54 pines, que te acercan 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 a bajas tarifas de autobús. Cada instrucción en el Mega ocurre a 16MHz, por lo que tendrá una velocidad de transmisión bastante lenta, tendrá suerte o será muy inteligente si puede obtener una señal de 115200 baudios.

Al final, este es un proyecto muy diferente si se 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 las latencias y la sobrecarga), por lo que no puede hacer nada mejor que 480/64 = 7.5MHz sin almacenamiento en búfer. Con el 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 gigahertz.

Le sugeriría que trate muy seriamente de averiguar si puede usar una herramienta que le ofrezca 8 canales, y trate de analizarlos por separado.

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

    
respondido por el Kevin Vermeer
2

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

    
respondido por el endolith
2

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

Según "cómo bit bang SPI e interfaces paralelas en un FT232R" , aparentemente puedes hacer bit bang 8 pines digitales (¿posiblemente más?) En el FT232R controlado por software en su PC.

Junta de desbloqueo de $ 15 para FT232RL

Parece que lo que realmente desea es una interfaz de E / S digital; no necesitas ni quieres un microcontrolador programable. Si solo quisiera 16 bits, me gustaría ir con un par de placas FT232RL. Sin embargo, parece que un solo UBW32 de $ 40 parece darte las 64 E / S que deseas por menos costo que 8 de las tarjetas FT232RL que se requieren para obtener 64 E / S.

Estoy descubriendo que esto se está volviendo cada vez más común: a veces cuesta menos arrojar un microcontrolador completo a un problema, aunque tenga un millón de transistores "extra" que nunca usaré en él, que usar un disco duro. solución cableada.

    
respondido por el davidcary

Lea otras preguntas en las etiquetas