Como grabar el bootloader en un ATMega328P

A veces nos encontramos con la necesidad de tener un proyecto en funcionamiento las 24 horas del día, pero no queremos mantener ocupado nuestro querido Arduino, ante esta situación la mejor opción es comprar un ATMega328P y montarlo en una protoboard. Si elegimos esta opción debemos saber que normalmente estos chips se venden sin el bootloader, así que nos tocará grabarlo nosotros mismos.

En este tutorial aprenderemos a grabar el bootloader en un ATMega328P usando un Arduino UNO como programador ISP.

NOTA: El bootloader es un conjunto de instrucciones que nos permiten acceder al microcontrolador y usarlo de forma sencilla sin tener que conocer instrucciones demasiado avanzadas. Los ATMega328P disponibles en la tienda ya vienen con el bootloader cargado.

Componentes necesarios para montar el programador

1x Arduino UNO/NANO
2x Condensadores de 22pF
1x Oscilador 16MHz
1x BreadBorad
3x LEDs de colores (o 1x RGB)
3x Resistencias de 330 Ohms (Para los 3 LEDs)
1x Resistencia 10K (Para el pin 1 del ATMega328P)
Cables para protoboard

 

Método #1: Arduino UNO como programador ISP

Este método es el más sencillo, tan solo tenemos que cargar en nuestro Arduino el ejemplo “ArduinoISP” del IDE de Arduino, esto configurará nuestra placa como un programador ISP. Para localizar este ejemplo fijaros en la siguiente imagen:

arduide123

Una vez tengamos cargado el ejemplo “ArduinoISP” en nuestro Arduino ya podemos realizar las siguientes conexiones en la protoboard:

atmega328p bootloader

El led verde nos indicará que llega alimentación al Arduino, el led amarillo nos indicará cuando el ATMega328P se esta programando y el led rojo nos indicará si hay algún error.

Fijaros en que intercalamos una resistencia de 10k en el pin 1 (RESET) para que detecte HIGH en todo momento, si no la ponemos el microcontrolador se reiniciará en bucle y como comprenderéis esto nos interesa.

El oscilador no tiene polaridad, podemos montarlo del derecho y del revés indistintamente. Los condensadores de 22pF salen del oscilador hacia negativo (GND).

Una vez tengamos hechas las conexiones es hora de programar un ATMega328P, para ello seleccionamos las siguientes opciones en el IDE de Arduino:

arduide1232

Placa: Arduino/Genuino UNO
Puerto: El puerto donde tengáis conectado el Arduino UNO
Programador: Arduino as ISP

Y finalmente ya podemos hacer click en “Quemar Bootloader”, remarcado en azul en la imagen de arriba. Si todos los pasos se han seguido correctamente el led verde se iluminará y tras unos segundos se encenderá el amarillo (mientras se carga el bootloader), pasados unos segundos el led amarillo dejará de encenderse y ya tendremos el ATMega328P listo para ser usado.

NOTA: Si se enciende el led rojo es porque ha ocurrido algun error durante la lectura/escritura, comprueba las conexiones y vuelve a intentarlo.

 

Método #2: Arduino UNO con OptiBoot

Vale… ¿Que es OptiBoot?. Es un bootloader alternativo y 100% compatible con el que viene pre cargado por defecto en el Arduino, además funciona a un mayor baudrate (115200 en vez de 57600) y ocupa 1.5Kb menos, esto se traduce en una carga mucho más rápida y en un mayor espacio para nuestros sketches.

Para instalar este bootloader descargaremos el paquete desde GitHub y descomprimimos el archivo “optiLoader.h” en una carpeta llamada “OptiLoader” dentro de la carpeta Libraries del IDE de Arduino, en nuestro caso nos quedaría así:

C:\Program Files (x86)\Arduino\libraries\OptiLoader\optiLoader.h

Tras este paso podemos abrir el archivo “optiLoader.ino” y subirlo a nuestro Arduino UNO.

Descargar OptiLoader desde GitHub

Una vez hecho esto procedemos a realizar las conexiones de este esquema, son las mismas que el método anterior pero podemos prescindir del circuito de los leds ya que no los vamos a usar.

bootloader en ATMega328P

La ventaja de usar este segundo método es que el Arduino UNO se nos queda como programador de ATMega328P automático, para programar otro ATMega tan solo debemos reemplazarlo por uno vacío y pulsar el botón de reset del Arduino. No es necesario tener el Arduino UNO conectado al PC ni interactuar con el IDE de Arduino para nada. Cada vez que pulsamos reset el Arduino UNO sube el bootloader al ATMega que este conectado, así de fácil.

 

Compartir en redes sociales: