Aprenda los conceptos básicos de los microcontroladores, sus periféricos, la programación de microcontroladores y su aplicación en sistemas embebidos, seguido de breves comparaciones al final.
Fundamentos de los microcontroladores
¿Qué es un microcontrolador?
Un microcontrolador, también conocido como Unidad Microcontroladora (MCU), es un Circuito Integrado (CI) compacto y programable diseñado para realizar operaciones específicas en un sistema embebido. Se puede considerar como una pequeña computadora en un chip que controla las operaciones de un sistema electrónico. A diferencia de una computadora personal, un microcontrolador solo puede ejecutar un programa a la vez (de forma repetida). Los microcontroladores pueden realizar tareas específicas de la aplicación y se encuentran comúnmente en dispositivos médicos, automóviles, máquinas expendedoras, lavadoras, LEDs y aires acondicionados.
Una MCU contiene un procesador que constituye su cerebro. También incluye periféricos, entradas/salidas (E/S) y memoria integrada para la adquisición y el procesamiento de datos.
Historia de los microcontroladores
A principios de la década de 1970 (1970-1971), mientras Intel desarrollaba su primer microprocesador, Gary Boone, ingeniero de Texas Instruments, trabajaba en algo similar. Boone creó un circuito integrado que incorporaba casi toda la circuitería necesaria para construir una calculadora, excepto el teclado y la pantalla. Este primer microcontrolador, denominado TMS1802NC, constaba de 5000 transistores, 3000 bits de memoria de programa y 128 bits de RAM (memoria de acceso aleatorio), y podía programarse para realizar diversas tareas. Inicialmente concebido para el desarrollo de calculadoras, sus aplicaciones se extendieron mucho más allá de este ámbito.
Componentes básicos de un microcontrolador
La Figura 1 muestra los componentes principales de un microcontrolador. Esta sección describe la funcionalidad de cada uno de ellos.
Procesador
El procesador, también conocido como Unidad Central de Procesamiento (CPU), es el cerebro del microcontrolador. Responde a las instrucciones, procesa los datos, realiza operaciones matemáticas y lógicas, transfiere datos y gestiona la comunicación. Funciona con una señal de reloj proporcionada por el oscilador interno del microcontrolador.
Memoria
Al igual que una computadora personal incluye memoria RAM y disco duro (ROM), los microcontroladores también contienen memoria integrada en el chip. Existen dos tipos de memoria en los microcontroladores: memoria de programa y memoria de datos. La memoria de programa es no volátil, es decir, conserva sus datos incluso sin alimentación eléctrica. En la memoria de programa reside el programa principal o firmware del microcontrolador. Por otro lado, la memoria de datos es volátil, es decir, no conserva los datos cuando se interrumpe la alimentación. La memoria de datos almacena temporalmente la información mientras se ejecuta el programa y realiza acciones en función de los datos almacenados.
Periféricos
Los periféricos son como bloques de hardware integrados en un microcontrolador. Ayudan al microcontrolador a comunicarse con el exterior y a controlar diversas funciones. Algunos ejemplos son los pines de entrada/salida de propósito general (GPIO) analógicos y digitales, temporizadores/contadores (para PWM, temporización y retardos), módulos de comunicación (UART, SPI, I2C, USB, Ethernet), convertidores analógico-digitales (ADC) para la interfaz con sensores, convertidores digital-analógicos (DAC) para el control de componentes electrónicos externos e interfaces de visualización.
Controlador de interrupciones
Un microcontrolador dispone de un mecanismo para gestionar las interrupciones externas, es decir, las que se producen cuando ocurren eventos importantes. El controlador de interrupciones se encarga de gestionar todas las solicitudes de interrupción procedentes de periféricos y pines externos. Decide qué evento priorizar e indica a la CPU que ejecute la rutina de servicio de interrupción (ISR) correspondiente, que gestiona la interrupción.

¿Cómo funcionan los microcontroladores?
Un microcontrolador necesita tres elementos para funcionar: la fuente de alimentación, la señal de reloj y el programa o firmware (almacenado en la memoria de programa). La señal de reloj sirve como referencia para el microcontrolador y determina la temporización de los periféricos y la velocidad de ejecución de las instrucciones por parte de la CPU. Esta señal suele generarse mediante un oscilador integrado, implementado a través de resistores y condensadores en el chip. Al encender el microcontrolador, este se reinicia, lo que restablece todos los registros del dispositivo a un estado conocido y carga el contador de programa (CP). El contador de programa es un puntero que almacena la dirección de la siguiente instrucción que ejecutará la CPU. Al arrancar, el CP contiene la dirección de la primera instrucción almacenada en la memoria de programa.
Una vez que el firmware se carga en la memoria de programa del microcontrolador y las señales de alimentación y reloj están disponibles, la CPU inicia su ciclo de búsqueda, decodificación y ejecución. La CPU busca la instrucción en la memoria de programa, decodifica su significado y la ejecuta utilizando sus periféricos y unidades aritméticas y lógicas. Tras cada instrucción, el contador de programa (CP) se incrementa para apuntar a la siguiente instrucción en la memoria de programa. Durante la ejecución del código, los datos y variables temporales se almacenan en la RAM, que es rápida pero volátil.
La CPU realiza la tarea principal de procesamiento. Implementa las acciones a través de los periféricos. La CPU se comunica con los periféricos mediante registros mapeados en memoria; en otras palabras, la CPU lee y escribe en ciertas direcciones de memoria del microcontrolador para configurar los periféricos. Por ejemplo, escribir en un registro GPIO hace que el pin correspondiente alcance el estado relevante (0 o 1). De forma similar, leer un registro ADC significa leer el valor (convertido de analógico a digital) de un sensor conectado externamente.
En los párrafos anteriores se explicó el funcionamiento normal del microcontrolador. En ocasiones, se producen eventos especiales que requieren atención. En el mundo de los microcontroladores, estos eventos se denominan interrupciones. Una interrupción es una señal que un periférico envía a la CPU indicando que ha ocurrido algo urgente. Por ejemplo, un desbordamiento del temporizador o la recepción de un paquete de datos de un sensor externo. Cuando se produce una interrupción, la CPU pausa el programa principal, guarda el valor del contador de programa (CP) y ejecuta la rutina de servicio de interrupción (ISR). Al ejecutarse la ISR, la CPU recupera el valor del CP guardado y continúa la ejecución exactamente desde donde se interrumpió. El controlador de interrupciones del microcontrolador ayuda a gestionar la prioridad de las interrupciones.
Tipos de microcontroladores
Los microcontroladores se clasifican a menudo según su ancho de datos, es decir, la cantidad de datos que la CPU puede procesar en una sola operación. Esto determina el rendimiento, la velocidad y la eficiencia energética del microcontrolador. La clasificación se muestra a continuación:
Microcontrolador de 8 bits
El bus de datos interno de estos microcontroladores tiene un ancho de 8 bits. En otras palabras, la Unidad Aritmético-Lógica (ALU) realiza operaciones con 8 bits en un solo ciclo de reloj. Debido a su simplicidad, estos microcontroladores son muy sencillos, económicos y eficientes en el consumo de energía.
Microcontrolador de 16 bits
El bus de datos interno de estos microcontroladores tiene un ancho de 16 bits. En otras palabras, la Unidad Aritmético-Lógica (ALU) realiza operaciones con 16 bits en un solo ciclo de reloj. Por lo tanto, son más rápidos que los microcontroladores de 8 bits.
Microcontrolador de 32 bits
Con un bus de datos de 32 bits, estos microcontroladores son los más comunes en las aplicaciones modernas. Ofrecen un mejor rendimiento, mayor espacio de direcciones, periféricos más completos y compatibilidad con coma flotante. Debido a su complejidad, tienen un mayor consumo de energía.
Microcontrolador de 64 bits
El bus de datos de 64 bits no es común en los microcontroladores, pero sí en los microprocesadores de computadoras.
| Tipo de MCU | Ejemplos de microcontroladores |
|---|---|
| 8-bit | Intel 8051, Motorola MC68HC11, ATmega328P (Arduino Uno) |
| 16-bit | TI MSP430, Intel 8096, Motorola MC68HC12, PIC24 |
| 32-bit | Serie STM32 basada en ARM Cortex-M, PIC32 de Microchip, ESP32 |
| 64-bit | Raspberry Pi con CPU (microprocesador) ARM de 64 bits |
¿Cómo programar un microcontrolador?
Al igual que las computadoras, los microcontroladores también entienden el lenguaje binario (0 y 1). La programación de microcontroladores se suele realizar en C/C++, aunque Python también se usa actualmente. El compilador (por ejemplo, el IDE de Arduino) traduce el código de alto nivel (C o Python) a lenguaje binario. A continuación, se explican algunos conceptos básicos del lenguaje C para principiantes.
Conceptos básicos de Programación de Microcontroladores (C)
| Componente del lenguaje C | Uso | Ejemplo de sintaxis |
|---|---|---|
| Variables | Almacenar datos | int var = 20; |
| Operadores | Realizan acciones sobre las variables | int sum = var var; |
| Sentencias condicionales | Para comprobar una condición | if (var > 10) |
| Bucles | Para la repetición de tareas | for (int i=0; i<10; i ) |
| Funciones | Para la reutilización de código | void func(); |
| Punteros | Para acceder a ubicaciones de memoria | int *varptr; |
Recuerda que cada instrucción en C termina con un punto y coma. El símbolo “//” se usa para comentarios. A continuación, se muestra un código C muy breve que abarca los componentes básicos del lenguaje C.
#include <stdio.h> // Incluye el archivo de cabecera de entrada/salida estándar
int LED = 0; // Declaración y definición de variables
void turnOn(int *p) { *p = 1; } // Define una función con un puntero como argumento
void turnOff(int *p) { *p = 0; }
int main(void) { // La función principal desde donde comienza la ejecución del programa
int *pLED = &LED; // Define un puntero para almacenar la dirección de la variable LED
for (int i = 0; i < 5; i ) { // Un bucle que se ejecutará 5 veces
if (i % 2 == 0) // La instrucción if comprueba si la variable del bucle es par
turnOn(pLED); // Si es par, enciende el LED llamando a la función turnOn
else
turnOff(pLED); // En caso contrario, apaga el LED llamando a la función turnOff
printf("i = %d, LED = %d\n", i, LED); // Este comando imprime el estado del LED (encendido o apagado) en la consola
}
return 0; // La función principal finaliza devolviendo 0
}¿Qué pueden hacer los microcontroladores?
Internet de las Cosas (IoT)
Gracias a su capacidad para leer, guardar y procesar datos, los microcontroladores son fundamentales para el IoT. Pueden conectarse con sensores de corriente, temperatura y movimiento, gestionar lógica y utilizar módulos de comunicación (Wi-Fi, Bluetooth, GSM, LoRa) para enviar y recibir datos desde la nube. Por ejemplo, el microcontrolador ESP32 de doble núcleo a 240 MHz incorpora Wi-Fi y Bluetooth para gestionar aplicaciones de IoT.
Automatización Industrial
La automatización industrial o robótica es otro campo donde los microcontroladores se utilizan con frecuencia. Estas aplicaciones requieren amplias capacidades para gestionar diversas interfaces (sensores) y una buena capacidad de procesamiento para implementar algoritmos en tiempo real. La serie STM32 se utiliza ampliamente en aplicaciones de automatización industrial.
Inteligencia Artificial (IA)
Los microcontroladores (MCU) pueden ejecutar modelos de IA optimizados y compactos para tareas como el reconocimiento de gestos y la detección de palabras clave. Entre las mejores opciones se encuentra el nuevo STM32N6, que incorpora aceleradores de hardware especializados para la interfaz de redes neuronales. Con una CPU que funciona a 800 MHz, el STM32N6 ofrece la mejor capacidad de cálculo de la serie STM32.
Aplicaciones Médicas
Casi todos los dispositivos médicos son sistemas embebidos que utilizan microcontroladores. Algunos ejemplos son los respiradores, los ecógrafos, las bombas de infusión, los monitores de ECG y los sensores de EMG. Sin embargo, en aplicaciones médicas es fundamental seleccionar microcontroladores que cumplan con ciertos estándares, como IEC 60601 e ISO 13485, para garantizar la seguridad y la calidad. Microchip Technology y Texas Instruments ofrecen microcontroladores seguros y con certificación de seguridad.
Automatización del hogar
La mayoría de los principiantes comienzan a aprender sobre microcontroladores utilizándolos en proyectos de bricolaje y aplicaciones de automatización del hogar, como dispositivos con sensor de movimiento, control de aire acondicionado, iluminación automatizada y monitoreo del nivel de agua de tanques. En aplicaciones sencillas donde no se requiere conectividad Wi-Fi o Bluetooth, los microcontroladores Arduino Uno y PIC18 ofrecen una solución fácil, económica, eficiente y rentable.
Otras características de los microcontroladores
Convertidor analógico-digital (ADC)
El ADC es uno de los periféricos más importantes de un microcontrolador. Su función principal es permitir el procesamiento de datos analógicos mediante electrónica digital. Por ejemplo, en un sistema embebido, para procesar una señal de audio en un microcontrolador, el sonido captado por un micrófono debe convertirse en una señal digital. La precisión del ADC viene determinada por su resolución.
Convertidor digital-analógico (DAC)
El DAC es, en realidad, lo opuesto al convertidor analógico-digital (ADC), es decir, convierte la señal digital en analógica. En el mundo real, todas las señales son analógicas. Por lo tanto, para que los microcontroladores interactúen con el mundo físico, el periférico DAC desempeña un papel fundamental. Por ejemplo, para controlar un micrófono desde un microcontrolador, la señal digital del microcontrolador debe convertirse a analógica mediante el DAC integrado.
Transmisor-receptor asíncrono universal (UART)
UART es un protocolo de comunicación de hardware que utiliza comunicación serial asíncrona con velocidad variable (velocidad en baudios). Este periférico serial utiliza solo dos pines: transmisión (Tx) y recepción (Rx). Es la interfaz más común en los microcontroladores y se utiliza para depurar el firmware durante la programación.

Interfaz Periférica Serie (SPI) e I2C
Además de UART, SPI e I2C son los otros dos protocolos de comunicación más utilizados en un microcontrolador. I2C, que utiliza solo dos cables, permite la comunicación entre el maestro y los esclavos mediante un esquema de direccionamiento (cada esclavo tiene su propia dirección). SPI, por otro lado, utiliza cuatro cables y no emplea direccionamiento. El microcontrolador selecciona un dispositivo mediante su línea de selección de chip (SC). SPI ofrece mayor velocidad y rendimiento. La Figura 3 muestra ambos esquemas.

Preguntas más frecuentes
¿Cuál es la diferencia entre un microcontrolador y un microprocesador?
Aunque ambos circuitos integrados se utilizan en sistemas embebidos, su función es bastante diferente. Un microprocesador no incorpora periféricos en su chip. Es simplemente una CPU integrada en el chip, utilizada para tareas de alto rendimiento en ordenadores o smartphones con sistema operativo. Para su funcionamiento, un microprocesador requiere memoria externa y periféricos, lo que se traduce en un mayor consumo de energía.
Por otro lado, los microcontroladores integran todos los componentes de un sistema microcomputador en su chip. No requieren la conexión de periféricos externos adicionales y son más eficientes energéticamente. En resumen, un microcontrolador es básicamente un microprocesador con periféricos integrados.
Para una comparación entre microcontroladores y microprocesadores, consulte nuestro artículo: “Microcontrolador vs. Microprocesador: Diferencias Clave”.
¿Cómo elegir un microcontrolador?
Depende de la aplicación; por lo tanto, es fundamental identificar los requisitos en cuanto a periféricos, velocidad de procesamiento y consumo de energía. Por ejemplo, si la aplicación requiere una alta capacidad de cálculo, un microcontrolador de 32 bits será el más adecuado. Si la aplicación requiere la interfaz con múltiples sensores externos, se prefiere un microcontrolador con un buen número de GPIO. Para proyectos alimentados por batería, considere los modos de energía (especialmente los modos de suspensión) del microcontrolador.
¿Cuál es la diferencia entre un microcontrolador y un PLC?
Una diferencia importante radica en las E/S. Los PLC ofrecen capacidades de extensión de E/S con la opción de conectar módulos de E/S externos, mientras que los microcontroladores tienen E/S limitadas. Los microcontroladores requieren diseño y programación de hardware, mientras que los PLC son controladores listos para usar, diseñados específicamente para la industria.

Deja una respuesta