01 · Punto de partida
Mismas ideas, distintos compromisos
En el tema anterior vimos que un microcontrolador integra CPU, memoria, reloj y periféricos. Existen cientos de modelos de decenas de fabricantes. Todos comparten esa estructura, pero se diferencian en cuánto de cada recurso ofrecen: velocidad, memoria, cantidad de pines, tipos de periféricos, consumo, tensión de trabajo y precio.
Si ya programaste, la situación te resultará familiar: hay lenguajes y plataformas para cada tarea y casi nunca la mejor opción lo es para todo. Elegir un microcontrolador se parece a elegir una base de datos: se parte de los requisitos y después se compara.
Vas a necesitar lo visto en el tema 1: los bloques internos de un microcontrolador y el ATmega328P como referencia. Lo que sigue es el mapa del territorio donde ese chip es solo un punto.
02 · Ancho de datos
Qué significa que una CPU sea de 8, 16 o 32 bits
El «ancho» de una CPU indica con cuántos bits trabaja de una sola vez su unidad aritmética y sus registros de trabajo. Una CPU de 8 bits suma dos números de 8 bits en una instrucción; una de 32 bits, dos números de 32 bits.
Eso no limita los valores que podés manejar, pero sí el costo de hacerlo. Si necesitás sumar dos enteros de 32 bits en una CPU de 8 bits, el programa debe repetir la operación byte por byte, arrastrando el acarreo de cada paso a la siguiente. Es el algoritmo de suma en columnas, aplicado con «dígitos» de 8 bits.
Python en tu navegador. Los bloques son editables: cambiá los valores y presioná «Ejecutar Python». La primera vez tarda unos segundos en cargar.
def sumar(a, b, ancho, bits_dato=32):
"""Suma dos enteros usando 'trozos' del ancho de la CPU."""
mascara = (1 << ancho) - 1
resultado, acarreo, pasos = 0, 0, 0
for i in range(0, bits_dato, ancho):
x = (a >> i) & mascara # trozo de a
y = (b >> i) & mascara # trozo de b
s = x + y + acarreo
resultado |= (s & mascara) << i
acarreo = s >> ancho # sobra para el trozo siguiente
pasos += 1
return resultado, pasos
a, b = 100_000, 3_000_000
for ancho in (8, 16, 32):
r, pasos = sumar(a, b, ancho)
print(f"CPU de {ancho:2d} bits: {r} en {pasos} suma(s)")
Resultado: la misma cuenta, 3 100 000, requiere 4 sumas con 8 bits, 2 con 16 bits y 1 con 32 bits. Probá con números pequeños, como 100 y 200, y con bits_dato=16.
El ancho también influye en los registros de los periféricos, en la cantidad de memoria que se puede direccionar con facilidad y en el tamaño del código. Pero no es el único factor de rendimiento: la frecuencia del reloj, las instrucciones por ciclo y el hardware auxiliar (multiplicadores, unidad de punto flotante) pesan igual o más.
03 · El corazón del chip
Núcleos y arquitecturas
El núcleo (core) es el diseño de la CPU: define su conjunto de instrucciones, sus registros y su forma de ejecutar el código. Algunos fabricantes diseñan su propio núcleo; otros licencian uno y construyen alrededor sus memorias y periféricos.
| Núcleo | Ancho | Quién lo diseña | Se encuentra en |
|---|---|---|---|
| AVR | 8 bits | Atmel, hoy Microchip | ATtiny, ATmega, placas Arduino clásicas |
| PIC | 8, 16 y 32 bits | Microchip | PIC12, PIC16, PIC18, PIC24, PIC32 |
| MSP430 | 16 bits | Texas Instruments | Aplicaciones de consumo ultrabajo |
| ARM Cortex-M | 32 bits | Arm, licenciado a muchos fabricantes | STM32, nRF52, RP2040, SAMD, LPC |
| Xtensa | 32 bits | Cadence, usado por Espressif | ESP32 y ESP8266 |
| RISC-V | 32 bits (también 64) | Especificación abierta; implementada por varios fabricantes | ESP32-C3, series de WCH y otros |
Dentro de ARM Cortex-M hay escalones: el Cortex-M0/M0+ prioriza bajo costo y consumo; el M3 es un punto medio muy extendido; el M4 agrega instrucciones para procesamiento de señales y, opcionalmente, unidad de punto flotante; el M7 apunta al alto rendimiento. Aprender a programar uno de ellos facilita pasar a los demás, porque comparten el mismo modelo de programación.
Más adelante, en el tema 3, veremos cómo se organiza internamente una CPU y en qué se diferencian las arquitecturas Harvard y von Neumann.
04 · El panorama
Las familias principales
| Familia | Fortalezas | Limitaciones habituales | Suele elegirse para |
|---|---|---|---|
| AVR (ATtiny, ATmega) | Simple, bien documentado, trabaja con 5 V, encapsulados DIP, muchísimo material didáctico | 8 bits, poca memoria, periféricos básicos | Aprendizaje, prototipos, control sencillo |
| PIC | Catálogo enorme, versiones muy económicas, gran presencia industrial | Herramientas y estilo propios según la serie; menos material para principiantes | Productos de bajo costo y diseños heredados |
| MSP430 | Consumo muy bajo en reposo y en funcionamiento | 16 bits, ecosistema más reducido | Sensores a batería de larga duración |
| ARM Cortex-M (STM32, nRF52, RP2040) | 32 bits, mucho rendimiento por precio, periféricos avanzados, catálogo muy amplio | Más complejidad: reloj, pines multifunción y bibliotecas grandes; trabajan a 3,3 V | Proyectos medianos y productos, comunicaciones, audio, motores |
| ESP32 | Wi-Fi y Bluetooth integrados, buena velocidad y memoria, precio bajo | 3,3 V; mayor consumo en actividad; periféricos con particularidades | Internet de las cosas y dispositivos conectados |
| RISC-V | Arquitectura abierta, en crecimiento rápido, versiones muy económicas | Ecosistema todavía en maduración según el fabricante | Productos nuevos y de bajo costo |
Una misma familia puede tener varios fabricantes. Por ejemplo, un núcleo Cortex-M4 aparece en chips de STMicroelectronics, NXP, Nordic y otros, cada uno con sus propios periféricos. Lo que se comparte es la CPU; lo que cambia, y suele pesar más, es el resto del chip.
05 · Con números
Cinco chips para comparar
Estos cinco modelos cubren desde el microcontrolador más pequeño hasta uno conectado a Internet. Los valores corresponden a las hojas de datos de cada fabricante; son máximos o valores típicos del chip, y las placas comerciales pueden variar.
| Chip | Núcleo | Reloj máx. | SRAM | Tensión | ADC | Pines E/S |
|---|---|---|---|---|---|---|
| ATtiny85 | AVR 8 bits | 20 MHz | 512 bytes | 2,7 a 5,5 V (hasta 4,5 V para 20 MHz) | 10 bits | 6, en 8 pines |
| ATmega328P | AVR 8 bits | 20 MHz | 2 KB | 1,8 a 5,5 V | 10 bits | 23 |
| STM32F103C8 | Cortex-M3 | 72 MHz | 20 KB | 2,0 a 3,6 V | 12 bits | 37 |
| RP2040 | 2 × Cortex-M0+ | 133 MHz | 264 KB | 3,3 V típicos en pines | 12 bits | 30 |
| ESP32 | 2 × Xtensa LX6 | 240 MHz | 520 KB | 3,3 V | 12 bits | hasta 34 |
La tabla deja tres lecciones. Primero, la escala: entre el ATtiny85 y el ESP32 hay un factor de más de mil en memoria. Segundo, la tensión: los chips AVR toleran 5 V y los demás trabajan a 3,3 V. Tercero, la memoria de programa no aparece porque varía mucho: en el RP2040 y el ESP32 la Flash suele ser un chip externo, mientras que en AVR y STM32 está dentro del mismo encapsulado.
06 · Decidir con método
Criterios de selección
| Criterio | Qué preguntar | Si no se cumple |
|---|---|---|
| Pines | ¿Cuántas entradas y salidas necesito, y de qué tipo? | Hay que agregar expansores o cambiar de chip |
| Periféricos | ¿Cuántos ADC, temporizadores, PWM, UART, I2C y SPI hacen falta? | Se simula por software, con más carga para la CPU |
| Memoria | ¿Cuánto ocupan el código, las variables y los datos persistentes? | El programa no entra o falla por falta de SRAM |
| Velocidad | ¿Qué eventos hay que atender y en cuánto tiempo? | Se pierden eventos o se superan los plazos |
| Consumo | ¿Se alimenta con red, batería o energía recolectada? | La batería dura días en lugar de años |
| Tensión y niveles | ¿Trabaja a 3,3 V o 5 V, igual que los sensores y actuadores? | Hace falta adaptar niveles o se dañan los pines |
| Conectividad | ¿Necesita Wi-Fi, Bluetooth, USB, CAN o Ethernet? | Se agrega un módulo externo |
| Encapsulado | ¿DIP para protoboard, o SMD para producir? | Hay que soldar, usar adaptadores o una placa |
| Costo y disponibilidad | ¿Cuánto cuesta por unidad y hay existencias a largo plazo? | El producto se encarece o se discontinúa |
| Ecosistema | ¿Hay herramientas, bibliotecas, documentación y experiencia previa? | El desarrollo se alarga |
Ordená los criterios por importancia: algunos son requisitos duros (si no se cumplen, el chip queda descartado, como los 5 V o el Wi-Fi) y otros son preferencias (costo, familiaridad), que sirven para desempatar entre los candidatos que sobreviven.
07 · Un detalle que rompe chips
3,3 V y 5 V: compatibilidad entre dispositivos
Muchos sensores y módulos viejos entregan señales de 5 V, mientras que la mayoría de los microcontroladores de 32 bits trabajan con 3,3 V. Conectar una salida de 5 V a una entrada que soporta como máximo 3,6 V puede dañarla, a veces de forma inmediata y a veces con un deterioro gradual.
| Salida | Entrada | Situación |
|---|---|---|
| 3,3 V | 3,3 V | Compatible |
| 5 V | 5 V | Compatible |
| 5 V | 3,3 V | Peligro: hay que reducir la tensión |
| 3,3 V | 5 V | Puede funcionar, pero no está garantizado: una entrada CMOS a 5 V suele exigir un nivel alto de aproximadamente 3,5 V |
Para señales lentas en un sentido (5 V → 3,3 V), un divisor resistivo alcanza. Con R1 = 1 kΩ en serie y R2 = 2 kΩ a masa, la tensión en el punto medio es 5 V × 2 k / (1 k + 2 k) = 3,33 V. Para buses bidireccionales como I2C o para señales rápidas se utiliza un adaptador de niveles.
Otro dato importante es que algunos pines de ciertos microcontroladores de 3,3 V son «tolerantes a 5 V» y otros no, aun dentro del mismo chip. Ese detalle figura en la hoja de datos; no se supone.
08 · Más allá del silicio
Ecosistema: herramientas, bibliotecas y documentación
Un microcontrolador excelente con malas herramientas puede costar más tiempo que uno regular con un ecosistema sólido. Antes de decidir, revisá:
- Compilador y entorno de desarrollo. Para AVR,
avr-gccy Arduino; para STM32, STM32CubeIDE o PlatformIO; para ESP32, ESP-IDF o el soporte de Arduino; para RP2040, el Pico SDK, Arduino o MicroPython. - Bibliotecas y ejemplos para los sensores y módulos que vas a usar.
- Depuración. Una interfaz de depuración por hardware permite detener el programa y mirar registros; sin ella, solo queda imprimir mensajes.
- Hoja de datos y manual de referencia claros, y una comunidad que responda.
- Ciclo de vida del producto. Si el proyecto es comercial, importa que el fabricante garantice disponibilidad durante años.
Este curso usa el ATmega328P y el lenguaje C porque ofrecen un modelo muy visible del chip. Los conceptos (registros, temporizadores, interrupciones, ADC y buses) se repiten en todas las familias con distinto nombre y, a veces, con una capa de bibliotecas encima.
09 · Exploración interactiva
Requisitos que descartan candidatos
Marcá los requisitos de un proyecto imaginario. El selector descarta los chips que no los cumplen y explica el motivo. No devuelve «el mejor»: muestra los que sobreviven, entre los cuales decidirán otros criterios como costo y experiencia.
Selector de microcontrolador
El Wi-Fi se considera solo si está dentro del chip. Existen placas, como la Raspberry Pi Pico W, que lo agregan con un componente adicional; para el selector, eso equivale a «sumar hardware».
Recorrido guiado
- Marcá «Trabajar a 5 V sin adaptadores». Quedan solo los dos AVR.
- Agregá «Al menos 16 pines»: el ATtiny85 queda descartado por tener solo 6.
- Limpiá todo y pedí «Wi-Fi integrado». El ESP32 queda como único candidato.
- Con Wi-Fi todavía marcado, agregá «5 V sin adaptadores»: ningún chip cumple. Es una señal para relajar un requisito o sumar un adaptador de niveles.
- Pedí «ADC de 12 bits» y «128 KB de SRAM»: sobreviven el RP2040 y el ESP32.
Desafío: encontrar un requisito engañoso
Pedí «Al menos 32 pines» y «Encapsulado DIP». No queda nada: los chips con muchos pines suelen venir en encapsulados de montaje superficial. En la práctica, el problema se resuelve con una placa de desarrollo que ya trae el chip soldado y sus pines accesibles, algo que el selector, por simplicidad, no modela.
10 · Método de trabajo
Cómo decidir paso a paso
- Describí el sistema en una frase y listá sus entradas y salidas, con sus tensiones y corrientes.
- Estimá recursos. Pines, canales analógicos, temporizadores, buses y memoria. Dejá un margen para crecer, por ejemplo un 30 %.
- Marcá los requisitos duros: tensión, conectividad, consumo máximo, tamaño y encapsulado.
- Filtrá los candidatos con esos requisitos. Quedan tres o cuatro modelos, no cientos.
- Desempatá por costo, disponibilidad, herramientas y experiencia previa.
- Validá con un prototipo. Una placa de desarrollo permite comprobar el riesgo mayor antes de diseñar el circuito final.
En la mesa de trabajo, conviene empezar por la hoja de datos del candidato: la tabla de características eléctricas indica tensiones, corrientes máximas por pin y rangos de funcionamiento. Con el multímetro se verifica la alimentación de la placa antes de conectar sensores, y con el osciloscopio se comprueba que las señales rápidas lleguen con el nivel esperado.
11 · Comprensión
Confusiones frecuentes
«Los 32 bits son siempre mejores que los 8 bits»
Rinden más en cálculos y manejo de datos grandes, pero cuestan más, a veces consumen más y exigen mayor complejidad de software. Para tareas simples, un chip de 8 bits es suficiente y más fácil de usar.
«Si dos chips tienen el mismo núcleo, son intercambiables»
Comparten la CPU, pero los periféricos, mapas de memoria, relojes y herramientas son distintos. Cambiar de un STM32 a un nRF52, aunque ambos usen Cortex-M, exige reescribir el código que toca el hardware.
«Arduino, ESP32 y Raspberry Pi son lo mismo»
Arduino es un ecosistema de placas y software. El ESP32 es un microcontrolador. La Raspberry Pi es una computadora con microprocesador y sistema operativo; la Raspberry Pi Pico, en cambio, usa el microcontrolador RP2040.
«Más megahertz significa más rápido en mi aplicación»
Depende de qué limite al sistema. Si el programa espera a un sensor, a un bus o a un temporizador, mayor frecuencia de reloj solo aumenta el consumo. Lo decisivo es si se cumplen los plazos de cada evento.
«Un pin de 3,3 V tolera 5 V si hay una resistencia en serie»
Una resistencia limita la corriente, pero no reduce la tensión en la entrada. Algunos chips admiten corrientes pequeñas por diodos de protección internos; no es un método fiable ni está garantizado. Usá un divisor o un adaptador de niveles.
12 · Práctica guiada
Predecí antes de comprobar
1. Elegir para cada proyecto
Proponé una familia razonable para: (a) una luz nocturna que se enciende con un sensor de luz, alimentada por una pila de botón; (b) una estación meteorológica que publica datos por Wi-Fi; (c) un controlador de motores con control de velocidad en tiempo real y comunicación CAN.
Ver solución razonada
(a) Un ATtiny o un MSP430: pocos pines, bajo costo y consumo mínimo. (b) Un ESP32, que integra Wi-Fi. (c) Un ARM Cortex-M (por ejemplo, un STM32 con CAN), que ofrece temporizadores avanzados, rendimiento y periféricos de comunicación industriales.
2. Un sensor de 5 V y una placa de 3,3 V
Un sensor digital entrega 5 V y debe conectarse a un pin de un RP2040. Diseñá un divisor con R1 = 1 kΩ y R2 = 2 kΩ. ¿Qué tensión llega al pin y por qué no conviene conectarlo directamente?
Ver solución
Llegan 5 × 2 / (1 + 2) = 3,33 V, dentro del rango de un pin de 3,3 V. Conectarlo directamente aplicaría 5 V a una entrada diseñada para un máximo cercano a 3,6 V, con riesgo de daño.
3. Costo de ancho
¿Cuántas sumas de trozo necesita una CPU de 8 bits para sumar dos enteros de 64 bits? ¿Y una de 16 bits?
Ver solución
64 / 8 = 8 sumas en una CPU de 8 bits, y 64 / 16 = 4 sumas en una de 16 bits. Podés comprobarlo ejecutando el código del tema con bits_dato=64.
4. Usar el selector
Un proyecto necesita ADC de 12 bits, al menos 128 KB de SRAM y trabajar con 5 V sin adaptadores. ¿Qué chips quedan? ¿Qué harías?
Ver solución razonada
Ninguno: los dos chips con esa memoria y ADC (RP2040 y ESP32) trabajan a 3,3 V. Se puede elegir uno de ellos y añadir un adaptador de niveles para los sensores de 5 V, o relajar el requisito de memoria si el ADC de 10 bits fuera aceptable.
5. Producto a largo plazo
Una empresa quiere fabricar durante diez años un dispositivo basado en un microcontrolador. Además de las prestaciones, ¿qué debería revisar?
Ver solución razonada
La política de disponibilidad a largo plazo del fabricante, el riesgo de que el modelo se discontinúe, la existencia de alternativas compatibles, la estabilidad de las herramientas y la disponibilidad de documentación. Un chip de moda puede ser más difícil de conseguir dentro de unos años que uno de una familia industrial consolidada.
13 · Síntesis
Ideas para recordar
- Todos los microcontroladores comparten la estructura básica; difieren en cantidad y tipo de recursos.
- El ancho de la CPU (8, 16 o 32 bits) determina cuántos bits maneja por operación; no es el único factor de rendimiento.
- Las familias principales son AVR, PIC, MSP430, ARM Cortex-M, ESP32 y RISC-V.
- Un mismo núcleo puede estar en chips de distintos fabricantes con periféricos diferentes.
- La selección empieza por requisitos duros: pines, periféricos, memoria, tensión, conectividad y consumo.
- Los niveles de 3,3 V y 5 V no se mezclan sin verificar; se usan divisores o adaptadores de niveles.
- El ecosistema (herramientas, bibliotecas, documentación y disponibilidad) pesa tanto como el silicio.
¿Listo para el tema 3?
Antes de avanzar, explicá por qué una CPU de 8 bits necesita varias instrucciones para sumar números de 32 bits, nombrá tres requisitos duros que descartan chips y describí cómo conectarías un sensor de 5 V a un microcontrolador de 3,3 V. Si podés justificar las tres respuestas, ya sabés ubicar al ATmega328P dentro del mapa.
En el próximo tema abrimos el chip: la arquitectura interna con su CPU, memorias, buses y periféricos, y la diferencia entre las arquitecturas Harvard y von Neumann.