Practica No 5 LAB PIC18F MPLABX 2019
Practica No 5 LAB PIC18F MPLABX 2019
Practica No 5 LAB PIC18F MPLABX 2019
Práctica de laboratorio Nº 5
Programación en Lenguaje C del microcontrolador PIC
18F4550 en el entorno MPLAB X.
Convertidor Analógico-Digital
Autor/es:
Grupo Nº
Nº de carnet Nombre y Apellido Calificación
Agosto 2019
Universidad Nacional de Ingeniería
Facultad de Electrotecnia y Computación
Departamento Sistemas Digitales y Telecomunicaciones
Índice
1. Introducción .................................................................................................................... 2
2. Objetivos ......................................................................................................................... 2
3. Actividades propuestas ................................................................................................... 2
4. Instrumental utilizado ................................................... ¡Error! Marcador no definido.
5. Resultados obtenidos ...................................................................................................... 5
6. Conclusiones ................................................................................................................... 5
7. Bibliografía ..................................................................................................................... 5
1. Introducción
El convertidor analógico digital es capaz de convertir una señal de voltaje variable en
valores digitales a una resolución de 8 o 10 bits. Cuando se utiliza 10 bits de resolución y
voltajes de referencia iguales a los de la fuente de del micro, el tamaño del paso entre dos
escalones del ADC es de 4.83 mV. Ademas, se puede llegar hasta a 50K muestras por segundo,
lo que es ideal para proyectos de adquisición de datos como Datalogger, etc. A continuación,
se muestra las características y se describe los registros involucrados con el convertidor ADC
y se realizaran ejemplos.
Resolución programable por software en modo de 8 y 10 bits.
13 canales de entradas multiplexadas.
Rango del voltaje de entrada para el ADC 0-Vcc.
Referencia de voltaje interna o externa.
Modo de conversión ADC (continua o individual).
Inicio de conversión ADC por Auto-Disparo en fuentes de Interrupción.
Interrupción ADC al completar la conversión.
El ADC involucra cinco registros durante su operación:
A/D Result High Register (ADRESH)
A/D Result Low Register (ADRESL)
A/D Control Register 0 (ADCON0)
A/D Control Register 1 (ADCON1)
A/D Control Register 2 (ADCON2)
2. Objetivos
3. Actividades Previas
Montar en una breadboard el circuito que se muestra en la figura siguiente. Note que el circuito
se alimenta a partir del cable USB. No olvide leer la hoja de datos del microcontrolador
PIC18F4550 en la sección referente al Convertidor Analógico Digital.
4. Dispositivos Requeridos
1 Breadboard
1 PIC18F4550
1 Cristal de 20MHz
2 Capacitores de 22 pF
1 Capacitor de 470 nF
1 Resistor de 4.7 kOhm
1 Resistor de 330 Ohm
1 LED de 5mm
1 Push button
1 Cable USB Tipo A con su otro extremo acondicionado para breadboard
1 pantalla LCD 16x2
1 teclado matricial 4x4
1 potenciometro de 10 kOhm
1 sensor LM35
5. Procedimiento
Ahora cree un nuevo archivo fuente y pegue el código que está en el recuadro. No olvide
realizar la configuración del parámetro codeoffset a la posición 0x800 en las opciones del Linker
para ser cargado en el PIC18F4550 a través del Bootloader.
#include "bootloaderCHF.h"
#include "16x2_LCD_4bit_File.h"
#include <stdio.h>
#include <string.h>
#define VREF 5.00
void ADC_Init(void);
int ADC_Read(int);
void main(void) {
char data[10];
int digital;
float voltage;
LCD_Init();
ADC_Init();
LCD_String_xy(1,1,"El voltaje es:");
while(1){
digital = ADC_Read(0);
voltage = digital*((float)VREF/(float)1023);
sprintf(data,"%.2f",voltage);
strcat(data," V");
LCD_String_xy(2,0,data);/*Send string data for printing*/
__delay_ms(10);
}
void ADC_Init(){
TRISA = 0xFD; /*Set as input port except for RA1*/
ADCON1 = 0x0E; /*Ref vtg is VDD & Configure pin as analog pin*/
ADCON2 = 0x96; /*Right Justified, 4Tad and Fosc/64. */
ADRESH=0; /*Flush ADC output Register*/
ADRESL=0;
}
Este código permite leer el voltaje presente en pin central del potenciómetro.
Ahora habilite el segundo canal (AN1) donde está conectado el sensor LM35 y muestre ambos
datos en la pantalla. Para ello debe calcular un factor de conversión para obtener el resultado en
grados centígrados. Consulte la hoja de datos del LM35 para obtener la relación de salida. Registre
sus resultados.
Ahora proceda a cambiar el rango de valores del potenciómetro. En lugar de voltaje haga que siga
una escala de 0 a 50 grados centígrados, donde valdrá 0 °C cuando el dial del potenciómetro este
en su extremo izquierdo y 50 °C cuando se halle en su extremo derecho. Programe la salida RC0
(LED_ROJO) para que se active cuando el sensor marque una temperatura mayor que el valor que
muestra la lectura del potenciómetro.
Por último, en aras de mejorar la sensibilidad de las lecturas del LM35, disminuya el tamaño de
escalón a 1 mV, realizando la conexión adecuada en los pines VREF y sus correspondientes
modificaciones en la programación.
6. Resultados obtenidos
En este punto el informe elaborado por los alumnos debe contener:
7. Conclusiones
Los alumnos redactarán sus conclusiones, referidas a las tareas abordadas y los resultados
obtenidos. Estas conclusiones incluirán la evaluación realizada por el equipo de trabajo
respecto de la solución alcanzada, destacando sus ventajas y limitaciones.
8. Bibliografía
Los alumnos incluirán toda la bibliografía consultada para la realización del práctico y
estudio de los temas relacionados. La misma deberá incluir una referencia completa del
material utilizado (Título, autor, año, editorial, capítulos de interés, si es un sitio web o material
accedido desde uno, la URL completa).