¿Cómo elegir el microcontrolador adecuado para su proyecto?
¿Cómo elegir el microcontrolador adecuado para su proyecto?
¿Cómo elegir el microcontrolador adecuado para su proyecto?
Al asumir los desafíos de construir un nuevo dispositivo electrónico, es necesario responder una serie de preguntas. Uno de los más importantes es la selección de componentes, que no siempre es fácil. En los últimos años, muchos componentes eran difíciles de conseguir y en ocasiones debían ser sustituidos rápidamente por otros con parámetros similares, incluso a costa de fabricar una nueva placa de circuito impreso. El "corazón" de muchos dispositivos modernos es un microcontrolador. La elección a veces es fácil debido a nuestras habilidades o equipamiento. Sin embargo, surgen nuevos desafíos y luego hay que responder muchas preguntas relacionadas con la elección y tener en cuenta varios criterios.
La selección de un microcontrolador para el proyecto creado se realiza al comienzo del trabajo. Teniendo en cuenta la oferta de sistemas, conviene tener en cuenta tres grupos: microcontroladores con núcleo de 8, 16 y 32 bits. La elección de un microcontrolador no está limitada por ninguna regla, pero hay muchos factores que deberían influir en la decisión. A veces, especialmente al comienzo de un proyecto, es difícil evaluar qué características del microcontrolador serán las más importantes para una aplicación determinada. Por ejemplo, la capacidad de funcionar en un amplio rango de temperaturas o la disponibilidad de módulos de interfaz integrados pueden entrar en conflicto con los requisitos de bajo consumo de energía del suministro.
Descripción del proyecto
La selección de componentes para el dispositivo es un compromiso entre parámetros, precio, disponibilidad y equipamiento del taller. No es diferente en el caso de un componente tan importante como el microcontrolador. Su selección puede resultar aún más difícil porque afecta a los parámetros actuales y futuros del dispositivo terminado, así como a la posibilidad de crear versiones de desarrollo posteriores. Un buen método es preparar una descripción de los requisitos en esta etapa, lo que no sólo facilitará la selección de un microcontrolador, sino que también ayudará a comparar las características y parámetros de los sistemas individuales.
La primera parte de la descripción debe contener la funcionalidad básica, es decir, una lista de características clave para un proyecto determinado. Debe contener la siguiente información:
- ¿Qué funciones realizará el dispositivo diseñado?
- ¿Cuáles serán las señales de entrada y salida? ¿Cuáles serán sus niveles (voltaje y corriente), cuál será su frecuencia?
- ¿Se comunicará el dispositivo con el medio ambiente? Si es así, ¿de qué manera? ¿Se requerirá una interfaz inalámbrica? ¿Se presentarán los datos al usuario en una pantalla gráfica?
- ¿Qué datos se almacenarán en la memoria y cuánto espacio se necesitará para ello? ¿Estos datos también deberían estar disponibles después de apagar/encender la alimentación?
- ¿Cuál debería ser la velocidad de reacción ante el evento?
- ¿En qué idioma se creará la aplicación de control (esto afecta al tamaño de la memoria operativa y de la memoria del programa)?
Entonces vale la pena echar un vistazo a las restricciones de diseño:
- ¿Cuál es el precio objetivo del dispositivo (que afectará el costo de ensamblaje y componentes)?
- ¿Cuáles son las restricciones de energía? ¿El dispositivo debería ser portátil o estacionario? ¿Cuál es el tiempo de funcionamiento requerido después de cambiar la batería/cargarla?
- ¿Cuál es el tamaño objetivo del dispositivo? ¿En qué carcasa se instalará?
- ¿El dispositivo está destinado a aplicaciones industriales, de consumo o especiales?
Con base en la lista de requisitos, se pueden estimar los recursos que el microcontrolador debe tener a su disposición. Puede especificar los requisitos de memoria, datos y programas. Puede especificar la cantidad de pines de E/S, periféricos y estimar el rendimiento central requerido.
En esta etapa de creación de las especificaciones de diseño, no se necesita gran precisión. El objetivo es únicamente estimar las necesidades para poder comparar las características y funciones de los sistemas de microcontroladores seleccionados. Por ejemplo, la implementación de hardware de las funciones del modo de suspensión, la respuesta en tiempo real y la inmunidad a las perturbaciones EMI son típicas de los sistemas con un núcleo de 8 bits. Vale la pena elegir microcontroladores de 32 bits si desea lograr multitarea, gestión dinámica del consumo de energía, alta potencia informática o la capacidad de trabajar bajo el control de un sistema operativo.
Criterios de elección
Para que te resulte más fácil elegir el microcontrolador adecuado, te proponemos una serie de criterios que puedes seguir. Deben ser tratados como consejos, temas de reflexión, clasificados según importancia y características esperadas del dispositivo, añadiendo criterios propios no incluidos en este texto. Para algunos dispositivos, ciertas cuestiones pueden ser cruciales, mientras que para otros pueden incluso omitirse.
Tipo de energía
Los dispositivos portátiles suelen funcionar con pilas o acumuladores. Por lo tanto, se requiere que el microcontrolador integrado en dicho dispositivo consuma la menor cantidad de energía posible. A su vez, los microcontroladores integrados en dispositivos alimentados por la red eléctrica (de una fuente de alimentación) también deberían ahorrar energía para mantenerse al día con las tendencias de las aplicaciones modernas, pero no es necesario minimizar por completo el consumo de energía.
El microcontrolador que controla la aplicación de la batería debe tener un núcleo muy eficiente para que pueda realizar tantas operaciones como sea posible después de despertarse del estado de suspensión, en el que permanecerá la mayor parte del tiempo (para minimizar el consumo de energía). Por lo tanto, en la mayoría de los casos, la mejor opción para un dispositivo móvil será el diseño con núcleo ARM de 32 bits. En un dispositivo estacionario con fuente de alimentación propia, la velocidad del microcontrolador es un criterio importante, pero sólo para satisfacer las necesidades de la aplicación.
En un dispositivo portátil, la gran cantidad de estados de suspensión en los que puede entrar el microcontrolador es una ventaja. Ésta es una característica típica de los microcontroladores de 32 bits; los ordenadores más simples de 8 bits tienen como máximo uno o dos modos de funcionamiento con un consumo de energía reducido. A menudo sucede que el microcontrolador puede funcionar o apagarse. Para muchas aplicaciones esto no supondrá ninguna diferencia, pero para aplicaciones más avanzadas puede ser necesario admitir más modos de ahorro de energía. Esto le permite minimizar el consumo de energía promedio y extender el tiempo de funcionamiento con batería.
Valor de tensión de alimentación
Vale la pena considerar el valor de la tensión de alimentación en al menos dos aspectos. En primer lugar, afectará la velocidad del microcontrolador. Por lo general, cuanto menor es el voltaje de suministro, más lento funciona el núcleo (menor es la frecuencia con la que se puede sincronizar). Esto debe tenerse en cuenta al considerar la velocidad de ejecución del código. El segundo aspecto son los sistemas externos cooperantes. La cuestión suele ser si un microcontrolador alimentado con bajo voltaje puede funcionar, por ejemplo, con sistemas de interfaz que requieren un voltaje más alto. Esto significa que es necesario comprobar si dichos sistemas están disponibles, si será necesario utilizar convertidores especiales o alimentar el microcontrolador con un voltaje superior al previsto.
El valor del voltaje de suministro también afectará las pérdidas de energía en el núcleo, pero en la mayoría de las aplicaciones de microcontroladores no requieren ningún enfriamiento adicional.
Número de pines y su tipo
Un criterio importante es el número de pines de E/S en la carcasa que planeamos usar en la aplicación. Al considerarlos, es necesario tener una aplicación organizada "aproximadamente". Quiero decir, tienes que saber de qué tipo de pantalla se utilizará, cómo se controlará, si se necesitará algún sistema de interfaz de entrada/salida y cómo se conectarán al propio microcontrolador. También necesita saber el número de pines de E/S binarios necesarios (entradas y salidas) y el número planificado de botones, entradas/salidas analógicas, etc. Sólo cuando todo esto esté adecuadamente planificado podremos evaluar cuántos pines necesitaremos y en qué carcasa colocaremos nuestro microcontrolador.
Por supuesto, se pueden utilizar sistemas adicionales de expansión con una interfaz en serie, lo que reduce significativamente la necesidad de pines, pero al mismo tiempo complica el software, la placa y dificulta el inicio del dispositivo. Seleccionar un microcontrolador en términos de número de pines es siempre un compromiso entre lo que está disponible y el esfuerzo puesto en escribir y ejecutar posteriormente la aplicación terminada.
Requisitos especiales y adicionales
Los microcontroladores modernos están bastante bien equipados con módulos periféricos integrados. Entre ellos podemos encontrar aquellos que pueden ser controlados directamente por los conductores de motores o transformadores. Puede encontrar aquellos que tienen una gran cantidad de generadores PWM incorporados, que serán útiles para controlar muchos servomecanismos en el manipulador. Muchos se pueden conectar directamente a una interfaz USB. Los módulos periféricos integrados simplifican la aplicación, aceleran su funcionamiento y reducen el tamaño del código del programa. También permiten que el dispositivo se inicie mucho más rápido. Por tanto, a la hora de elegir un microcontrolador, conviene tener en cuenta la disponibilidad de módulos periféricos y otras funcionalidades especiales.
La elección de las señales procesadas también es muy importante. Si vamos a procesar señales analógicas en la aplicación, entonces el microcontrolador debe tener un alto rendimiento, tener una cantidad adecuada de convertidores A/C operando a la frecuencia de muestreo requerida, y sería mejor si estuvieran disponibles módulos periféricos para respaldar su trabajo, tales como DMA, MAC (Multiply And Accumulate), unidad DSP o FPU. Entonces es posible procesar señales analógicas de manera eficiente sin aumentar los requisitos para el núcleo en sí y su rendimiento.
La velocidad de los sistemas centrales y periféricos
La elección entre la implementación de funciones mediante hardware o software tiene consecuencias para todo el proyecto. Es una elección entre la baja demanda de potencia informática y la simplicidad del diseño. Al tomar esta decisión, también es necesario prestar atención a las consecuencias de su elección. Por ejemplo, es posible implementar la interfaz UART en software, pero esto requiere que la CPU escuche constantemente la señal en la entrada seleccionada o interrumpa la ejecución del hilo principal del programa si decidimos usar interrupciones desde la entrada E/S. Esta funcionalidad puede consumir una gran parte de la potencia de procesamiento de la CPU y ser un obstáculo para admitir otros periféricos. Es similar con las pantallas gráficas. Una gran cantidad de datos transferidos puede afectar la velocidad de ejecución del programa; aquí, especialmente con una resolución de pantalla alta, puede ser mucho más eficiente usar DMA, que transmite datos desde la memoria a través de hardware SPI sin la participación del núcleo.
Recursos de memoria disponibles
Por definición, el sistema operativo ofrece multitarea y cambia de forma independiente entre estados individuales de la máquina de estados, lo que simplifica significativamente la programación. Por otro lado, una máquina de estados autoescrita ocupa mucha menos memoria de programa y datos, requiere menos potencia informática y puede ser óptima desde el punto de vista de las necesidades de la aplicación y la velocidad de su funcionamiento. Ambos enfoques funcionan y se utilizan en la práctica.
El sistema operativo requiere muchos más recursos de memoria que una aplicación escrita por uno mismo. Además del programa real, debe tener espacio para datos redundantes, que en este caso incluirán el código del sistema operativo almacenado en la memoria Flash y su necesidad de memoria operativa (pila, variables del sistema, manejo de interrupciones, circuitos de interfaz y otros).
Los programas escritos en lenguaje ensamblador suelen requerir la menor cantidad de memoria. El uso de un compilador de lenguaje de alto nivel requiere asignar una cierta cantidad de memoria a la pila del programa y a las variables. Como se mencionó anteriormente, el sistema operativo y el programa que se ejecuta bajo su control requieren aún más memoria. También es importante si el microcontrolador funcionará con una pantalla gráfica, porque entonces los patrones de iconos u otros elementos gráficos se almacenan en la memoria Flash, que generalmente están en forma de mapas de bits y, cuando se almacenan junto con los atributos de color, ocupan una gran cantidad de espacio.
Fiabilidad eléctrica
En una aplicación ideal, no se tiene en cuenta la resistencia del microcontrolador a las fluctuaciones de la tensión de alimentación, las perturbaciones EMI o las sobretensiones en las líneas de E/S. Sin embargo, en condiciones de aplicación real, especialmente en vehículos, el microcontrolador está muy expuesto a estos factores. Los microcontroladores con núcleo de 8 bits o los microcontroladores intermedios con núcleo de 16 bits alimentados por 5V funcionarán mucho mejor en vehículos. La práctica muestra que el uso de un núcleo de 32 bits alimentado por un voltaje bajo de 2,7…3,3 V es difícil porque implica un mayor nivel de exposición a perturbaciones EMI. Una aplicación de este tipo es posible, pero su implementación r quiere mucho más tiempo.
Volumen de producción
Para la selección de los componentes, no sólo del microcontrolador, es importante saber si el dispositivo es un módulo de una máquina industrial que se ofrece en un pequeño número de piezas o si se ofrecerá en el mercado de consumo en miles de piezas. En el primer caso, normalmente no es necesario preocuparse por las dimensiones de la carcasa y el precio de los componentes. En el segundo caso, es necesario prestar atención no sólo a los componentes en sí y sus precios, sino también al método de instalación en la placa de destino.Entorno de ejecución, herramientas de software
Hoy en día, para muchos microcontroladores, existe una amplia selección de excelentes compiladores, editores, depuradores, simuladores y otras herramientas de hardware y software gratuitos de alto nivel. Por lo tanto, muchas veces este criterio no será de gran importancia, pero no siempre es así. Si estamos diseñando un dispositivo para la industria automotriz o de la aviación, debemos utilizar herramientas de software certificadas, que no son baratas y limitan las opciones a familias específicas de sistemas, a menudo fabricantes específicos. Un diseñador que construya un nuevo dispositivo destinado al mercado de consumo, por ejemplo un controlador de juguete, tendrá mucha más libertad.
Al elegir el tipo de sistema y el entorno de ejecución IDE, vale la pena prestar atención a la disponibilidad de bibliotecas de funciones. A menudo, los fabricantes de chips trabajan mucho para el programador, realizando funciones y procedimientos responsables del manejo de numerosas funcionalidades y módulos periféricos: interfaz táctil, pantalla, interfaces de comunicación, generadores PWM, etc. Los fragmentos de código estándar, probados en los laboratorios del fabricante, pueden acelerar significativamente la ejecución del programa y acortar el tiempo de trabajo en el proyecto. También vale la pena reutilizar código escrito previamente, por lo que es aconsejable elegir un fabricante de chips que proporcione una variedad de microcontroladores, pero programados de la misma manera y utilizando las mismas herramientas.
Observaciones finales
Una vez que hayamos analizado los criterios y decidido los compromisos, podemos comenzar a buscar un microcontrolador que cumpla con nuestros requisitos de diseño. Lamentablemente, a menudo resulta que, a pesar de la gran cantidad de sistemas disponibles, resulta difícil elegir el modelo perfecto. Puede que sea necesario renunciar a algunas opciones que, por un lado, complican el proyecto y, por otro, aumentan los costes. No se trata sólo del microcontrolador en sí, sino también del precio del equipo necesario para ejecutar y probar las funciones del dispositivo terminado, así como del costo de los sistemas periféricos necesarios para implementar una funcionalidad determinada. No es raro que la introducción de funciones adicionales aumente la complejidad de las pruebas y pueda extender significativamente el tiempo que lleva introducir un dispositivo en el mercado. Las oportunidades de talleres también son importantes. A veces la única opción de programación posible es guardar el sistema soldado en la placa (in-circuit). La mayoría de los microcontroladores modernos tienen esta capacidad, pero no todos.
