Microcontrolador

Imagen1. Microcontroladores AVR.

Los microcontroladores son circuitos integrados programables. Estos dispositivos están diseñados para tener los recursos con los que cuenta una computadora básica que son la unidad central de procesamiento, la memoria y entradas y salidas. Los microcontroladores están basados en la arquitectura Harvard la cual tiene algunas ventajas sobre la arquitectura Von Neumann. En la arquitectura Harvard se tiene físicamente separados el bus de datos de las instrucciones por tanto el procesamiento es simultaneo.

Existen distintos fabricantes de microcontrolador hoy en día así como Atmel, Microchip, Texas Instrument por mencionar algunos de los más populares y en cada fabricante se tienen distintas gamas de estos dispositivos tan conocidos que pueden ser desde 8, 16 y 32 bits.

Los microcontroladores de 8 bits cuentan con los recursos necesarios para realizar un proyecto sencillo hasta uno muy robusto. Algunas de las características de estos dispositivos es que son de bajo consumo que pueden ser alimentados desde 3.3V a 5V, cuentan con bastantes pines configurables como entradas y salidas, interfaces de comunicación como SPI, I2C, UART para conexión con otros dispositivos o sensores que operen con la misma interfaz. Aparte de las interfaces mencionadas anteriormente ya cuentan con otros módulos como el convertidor analógico digital (ADC) y modulación por ancho de pulso (PWM). Estos recursos son suficientes para desarrollar cualquier proyecto que se tenga en mente y a un bajo costo.

En los microcontroladores de 16 y 32 bits, tienen más memoria, pueden almacenar un mayor número de instrucciones. Cuentan con más pines de propósito general, más de una interfaz de comunicación como CAN, LIN, SPI, I2C, UART e incluso algunos microcontroladores ya cuentan con pines de propósito específico para puerto USB nativo.

Lenguajes de programación

En los microcontroladores el lenguaje de programación más común es C más sin embargo también se pueden programar en bajo nivel, que es el ensamblador utilizando el set de instrucciones que viene en la hoja de datos del microcontrolador, estas instrucciones son distintas para cada familia de microcontroladores.

Existes bastantes entornos de desarrollo para programar (Integrated Development Environment, IDE), en los que puedes programar en el lenguaje que más habilidad o conocimientos tengas. Estos entornos de desarrollo son distintos para cada familia de microcontroladores, por ejemplo para las familias de micros de Atmel está el AVR Studio, para los micros de Microchip el MPLAB o Micro C, para los de Texas Instrument tenemos el Code Composer Studio.

Aplicaciones

Con estos dispositivos programables es posible desarrollar casi cualquier cosa, lo único que te podría limitar es la imaginación. Actualmente los micros se encuentran en cualquier parte ya sea desde un electrodoméstico hasta en la industria. En la industria es muy común encontrar estos dispositivos, en control de procesos principalmente. En domótica son muy utilizados en el control de procesos de la casa y sistemas de seguridad. También se encuentran en los aparatos que se encuentran en el hogar, por ejemplo en la lavadora, microondas, televisores, controles remotos, etc.

Otra aplicación en las que se han estado usando estos dispositivos es en juguetes, robótica y aeromodelismo ya que son muy pequeños y tienen la capacidad de poder controlar cualquier otro componente como los motores de un carrito, un servomotor para dirigir la dirección de éste.

En aplicaciones más robustas los podemos encontrar en sistemas de comunicación: transmisores, receptores, centrales telefónicas. También en la industria informática los podemos encontrar en los teclados, ratones impresoras, etc.

También juegan un papel muy importante en la industria automotriz, en los sistemas de seguridad de los autos, en el control de ABS, climatización, puertas, espejos, encendido del motor, etc.

Imagen 2. Microcontrolador para controlar el Drone.

Tarjetas de desarrollo

Recientemente, han estado saliendo al mercado tarjetas de desarrollo basadas en microcontroladores de 8 y 32 bits, las cuales ya cuentan con un sistema mínimo, pines de propósito general accesibles para conectarle otros dispositivos que se requieran para la aplicación que se esté desarrollando. Una ventaja de estas nuevas tarjetas es que ya tienen todo lo necesario para una aplicación, ya no se necesita un programador externo ya que lo traen integrado en la misma tarjeta, generalmente se programan vía USB. Algunas incluso traen puerto Ethernet para aplicaciones con internet, módulos Bluetooth o WiFi para aplicaciones inalámbricas. Estas tarjetas han estado ganando bastante terreno en el mercado por lo sencillo que es programarlas, el bajo costo, tamaño y la gran cantidad de información que se puede encontrar en la red.

Podemos encontrar bastante información en la red, la razón de esto es que la mayoría de estas tarjetas son de Open Source, comparten toda la información para todo el público en internet para que la comunidad pueda hacer aportaciones en el desarrollo de éstas en futuras versiones. Tenemos al alcance ejemplos de código, aplicaciones, los diseños de la tarjeta por si queremos hacer alguna modificación y utilizarlo en algún proyecto personal.

El IDE para programar este tipo de tarjetas se encuentra en las páginas oficiales de los fabricantes. Los podemos descargar de forma gratuita, no requerimos de ninguna licencia para utilizarlas. Los entornos de desarrollo para estas tarjetas de desarrollo son muy similares para que el usuario no tenga que comenzar de cero si muda de una tarjeta a otra si la anterior tiene funciones muy básicas y requiere algo con más poder. Por ejemplo si estas trabajando una de las tarjetas de desarrollo basadas en el microcontrolador AVR más populares como el Arduino UNO y necesitas más unidad de memoria o la aplicación requiere un dispositivo con mayor número de entradas y salidas y el Arduino Mega cumple con lo que necesitas para tu aplicación, simplemente cambias en las opciones del IDE que tarjeta estas utilizando y sigues trabajando con tu mismo código y librerías.

Programar estas tarjetas es tan sencillo, que actualmente en las escuelas primarias, secundarias y bachilleratos se está enseñando a utilizar esta tecnología para que comiencen a desarrollar aplicaciones sencillas e irlos encaminando y motivarlos a estudiar una Ingeniería en electrónica y tecnologías de la información.