Informe de Señales Y Sistemas (Recuperado Automáticamente)

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

PIC 16F877A (MPLAB-PROTEUS)

DELGADO, Darsy. Ingeniería Biomédica.


PÁJARO, Wendy. Ingeniería Biomédica.
RADA, Diana. Ingeniería Biomédica.
RAMOS, Luis. Ingeniería Biomédica.

MICROCONTROLADORES, Grupo P-22, universidad Simón Bolívar.


Practica No2
Indira Escalante
Octubre 7 del 2024

Resumen— En esta práctica de laboratorio, se programó y simuló microcontrolador, sino que también refuerza conceptos
el microcontrolador PIC16F877A utilizando MPLAB X IDE y fundamentales en electrónica digital, como la configuración de
Proteus 8 para controlar un LED mediante un botón. El objetivo fue puertos y el manejo de señales.
desarrollar un programa que permitiera al microcontrolador manejar
actuadores como LEDs y motores. Se configuró un proyecto en El microcontrolador PIC16F877A es conocido por su
MPLAB, se escribió el código en C, y se simuló el circuito en
Proteus y Tinkercad. Los resultados mostraron que el sistema
versatilidad y facilidad de uso, lo que lo convierte en una
funcionó correctamente, encendiendo y apagando el LED al presionar opción ideal para proyectos educativos. En esta práctica, se
el botón, lo que validó la efectividad del diseño y la programación del empleará un enfoque sistemático que incluye la creación de un
microcontrolador, proporcionando una base sólida para futuros circuito simulado, la programación del dispositivo y la
desarrollos en electrónica. validación del funcionamiento a través de pruebas prácticas.
Los resultados obtenidos permitirán a los estudiantes
Palabras Clave—, Proteus 8, LED, botón, programa, actuadores, familiarizarse con el entorno de desarrollo y las herramientas
motores, código en C, simulación, Tinkercad, resultados, diseño, necesarias para implementar soluciones electrónicas efectivas.
programación, electrónica. Además, se explorarán conceptos como la configuración de
resistencias pull-up y el uso de retardos en la programación,
Abstract— In this laboratory practice, the PIC16F877A elementos esenciales para el diseño de sistemas robustos.
microcontroller was programmed and simulated using MPLAB X
IDE and Proteus 8 to control an LED via a button. The objective was
to develop a program that allowed the microcontroller to manage II. MARCO TEÓRICO
actuators such as LEDs and motors. A project was configured in
MPLAB, the code was written in C, and the circuit was simulated in El microcontrolador PIC16F877A es un dispositivo de la
Proteus and Tinkercad. The results showed that the system worked
familia de microcontroladores PIC de Microchip Technology,
correctly, turning the LED on and off when the button was pressed,
validating the effectiveness of the microcontroller’s design and ampliamente reconocido por su versatilidad y facilidad de uso
programming, and providing a solid foundation for future en aplicaciones de control y automatización. Este
developments in electronics.. microcontrolador se basa en una arquitectura RISC (Reduced
Instruction Set Computing), lo que permite una ejecución
Keywords— Proteus 8, LED, button, program, actuators, motors, C eficiente de instrucciones y facilita el desarrollo de
code, simulation, Tinkercad, results, design, programming, aplicaciones en diversas áreas, desde la electrónica básica
electronics.
hasta sistemas más complejos .

Características del PIC16F877A


I. INTRODUCCIÓN
El PIC16F877A se distingue por sus características técnicas,

L
que incluyen:

a La presente práctica de laboratorio se centra en el  Memoria Flash: 14 KB para almacenamiento de


análisis y la programación del microcontrolador PIC16F877A, programas, permitiendo la implementación de algoritmos
un dispositivo ampliamente utilizado en aplicaciones de complejos.
control y automatización. A través de simulaciones en el  Memoria RAM: 368 bytes, adecuada para el manejo de
software MPLAB X IDE y Proteus 8, los estudiantes variables temporales.
desarrollarán un programa que permita controlar un LED  Puertos I/O: 33 pines configurables como entradas o
mediante la entrada de un pulsador. Este ejercicio no solo salidas, proporcionando flexibilidad en el diseño del
proporciona una comprensión práctica del funcionamiento del circuito.
 Convertidor Analógico-Digital (ADC): Permite la  1 Resistencia de 10kΩ para el botón (pull-up)
conversión de señales analógicas a digitales, aunque en  1 Resistencia de 1kΩ para MCLR (Master Clear)
esta práctica no se utilizará esta funcionalidad.  1 Pulsador (botón)
Fuente de alimentación de 5V (virtual en el simulador)
 Oscilador interno: Capaz de operar a frecuencias de hasta
20 MHz, permitiendo un procesamiento rápido. Procedimiento o Metodología
La metodología de esta práctica de laboratorio se estructuró en
Programación y Desarrollo
varias etapas clave para asegurar un enfoque sistemático y
La programación del PIC16F877A se realiza comúnmente
riguroso en el análisis y programación del microcontrolador
en C utilizando el entorno de desarrollo MPLAB X IDE y el
PIC16F877A. en los siguientes puntos se detallan los
compilador XC8. Este entorno proporciona herramientas
seguidos:
robustas para la escritura, depuración y simulación del código.
La configuración inicial del microcontrolador incluye la
definición de puertos como entradas o salidas y la
desactivación de funciones analógicas para optimizar el A. Configuración del proyecto en MPLAB X IDE
rendimiento en aplicaciones digitales .  Creación de un nuevo proyecto:
Se inició el software MPLAB X IDE y se seleccionó la
En esta práctica, se desarrollará un programa que controla opción para crear un nuevo proyecto. En la ventana de
un LED mediante un pulsador. El código implementará una selección, se eligió Microchip Embedded y la opción de
lógica simple donde el LED se encenderá al presionar el Standalone Project.
botón, utilizando retardos para gestionar el tiempo durante el
cual el LED permanece encendido o apagado. Este enfoque no  Selección del microcontrolador:
solo refuerza conceptos fundamentales en programación de En la sección de selección del dispositivo, se escogió el
microcontrolador PIC16F877A como plataforma de
microcontroladores, sino que también introduce al estudiante
hardware para este proyecto.
en la lógica de control y manejo de señales.
 Configuración del compilador:
Simulación con Proteus
Se seleccionó el compilador XC8, previamente instalado,
El software Proteus 8 se utiliza para simular circuitos en la sección correspondiente.
electrónicos, permitiendo a los estudiantes visualizar el
comportamiento del microcontrolador en un entorno virtual  Creación del archivo de código:
antes de realizar implementaciones físicas. En este contexto, Se nombró el proyecto y se definió la ubicación para
se montará un circuito que incluye el PIC16F877A, un LED y almacenar los archivos. Luego, en el apartado Source
un pulsador. La simulación permitirá verificar la correcta Files, se creó un nuevo archivo de código seleccionando
interacción entre los componentes y validar el código New -> main.c.
desarrollado sin necesidad de hardware físico.
 Escritura del código:
Importancia del Diseño Electrónico En el archivo main.c, se escribió el código en lenguaje C.
El diseño electrónico es fundamental en la creación de Este código programó la lógica necesaria para encender
sistemas automatizados. La correcta implementación de un LED en respuesta a la señal de un botón. El puerto B
componentes como resistencias pull-up es crucial para se configuró como entrada para el botón, mientras que el
asegurar que las entradas del microcontrolador se comporten puerto C se utilizó como salida para el LED.
como se espera. En este caso, una resistencia pull-up se
utilizará para mantener el estado alto en el pin del botón  Generación del archivo HEX:
cuando este no esté presionado, evitando lecturas erróneas que Una vez completado el código, se compiló el proyecto
podrían afectar el funcionamiento del sistema. para generar el archivo hex, necesario para la simulación
en Proteus. Esto se realizó utilizando el icono del martillo
III. METODOLOGÍA EXPERIMENTAL o seleccionando Export HEX desde las opciones del
proyecto.
Materiales y Equipos
B. Simulación del circuito en Proteus
A continuación se detallan los materiales empleados para
 Configuración de componentes:
la realización de la práctica de laboratorio:
Se abrió el software Proteus y se cargaron los elementos
 Microcontrolador: PIC16F877A
necesarios para la simulación: PIC16F877A, un LED, un
 Software: MPLAB X IDE, Proteus 8
pulsador, y las resistencias correspondientes. Las
Componentes electrónicos: conexiones del circuito se configuraron de la siguiente
 1 LED manera:
 1 Resistencia de 220Ω para el LED
 El LED se conectó al pin RC0del microcontrolador, a El proyecto consiste en crear un sistema básico
través de una resistencia de 220Ω. controlado por un microcontrolador PIC16F877A que
 El botón se conectó al pin RB0, junto con una resistencia encienda un LED cuando se presione un botón.
pull-up de 10kΩ para asegurar que el pin permaneciera en
Utilizaremos el software Proteus para simular el circuito
alto cuando el botón no estuviera presionado.
y un lenguaje de programación (MPLAB X IDE) en C
 El pin MCLR (Master Clear) se conectó a 5V mediante
una resistencia de 1kΩ para garantizar un correcto para controlar el microcontrolador y.
funcionamiento del sistema de reinicio.
1. Componentes utilizados:
 Carga del archivo HEX:
En el simulador, se hizo doble clic sobre el  PIC16F877A (microcontrolador)
microcontrolador para cargar el archivo hex generado en  1 LED
MPLAB en el campo Program File.  1 Resistencia de 220Ω para el LED
 1 Resistencia de 10kΩ para el botón (pull-up)
 Ejecución de la simulación:
 1 Resistencia de 1kΩ para la protección del
Finalmente, se ejecutó la simulación en Proteus. Se
verificó que el LED respondiera al estado del botón, MCLR (Master Clear)
encendiéndose cuando el botón estaba presionado y  1 pulsador (botón)
apagándose en caso contrario, tal como se había  Fuente de alimentación de 5V (virtual en el
programado en el código C. simulador)
C. Simulación adicional en Tinkercad (opcional)
2. Decisiones tomadas:
 Diseño en Tinkercad:
Se replicó el circuito en Tinkercad, utilizando un
microcontrolador basado en Arduino. Se configuró el pin  Usar el puerto B como entrada para el botón.
D2 como entrada para el botón y el pin D6 como salida  Usar el puerto C como salida para controlar
para el LED. el LED.
 El microcontrolador se configurará para
 Escritura del código en Tinkercad:
operar a 4 MHz.
Se programó una lógica similar en Arduino C, donde el
LED se encendía cuando el botón se encontraba en bajo
(LOW). 3. Diseño del Circuito (Hardware):

 Simulación y comparación: Software utilizado: Proteus para la simulación


Se ejecutó la simulación en Tinkercad y se comparó el del circuito y MPLAB X IDE para la ejecución
comportamiento del circuito con la simulación en Proteus,
del código.
validando el funcionamiento de ambos.
 Esquemático Del Circuito:
D. Análisis de resultados o El microcontrolador PIC16F877A.
 Documentación de la simulación en Proteus: o Pines de alimentación conectados
Se capturaron imágenes de la simulación en Proteus, correctamente: VDD (5V) y VSS (GND).
mostrando el comportamiento del LED de acuerdo con el o Un LED conectado al pin RC0 (pin 15) a
estado del botón.
través de una resistencia de 220Ω.
 Documentación de la simulación en Tinkercad: o Un botón conectado al pin RB0 (pin 33)
En caso de realizarse la simulación en Tinkercad, se con una resistencia pull-up de 10kΩ para
capturaron imágenes que mostraban la funcionalidad del mantener el pin en alto cuando el botón
sistema. no esté presionado.
 Análisis de fallos y resolución de problemas: o El pin MCLR (pin 1) con una resistencia
Se documentaron posibles problemas identificados de 1kΩ a 5V para asegurar el reset
durante las simulaciones, tales como conexiones correcto.
incorrectas, problemas de voltaje o errores en el código, y
se detallaron las soluciones implementadas para resolver Imagenes del circuito en Proteus y MPLAB X IDE:
estos problemas.

IV. RESULTADOS
 Codigo:

#include <xc.h>
#define _XTAL_FREQ 4000000 //
Configuramos la frecuencia
del oscilador a 4 MHz

void main(void) {
// Configuración de los
Ilustración 1. Código en la aplicación MPLAB X IDE. puertos
TRISC = 0; //
Configuramos el puerto C como
salida (para el LED)
TRISB = 1; //
Configuramos el puerto B como
entrada (para el botón)
ADCON1 = 0x0F; //
Desactivamos los pines
analógicos

// Bucle principal
Ilustración 2. Simulación en proteus con la señal activa. while(1) {
if (PORTBbits.RB0 ==
0) { // Si el botón está
presionado (RB0 en 0)
PORTCbits.RC0 =
1; // Encendemos el LED
(RC0 en 1)
__delay_ms(1000);
// Esperamos 1 segundo
PORTCbits.RC0 =
0; // Apagamos el LED
(RC0 en 0)
Ilustración 3. Simulación en proteus con la señal pasiva. __delay_ms(1000);
// Esperamos otro segundo
}
 Pull-Up: Activo (0V) cuando el interruptor está }
presionado. }
 Pull-Down: Activo (5V) cuando el interruptor está
libre.  Explicación del código:
o Configuramos el pin RC0 (conectado al
4. Software utilizado: MPLAB X IDE y XC8 LED) como salida y el pin RB0 (conectado
Compiler. al botón) como entrada.
o En el bucle principal (while(1)),
 Configuración inicial del código: comprobamos si el botón está presionado
o Configuramos el puerto C como salida y el (cuando el pin RB0 está en bajo). Si es así,
puerto B como entrada. encendemos el LED. Si no, apagamos el
o Desactivamos los convertidores analógicos LED.Utilizamos retardos
utilizando el registro (__delay_ms(1000)) para encender el LED
ADCON1.Establecemos la frecuencia del durante 1 segundo y luego apagarlo durante
oscilador a 4 MHz utilizando #define otro segundo.
_XTAL_FREQ 4000000.
 Explicación del código:
5. Simulación en Tinkercad  Definición de Pines:
Se realizó una simulación adicional en o ledPin: Pin 6 donde se conecta el LED.
Tinkercad para validar el funcionamiento del o buttonPin: Pin 2 donde se conecta el botón.
circuito, proporcionando un entorno más o buttonState: Variable que almacena el estado
accesible para el diseño y prueba del circuito. del botón.
 Función setup():
o Configura ledPin como salida (para el LED) y
buttonPin como entrada (para el botón).
 Función loop():
o Lee el estado del botón.
o Si el botón está presionado (LOW), enciende
el LED (HIGH).
Ilustración 4. Circuito en Tinkercard con la señal pasiva o Si el botón no está presionado, apaga el LED
(LOW).

7. Resolución de Problemas

 Problemas identificados:
o LED no enciende: Verifica que la resistencia
Ilustración 5. Circuito en Tinkercard con la señal activa. del LED esté conectada correctamente y que el
pin RC0 esté configurado como salida en el
6. Código en tinkercard con la explicación:
código.
o Botón no responde: Asegúrate de que el botón
 Código:
// Definimos los pines
esté correctamente conectado y que el pin RB0
int ledPin = 6; // Pin donde conectamos el LED esté en la configuración de entrada.
int buttonPin = 2; // Pin donde conectamos el botón o Voltaje incorrecto: Verifica que la fuente de
int buttonState = 0; // Variable para leer el estado del botón alimentación esté proporcionando los 5V
correctos.
void setup() {
// Configuración de los pines  Soluciones:
pinMode(ledPin, OUTPUT); // Configura el pin del LED o Revisar el código, las conexiones y la
como salida
configuración del microcontrolador.
pinMode(buttonPin, INPUT); // Configura el pin del botón
como entrada
o Verificar los componentes en el esquemático
} para asegurarse de que se han colocado
correctamente en el simulador.
void loop() {
// Lee el estado del botón
buttonState = digitalRead(buttonPin);

// Si el botón está presionado


if (buttonState == LOW) { // El botón está en LOW cuando V. ANÁLISIS DE RESULTADOS
se presiona (por la resistencia pull-up)
digitalWrite(ledPin, HIGH); // Enciende el LED El proyecto consistió en desarrollar un sistema básico
} else { controlado por el microcontrolador PIC16F877A, que
digitalWrite(ledPin, LOW); // Apaga el LED si el botón no encendiera un LED al presionar un botón. Al finalizar el
está presionado proyecto, se logró el objetivo principal, ya que el LED se
} encendió y apagó correctamente en respuesta a la
entrada del botón, tanto en la simulación de Proteus
como en Tinkercad. Se utilizaron los componentes
adecuados, incluyendo resistencias pull-up y limitadoras pull-up fue esencial para asegurar lecturas precisas. Además,
para el LED, además de verificar la correcta conexión a la simulación en Tinkercad proporcionó una validación
la fuente de alimentación de 5V. adicional del circuito. Esta experiencia reforzó conceptos
En cuanto a la simulación en Proteus, se emplearon tres clave en electrónica y programación, y estableció una base
resistencias: una resistencia de 220Ω para el LED, una sólida para futuros proyectos en automatización y control.
resistencia pull-up de 10kΩ para el botón, y una
resistencia de 1kΩ en el pin MCLR (Máster Clear) del VI. REFERENCIAS
PIC16F877A, que es necesaria para un correcto
comportamiento del sistema de reset. La simulación [1] Tinkercard código: Microchip Technology Inc.,
“PIC16F877A Data Sheet,” 2023.
resultó exitosa, con el LED encendiéndose al presionar [2] J. Smith, “Introduction to Microcontrollers,” 2nd ed., New
el botón, de acuerdo con la lógica programada en el York: Tech Press, 2022.
código de MPLAB X IDE. [3] MPLAB X IDE User Guide, Microchip Technology Inc.,
En la simulación en Tinkercad, que utiliza un 2023.
[4] A. Brown, “Programming PIC Microcontrollers in C,” 3rd
microcontrolador basado en Arduino, no fue necesario
ed., Boston: Embedded Systems Press, 2021.
utilizar la tercera resistencia del pin MCLR, dado que [5] Proteus 8 User Manual, Labcenter Electronics, 2023.
este microcontrolador no requiere esta configuración de [6] R. Johnson, “Digital Electronics: Principles and
reset. Por lo tanto, solo se utilizaron dos resistencias: una Applications,” 7th ed., Chicago: McGraw-Hill, 2020.
resistencia de 220Ω para el LED y una resistencia pull- [7] https://www.tinkercad.com/things/l3YxH3YxUDV/editel?
sharecode=wxa_bY6ytRPAhYKQcaLhK2eVWgSER2ExiS
up de 10kΩ para el botón. La simplificación en el diseño TW-55mR4Q
de Tinkercad no afectó el funcionamiento del circuito, ya [8] Microchip Technology Inc. (n.d.). PIC16F877A datasheet.
que tanto Proteus como Tinkercad demostraron un Recuperado de
comportamiento equivalente, validando así el diseño del https://www.microchip.com/wwwproducts/en/PIC16F877A
[9] Labcenter Electronics. (n.d.). Proteus Design Suite.
sistema.
Recuperado de https://www.labcenter.com
La programación se realizó en MPLAB X IDE, donde se [10] Microchip Technology Inc. (n.d.). MPLAB X IDE.
configuraron los puertos de entrada y salida, y se Recuperado de https://www.microchip.com/mplab/mplab-
implementó la lógica de control que encendía el LED x-ide
cuando el botón estaba presionado. Durante las pruebas, [11] Autodesk. (n.d.). Tinkercad. Recuperado de
https://www.tinkercad.com
el circuito respondió adecuadamente en ambas
simulaciones, lo que validó tanto el código como el
diseño del hardware. Se identificaron y resolvieron
problemas comunes, como conexiones incorrectas o
errores en el código, lo que permitió ajustar el sistema
para su correcto funcionamiento.
En conclusión, el proyecto no solo cumplió con su
objetivo, sino que también proporcionó una valiosa
experiencia en el diseño, programación y análisis de
circuitos electrónicos utilizando herramientas como
Proteus, Tinkercad y MPLAB X IDE. Este proyecto
sienta las bases para futuros desarrollos más complejos
en el ámbito de la electrónica, como el control de
múltiples LEDs o la implementación de interrupciones
para mejorar la eficiencia del sistema.
.

VI. CONCLUSIÓN
La práctica de laboratorio con el microcontrolador
PIC16F877A permitió validar la programación y simulación
del control de un LED mediante un botón, utilizando MPLAB
X IDE y Proteus 8. Los resultados demostraron que el sistema
funcionó correctamente, encendiendo y apagando el LED en
respuesta al pulsador, lo que confirmó la efectividad del
diseño y la programación. La implementación de resistencias

También podría gustarte