0% encontró este documento útil (0 votos)
17 vistas21 páginas

Labo 1 Micro

Cargado por

rigelalphard7
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
17 vistas21 páginas

Labo 1 Micro

Cargado por

rigelalphard7
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

UNIVERSIDAD PRIVADA DEL VALLE

FACULTAD DE ELECTRONICA
INGENIERIA BIOMÉDICA
Evaluación
SEDE LA PAZ

MICROPROCESADORES I (A)

Informe de Laboratorio Nº 1

MICROCONTROLADOR Y
BOOTLOADRE

Estudiante:
Mallea Achacollo Marco Antonio
Cuno Quintanilla Litzy

Docente: Ing. Romulo Roberto


Verastegui Mamani

La Paz 10 de abril del 2025


Gestión I – 2025
MICROCONTROLADOR Y BOOTLOADER
1. OBJETIVOS
1.1. OBJETIVO GENERAL

Determinar el funcionamiento del Atmega328P y el conversor serial USB – TTL, para


entender la correcta manipulación, de igual manera los distintos copiladores con los que
se trabaja: Arduino Ide y AVRdude.
1.2. OBJETVISO ESPECIFICOS
• Aplicar el quemado de Bootloader en el Atmega328P para comprobar el
funcionamiento correcto con el Arduino mediante el programa de Arduino IDE.
• Aprender el funcionamiento y uso del conversor serial USB – TTL para realizar las
grabaciones en el Atmega328P.
• Grabar distintos programas en el Atmega328P utilizando los programas Arduino
IDE y AVRdude.
2. MARCO TEORICO
2.1. Atmega328P

El ATmega328P es un microcontrolador de alto rendimiento perteneciente a la familia


AVR de 8 bits de la empresa Microchip Technology (antes Atmel). Este chip se ha vuelto
especialmente popular por ser el corazón del famoso Arduino Uno, gracias a su equilibrio
entre potencia, eficiencia energética y facilidad de programación. Diseñado con
arquitectura RISC, el ATmega328P permite ejecutar instrucciones en un solo ciclo de
reloj, lo que lo hace rápido y eficiente para aplicaciones embebidas, proyectos
electrónicos y sistemas de control. Además, su versatilidad y bajo consumo lo convierten
en una excelente opción para dispositivos portátiles y automatización básica.
Este microcontrolador cuenta con las siguientes características: una memoria flash de
32 KB para almacenamiento de programas, de los cuales 0.5 KB son utilizados por el
bootloader. También posee 2 KB de SRAM y 1 KB de EEPROM, permitiendo así guardar
tanto datos temporales como permanentes. Opera con una frecuencia de reloj de hasta
20 MHz y tiene un total de 23 líneas de entrada/salida digital, de las cuales 6 pueden ser
utilizadas como salidas PWM. Asimismo, dispone de 6 canales de entrada analógica
(ADC de 10 bits), lo cual facilita la lectura de sensores analógicos. Entre otros aspectos
destacables, incluye comunicación serial por UART, SPI e I2C, además de funciones
avanzadas como temporizadores, interrupciones externas y modo sleep para ahorrar
energía. Todo esto encapsulado en un chip compacto y fácil de integrar.

Imagen 1. – Atmega328P

Imagen 2. – Datasheet del Atmega328P


2.2. Conversor serial USB – TTL CP2102

El CP2102 es un convertidor USB a UART (Universal Asynchronous Receiver-


Transmitter) fabricado por Silicon Labs. Su función principal es facilitar la comunicación
entre una computadora y dispositivos que utilizan comunicación serial, como
microcontroladores, módulos Bluetooth o sensores. Este chip permite que un puerto USB
actúe como un puerto serial tradicional (COM), simplificando la programación y
depuración de dispositivos embebidos. Es ampliamente usado en entornos de desarrollo
como Arduino, ya que elimina la necesidad de puertos seriales físicos en las
computadoras modernas, permitiendo una conexión rápida, directa y confiable entre el
software del PC y el hardware embebido.
El CP2102 cuenta con una interfaz USB 2.0 de alta velocidad, totalmente compatible con
USB 1.1, y soporta velocidades de transmisión de datos desde 300 bps hasta 1 Mbps.
Este chip integra internamente el oscilador, el regulador de voltaje y el controlador USB,
lo que reduce considerablemente el número de componentes externos requeridos,
simplificando el diseño del circuito. Opera con tensiones de 3.3V o 5V, lo que le permite
adaptarse a distintos microcontroladores y sistemas lógicos. Además, es compatible con
múltiples sistemas operativos, incluyendo Windows, Linux y macOS, y ofrece drivers
virtuales que simulan un puerto COM, facilitando la comunicación con cualquier software
que utilice serial. Gracias a su tamaño compacto y facilidad de implementación, el
CP2102 se ha convertido en uno de los chips más usados en placas de desarrollo y
dispositivos de comunicación serial por USB.

Imagen 3. – CP2102 + Conexiones


2.3. Circuito quemado de Bootloader

nEl circuito de quemado del bootloader en un ATmega328P es un sistema de conexión


utilizado para cargar el programa de arranque (bootloader) dentro del microcontrolador.
Este bootloader es un pequeño fragmento de software que permite posteriormente cargar
programas en el ATmega328P mediante una conexión serial (como la que usan las
placas Arduino). Sin el bootloader, el microcontrolador no puede comunicarse fácilmente
con una PC a través del puerto USB o UART para ser programado.
Para realizar el quemado o grabar el bootloader, se utiliza una interfaz de programación
ISP (In-System Programming). Este proceso requiere conectar ciertos pines del
microcontrolador a un programador externo, como un Arduino configurado como ISP o
un programador USBasp. Los pines involucrados comúnmente son:

Imagen 4. – Conexiones para Bootloader


Estos pines permiten establecer la comunicación SPI entre el programador y el
ATmega328P para transferir el bootloader a la memoria Flash. El circuito básico incluye
resistencias de protección y, en algunos casos, un cristal oscilador con sus capacitores
si el microcontrolador no lo tiene incorporado. Una vez grabado el bootloader, el chip
puede ser programado fácilmente usando el entorno de Arduino IDE por vía USB a través
de un convertidor USB-Serial como el CP2102.
3. LISTA DE MATERIALES, INSUMOS Y EQUIPOS
• Laptop con los programas Arduino IDE, AVRdude y Proteus.
• Arduino UNO.
• Atmega328P.
• Resistencias de: 10k y 390 Ohm.
• Capacitores de: 22pF y 100nF.
• Conversor USB – TTL CP2102.
• Cristal de 16MHz.
• Leds.
• Jumpers.
4. CIRCUITO APLICADO
4.1. LAY OUT DEL CIRCUITO
Imagen 5. – Circuito grabado de blink

Imagen 6. – Circuito grabado juego de 4 leds


4.2. CIRCUITO ARMADO

Imagen 7. – Circuito armado blink


Imagen 8. – Circuito armado juego de 4 leds
5. DESARROLLO DEL LABORATORIO
5.1. DISEÑO DEL CIRCUITO

Parte 1: Instalación del Bootloader al Atmega328P


Para poder empezar a trabajar con el Atmega328p, primero debemos realizar un
quemado del Bootloader, este es un protocolo de comunicación para que el Atmega328P
pueda comunicarse con la tarjeta de Arduino y con el copilador.
Para esto necesitamos primeramente la placa Arduino Uno con su microcontrolador, a
esto primero le grabamos un programa llamado “Arduino ISP”, así trabajara como
quemador de microcontroladores.
Ahora armaremos el siguiente circuito siguiendo la configuración de pines y apoyándonos
en el datasheet del Atmega328P:

Imagen 9. – Circuito quemado de Bootloader


Una vez armado en el copilador escogemos como programador “Arduino as ISP”.
Imagen 10. – Programador Arduino as ISP
Finalmente, en la misma opcion de herramientas seleccionaremos la opcion de “Quemar
Bootloader”, una vez el quemado sea exitoso lo retiramos y lo tendremos listo para
realizar el resto de programas.

Imagen 11. – Quemado Bootloader


Parte 2: Grabar blink con IDE Arduino al Atmega328P
Una vez teniendo el Atmega328P quemado, vamos a grabarle un programa de ejemplo
para garantizar el funcionamiento correcto, este programa se llama “blink” y lo
encontramos en la parte de Archivos, ejemplos, básicos y Blink.

Imagen 12. – Programa de Blink


Cuando tengamos ubicado ya el codigo del programa Blink, vamos a conectar nuestro
atmega328P con al compilador con ayuda de la placa de Arduino Uno, subiremos el
programa al Atmega y una vez completada la subida pasaremos al armado del circuito.
Una vez tengamos grabado el programa debemos realizar el armado de su circuito,
posterior a esto solo nos faltara alimentar el circuito con la placa del Arduino Uno y
podremos observar la correcta funcionalidad del circuito con el programa grabado:

Imagen 13. – Armado circuito Blink


Parte 3: Grabar un juego de luces con 4 leds (IDE Arduino)
Con el programa de ejemplo demostrado que funciona correctamente, ahora lo haremos
con un codigo el cual nos muestre un juego de 4 leds con un patrón binario designado,
el patrón es el siguiente: 1 0 0 1, 0 1 1 1, 1 0 0 1, 0 0 0 0, 1 0 0 1, 0 1 1 0 y debe repetirse
una vez terminado el patrón.
El procedimiento será el mismo que cuando se grabo el programa de ejemplo, pero en
este caso este sería el código utilizado:

Imagen 14. – Código juego de 4 leds


Una vez teniendo ya el código verificado, vamos a subirlo al Atmega328P, cuando este
se haya subido correctamente, tocara empezar con el armado del circuito, a diferencia
del programa de ejemplo, en este solo se aumentar 3 leds con sus respectivas
resistencias donde los pines de salida, el patrón binario y secuencia ya se los define en
el código.
Imagen 15. – Circuito armado juego de 4 leds
Parte 4: Grabar blink con AVRdude + Conversor USB – TTL
Vamos a realizar el grabado del mismo programa de ejemplo Blink que se realizo en la
segunda parte del laboratorio, pero en este caso vamos a usar un conversor USB – TTL
y un programa llamado “AVRdude”, el compilador Arduino IDE también lo usaremos pero
solo para poder obtener una dirección del código y no para subirlo, para esto nuevamente
volveremos a la ventana del programa de ejemplo Blink y solamente lo verificaremos,
esto para luego buscar la dirección que necesitamos que termina en “.hex”:

Imagen 16. – Dirección requerida para el AVRdude


Esta dirección es la que necesitaremos para colocarlo en el AVRdude, pero antes de
usar este programa debemos armar un segundo circuito utilizando el conversor USB –
TTL CP2102, esto para poder grabar el programa al Atmega328P sin el uso del Arduino
IDE, este es el circuito necesario:

Imagen 17. – Circuito con el Conversor USB – TTL


Una vez armado correctamente el circuito, iniciaremos con el uso del AVRdude,
primeramente vamos a realizar las configuraciones requeridas para el grabado correcto
del programa: en el programador vamos a seleccionar “Arduino”, en puerto colocaremos
el número de puerto que nuestro TTL está usando, en la tasa de baudios colocaremos el
valor de “115200”, en microcontrolador seleccionamos “Atmega328P” y en preajustes
seleccionamos Arduino Uno (Atmega328P), ahora si primero debemos realizar la
detección de nuestro Atmega328P, para esto en nuestro caso que usamos el Conversor
USB – TTL CP2102 debemos coordinar la detección del programa y usando el pulsador
del circuito armado, para poder sincronizarlos y lograr una detección exitosa del
Atmega328p, una vez logrado finalmente añadiremos la dirección obtenida del Arduino
IDE en el “Flash” del programa AVRdude y colocamos GO, igualmente debemos
sincronizarlo con el pulsador del circuito, cuando se realiza de la manera correcta el
programa añadido a AVRdude se grabara de manera correcta en el Atmega328P y estará
listo para su uso.
Imagen 17. – Grabado con el AVRdude
De esta manera ya tendremos de momento el programa ya grabado en el Atmega328P,
por ende solo quedaría realizar el armado del circuito, el cual podemos reutilizar el
circuito que se uso en la segunda parte del laboratorio, solo quedaría añadir el
Atmega328P y alimentar el circuito para demostrar el correcto funcionamiento del circuito
junto con el Atmega328P grabado correctamente.
Imagen 18. – Circuito armado Blink con AVRdude
Parte 5: Grabar un juego de luces con 4 leds (AVRdude + Conversor USB – TTL)
Para la última parte del laboratorio vamos a realizar el grabado del programa del juego
de 4 leds que se uso en la tercera parte del laboratorio, pero en este caso usando el
AVRdude, el procedimiento para este momento ya es conocido, por lo que solamente
será necesario actualizar el direccionamiento del programa, siguiendo los anteriores
pasos vamos a ubicar la dirección del programa de juego de 4 leds.

Imagen 19. – Dirección programa juego de 4 leds


Ahora repetiremos el procedimiento que se realiza en el AVRdude, pero en el
añadimiento de la dirección vamos a cambiarlo por esta nueva dirección y nuevamente
lo grabaremos sin olvidar o dejar de lado la sincronización con el pulsador del circuito.
Cuando tengamos la listo el grabado del programa vamos a adjuntarlo con el circuito
armado que ya tenemos de la tercera parte del laboratorio, solamente quedaría adjuntar
el Atmega328P y alimentar el circuito para poder visualizar el funcionamiento del circuito
con el programa.

Imagen 20. – Circuito armado juego de 4 leds con AVRdude


5.2. DIAGRAMA DE FLUJO

Diagrama primer programa blink:

INICIO

INICIALIZAR
LED_BUILTIN COMO
SALIDA

ENCENDER
LED

ESPERAR
1
SEGUNDO

APAGAR
LED

ESPERAR 1
SEGUNDO

FIN
Diagrama segundo programa juego de 4 leds:

5.3. PROGRAMA

Programa 1:
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Configura el pin del LED incorporado como salida
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Enciende el LED
delay(1000); // Espera 1 segundo
digitalWrite(LED_BUILTIN, LOW); // Apaga el LED
delay(1000); // Espera 1 segundo antes de repetir
}
Programa 2:
void setup() {
pinMode(13, OUTPUT); // Configura el pin 13 como salida LED 1
pinMode(12, OUTPUT); // Configura el pin 12 como salida LED 2
pinMode(11, OUTPUT); // Configura el pin 11 como salida LED 3
pinMode(10, OUTPUT); // Configura el pin 10 como salida LED 4
}
void loop() {
// Matriz que representa las combinaciones de encendido/apagado de los 4 LEDs
int secuencia[][4] = {
{1, 0, 0, 1}, // Enciende LEDs 1 y 4
{0, 1, 1, 1}, // Enciende LEDs 2, 3 y 4
{1, 0, 0, 1}, // Repite la primera combinación
{0, 0, 0, 0}, // Apaga todos los LEDs
{1, 0, 0, 1}, // Enciende LEDs 1 y 4 nuevamente
{0, 1, 1, 0} // Enciende LEDs 2 y 3
};
int pines[] = {13, 12, 11, 10}; // Arreglo con los pines donde están conectados los LEDs
for (int i = 0; i < 6; i++) { // Recorre las 6 secuencias
for (int j = 0; j < 4; j++) { // Recorre cada LED en la secuencia actual
// Si el valor es 1, enciende el LED; si es 0, lo apaga
digitalWrite(pines[j], secuencia[i][j] ? HIGH : LOW);
}
delay(100); // Espera 100 milisegundos entre cada secuencia
}
}
6. FIRMAS DE LABORATORIO

7. CUESTIONARIO

Explique de forma breve la arquitectura del microcontrolador.


La arquitectura de un microcontrolador se refiere a la forma en que están organizados
sus componentes internos para ejecutar tareas específicas. Un microcontrolador típico,
como el ATmega328P, cuenta con una unidad central de procesamiento (CPU),
memorias internas (Flash, SRAM y EEPROM), periféricos de entrada/salida,
temporizadores, conversores analógico-digital (ADC) y puertos de comunicación como
UART, SPI o I2C.
Todos estos módulos están integrados en un solo chip, lo que permite controlar
dispositivos electrónicos de forma autónoma. Su arquitectura se basa en el principio de
tener todo en uno (sistema embebido), optimizado para tareas específicas, y con bajo
consumo energético. En el caso del ATmega328P, se usa una arquitectura Harvard
modificada, que separa la memoria de datos y la de programa, permitiendo una ejecución
más rápida y eficiente.
Explique el proceso de grabación usando el bootloader.
El proceso de grabación usando el bootloader consiste en cargar un programa al
microcontrolador a través de una interfaz serial, sin necesidad de un programador
externo. Cuando se enciende o reinicia el microcontrolador, el bootloader se activa
temporalmente y espera una señal desde la computadora. Si se envía un nuevo
programa (por ejemplo, desde el Arduino IDE), el bootloader lo recibe y lo almacena en
la memoria Flash del microcontrolador. Una vez finalizada la grabación, el bootloader
cede el control al nuevo programa para que se ejecute automáticamente.
8. CONCLUSIONES
• Se logró comprender el funcionamiento del microcontrolador ATmega328P,
identificando sus pines, arquitectura básica y la manera en que interactúa con los
distintos entornos de desarrollo, lo cual es fundamental para su correcta
manipulación en proyectos embebidos.
• Se comprobó el uso del conversor USB – TTL (CP2102), permitiendo la
comunicación entre la computadora y el microcontrolador. Este módulo fue clave
para realizar la grabación de programas sin la necesidad de un programador
externo.
• Se aplicó correctamente el proceso de quemado del Bootloader al ATmega328P,
lo cual permitió habilitar la carga de programas mediante el puerto serial. Esto
demostró que el microcontrolador puede funcionar como un Arduino
independiente.
• Se logró grabar programas en el ATmega328P utilizando tanto Arduino IDE como
AVRdude, permitiendo al estudiante comparar ambas herramientas y entender las
diferencias entre interfaces gráficas y control por consola.
• En general, el trabajo permitió integrar conocimientos teóricos con la práctica,
fortaleciendo la comprensión de los microcontroladores y su programación, así
como el uso de herramientas de desarrollo en sistemas embebidos.
9. REFERENCIAS BIBLIOGRAFICAS

Arduino. (s.f.). Referencia del lenguaje de programación Arduino. Recuperado el 7 de


abril de 2025, de https://www.arduino.cc/reference/es/
Atmel Corporation. (2016). ATmega328/P: Hoja de datos resumen. Microchip
Technology Inc. Recuperado de
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-
Microcontroller-ATmega328-328P_Datasheet.pdf
Fundación Arduino. (s.f.). Guía de instalación del bootloader en microcontroladores
AVR. Recuperado el 7 de abril de 2025, de
https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoToBreadboard
SparkFun Electronics. (s.f.). Guía de uso del convertidor USB a Serial TTL (CP2102).
Recuperado el 7 de abril de 2025, de https://learn.sparkfun.com/tutorials/serial-basic-
breakout-hookup-guide
Domínguez, R. (2022). Microcontroladores AVR y desarrollo de sistemas embebidos
con Arduino. Editorial Alfaomega.
AVRDUDE. (2020). AVR Downloader/UploaDEr – Manual de usuario. Recuperado de
http://savannah.nongnu.org/projects/avrdude

También podría gustarte