20 votos

¿Cómo puedo venir para arriba con una lista de requisitos para un microcontrolador para mi proyecto? Cómo puedo encontrar los microcontroladores de que forma?

He estado trabajando en una eBike de control de proyecto en el Arduino MEGA2560. El programa se ejecuta 3x lazos de control PID, una capacidad de la batería control de bucle (de interpolación basado en las tablas de búsqueda), un velocímetro (muestras en función de un interruptor de láminas), así como una pantalla LCD para mostrar información. Sus entradas son 3 las señales analógicas: voltaje de la batería, la corriente de usuario y acelerador de entrada, así como una entrada digital: velocímetro (reed switch) señal de encendido/apagado. En la actualidad, con todo esto se ejecuta en el "largo" de la aritmética el Arduino se las arregla para completar 10 bucles por segundo. Como la pantalla de TFT LCD requiere de una tremenda cantidad de potencia de cálculo, estoy pensando en reemplazarlo con una pantalla Alfanumérica.

Las salidas consisten en un análogo del acelerador señal que va a un controlador de motor, la pantalla LCD y, potencialmente, un par de otros dispositivos que requieran señales analógicas. Por lo tanto, convertidores ADC son esenciales y DAC sería muy útil, aunque actualmente estoy usando el Arduino salida PWM con un RC filtro de paso bajo. Del mismo modo, la capacidad para leer señales digitales y analógicas, sin interrumpir el procesador sería genial.

Me gustaría llegar a hacer un producto de consumo fuera de esto, por lo tanto quiero construir mi propia plataforma de la tierra para arriba con un microcontrolador diferente que me podría dar al menos 100 muestras por segundo (10 veces lo que el Arduino es lograr). También, para evitar flotante puntos, mis cálculos de tiempo variables y, en consecuencia, los números más grandes de 16 bits, así que estoy asumiendo un MCU de 32 bits sería una buena idea. También, una MCU capaz de hacer los cálculos de punto flotante puede ser interesante para simplificar las matemáticas en el código.

Al final no estoy seguro de cómo empezar a buscar Mcu que satisfaga estos requisitos y permitir una rápida transición desde el entorno de desarrollo de Arduino. Cualquier orientación sobre cómo ir sobre la búsqueda de tales Mcu sería muy apreciada!

18voto

jns Puntos 449

(Esta es una guía genérica. Sospecho que usted también podría beneficiarse de la optimización de código, pero que está fuera del alcance de este sitio web).

Paso 1: Bruto tamaño, presupuesto, proveedores

Escoja uno de los siguientes:

  • Equipo (Raspberry Pi, Beagleboard, PC104 de la junta, Intel Edison, etc). Botas de un propósito general sistema operativo y tiene un montón de potencia de procesamiento. Más caro y hambriento de poder. $10-$100.

  • Gran MCU. ARM Cortex-A / PIC32 / dsPIC / AVR32 / TI C de la serie DSP etc. Decente de la potencia de computación, OS opcional. ~$5.

  • Pequeño MCU. Cortex-M / PIC16. No es realmente suficiente espacio para un SO de verdad, tal vez sólo un ligero programador de tareas. ~$2.

  • Pequeña MCU. Realmente sólo para aplicaciones donde la atención sobre el último microamperios de consumo de energía. ~$1 o menos.

Usted también debe tener en cuenta en esta etapa de la cual los vendedores y los toolchains le gusta y le disgusta. Echa un vistazo al precio de las cosas, como en el circuito de depuración de los dispositivos de e IDEs.

Paso 2: Mínimo Periféricos

¿Necesita cosas como USB? PCI? HDMI? SATA? Inusualmente rápido Adc o Dac? Casi todos los "pequeños" o "pequeño" de la categoría de no contar con estos, a pesar de que USB es bastante ampliamente disponibles.

Paso 3: Prototipo

Escoja algo que cumple con los criterios anteriores, al azar si es necesario, realizar un inicio, averiguar cómo es factible y cuánto espacio / potencia de procesamiento que necesita. Ya has hecho algo de esto. Escrito en C debe hacer gran parte de la lógica portátil.

Una vez que el prototipo se puede decir a sí mismo, "yo necesito uno como este, pero con más X" y dejar que guía sus decisiones.

Paso 4: Reducir

Es generalmente más fácil comenzar con la más grande (la mayoría de Flash y RAM) miembro de una familia de CPU, escribir v1 de su aplicación y, a continuación, elija un más pequeño, más uno que se ajuste. También puede pasar el tiempo en el arte del software de adaptación en menos recursos. Lo que vale la pena depende de la cantidad de unidades que vamos a hacer.

13voto

dim Puntos 618

Bonito proyecto. Aquí están algunas sugerencias, pero sería difícil generalizar esto para cada proyecto, sin embargo.

Comience con los requisitos de cálculo

Esto es lo que le dirá qué tipo de núcleo que necesita y los resultados generales de la MCU. Le sugiero que comience con esta, ya que obviamente no puede ser extendido el uso de componentes externos, a diferencia de los periféricos.

En primer lugar, parece que el uso pesado de matemática de las operaciones con enteros grandes dentro del bucle. Así que, como usted sugiere, de 32 bits sería útil aquí, así BRAZO por lo tanto llega como un candidato ideal. En cuanto a la frecuencia de operación: en la actualidad, se está utilizando un Arduino MEGA2560 (16MHz, supongo) y usted puede hacer 10 bucles/s. Si quieres conseguir el 100 loops/s, usted debe estar bien con un Cortex-M3/M4 en el rango de 100 mhz o más (estimación aproximada). Tenga en cuenta que el Cortex-M4F tiene una unidad de punto flotante.

Ya hemos estrechado hacia abajo de la selección.

Los requisitos de memoria

Esta es fácil: elija el MCU que tiene más memoria RAM/Flash de su gama para el prototipo. Una vez que se valida el prototipo, cambie a la MCU de la misma gama que acaba de suficiente memoria RAM/Flash, ahora que usted sabe exactamente a sus requisitos.

Tenga en cuenta que no creo que las necesidades de su aplicación increíbles cantidades de memoria.

Ahora, los periféricos

Es absolutamente necesario disponer de algunos ADC. Todos los Mcu de la gama que estamos mirando, así que no es un criterio útil. Tampoco lo son las entradas/salidas digitales, excepto si usted necesita un número muy grande de ellos (que no parece ser tu caso).

Parece que necesita un DAC. Sin embargo, esto es algo que en realidad no va a encontrar fácilmente y se estrecha hacia abajo los candidatos demasiado. Lo que no podemos mantener ese requisito y nos quedamos con un PWM y filtro de paso bajo (que sin duda es aceptable, en realidad).

Usted no mencionan ninguna interfaz de comunicación, a excepción de la pantalla LCD (más adelante). De todos modos, todos los Mcu han I2C/SPI, UART/... si necesitas algo.

La pantalla LCD

Esta es más difícil, porque hay un montón de diferentes soluciones que pone completamente diferentes requisitos en el MCU. Pero no elige el LCD dependiendo de la MCU. Elija el LCD que usted desea para su producto y, a continuación, seleccione la MCU que va a conducir de manera eficiente.

  • Si quieres un personaje LCD: entonces el más fácil y la menos restrictiva para el MCU es hablar con ella a través de alguna interfaz en serie (a menudo SPI). De esta forma no se usa demasiado Pines, usted puede utilizar más pequeño/más barato Mcu y la velocidad no es un problema.
  • Si quieres una gráfica TFT LCD: si es pequeña, el enlace de serie todavía puede ser apropiado. Sin embargo, para 320x200 o más y si quieres tener una bonita interfaz gráfica, podrás empezar a querer comunicarse con la interfaz paralela. En este caso, se utilizan algunas GPIO (pero que se va a poner más carga en el MCU, porque tendrá a bit bang las líneas de control) o elige un MCU que cuenta con una interfaz de LCD (que a menudo es el mismo como una memoria externa de la interfaz). Este último pone una fuerte restricción de la MCU elección, pero no tiene otros fuertes restricciones, así que...

Ahora, usted elige

Ir a ST Micro / NXP / Atmel sitio web y utilizar sus MCU herramientas de selección. Vas a pasar un montón de tiempo a la lectura de las hojas de datos, también. Tome este tiempo. No se desperdicia. Cualquier cosa que usted va a aprender aquí, incluso si usted no lo utiliza específicamente para este proyecto, puede ser útil.

En este punto, también es necesario tener una mirada en el número de Pines que usted realmente necesita y comprobar el esquema de multiplexación de los elegidos MCU los candidatos para verificar que usted puede utilizar todos los Pines de las funciones que usted necesita. Porque, obviamente, usted tendrá que tomar el Mcu con el menor número de pines que cumpla con sus requisitos (por costo/PCB de bienes raíces razones).

Compruebe los precios y la disponibilidad en Mouser/Digikey. Pero usted no necesita algo especialmente caros aquí. Tal vez por 5€ o así.

La última cosa con respecto a la de control del LCD

Parece que la actualización de la pantalla LCD es parte de su bucle principal. No debería. Especialmente si eres un bucle de 100 veces por segundo, es inútil. Hacer que el bucle de control de calcular todo y ajustar el motor de comandos en cada iteración, pero acabo de actualizar los valores a mostrar en algún lugar de la memoria. Luego, tenemos otro lazo con menor prioridad de visualización de esta información para el usuario cuando no hay nada más importante que hacer.

Sí, idealmente, se requiere algún cambio de tarea y esas cosas. Un verdadero sistema operativo, en realidad (búsqueda FreeRTOS, Coocox OS, Nuttx, ... esos son muy pequeñas, son muy utilizados en Cortex-M, y proporcionar la necesaria multitarea mecanismos).

4voto

el_tenedor Puntos 480

Tenga en cuenta que este es un tema amplio que puede ser contestada correctamente utilizando múltiples (subjetiva) de los enfoques.

También, stackexchange formato no es bueno en el diseño de soluciones para los problemas. Por ejemplo, rara vez conseguir que la gente de diseño de hardware para usted. En lugar de proponer un diseño de hardware y hacer preguntas al respecto.

Que dijo...

Comience con las características del procesador no se puede cambiar. Como la velocidad y la memoria (si es aplicable) de tamaño. Investigar si necesita interrumpe y lo complejo que es el manejo de la interrupción debe ser.

Si usted necesita soporte para periféricos tales como Adc o Dac, la situación es más compleja. En caso de que estas características de ser integrada en el procesador o ser externo del procesador. Precio, precisión e incluso el ruido son factores en la presente decisión.

Si periféricos externos deben ser apoyados en cuenta el tipo de serie de comunicaciones que sean necesarias. Hardware externo puede necesitar SPI, I2C o de otro tipo de UART. Si la velocidad de datos es de alta podría ser la mejor manera de encontrar un procesador con DMA características asociadas con sus puertos de comunicación serial.

Por último, si este es un procesador incorporado de aplicación (de lo que normalmente significa un procesador dedicado a una tarea), considere la posibilidad de romper con los requisitos en varios grupos y la asignación de un procesador a cada uno. Por ejemplo, una interfaz gráfica de usuario procesador de visualización probable que no necesita un ADC característica. Este enfoque objetivo de resolver los problemas que han demostrado ser exitosos en el software y con la caída del procesador de precios también puede ser aplicado a hardware.

En el mundo real, este enfoque es iterativo. Es decir, muchos de los proyectos empiezan con un procesador y intercambiar diferentes procesadores como el hardware y / o problemas de software ocurrir, o el alcance de los cambios del proyecto.

3voto

Jenna Puntos 46

Yo no veo a nadie mencionar el costo de las herramientas. Mi empresa elija a TI CC2541 y descubrió que sólo se compilan con un $4k IAR compiler, definitely a show stopper for a hobbyist. Also the programmer. It can be a $20 o mucho más. Más barato herramientas parecen ser más la norma que ahora, así que tal vez esto va a ser una cosa del pasado pronto.

También, si el reflujo del mismo, los paquetes como de TQFP es más fácil que, por ejemplo, BGA. Un gran BGA es duro para obtener el derecho, basado en la experiencia personal.

2voto

Spehro Pefhany Puntos 90994

Si el producto es relativamente sensible a los precios y se han decente financiación para el desarrollo, usted puede conseguir un montón de placas de evaluación y el perfil del código en cada uno para tener una idea. Que debería ser relativamente sencillo si el código está escrito en portátiles C. Aparte de la micro usted será la evaluación de los toolchains con versiones de demostración antes de desembolsar el costo de un completo IDE como IAR o Keil. En algunos casos puede perfilar el cuello de botella de código directamente en el IDE sin necesidad de hardware.

Si usted está fuertemente limitado por el coste de desarrollo, puede que tenga que comprometer a encontrar algo que no cuesta demasiado para el desarrollo de la instalación.

Por ejemplo, ST tiene un ARM Cortex M7 eval board con un bonito color de la pantalla de < $100. Tiene una FPU con características de DSP para que pudiera hacer cualquier cosa que usted habló acerca de la facilidad - probablemente un lazo PID a 100kHZ en lugar de sólo 100 hz. Es probablemente una exageración, a menos que la pantalla es una prioridad.

Si usted está apuntando para un procesador más barato sin FPU entonces usted probablemente querrá perfil de la PID de código en su forma acabada. Asegúrese de que todos los de escala y de alineamiento y calibración de los factores se incluyen, como se puede sumar en términos de tiempo de procesamiento.

A menudo, los periféricos y los asociados del middleware de la calidad y la disponibilidad (y los términos de la licencia) tendrán una gran influencia en su elección. Si usted necesita BT o Wifi o USB en modo de host y la GRASA que almacenan archivos en una unidad usb o una SD interfaz de estos serán todos los factores importantes. Algunos de los chips tienen un controlador de LCD y digitalizador de controlador que se puede permitir el uso de un relativamente bajo costo panel de TFT. No te pierdas el a veces altos cargos de licencia.

Si usted tiene alguna idea de lo que el programa requiere de memoria, velocidad de procesamiento y los dispositivos periféricos (incluir FPU en este) se puede hacer un paramétrica de búsqueda en el distribuidor antes de la perforación hacia abajo en las hojas de datos. Algunas cosas que son demasiado restrictiva podría ser - por-agujero paquete DAC interno, interno Ethernet PHY, FPU. Ninguno de estos son probablemente necesarios y se puede restringir indebidamente sus opciones antes de tiempo.

Buena suerte con él, es un montón de trabajo para hacer esto correctamente. En mi experiencia es una falsa economía, para cortar demasiado cerca de un nuevo producto, ya que el cliente(s) que inevitablemente hará por cosas que no había previsto y que quiere tener un poco de capacidad de sobra para que le proporcione sin empezar de nuevo. Por otro lado, si el producto es demasiado caro usted no será capaz de vender lo suficiente en márgenes adecuados para sostener el negocio.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X