Lab - 2 Microcontroladorea
Lab - 2 Microcontroladorea
Lab - 2 Microcontroladorea
XAVIER DE CHUQUISACA
FACULTAD DE INGENIERIA MECANICA, ELECTRICA, ELECTRÓNICA
CARRERA DE INGENIERIA ELECTRÓNICA
Materia: Microcontroladores
Número de Practica: 2
Fecha: 16-04-2024
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
Fuente 5V
Botón 3 MOTOR DC
Oscilador
Simulación del Circuito. –
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
// 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
// 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
// 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
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. –