Introducción a Microcontroladores: Conceptos, Arquitecturas y Aplicaciones

Definición, diferencias, arquitecturas, ejemplos y proyectos prácticos con Arduino.

🔬 Introducción a los Microcontroladores

1. ¿Qué es un Microcontrolador?

Un microcontrolador es un circuito integrado programable que combina en un solo chip:

  • CPU (Unidad Central de Procesamiento)
  • Memoria (Flash, RAM, EEPROM)
  • Periféricos (ADC, UART, temporizadores, GPIO)

2. Diferencias clave vs. Microprocesadores

MicrocontroladorMicroprocesador
Todo en un chip (CPU + memoria + periféricos)Requiere componentes externos (RAM, ROM, etc.)
Bajo costo y consumoMayor potencia y consumo
Ideal para control embebido (ej: electrodomésticos)Usado en PCs y servidores

Ejemplos comunes:

  • Arduino (ATmega328P): 32 KB Flash, 2 KB RAM
  • ESP32: WiFi/BLE, 520 KB RAM
  • STM32 (ARM Cortex): Alto rendimiento para IoT

3. Arquitectura de Microcontroladores

Harvard vs. Von Neumann

ArquitecturaDescripciónVentajasEjemplo
HarvardBuses separados para datos e instrucciones.Mayor velocidad (ej: ARM Cortex)PIC, AVR (Arduino)
Von NeumannUn solo bus para datos e instrucciones.Diseño simple y económicoIntel 8051

Tipos de memoria en microcontroladores:

  • Flash: Almacena el programa (ej: 32 KB en Arduino)
  • RAM: Memoria temporal para variables
  • EEPROM: Retiene datos sin energía (ej: configuraciones)

4. CISC vs. RISC

Comparación de Conjuntos de Instrucciones

TipoCaracterísticasEjemploAplicación
CISC (Complex Instruction Set)Instrucciones complejas (ej: multiplicación en 1 ciclo)Intel 8051Sistemas legacy
RISC (Reduced Instruction Set)Instrucciones simples y rápidas (1 ciclo/instrucción)ARM Cortex, AVRIoT, robótica

Ventajas de RISC:

  • Menor consumo de energía
  • Pipeline avanzado (ejecución paralela de instrucciones)

5. Aplicaciones Prácticas con Arduino

1. Control de un LED

Objetivo: Encender/apagar un LED con un pin digital.

void setup() {
  pinMode(13, OUTPUT);  // Configura el pin 13 como salida
}
void loop() {
  digitalWrite(13, HIGH);  // Enciende el LED
  delay(1000);            // Espera 1 segundo
  digitalWrite(13, LOW);   // Apaga el LED
  delay(1000);
}

Cómo armarlo en Wokwi:

  • Arrastra un Arduino UNO al área de trabajo.
  • Añade un LED y conéctalo al pin 13 y GND (puedes usar la resistencia que Wokwi agrega por defecto).
  • Copia el código en el editor y haz clic en "Start Simulation".

Conceptos aprendidos:

  • Configuración de GPIO
  • Uso de retardos (delay)

2. Semáforo Simple

Objetivo: Simular un semáforo con LEDs rojo, amarillo y verde.

int rojo = 10, amarillo = 9, verde = 8;
void setup() {
  pinMode(rojo, OUTPUT);
  pinMode(amarillo, OUTPUT);
  pinMode(verde, OUTPUT);
}
void loop() {
  digitalWrite(rojo, HIGH);    // Rojo encendido
  delay(5000);                 // Espera 5 segundos
  digitalWrite(rojo, LOW);
  digitalWrite(verde, HIGH);   // Verde encendido
  delay(5000);
  digitalWrite(verde, LOW);
  digitalWrite(amarillo, HIGH);// Amarillo encendido
  delay(2000);
  digitalWrite(amarillo, LOW);
}

Cómo armarlo en Wokwi:

  • Arrastra un Arduino UNO al área de trabajo.
  • Añade tres LEDs (rojo, amarillo, verde) y conéctalos a los pines 10, 9 y 8 respectivamente, y a GND.
  • Usa resistencias para cada LED (Wokwi las agrega por defecto).
  • Copia el código en el editor y haz clic en "Start Simulation".

Conceptos aprendidos:

  • Programación secuencial
  • Control de múltiples periféricos

3. Control de Temperatura

Objetivo: Leer un sensor LM35 y activar un ventilador si la temperatura supera 30°C.

int sensor = A0, ventilador = 7;
float temperatura;
void setup() {
  pinMode(ventilador, OUTPUT);
  Serial.begin(9600);
}
void loop() {
  temperatura = analogRead(sensor) * 0.488;  // Convertir a °C
  Serial.print("Temperatura: ");
  Serial.println(temperatura);
  if (temperatura > 30) digitalWrite(ventilador, HIGH);
  else digitalWrite(ventilador, LOW);
  delay(1000);
}

Cómo armarlo en Wokwi:

  • Arrastra un Arduino UNO al área de trabajo.
  • Añade un sensor LM35 y conéctalo a A0, VCC y GND.
  • Añade un ventilador (puedes usar un LED como simulación) al pin 7 y GND.
  • Copia el código en el editor y haz clic en "Start Simulation".

Conceptos aprendidos:

  • Lectura de señales analógicas (ADC)
  • Control basado en umbrales

6. Importancia en la Industria

Usos en Diferentes Sectores:

  • Automotriz: Control de motores, airbags
  • Médico: Marcapasos, monitores de glucosa
  • Agricultura: Riego automático, sensores de humedad
  • IoT: Termostatos inteligentes, wearables

Ejemplo avanzado: Un sistema de riego automático con Arduino:

  1. Sensor de humedad del suelo
  2. Microcontrolador activa bomba de agua si el suelo está seco
  3. Datos enviados a la nube via WiFi (ESP32)

7. Simulador Arduino Online

Puedes probar y ejecutar los códigos de los ejemplos prácticos en línea usando el simulador de Wokwi:

Si el simulador no carga correctamente, abre el siguiente enlace en una nueva pestaña: Wokwi Arduino Simulator

8. Conclusión

  • Los microcontroladores son el corazón de los sistemas embebidos.
  • Arduino facilita el aprendizaje con proyectos prácticos.
  • Las arquitecturas Harvard y RISC dominan en aplicaciones modernas.
  • Aplicaciones infinitas: desde semáforos hasta dispositivos médicos.