ATMega328P: Guía Maestra del Microcontrolador de Arduino (Pinout, Características, Aplicaciones)
El ATMega328P (Microchip/Atmel) es el microcontrolador 8-bit AVR más icónico y utilizado del mundo, corazón de Arduino Uno, Nano, Pro Mini y millones de proyectos embebidos. Su arquitectura RISC de alto rendimiento, bajo consumo, rico periférico y ecosistema masivo (Arduino IDE, avr-gcc, PlatformIO, librerías infinitas) lo convierten en la opción default para aprendizaje, prototipado y producción de bajo/medio volumen. Analizamos su pinout completo, características, programación y aplicaciones.
¿Qué es el ATMega328P?
MCU 8-bit AVR RISC (Reduced Instruction Set Computer) con pipeline de 1 ciclo/instrucción (1 MIPS/MHz). Hasta 20 MHz (16 MHz típico en Arduino). Memoria: 32 KB Flash (programa), 2 KB SRAM (datos), 1 KB EEPROM (datos no volátiles). Periféricos: 23 I/O (14 digitales + 6 analógicos), 6 PWM (16-bit Timer1 + 2×8-bit Timer0/2), UART, SPI, I2C (TWI), Watchdog, Brown-out, ADC 10-bit 6 canales (15 ksps), Comparador analógico, Temp sensor interno. Alimentación: 1.8 – 5.5 V. Temperatura: -40 °C a +105 °C (industrial). Encapsulados: PDIP-28 (DIP), TQFP-32 (SMD), QFN/MLF-32.
Configuración de Pines (PDIP-28 / TQFP-32)
PDIP-28 (Arduino Uno/Nano/Pro Mini):
| Pin DIP | Pin Arduino | Nombre AVR | Funciones Principales |
|---|---|---|---|
| 1 | - | PC6 (RESET) | Reset activo bajo. PC6 si fuse RSTDISBL programado (pierde programación ISP). |
| 2 | D0 (RX) | PD0 (RXD) | UART RX / GPIO |
| 3 | D1 (TX) | PD1 (TXD) | UART TX / GPIO |
| 4 | D2 | PD2 (INT0) | GPIO / Interrupción externa 0 |
| 5 | D3 (PWM) | PD3 (INT1/OC2B) | GPIO / INT1 / PWM Timer2 OC2B |
| 6 | D4 | PD4 (T0) | GPIO / Timer0 clock externo |
| 7 | VCC | VCC | Alimentación digital (1.8-5.5 V) |
| 8 | GND | GND | Tierra |
| 9 | - | PB6 (XTAL1) | Cristal externo / Clock entrada |
| 10 | - | PB7 (XTAL2) | Cristal externo |
| 11 | D5 (PWM) | PD5 (OC0B) | GPIO / PWM Timer0 OC0B |
| 12 | D6 (PWM) | PD6 (OC0A) | GPIO / PWM Timer0 OC0A |
| 13 | D7 | PD7 | GPIO |
| 14 | D8 | PB0 (ICP1/CLKO) | GPIO / Timer1 Input Capture / Clock out |
| 15 | D9 (PWM) | PB1 (OC1A) | GPIO / PWM Timer1 OC1A (16-bit) |
| 16 | D10 (PWM/SS) | PB2 (OC1B/SS) | GPIO / PWM Timer1 OC1B / SPI SS |
| 17 | D11 (PWM/MOSI) | PB3 (OC2A/MOSI) | GPIO / PWM Timer2 OC2A / SPI MOSI |
| 18 | D12 (MISO) | PB4 (MISO) | GPIO / SPI MISO |
| 19 | D13 (SCK) | PB5 (SCK) | GPIO / SPI SCK / LED built-in |
| 20 | GND | GND | Tierra |
| 21 | AREF | AREF | Referencia ADC externa (opcional) |
| 22 | AVCC | AVCC | Alimentación ADC (conectar a VCC + ferrita + 100 nF) |
| 23 | A5 (SCL) | PC5 (ADC5/SCL) | ADC5 / I2C SCL / GPIO |
| 24 | A4 (SDA) | PC4 (ADC4/SDA) | ADC4 / I2C SDA / GPIO |
| 25 | A3 | PC3 (ADC3) | ADC3 / GPIO |
| 26 | A2 | PC2 (ADC2) | ADC2 / GPIO |
| 27 | A1 | PC1 (ADC1) | ADC1 / GPIO |
| 28 | A0 | PC0 (ADC0) | ADC0 / GPIO |
TQFP-32/QFN-32: Añade 2 pines ADC extra (ADC6, ADC7 en pines 19, 20) y 2 GND/VCC extra. No disponibles en DIP-28.
Características Destacadas
- Arquitectura AVR RISC: 131 instrucciones, la mayoría 1 ciclo. 16 MIPS @ 16 MHz.
- Bajo consumo: Active ~0.2 mA/MHz, Power-down < 1 µA @ 1.8 V. Modos: Idle, ADC Noise Reduction, Power-down, Power-save, Standby, Extended Standby.
- Periféricos ricos: 3 Timers (1×16-bit + 2×8-bit), 6 PWM, UART, SPI, I2C, ADC 10-bit 6ch, WDT, BOD, DebugWIRE (1-pin debug).
- Programación: ISP (SPI: MOSI/MISO/SCK/RESET), HVPP/HVSP (paralelo/serie alto voltaje), Bootloader (UART). Arduino usa bootloader Optiboot (512 B) en Flash alta.
- Fuses críticos: LOW: CKSEL (clock), SUT (startup). HIGH: BOOTSZ, BOOTRST, RSTDISBL, DWEN, SPIEN. EXTENDED: BODLEVEL. Mal configurar fuses puede "ladrillar" el chip (requiere HVPP para recuperar).
Cómo Usar el ATMega328P
- Hardware mínimo (Standalone): ATMega328P-PU (DIP) + Cristal 16 MHz + 2×22 pF + 10 kΩ Pull-up RESET + 100 nF VCC-GND + 100 nF AVCC-GND + LED + 220 Ω en PB5 (Pin 19) = "Arduino en protoboard". Coste < $2.
- Programación:
- Vía Arduino ISP (otro Arduino como programador) → "Burn Bootloader" → luego subida sketch por UART (USB-Serial CH340/CP2102/FT232).
- Directo ISP (USBasp, AVRISP mkII, Atmel-ICE) → avrdude / PlatformIO / Microchip Studio. Sin bootloader = 512 B extra Flash, arranque instantáneo.
- Software: Arduino IDE (fácil, librerías), PlatformIO + VS Code (profesional, multi-plataforma, IntelliSense), Microchip Studio (ASF, debugging HW debugWIRE), avr-gcc + Makefile/CMake (bare metal).
Aplicaciones Principales
- Placas Arduino: Uno, Nano, Pro Mini, Lilypad, Fio, Ethernet, Mega (ATMega2560), Leonardo (ATMega32U4).
- Sistemas embebidos: Dataloggers, estaciones meteorológicas, control acceso, cerraduras electrónicas, medidores energía, IoT (con ESP8266/ESP32/LoRa como coprocesador radio).
- Control de potencia: Drivers LED, cargadores batería, MPPT solar, inversores pequeños, UPS, fuentes conmutadas (con driver gate externo).
- Robótica / Drones: Control motores (PWM), lectura IMU (I2C/SPI), telemetría.
- Instrumentación: Multímetros, osciloscopios DIY, generadores función, analizadores espectro.
- Electrodomésticos inteligentes: Cafeteras, lavadoras, hornos (control lógico + interfaz usuario).
- Educación / STEM: Plataforma base para aprender C/C++, electrónica, RTOS (FreeRTOS port).
Preguntas Frecuentes (FAQ)
¿Diferencia entre ATMega328 y ATMega328P?
Arquitectura idéntica. P = PicoPower: tecnología de proceso mejorada → consumo activo y sleep significativamente menor (ej. Power-down: 328P ~0.1 µA vs 328 ~1-5 µA @ 1.8 V). 328P soporta 1.8 V mínimo; 328 requiere 2.7 V. Siempre elija 328P para diseños nuevos.
¿Puede usarse sin placa Arduino?
Absolutamente. Es un MCU estándar. Use configuración mínima (cristal, reset, desacoplo) y programe vía ISP. Elimine bootloader para arranque instantáneo y Flash completa. El "Arduino" es solo: PCB + regulador + USB-Serial + bootloader + conector ICSP + shield headers. El MCU es idéntico.
¿ATMega328P vs ATMega328PB?
328PB (nuevo, 2016): 2 UART, 2 SPI, 2 I2C, 4 PWM 16-bit extra, 8 KB SRAM, 4 KB EEPROM, QFN-32/TQFP-32 only. No pin-compatible con 328P (DIP-28). Mejor periférico, mismo core.
Conclusión
El ATMega328P define la era "Arduino". Su equilibrio entre simplicidad (8-bit, DIP friendly), rendimiento (16 MIPS), periféricos completos, bajo consumo, voltaje amplio y ecosistema software inigualable lo hace inmortal. Para diseños nuevos de alto volumen/coste ultra-sensible, considere ATtiny (ATtiny817/1617: 16-bit timer, DAC, op-amp, UPDI, < $0.50) o ARM Cortex-M0+ (RP2040, STM32G0, SAMD21: 32-bit, 48-133 MHz, >256 KB Flash, < $1). Pero para mantenimiento, educación, bajo volumen, compatibilidad Arduino, y diseños 5 V robustos: el 328P sigue siendo el rey. Domine sus fuses, modos sleep, ADC ruido-reduction, y PWM 16-bit (Timer1) para exprimirlo al máximo.
Tecnología Industrial
- Construye un Spybot controlado por Bluetooth con Arduino
- FlickMote: Mando IR por gestos para Smart Home
- TV‑B‑Gone DIY con Arduino: Mando universal para apagar cualquier TV
- Construye un Reloj Maestro LED Personalizado con Alarma – Visible desde 12 Metros
- Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
- Soluciones de Alimentación Optimizadas para Proyectos Arduino
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un Robot Cuadrúpedo Inteligente con Arduino: Guía Paso a Paso
- Construye un volante joystick personalizado con Arduino para gaming
- Construye una Máquina CNC Totalmente Funcional con Arduino Nano R3
- La evolución de Arduino: CEO Fabio Violante sobre tendencias de la industria e innovaciones futuras