Lab - 2 Microcontroladorea

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

UNIVERSIDAD MAYOR REAL Y PONTIFICIA DE SAN FRANCISCO

XAVIER DE CHUQUISACA
FACULTAD DE INGENIERIA MECANICA, ELECTRICA, ELECTRÓNICA
CARRERA DE INGENIERIA ELECTRÓNICA

CONTROL DE PERIFÉRICOS CON MICROCONTROLADOR

Universitarios: Benítez Calani Jhonatan Alan

Cárdenas Cardozo Michael Gabriel

Orta Pérez Sergio José

Materia: Microcontroladores

Número de Practica: 2

Fecha: 16-04-2024

Nombre del Docente: Ing. Hernán Acebey


Sucre – Bolivia
CONTROL DE PERIFÉRICOS CON MICROCONTROLADORES
1. Resumen.
- Objetivo del Laboratorio. – El laboratorio consiste en el control de
diferentes periféricos a través de un PIC

- Metodología Utilizada. –Analizamos los requerimientos del


laboratorio, proseguiremos con una simulación del circuito y el
siguiente paso será empezar con la programación para el
microcontrolador se debe realizar un prototipado de la simulación y
como ultimo paso se debe diseñar la placa PCB del circuito

- Resultados Principales. – El resultado que se quiere obtener de


esto es el perfecto funcionamiento de la programación y la
circuitería presentada en el laboratorio 2

- Conclusiones. – Se concluye que la programación de un


microcontrolador PIC reduce bastante circuitos que se requeriría si
no se usara este. se observa que cada pin de entrada y salida puede
hacer varios procesos haciendo que sea un componente demasiado
versátil para algún proceso

2. Introducción.
- Contexto General. – El microcontrolador es un componente muy
importante en industrias y actividades en la fabricación de
dispositivos por lo cual es necesario conocer la variedad de este
microcontrolador y características técnicas las cuales nos ayudan a
elegir el PIC ideal para la tarea que se desea realizar .
- Objetivos del Laboratorio. – Manejo del microcontrolador
Aplicación de un entorno de programación
Adquirir conocimientos de programación
Relizacion de varios procesos con un
microcontrolador

- Justificación. – Un estudiante de la carrera de ingeniería


electrónica debe tener los conocimientos de un microcontrolador
así mismo de la programación de estos. Para eso se debe realizar
practicas como este laboratorio asignado con ese propósito
3. Marco Teórico.
- Microcontroladores PIC. – El microcontrolador PIC16F84A ha sido
seleccionado para este proyecto debido a varias razones:
El PIC18F4550 es un microcontrolador de 8 bits con una velocidad
de reloj máxima de hasta 48 MHz. La potencia de procesamiento de
un microcontrolador se puede medir en términos de la cantidad de
instrucciones que puede ejecutar por unidad de tiempo. En el caso
del PIC18F4550, su velocidad de reloj máxima de 48 MHz indica que
puede ejecutar hasta 48 millones de ciclos de instrucción por
segundo (48 MIPS, Million Instructions Per Second), siempre y
cuando cada instrucción tome un ciclo de reloj para completarse.
Amplia gama de periféricos integrados: Incluye una variedad de
periféricos útiles como USB 2.0, UART (USART), SPI, I2C, ADC
(Convertidor Analógico-Digital), PWM (Modulación por Ancho de
Pulso), entre otros, lo que facilita la conectividad y la expansión de
funciones.
- Herramientas de Programación. – Existen diferentes softwares de
programación, para este utilizamos lo que es el MIKRO C debido a la
al intructivo del circuito de programa como también es el programa
recomendado por MICROCHIP por sus distintos compiladores.

- Herramientas de Hardware. – Se utilizo el PICkit 3 como


herramienta, ya que es el mas popular en el mercado, como
también su versatilidad con diferentes microcontroladores PIC.

- Componentes Utilizados. – Se utilizo los siguientes componentes:


 PIC 18f4550A
 LEDs.
 Resistencias.
 Cristal Oscilador.
 Capacitores.
 Fuente de Alimentación.
 Motor DC
 Motor paso 29BYJ-48
 Botones
 Pantalla LCD 16x2
 Driver ULN2003A
 Puente H L293D
 Potenciometros
4. Metodología.
- Diseño del Circuito. –

Fuente 5V

Botón 1 Pantalla LCD


Microcontrolador
Botón 2 MOTOR PWM
PIC18F4550 PUENTE H

Botón 3 MOTOR DC

DRIVER MOTOR PASO A PASO


Botón 4

Oscilador
Simulación del Circuito. –

- Procedimiento Experimental. – Se realizo el armado del circuito tal


como en la simulación, posterior a eso se hizo la programación en
lenguaje C en el software MIKRO C y se paso a guardar el programa
en el microcontrolador PIC18F4550 con el picket 3.

5. Resultados.
- Funcionamiento del Circuito. – El circuito funciona de acuerdo a la
características de diseño que se nos asigno el circuito presenta
botoneras la cuales el microcontrolador realiza varias tareas una de
las tareas al apretar el botón 1 es el encendido del circuito
secuencial y repetitivo la segunda tarea funciona la apretar a l
botón 2 es el encendido del motor paso paso el tercer botón
enciende un motor DC y el ultimo botón enciende el motor pero por
medio de un PWM y una pantalla visualiza el accionamiento de las
taras tiene un monitoreo visual
- Observaciones. – Se observa que es un circuito muy practico y que
cumple varias tareas pero no puede funcionar dos tareas al mismo
tiempo el circuito solo funciona con una fuente
- Fotografías y Capturas de Pantalla. –
6. Discusión.
- Análisis de Resultados. – Se logro cumplir con los requerimientos
de diseño asignados por el docente y funciona cada una de las
tareas de manera perfecta
- Problemas Encontrados. – Se tuvo problemas con el PIC por el
estado se encontraba quemado y no era posible cargar el código
se intento remplazar con otro PIC pero no había funcionamiento de
este ante las tareas
7. Conclusiones.
- Logros de Laboratorio. – Se adquirió conocimientos de
programación y manejo del microcontrolador
Se mostro una capacidad rápida de detección de problemas y
soluciones
Se adquirio una buena experiencia y resultado del laboratorio
- Aplicaciones Prácticas. – Este proyecto nos sirve para poder tener
visores atractivos y de control de sucesos
Se puede controlar en encendido de motores para distintas tarea
de fuerza mecánica.
Se puede controlar la velocidad de motores por medio de pulso
para manejos de intensidad de revoluciones como un ventilador
El manejo de motor paso para procesos que requiera precisión
como los cnc oh un robot
8. Referencias.
Chat gpt
"Programming with MikroC Pro for PIC Microcontrollers" de Armstrong
Subero.
9. Anexos.
- Códigos Fuente Completos. –El código es el siguiente
// Definición de los bits de control del LCD y su dirección
sbit LCD_RS at RB5_bit; // Define el bit de RS del LCD en el bit RB5
del puerto B
sbit LCD_EN at RB4_bit; // Define el bit de EN del LCD en el bit RB4
del puerto B
sbit LCD_D4 at RB0_bit; // Define el bit D4 del LCD en el bit RB0 del
puerto B
sbit LCD_D5 at RB1_bit; // Define el bit D5 del LCD en el bit RB1 del
puerto B
sbit LCD_D6 at RB2_bit; // Define el bit D6 del LCD en el bit RB2 del
puerto B
sbit LCD_D7 at RB3_bit; // Define el bit D7 del LCD en el bit RB3 del
puerto B

// Definición de la dirección de los bits de control del LCD


sbit LCD_RS_Direction at TRISB5_bit; // Define la dirección del bit RS
del LCD en TRISB5
sbit LCD_EN_Direction at TRISB4_bit; // Define la dirección del bit
EN del LCD en TRISB4
sbit LCD_D4_Direction at TRISB0_bit; // Define la dirección del bit
D4 del LCD en TRISB0
sbit LCD_D5_Direction at TRISB1_bit; // Define la dirección del bit
D5 del LCD en TRISB1
sbit LCD_D6_Direction at TRISB2_bit; // Define la dirección del bit
D6 del LCD en TRISB2
sbit LCD_D7_Direction at TRISB3_bit; // Define la dirección del bit
D7 del LCD en TRISB3

// Declaración de variables globales


char texto[15] = ""; // Variable para almacenar texto
char aux = 0, aux1 = 0; // Variables auxiliares
int valor_adc = 0; // Variable para almacenar el valor del ADC
char secuencia[] = {16, 32, 64, 128, 64, 32, 16}; // Secuencia para
activar pines en decimal
char secuencia_stepper[] = {1, 2, 4, 8}; // Secuencia para control de
motor paso a paso

// Función principal
void main() {
// Inicialización del LCD y del ADC
Lcd_Init(); // Inicializa el LCD
ADC_Init_Advanced(_ADC_INTERNAL_REF); // Inicializa el ADC
con referencia interna

// Mensaje inicial en el LCD


Lcd_Out(1, 2, "MICROCONTROL"); // Muestra el mensaje en la
línea 1, columna 2
Lcd_Cmd(_LCD_CURSOR_OFF); // Apaga el cursor

// Configuración de puertos
TRISD = 0; // Configura el puerto D como salidas
adcon1 = 14; // Configura el ADC con referencia interna
TRISC &= 0B000; // Configura el puerto C como salidas
TRISA &= 0B11111; // Configura el puerto A como entradas
latd = 0; // Limpia el puerto D
latc = 0; // Limpia el puerto C

// Inicialización del PWM


PWM1_Init(2000); // Inicializa el PWM con frecuencia de 2 kHz
PWM1_Set_Duty(100); // Configura el ciclo de trabajo al 50%

delay_ms(1000); // Espera 1 segundo


Lcd_Cmd(_LCD_CLEAR); // Limpia la pantalla del LCD

// Bucle principal
while(1) {
// Lectura del valor del ADC
valor_adc = ADC_Get_Sample(0); // Lee el valor del canal 0
del ADC
sprintf(texto, "ADC:%4.0d", valor_adc); // Formatea el valor
del ADC
Lcd_Out(2, 1, texto); // Muestra el valor del ADC en el LCD
delay_ms(100); // Espera para evitar saturación del ADC

// Manejo de los botones


while(porta.ra1) {
Lcd_Out(1, 1, "BOTON 1 PULSADO");
delay_ms(300); // Espera para evitar falsos pulsos
latd = secuencia[aux]; // Activa la secuencia en el puerto
D
aux++; // Incrementa la variable auxiliar
if(aux == 6) aux = 0; // Reinicia si aux llega a 6
Lcd_Cmd(1); // Limpia la línea 1 del LCD
}

while(porta.ra2) {
latd = 0; // Apaga todos los pines del puerto D
Lcd_Out(1, 1, "BOTON 2 PULSADO");
delay_ms(300); // Espera para evitar falsos pulsos
LATC0_bit = 1; // Activa el pin RC0
if(!porta.ra2) // Verifica si se suelta el botón
latc0_bit = 0; // Apaga el pin RC0
Lcd_Cmd(1); // Limpia la línea 1 del LCD
}

while(porta.ra3) {
Lcd_Out(1, 1, "BOTON 3 PULSADO");
delay_ms(1); // Espera
latd = secuencia_stepper[aux1]; // Activa la secuencia del
motor paso a paso
aux1++; // Incrementa la variable auxiliar
if(aux1 == 4) aux1 = 0; // Reinicia si aux1 llega a 4
Lcd_Cmd(1); // Limpia la línea 1 del LCD
}

while(porta.ra4) {
delay_ms(500); // Espera
latd = 0; // Apaga todos los pines del puerto D
Lcd_Out(1, 1, "BOTON 4 PULSADO");
PWM1_Start(); // Inicia el PWM
if(!porta.ra4) { // Verifica si se suelta el botón
PWM1_Stop(); // Detiene el PWM
Lcd_Cmd(1); // Limpia la línea 1 del LCD
}
}
}
}

- Datos Adicionales. –

También podría gustarte