Vous êtes sur la page 1sur 8

PRCTICA # 08

NOMBRE DEL ESTUDIANTE :MIGUEL DIGUAY / XAVIER CARRASCO

CONVERSOR
ADC
CALIFICACIN
Conceptos Principales
Un ADC convierte mide el voltaje V en un pin
(que tendr que estar declarado como entrada
INTRODUCCION
con el correspondiente registro TRISA) y lo
Existen diversas aplicaciones que requieren convierte en un nmero. El voltaje se mide en
del uso de un referencia a un voltaje mnimo, Vref(-) , y a un
Objetivos:
convertidor analgico voltaje mximo, Vref (+).
Identificar los a digital (ADC),
Como el microcontrolador no va a manejar
puertos adems de un
nmeros en coma flotante, el voltaje
analgicos del microcontrolador
normalizado se expresa con un entero,
microcontrolador. para organizar todas
convirtiendo el intervalo real [0,1] en el
las actividades del
Configurar los intervalo de niveles enteros entre [0 y Nmax-
circuito electrnico.
puertos 1]. La resolucin del ADC es una
Dependiendo de la
analgicos para caracterstica fundamental y nos dice el
complejidad del
nmero de niveles con los que cubrimos el
obtener datos. proyecto.
intervalo [0,1]. Por ejemplo, en los PIC
Realizar ejercicios El ADC conversor solemos tener una resolucin de 10 bits, que
de aplicacin. analgico digital PIC representan 2^10=1024 niveles. El intervalo
(no todos los PIC lo real [0,1) se aplicara al intervalo [0,1023]. Si
tienen), permite medir asumimos un rango de 5V, tendremos que la
seales analgicas en forma digital, para ello resolucin de cada nivel es de r=5/1024
el PIC cuenta con pines por donde le llegar V=4.88 mV. Segn la documentacin de
la seal analgica, estos pines deben Microchip (esto puede variar para otros
configurarse como entradas analgicas, el microcontroladores) cualquier voltaje entre [0
conversor analgico digital PIC cuenta con un y r] (o por debajo de 0, lo que corresponde a
circuito que carga un condensador interno al V<Vref-) se cuantificara en el nivel 0. Entre r
PIC con la tensin analgica que le est y 2r tendramos una salida de nivel 1. As
llegando a la entrada analgica, luego la hasta llegar a nivel 1023 que cuantificara
tensin almacenada en el condensador lo voltajes por encima de 1023r = 1023x 5/1024
convierte en un nmero binario de 10 bits que = 4.995V. Como se ve, voltajes por debajo de
representar la tensin almacenada en el Vref- o por encima de Vref+ son posibles y se
condensador, este nmero binario se guarda cuantifican como nivel mnimo 0 o mximo,
en sus registros ADRESH y ADRESL de 8 bits 1023. Niveles por debajo de 0V o por encima
cada uno pero estos actan como un solo de la tensin de alimentacin (normalmente
registro de 16 bits, en el registro ADRESH se 5V) pueden ser daar el PIC.
guardan los bits ms significativos y en el
Caractersticas Principales
registro ADRESL se guardan los bits menos
significativos, el nmero que representa la La conversin se lleva al cabo
tensin almacenada en el condensador y aplicando el mtodo de aproximacin
guardado en forma binaria dentro de estos sucesiva.
registros ser de 10 bits para el PIC16F877A, El convertidor A/D convierte una seal
la cantidad de bits de este nmero depende de entrada analgica en un nmero
del conversor analgico digital PIC del binario de 10 bits.
microcontrolador PIC utilizado. La resolucin mnima o calidad de
conversin se puede ajustar a
PRCTICA # 08

NOMBRE DEL ESTUDIANTE :MIGUEL DIGUAY / XAVIER CARRASCO

CONVERSOR
ADC
diferentes necesidades al seleccionar generalmente depende de la imCpAeLdIaFInCcAiCaIdNe la
voltajes de referencia Vref- y Vref+. fuente. Se utiliza una ecuacin para hacer
clculo de tiempo de adquisicin con
precisin, cuyo valor mnimo es de 20uS
aproximadamente.
Reloj para la conversin a/d
El tiempo necesario para realizar una
conversin A/D cuyo resultado es 1 bit se
define en unidades de TAD. Se requiere que
sea como mnimo 1,6 uS. Para realizar una
conversin completa de 10 bits se requiere un
poco ms tiempo de lo esperado, son 11 TAD.
Como la frecuencia de reloj as como la fuente
El funcionamiento del convertidor A/D est de conversin A/D son determinadas por
bajo el control de los bits de cuatro registros: software, es necesario seleccionar una de las
combinaciones de los bits disponibles ADCS1
ADRESH Registro alto del resultado de la y ADCS0 antes de empezar a medir voltaje en
conversin A/D. una de las entradas analgicas. Estos bits se
ADRESL Registro bajo del resultado de la almacenan en el registro ADCON0.
conversin A/D. Cualquier cambio de la frecuencia de reloj del
microcontrolador afectar a la frecuencia de
ADCON0 Registro de control 0.
reloj de la conversin A/D, lo que puede
ADCON1 Registro de control 1. perjudicar al resultado de la conversin A/D.
Registros ADRESH y ADRESL Cmo utilizar el convertidor A/D?
El resultado obtenido despus de convertir un Para llevar a cabo una conversin A/D sin
valor analgico en digital es un nmero de 10 problemas as como para evitar los resultados
bits que se almacenar en los registros inesperados, es necesario considerar lo
ADRESH y ADRESL. Hay dos maneras de siguiente:
manejarlo:justificacin a la izquierda y a la
El convertidor A/D no hace diferencia entre
derecha que simplifica en gran medida su uso.
seales digitales y analgicas. Para evitar
El formato del resultado de la conversin
errores en medicin o daar el chip, los pines
depende del bit ADFMdel registro ADCON1.
se deben configurar como entradas
En caso de que no se utilice el convertidor
analgicas antes de que empiece el proceso
A/D, estos registros se pueden utilizar como
de conversin. Los bits utiliza dos para este
registros de propsito general.
propsito se almacenan en los registros TRIS
Requerimientos de adquisicin A/D y ANSEL (ANSELH);
Para que el convertidor A/D alcance su Al leer el estado de puerto con las entradas
exactitud especificada, es necesario analgicas marcadas como CH0-CH13, el
proporcionar un cierto tiempo muerto entre estado de los bits correspondientes, o sea, su
seleccionar una entrada analgica especfica valor digital se leer como cero lgico (0); y
y la medicin misma. Este tiempo se le
Hablando en trminos generales, la medicin
denomina tiempo de adquisicin y
de voltaje en el convertidor est basado en
PRCTICA # 08

NOMBRE DEL ESTUDIANTE :MIGUEL DIGUAY / XAVIER CARRASCO

CONVERSOR
ADC
comparar voltaje de entrada con una escala Paso 6. Esperar a que la coCnAvLeIFrIsCiACnIA
N /D

interna que tiene 1024 grados (210 =1024). El finalice.


grado ms bajo de esta escala representa el
Es necesario comprobar en el bucle de
voltaje Vref-, mientras que el grado ms alto
programa si el bit GO/DONE est a cero o
se refiere al voltaje Vref+.
esperar que se produzca una interrupcin
Utilizar el convertidor A/D (deber estar anteriormente habilitada).
Para medir el voltaje en un pin de entrada por Paso 7. Lectura del resultado de la conversin
medio del convertidor A/D, se debe realizar A/D:
lo siguiente:
Leer los registros ADRESH y ADRESL.
Paso 1. Configuracin del puerto:
Escribir un uno lgico (1) a un bit del registro
DESARROLLO DE LA PRCTICA
TRIS, lo que resulta en configurar el pin
apropiado como una entrada. La siguiente prctica tiene como objetivo
realizar un conversor AC/DC mediante la
Escribir un uno lgico (1) a un bit del registro
implementacin de un multmetro que permita
ANSEL, lo que resulta en configurar el pin
tomar lectura de un voltaje variable de 0 a 5v
apropiado como una entrada analgica.
con el microntrolador.
Paso 2. Configuracin del mdulo de la
Materiales Necesarios
conversin A/D:
- Microcontrolador.
Configurar voltaje de referencia en el registro - Cristal oscilador.
ADCON1. - Capacitores.
- Resistencias.
Seleccionar una seal de reloj de la - Pulsadores.
conversin A/D en el registro ADCON0. - Fuente DC 5v.
- Diodos LED
Seleccionar uno de los canales de entrada
CH0-CH13 del registro ADCON0. TRABAJO PREPARATORIO
Seleccionar el formato de dato por medio de 1. Describa la forma para definir el
ADFM del registro ADCON1. voltaje de referencia para los
Habilitar el convertidor A/D al poner a uno el mdulos analgicos del
bit ADON del registro ADCON0. microcontrolador.
2. El convertidor A/D siempre genera
Paso 3. Configuracin de la interrupcin un resultado binario de 10 bits, lo
(opcionalmente): que significa que reconoce 1024
Poner a cero el bit ADIF. niveles de voltaje en total por lo
tanto 5v equivaldra a 1024. Realice
Poner a uno los bits ADIE, PEIE y GIE . una tabla de equivalencias de 0 a 5
con pasos de 0.5 con su respectivo
Paso 4. Tiempo de espera para que
valor en binario.
transcurra el tiempo de adquisicin
3. Implemente el circuito mostrado a
(aproximadamente 20uS).
continuacin.
Paso 5. Inicio de la conversin poniendo a
uno el bit GO/DONE del registro ADCON0.
PRCTICA # 08

NOMBRE DEL ESTUDIANTE :MIGUEL DIGUAY / XAVIER CARRASCO

CONVERSOR
ADC
CALIFICACIN
Cuestionario.
Con la ayuda de un multmetro modifique la
seal de entrada analgica para tomar
mediciones cada 0.5v. Compare el valor
binario visualizado en los puertos de salida,
mediante los LEDs y compare con la tabla
realizada en el trabajo preparatorio. Explique
los resultados obtenidos.
De acuerdo al ala tabla obtenida desde
1024 que equivalen a 5v podemos
Desarrollo encender los led de acuerdo a las tabla
Con el circuito del trabajo preparatorio binaria desde 0v a 5v , utilizando en el
micro controlador del pic16f18875 ,
implementado se procede con la siguiente
trabajando en la programacin desde el
programacin del microcontrolador mplab ingresando los valores binarios
implementando las lneas que se describen a podemos encender los led y comparando
continuacin: los valores de salida podemos concluir
que son iguales midiendo a la tabla
binaria y demostrada con el multmetro el
voltaje es igual al binario
Tarea
1. Modifique el circuito y la programacin
para visualizar, el voltaje en el puerto
de entrada, mediante un display de 4
dgitos utilizado en prcticas anteriores.
El programa es sumamente sencillo y corto.
En primer lugar se declara la variable lectura
como tipo Word, posteriormente se configura
el puerto A como entrada, que son mediante
los cuales se tomar las lecturas de las
seales analgicas, los puerto B y D como
salidas. Por ltimo se declara el voltaje de
referencia.
En la estructura del programa se inicia con un
bucle de repeticin infinito y posteriormente se
almacena los datos tomados del mdulo de
lectura analgica 2 del microcontrolador, que
corresponde al puerto PA2. En el puerto B se
visualiza el valor binario que corresponde a la
conversin realizada por el microcontrolador
del valor obtenido en el puerto analgico, con
una resolucin de 1024 bits. Por ultimo en el
puerto D se visualiza bits ms significativos
descartando los 8 primeros bits que se
visualizan en el puerto B.
#pragma config ZCDDIS = OFF // Zero-
cross detect disable->Zero-cross detect
circuit is disabled at POR.
#else // __XC8_VERSION
#pragma config ZCD = OFF // Zero-
cross detect disable->Zero-cross detect
circuit is disabled at POR.
#endif // __XC8_VERSION
#pragma config PPS1WAY = ON //
Peripheral Pin Select one-way control-
>The PPSLOCK bit can be cleared and set
only once in software
#pragma config STVREN = ON // Stack
Overflow/Underflow Reset Enable bit-
>Stack Overflow or Underflow will cause
a reset
#pragma config DEBUG = OFF //
Background Debugger->Background Debugger
disabled

#include <xc.h> // CONFIG3


#include <stdint.h> #pragma config WDTCPS = WDTCPS_31 //
WDT Period Select bits->Divider ratio
void ini_adc(void); 1:65536; software control of WDTPS
uint8_t adc_set_canal(uint8_t canal); #pragma config WDTE = OFF // WDT
uint16_t adc_get_canal(void); operating mode->WDT Disabled, SWDTEN is
ignored
// Configuration bits: selected in the #pragma config WDTCWS = WDTCWS_7 //
GUI WDT Window Select bits->window always
open (100%); software control; keyed
// CONFIG1 access not required
#pragma config FEXTOSC = OFF // #pragma config WDTCCS = SC // WDT
External Oscillator mode selection bits- input clock selector->Software Control
>Oscillator not enabled
#pragma config RSTOSC = HFINT32 // // CONFIG4
Power-up default value for COSC bits- #pragma config WRT = OFF // UserNVM
>HFINTOSC (1MHz) self-write protection bits->Write
#pragma config CLKOUTEN = OFF // protection off
Clock Out Enable bit->CLKOUT function is #pragma config SCANE = available //
disabled; i/o or oscillator function on Scanner Enable bit->Scanner module is
OSC2 available for use
#pragma config CSWEN = ON // Clock #pragma config LVP = ON // Low
Switch Enable bit->Writing to NOSC and Voltage Programming Enable bit->Low
NDIV is allowed Voltage programming enabled. MCLR/Vpp
#pragma config FCMEN = ON // Fail- pin function is MCLR.
Safe Clock Monitor Enable bit->FSCM
timer enabled // CONFIG5
#pragma config CP = OFF // UserNVM
// CONFIG2 Program memory code protection bit-
#pragma config MCLRE = ON // Master >Program Memory code protection disabled
Clear Enable bit->MCLR pin is Master #pragma config CPD = OFF // DataNVM
Clear function code protection bit->Data EEPROM code
#pragma config PWRTE = OFF // Power- protection disabled
up Timer Enable bit->PWRT disabled
#pragma config LPBOREN = OFF // Low-
Power BOR enable bit->ULPBOR disabled
#pragma config BOREN = ON // Brown- /*
out reset enable bits->Brown-out Reset * File: ADC.c
Enabled, SBOREN bit is ignored * Author: user
#pragma config BORV = LO // Brown-out *
Reset Voltage Selection->Brown-out Reset * Created on November 9, 2017, 7:53 PM
Voltage (VBOR) set to 1.9V on LF, and */
2.45V on F Devices
#if (__XC8_VERSION < 1360)
#include <xc.h>
#include <stdint.h>
#include "ADC.h"


void ini_adc(void){
PORTAbits.RA0 =0;
ANSELAbits.ANSA0 =1;
TRISAbits.TRISA0 =1;
ADCON0bits.ADCS =1; //CLOCK ES
ENTREGADO POR EL FOSC
ADCON0bits.ADFRM0 =1; // ALINEACION
A LA DERECHA 6uyiiiuooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooo
ADCLK = 0X00; // SELECCION oooooooooooooooooooooooooooooooooooooooo
DE RELOJ oooooooooooooooooooooooooooooooooooooooo
ADREF = 0x00; // VOLTAJE DE oooooooooooooooooooooooooooooooooooooooo
REFERENCIA VDD,VSS oooooooooooooooooooooooooooooooooooooooo
ADPRE = 0x00; // TIEMPO DE oooooooooooooooooooooooooooooooooooooooo
PRECARGADO oooooooooooooooooooooooooooooooooooooooo
ADACQ = 0XFF; // TIEMPO DE oooooooooooooooooooooooooooooooooooooooo
ADQUICISION oooooooooooooooooooooooooooooooooooooooo
ADCAP = 0X00; // oooooooooooooooooooooooooooooooooooooooo
CAPACITORES PARA LA ADQUSICION oooooooooooooooooooooooooooooooooooooooo
return; oooooooooooooooooooooooooooooooooooooooo
} oooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooo
ooookl
uint8_t adc_set_canal(uint8_t canal){ OSCCON1 = 0x10; //0X10 //0x60
ADPCH = canal; // SELECCION // CSWHOLD may proceed; SOSCPWR Low
DE CANAL RA0 power;
ADCON0bits.ADON =1; // HABILITO OSCCON3 = 0x00;
ADC // MFOEN disabled; LFOEN disabled;
ADCON0bits.ADCONT =0; // ADOEN disabled; SOSCEN disabled; EXTOEN
ADCON0bits.ADGO =1; // HABILITO disabled; HFOEN disabled;
LA RECEPCION DE INFORMACION OSCEN = 0x40; //0X40 //0x00
while(!ADCON0bits.ADGO) // ESPERO // HFFRQ 32_MHz;
QUE TERMINE DE CONVERTIR OSCFRQ = 0x06;
continue; // HFTUN 0;
return; OSCTUNE = 0x00;
} }
uint16_t adc_get_canal(void){
void puertos(void){
return
(((uint16_t)((ADRESH<<8)+(ADRESL)))) ; PORTB = 0X00;
//(ADRESH*256)+(ADRESL) TRISB = 0X00;
} ANSELB = 0X00;
LATB = 0X00;

#include <xc.h> PORTC = 0X00;


#include <stdint.h> TRISC = 0X00;
#include "define.h" ANSELC = 0X00;
#include "user.h" LATC = 0X00;

void OSCILLATOR_Initialize(void){ TRISAbits.TRISA4 = 0X00;


// NOSC HFINTOSC; NDIV 1; TRISAbits.TRISA5 = 0X00;
zzzz'0''''''''''''''''000000000000000000 TRISAbits.TRISA6 = 0X00;
0000000000000000000000000000000000000000 TRISAbits.TRISA7 = 0X00;
000000000000000000000000000
PORTAbits.RA4= 0X00;
PORTAbits.RA5= 0X00;
PORTAbits.RA6= 0X00;
PORTAbits.RA7= 0X00;

ANSELAbits.ANSA4 = 0X00;
ANSELAbits.ANSA5 = 0X00;
ANSELAbits.ANSA6 = 0X00; x = adc_get_canal();
ANSELAbits.ANSA7 = 0X00; ADC_display(x);

} }

void ADC_display(uint16_t x){ #include <xc.h>


#define _XTAL_FREQ 32000000
if (x<79)
LATB=0x00|display[0];//LATA=0x00;
else if (80<=x && x<158)
LATB=0x00|display[1];//LATA=0x10; char display [12] = {
else if (159<=x && x<237)
LATB=0x00|display[2];//LATA=0x20; 0b0000000000, // 0
else if (238<=x && x<316) 0b1000000000, // 1
LATB=0x00|display[3];//LATA=0x30; 0b1100000000, // 2
else if (317<=x && x<395) 0b1110000000, // 3
LATB=0x00|display[4];//LATA=0x40; 0b1111000000, // 4
else if (396<=x && x<474) 0b1111100000, // 5
LATB=0x00|display[5];//LATA=0x50; 0b1111110000, // 6
else if (475<=x && x<553) 0b1111111000, // 7
LATB=0x00|display[6];//LATA=0x60; 0b1111111100, // 8
else if (554<=x && x<632) 0b1111111110,
LATB=0x00|display[7];//LATA=0x70; 0b1111111111,
else if (634<=x && x<711) };
LATB=0x00|display[8];//LATA=0x80;
else if (712<=x && x<790)
LATB=0xFF|display[9];//LATA=0x90;
else if (791<=x && x<869)
LATC=0x00|display[11];//LATA=0x10;
else if (870<=x && x<948)
LATC=0xFF|display[12];//LATA=0x10;
Conclusiones

return; Que el convertidor digital -analgico


es un circuito que tiene una entrada
} digital y da a la salida una tensin
/* proporcional a la palabra digital
* File: main.c MIGUEL DIGUAY
* Author: Cada convertidor tiene la caractersticas
* diferentes y parmetros que lo define ,
* Created on dichas caractersticas se observan en
*/
las curvas de la funcin de transferencia
#include <xc.h> , entre mas se encuentre ajustado a un
#include <stdint.h> determinado modelo de funcionamiento
#include "define.h" , el convertidor ser mas preciso
#include "user.h" MIGUEL DIGUAY
#include "ADC.h"
Las conclusiones debern ser breves, se debe
indicar las complicaciones prcticas y
void main(void) { tericas, analizar y evaluar los puntos
principales de la prctica. Sin embargo es
uint16_t x;
OSCILLATOR_Initialize(); importante no generalizar.
puertos();
ini_adc();

while(1){

adc_set_canal(0x00);
PRCTICA # 08

NOMBRE DEL ESTUDIANTE :MIGUEL DIGUAY / XAVIER CARRASCO

CONVERSOR
ADC
El convertidor analgico-digital es un La bibliografa deber ser de pCeArLsIoFn
ICaAsC,IN

circuito tiene una entrada analgica y da libros, revistas, pginas web, etc. que hayan
a la salida una palabra digital colaborado en el despeje de dudas
proporcional a la entrada analgica existentes y la resolucin de la prctica.
XAVIER CARRASCO
En la practica me sirve para entender Conversor anlogo-digital y digital-
como funcionaba los voltajes me tienen anlogo: conceptos bsicos
que dados , es decir si yo meto un voltaje JI Huircan Recuperado el,2007
me tiene que salir en el practico y en Ic.fie.umich.mx
matemticamente lo mismo
XAVIER CARRASCO Introduccin al microcontrolador
S Paul Aguayo enlace
Recomendaciones http://www.olimex.cl/tutorial/tutorial1.pd,
2014
Se recomienda un multmetro modificar
la seal de entrada analgica en 0.5v Proceso digital de seales -II
para verlo en una grafica a escala. fundamentos para las Comunicaciones y
control
Se recomeinda quie todo convertidor EB Alberti 2006 books.google.com
adc se debe procurar que el conjunto de
bit obtenidas a la salida sea un reflejo lo Sistemas de Comunicaciones
mas exacto posible del valor analogico electrnicas
correspondiente W Tomasi 2003 - books.google.com
Bibliografa

Vous aimerez peut-être aussi