Microcontrolador ATmega328P: guía definitiva

Acerca del microcontrolador ATMEGA328P

El ATmega328P es un microcontrolador CMOS de 8 bits y bajo consumo basado en la arquitectura RISC mejorada AVR. El chip ha sido desarrollado por Atmel Corporation (Microchip Technology). Tiene una velocidad de reloj de 20 MHz, 32 KB de memoria flash, un temporizador de 16 bits y 23 líneas de E/S programables. Se utiliza habitualmente en placas Arduino y otros proyectos basados en microcontroladores.

Características del ATMEGA328P

  • Microcontrolador AVR de 8 bits de alto rendimiento y bajo consumo;
  • Arquitectura RISC avanzada;
  • Segmento de memoria no volátil de alta resistencia;
  • Reinicio al encender y detección programable de caídas de tensión;
  • Oscilador calibrado internamente;
  • Fuentes de interrupción externas e internas;
  • Seis modos de suspensión: inactivo, reducción de ruido ADC, ahorro de energía, apagado, espera y espera prolongada.

Parámetros ATMEGA328P

  • Capacidad de memoria flash: 32 KB
  • SRAM: 2 KB
  • Capacidad de memoria EEPROM: 1 KB
  • Frecuencia de reloj: 20 MHz
  • Tipo de interfaz: I2C, SPI, USART
  • Tensión de alimentación mínima: 1,8 V; máxima: 5,5 V
  • Tensión de alimentación Dispositivos de montaje superficial: Montaje superficial
  • Tipo de paquete: PDIP/TQFP
  • Número de pines: 28-PDIP, 32-TQFP
  • Rango de temperatura de funcionamiento: -40 °C a +85 °C
  • Líneas de entrada/salida: 23
  • Número de entradas ADC: 8
  • Temporizador/contador de 8 bits: 2
  • Temporizador/contador de 16 bits: 1
  • PWM: 6 canales
  • Método de programación: ISP, IAP, H/PV
  • Método de simulación: debugWIRE

Pinout ATMEGA328P

El chip ATMEGA328P tiene 28 pines de entrada/salida de propósito general (GPIO), cada uno de los cuales se puede configurar como entrada o salida digital.

ATMEGA328P Pinout (28-pin PDIP)
ATMEGA328P Pinout (28-pin PDIP)

Paquete ATMEGA328P

El ATmega328P está disponible en varias opciones de encapsulado, como PDIP (encapsulado plástico dual en línea), TQFP (encapsulado cuadrado plano delgado) y QFN (cuadrado plano sin plomo). En el contexto del microcontrolador ATmega328P, la «P» se refiere al tipo de encapsulado del chip. Por lo tanto, aquí la «P» indica específicamente el encapsulado PDIP.

ATmega328P 28-lead Plastic Dual Inline Package (PDIP)
ATmega328P 28-lead Plastic Dual Inline Package (PDIP)

Diagrama de bloques ATMEGA328P

ATMEGA328P Block Diagram
ATMEGA328P Block Diagram

¿Cómo grabar el gestor de arranque Arduino en ATMEGA328P?

Las placas de desarrollo Arduino compradas en línea han sido programadas con BootLoader, por lo que puede utilizar directamente el IDE de Arduino para cargar programas.

Sin embargo, no hay BootLoader en un nuevo microcontrolador ATMEGA328P, por lo que no se puede utilizar el IDE de Arduino para cargar el programa directamente, y el programa solo se puede programar a través de ICSP.

Necesitamos programar el BootLoader para el MCU nosotros mismos con el fin de utilizar el IDE de Arduino para el desarrollo.

Materiales necesarios

  • ATmega328P;
  • Oscilador de cristal de 16 MHz;
  • Condensador de 22 pf*2;
  • Resistencia de 10 K;
  • Una placa de desarrollo Arduino (Uno o Nano).
Materials for Burning Bootloader to ATmega328P
Materials for Burning Bootloader to ATmega328P

Proceso

  1. Cargue el programa ArduinoISP en el Arduino Uno;
  2. Conecta el ATmega328P al Arduino Uno;
  3. Grabar BootLoader en ATmega328P;
  4. Prueba el programa LED Blinking en el ATmega328P.

Paso 1: Cargue el programa ArduinoISP en el Arduino Uno.

Conecta la placa de desarrollo Arduino Uno al ordenador. Busca y haz clic en «Archivo > Ejemplos > ArduinoISP» en el software Arduino.

Choose the ArduinoISP Program for Arduino Uno
Choose the ArduinoISP Program for Arduino Uno

En el código ArduinoISP, se puede ver que los pines MOSI, MISO y SCK están definidos como 11, 12 y 13 respectivamente, lo que coincide con los pines de la placa de desarrollo Arduino Uno.

Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code
Define Pin MOSI, Pin MISO and Pin SCK in the ArduinoISP code

A continuación, la configuración en Herramientas del IDE es la siguiente:

  • Placa: «Arduino Uno»
  • Puerto: «COM(Arduino Uno)»
  • Programador: «Arduino como ISP»
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE
Setting Board, Port, and Programmer for Arduino Uno in Arduino IDE

Haga clic en el icono de carga y, tras unos instantes, el programa ArduinoISP se cargará en su placa de desarrollo Arduino Uno.

Upload the ArduinoISP program to Arduino Uno
Upload the ArduinoISP program to Arduino Uno

Paso 2: Cableado del ATmega328P al Arduino Uno

Según la definición de los pines ISP en el código ArduinoISP anterior, el método de cableado y el diagrama entre Arduino y ATmega328P son los siguientes:

ArduinoATmega328P
10PIN1(RESET)
11PIN17(MOSI)
12PIN18(MISO)
13PIN19(SCK)
GNDGND
VCCVCC
Wiring Diagram the ATmega328P to Arduino Uno
Wiring Diagram the ATmega328P to Arduino Uno

Paso 3: Grabar BootLoader en ATmega328P

Después de terminar el cableado entre Arduino Uno y ATmega328P, debemos conectar Arduino Uno al ordenador. A continuación, haga clic en «Herramientas > Grabar gestor de arranque» para grabar el gestor de arranque en ATmega328P.

Start to Burn BootLoader on ATmega328P
Start to Burn BootLoader on ATmega328P

Paso 4: Prueba el programa de parpadeo del LED en el ATmega328P.

Conecta el polo positivo del LED al PIN2 del ATmega328P y el polo negativo a D. El PIN2 del ATmega328P representa PD0, por lo que es «0» en el código.

				
					const int LED_PIN = 2; // Define the LED pin

void setup() {
  pinMode(0, OUTPUT); // Set the LED pin as output
}

void loop() {
  digitalWrite(0, HIGH); // Turn on the LED
  delay(1000); // Wait for one second
  digitalWrite(0, LOW); // Turn off the LED
  delay(1000); // Wait for one second
}

				
			
LED Blinking Test on ATmega328P
LED Blinking Test on ATmega328P

Como se puede ver en la imagen GIF anterior, el programa de parpadeo del LED funciona con normalidad.

Compartir en:

Scroll al inicio

Cotización