Microcontrolador

Microcontrolador
Información sobre la plantilla
Microcontrolador.jpg
Circuito integrado programable
Fecha de invención:1971

Microcontrolador. Es un circuito integrado de alta escala de integración que incorpora la mayor parte de los elementos que configuran un controlador y que contiene todos los componentes fundamentales de un ordenador, aunque de limitadas prestaciones y que se suele destinar a gobernar una sola tarea. En su memoria sólo reside un programa que controla en funcionamiento de una tarea determinada, sus líneas de entrada/salida se conectan a los sensores y actuadores del dispositivo a controlar y, debido a su pequeño tamaño, suele ir integrado en el propio dispositivo al que gobierna.

Componentes

  • Procesador o CPU (Unidad Central de Proceso).
  • Memoria RAM para contener los datos.
  • Memoria para el programa tipo ROM/EPROM/EEPROM/Flash.
  • Líneas de E/S para comunicarse con el exterior.
  • Diversos módulos para el control de periféricos (temporizadores, puertos serie y paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores Digital/Analógico, etc.).
  • Generador de impulsos de reloj que sincronizan el funcionamiento de todo el sistema.

Características

Son diseñados para reducir el costo económico y el consumo de energía de un sistema en particular. Por eso el tamaño de la unidad central de procesamiento, la cantidad de memoria y los periféricos incluidos dependerán de la aplicación. El control de un electrodoméstico sencillo como una batidora utilizará un procesador muy pequeño (4 u 8 bits) porque sustituirá a un autómata finito. En cambio, un reproductor de música y/o vídeo digital (mp3 o mp4) requerirá de un procesador de 32 bits o de 64 bits y de uno o más Códecs de señal digital (audio y/o vídeo).

El control de un sistema de frenos ABS (Antilock Brake System) se basa normalmente en un microcontrolador de 16 bits, al igual que el sistema de control electrónico del motor en un automóvil. Los microcontroladores representan la inmensa mayoría de los chips de computadoras vendidos, sobre un 50 % son controladores "simples" y el restante corresponde a DSPs más especializados. Mientras se pueden tener uno o dos microprocesadores de propósito general en casa (Ud. está usando uno para esto), usted tiene distribuidos seguramente entre los electrodomésticos de su hogar una o dos docenas de microcontroladores.

Pueden encontrarse en casi cualquier dispositivo electrónico como automóviles, lavadoras, hornos microondas, teléfonos, etc.Un microcontrolador difiere de una unidad central de procesamiento normal, debido a que es más fácil convertirla en una computadora en funcionamiento, con un mínimo de circuitos integrados externos de apoyo. La idea es que el circuito integrado se coloque en el dispositivo, enganchado a la fuente de energía y de información que necesite, y eso es todo. Un microprocesador tradicional no le permitirá hacer esto, ya que espera que todas estas tareas sean manejadas por otros chips. Hay que agregarle los modulos de entrada y salida (puertos) y la memoria para almacenamiento de información. Por ejemplo, un microcontrolador típico tendrá un generador de reloj integrado y una pequeña cantidad de memoria de acceso aleatorio y/o ROM/EPROM/EEPROM/flash, significando que para hacerlo funcionar, todo lo que se necesita son unos pocos programas de control y un cristal de sincronización.

Los microcontroladores disponen generalmente también de una gran variedad de dispositivos de entrada/salida, como convertidores de analógico a digital, temporizadores, UARTs y buses de interfaz serie especializados, como I2C y CAN. Frecuentemente, estos dispositivos integrados pueden ser controlados por instrucciones de procesadores especializados. Los modernos microcontroladores frecuentemente incluyen un lenguaje de programación integrado, como el lenguaje de programación BASIC que se utiliza bastante con este propósito. Los microcontroladores negocian la velocidad y la flexibilidad para facilitar su uso. Debido a que se utiliza bastante sitio en el chip para incluir funcionalidad, como los ]]dispositivos de entrada/salida]] o la memoria que incluye el microcontrolador, se ha de prescindir de cualquier otra circuitería.

Estructura básica de un microcontrolador

En esta figura, vemos al microcontrolador metido dentro de un encapsulado de circuito integrado, con su procesador (CPU), buses, memoria, periféricos y puertos de entrada/salida. Fuera del encapsulado se ubican otros circuitos para completar periféricos internos y dispositivos que pueden conectarse a los pines de entrada/salida. También se conectarán a los pines del encapsulado la alimentación, masa, circuito de completamiento del oscilador y otros circuitos necesarios para que el microcontrolador pueda trabajar.

Aplicaciones de los microcontroladores

Si sólo se dispusiese de un modelo de microcontrolador, éste debería tener muy potenciados todos sus recursos para poderse adaptar a las exigencias de las diferentes aplicaciones. Esta potenciación supondría en muchos casos un despilfarro. En la práctica cada fabricante de microcontroladores oferta un elevado número de modelos diferentes, desde los más sencillos hasta los más poderosos. Es posible seleccionar la capacidad de las memorias, el número de líneas de E/S, la cantidad y potencia de los elementos auxiliares, la velocidad de funcionamiento, etc. Por todo ello, un aspecto muy destacado del diseño es la selección del microcontrolador a utilizar.

Cada vez existen más productos que incorporan un microcontrolador con el fin de aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su fiabilidad y disminuir el consumo. Algunos fabricantes de microcontroladores superan el millón de unidades de un modelo determinado producidas en una semana. Este dato puede dar una idea de la masiva utilización de estos componentes. Los microcontroladores están siendo empleados en multitud de sistemas presentes en nuestra vida diaria, como pueden ser juguetes, horno microondas, frigoríficos, televisores, ordenadores, impresoras, módems, el sistema de arranque de nuestro coche, etc. Y otras aplicaciones con las que seguramente no estaremos tan familiarizados como instrumentación electrónica, control de sistemas en una nave espacial, etc. Una aplicación típica podría emplear varios microcontroladores para controlar pequeñas partes del sistema. Estos pequeños controladores podrían comunicarse entre ellos y con un procesador central, probablemente más potente, para compartir la información y coordinar sus acciones, como, de hecho, ocurre ya habitualmente en cualquier PC.

Los microcontroladores se encuentran por todas partes:

  • Sistemas de comunicación: en grandes automatismos como centrales y en télefonos fijos, móviles, fax, etc.
  • Electrodomésticos: lavadoras, hornos, frigoríficos, lavavajillas, batidoras, televisores, vídeos, reproductores DVD, equipos de música, mandos a distancia, consolas, etc.
  • Industria informática: Se encuentran en casi todos los periféricos; ratones, teclados, impresoras, escáner, etc.
  • Automoción: climatización, seguridad, ABS, etc.
  • Industria: Autómatas, control de procesos, etc
  • Sistemas de supervisión, vigilancia y alarma: ascensores, calefacción, aire acondicionado, alarmas de incendio, robo, etc.
  • Otros: Instrumentación, electromedicina, tarjetas (smartcard), sistemas de navegación, etc.

Herramientas de Desarrollo

Las herramientas de desarrollo están formadas por un conjunto de programas e interfaces(IDEs) que permiten realizar los proyectos de la forma más rapida y eficiente posible. Las principales herramientas de ayuda al desarrollo de sistemas basados en microcontroladores se describen a continuación

Ensamblador

La programación en lenguaje ensamblador puede resultar un tanto ardua para el principiante, pero permite desarrollar programas muy eficientes, ya que otorga al programador el dominio absoluto del sistema. Los fabricantes suelen proporcionar el programa ensamblador de forma gratuita y en cualquier caso siempre se puede encontrar una versión gratuita para los microcontroladores más populares.

Compilador

La programación en un lenguaje de alto nivel (como C o Basic) permite disminuir el tiempo de desarrollo de un producto y si además está familiarizado con C o Basic es una buena opción. No obstante, cuando el compilador convierta el código del programa a un lenguaje ensamblado, cada línea de código del programa en lenguaje de alto nivel habrá generado bastantes más líneas de código en lenguaje ensamblador, normalmente en una relación de uno a tres. Esto significa que para utilizar un lenguaje de alto nivel necesitaremos un microcontrolador con una capacidad de memoria relativamente grande. Si el programa que estamos desarrollando necesita utilizar números con decimales, o con notación científica o se utilizan operaciones complejas, como pueden ser las trigonométricas, es casi obligado utilizar un lenguaje de alto nivel. Pero si lo que se va a hacer es manipular bits en registros, entradas, salidas y cálculos sencillos, el lenguaje ensamblado es la mejor opción. Las versiones más potentes de compiladores suelen ser muy caras, aunque para los microcontroladores más populares pueden encontrarse versiones demo limitadas e incluso compiladores gratuitos. Como compilador gratuito puede utilizarse el compilador C GNU, que es un compilador C de código abierto tan bueno como los compiladores C comerciales pero que sin embargo tiene un proceso de instalación que no es sencillo. Además hay que comprobar que arquitecturas de microcontrolador soporta. Algunas de las cuales son MSP430 de TI, AVR de Atmel y HC11 de Motorola.

Simulador/Depurador

Se trata de software que es capaz de ejecutar en una PC aplicaciones desarrolladas para el microcontrolador. Estos permiten tener un control absoluto sobre la ejecución de la aplicación, siendo ideales para la depuración de las mismas. Su gran inconveniente es que generalmente se imposibilita simular la entrada de señales (sobre todo analógicas) al microcontrolador. Tampoco toman en cuentan los posibles ruidos en las entradas, pero, al menos, permiten el paso físico de la implementación de un modo más seguro y menos costoso, puesto que ahorraremos en grabaciones de chips para la prueba in-situ.

Placas de demostración

Se trata de pequeños sistemas con un microcontrolador ya montado y que suelen conectarse a un PC desde el que se cargan los programas que se ejecutan en el microcontrolador. Las placas suelen incluir indicadores visuales, LCD, teclados, fácil acceso a los pines de E/S, etc. Pueden incluir un programa de control o sistema operativo que recibe el nombre de programa monitor. El programa monitor de algunas placas de demostración, aparte de permitir cargar programas y datos en la memoria del microcontrolador, puede permitir en cualquier momento realizar ejecución paso a paso(debug), monitorizar el estado del microcontrolador o modificar los valores almacenados en sus registros.

Emuladores en circuito

Se trata de un instrumento que se coloca entre el PC anfitrión y el zócalo de la tarjeta de circuito impreso donde se alojará el microcontrolador definitivo. El programa es ejecutado desde el PC, pero para la placa de la aplicación es como si lo hiciese el mismo microcontrolador que luego irá en el zócalo. Presenta en pantalla toda la información tal y como luego sucederá cuando se coloque la cápsula.

Programador

Es un dispositivo que conectado a un PC permite grabar en el microcontrolador el programa desarrollado. Algunos puede fabricarlos uno mismo y resultan muy económicos. También existe software gratuito para programar no ya solo microcontroladores sino también otros dispositivos, como memorias. Actualmente se tiende a realizar la programación en la propia placa de utilización mediante ISP, In System Programmation o ICSP, In Circuit Serial Programation. De esta manera se puede programar al microcontrolador una vez esté montado en la placa del circuito utilizando una conexión de dos, tres o cuatro terminales. Para utilizar esta técnica se utiliza un programador que suele ser muy sencillo y que en algunos casos puede construir uno mismo.

Otra posibilidad es utilizar un "cargador de arranque"(bootloader), muy util en la etapa de desarrollo de un programa. Un cargador de arranque es un pequeño programa en el microcontrolador que está montado en la placa del circuito que se está desarrollando y que puede comunicarse con las herramientas de desarrollo (que se van a utilizar para escribir el código del programa de la aplicación) a través de un enlace serie, como puede ser RS232, USB, I2C o un bus CAN. El programa cargador de arranque debe interpretar comandos para leer, grabar y borrar la parte de memoria reservada para el programa de la aplicación. Cuando se desea verificar el programa que se está desarrollando se inicia la comunicación con el programa cargador de arranque, que carga el código de programa en la memoria de programa del microcontrolador. Después el programa cargador de arranque transfiere el control al programa cargado y entonces se puede ejecutar y verificar el programa cargado. Esta operación de carga y prueba puede realizarse tantas veces como sea necesario.

Los requerimientos que tiene que cumplir el microcontrolador a utilizar son:

  • Suficiente memoria de programa para alojar tanto el cargador de arranque como el programa en desarrollo.
  • Que el microcontrolador permita que pueda modificarse la memoria de programa por si mismo.
  • Un puerto serie para la comunicación.

Por ejemplo, el microcontrolador LPC210x de la casa Philips incluye un cargador de arranque serie integrado que está ubicado en los 8 K primeros de su memoria Flash. Estándo el terminal P0.14 a masa y generándo un reset el LPC210x ejecuta el programa cargador de arranque. Utilizándo un programa para PC gratuito de la casa Philips y un cable serie conectado entre el PC y la UART del microcontrolador LPC210x (a través de un conversor TTL/RS232 como el c.i. MAX232) se puede realizar la programación del microcontrolador. También resulta interesante el interface JTAG (que por ejemplo posee el microcontrolador LPC210x), que puede utilizarse para programar el dispositivo y para depurar un programa durante su ejecución en el microcontrolador. Para utilizar el interface JTAG se necesita un módulo interfaz de depuración JTAG que se conecta con entre el sistema de desarrollo del microcontrolador y el PC que lo aloja. En el mercado existen distintos módulos interfaces JTAG comerciales pero tambié se pueden encontrar otros en Internet.

Fuentes