SlideShare una empresa de Scribd logo
1 de 5
Descargar para leer sin conexión
L Convertidor Análogo-Digital tiene 10
entradas análogas para los dispositivos de
28 patas y 13 para dispositivos de 40/44 patas.
El modulo permite convertir de una entrada
análoga a un valor digital de 10-bit.
A veces es de mucha ayuda
tener un ADC en nuestros
proyectos ya que proporciona
un enlace entre un sensor que
mide una señal física y después
procesarla en modo digital ya
que lo único que entiende
cualquier computadora es
estados ceros y unos , después
de tener estos valores se pueden enviar a una
computadora para monitorear el estado físico
que mide tal sensor, esto puede ser enviado por
puertos en serie, paralelo o incluso por USB
este último es mas preferible ya que todas las
maquinas ya tiene por default todas las PC.
El modulo ADC funciona de la siguiente manera:
Si tenemos en una entrada análoga, un voltaje
de entrada de 2.5 volts, y si nuestro convertidor
de análogo-digital es de 10-bit, lo que vamos a
tener es un valor digital de 512, con la formula
siguiente se puede entender mucho mejor
(formula 1).
El Compilador Hi-Tech nos ofrece las librerías
listas para el uso del ADC, esta es una gran
ventaja ya que nos ahorrara mucho tiempo en
hacer la librería correspondiente del Modulo.
A continuación se explicara cada función para el
uso del ADC:
char BusyADC(void);
Regresa el estado del
ADC.
Regresa 1 si el
convertidor está
ocupado.
Regresa 0 si ya ha terminado la
conversión.
void CloseADC(void);
Cierra el canal ADC por complete
void ConvertADC(void);
Empieza la Conversion de A/D
void OpenADC(unsigned char config,
unsigned char config2,
unsigned char portconfig);
A veces es necesario transformar señales físicas a
eléctricas para después ser procesadas en la computadora,
usando el Convertidor Análogo-Digital del Microcontrolador
PIC18F2550 podemos adquirir la variación que hace un
potenciómetro y después enviarla vía serial hacia la
computadora.
ܽ݀ܿ ൌ
‫ݏݐ݈݋ݒ‬ ∗ ‫݂݁ݎ‬
ܾ݅‫ݏݐ‬ ݀݁ ܿ‫݊݋݅ݏݎ݁ݒ݊݋‬
Formula 1:
Volts=Entrada de voltaje
Ref=Valor de referencia +positivo
Bits de conversión= 8 o 10 bits
MODULO CONVERTIDOR ANALOGO-DIGITAL
Curso de Hi tech Compiler for PIC18 Página 38
config: Une varias configuraciones
usando el operador AND
A/D Frecuencia
ADC_FOSC_2 Fosc/2
ADC_FOSC_4
Hasta
ADC_FOSC_64 Fosc/64
ADC_FOSC_RC Oscilador Interno
A/D Justificacion del resultado
ADC_RIGHT_JUST El resultado es
de los bits de menor peso
ADC_LEFT_JUST El resultado es de
los bits de mayor peso
A/D Selector de Tiempo de
Adquisicion
ADC_0_TAD 0 Tad
ADC_2_TAD 2 Tad
ADC_4_TAD 4 Tad
ADC_6_TAD 6 Tad
ADC_8_TAD 8 Tad
ADC_12_TAD 12 Tad
ADC_16_TAD 16 Tad
ADC_20_TAD 20 Tad
config2: Une varias configuraciones
usando el operador AND.
Canal:
ADC_CH0 canal 0
hasta
ADC_CH15 canal 15
A/D Interrupciones
ADC_INT_ON
ADC_INT_OFF
A/D Configuracion del Voltaje
De referencia.
ADC_VREFPLUS_VDD VREF+ = AVDD
ADC_VREFPLUS_EXT VREF+ = external
ADC_VREFMINUS_VDD VREF- = AVDD
ADC_VREFMINUS_EXT VREF- = external
Portconfig El valor del portconfig
es cualquier valor desde 0 a 127
inclusive para PIC18F1220/1320 Y DE
0 a 15 para otros dispositivos.
unsigned int ReadADC(void);
Regresa el valor de ADC este valor
es de 10-bit por default.
SetChanADC(unsigned int channel);
Establece el canal a leer
Un ejemplo práctico para configurar el
convertidor, es el siguiente:
Para la realización de nuestra primera práctica
usando el ADC de un microcontrolador
PIC18F2550, se hará lo siguiente:
1. Configuraremos el ADC usando nada
más la entrada AN0 como entrada
análoga.
2. Configuraremos el USART a 19200
baud.
3. Al empezar el ciclo perpetuo, se enviara
la función de empezar conversión.
4. Esperar hasta que termine la
conversión.
5. Leer el resultado y lo guardamos en
una variable.
6. Enviaremos el resultado a imprimir por
el serial.
El circuito a manejar en esta práctica es el
siguiente:
OpenADC(ADC_FOSC_RC &//Internal Oscilador Interno
ADC_RIGHT_JUST&//Justificacion a la derecha
ADC_20_TAD, //Tiempo de Adquisicion (TAD)
ADC_CH0 &//CANAL 0 analogo
ADC_INT_OFF &//Interrupción por ADC APAGDO
ADC_REF_VDD_VSS, //V+ref=VCC,V-ref=GND
1); //AN0=analogo,resto digitales
Configuracion Basica para uso del ADC
MODULO CONVERTIDOR ANALOGO-DIGITAL
Curso de Hi tech Compiler for PIC18 Página 39
Como vemos en nuestro circuito está conectado a un MAX232 para adaptar los niveles rs232 a TTL.
En la entrada RA0/AN0 que es la primera entrada análoga que contiene el microcontrolador hemos
conectado un POT de 10Kohm, si usted desea cambiar este componente no hay problema, mientras la
resistencia en el pin MCLR/vpp evita el reset del microcontrolador por hardware.
El pin VUSB puede ir conectado a masa directamente ya que no usaremos el regulador interno de 3.3 v
que contiene el pic.
Procure inicializar entradas y salidas de los PUERTOS
C Y A, ya que como es una entrada análoga, se debe
de configurar como entrada en el registro TRISA,
mientras que en el PUERTO C la entrada RC7/RX esta
recibiendo datos entonces se debe de configurar el
registro TRISC y poner como entrada tal pin.
Al tener todo conectado correctamente abrimos
cualquier programa que se pueda comunicar vía
serial, estos programas pueden ser el “Terminal.exe”
o “hercules_3-2-1.exe”, solo conecte el COM
correcto y mismos BAUDIOS con los que se puso en
el Microcontrolador y listo.
MODULO CONVERTIDOR ANALOGO-DIGITAL
Curso de Hi tech Compiler for PIC18 Página 40
El programa del Microcontrolador se presenta a continuación:
////////////////////////////////////////////////////////
// USO DEL ADC Y USART ////
//Autor: george.manson.69 ////
//Lugar: Mexico ////
//Compilador: HI TECH PIC18 (LITE MODE) ////
////////////////////////////////////////////////////////
#include<htc.h>
#include<stdio.h>
/////////////////////////////////////////////////////////////
//Configuracion para trabajar Con oscilador interno de 8Mhz
__CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC);
/////////////////////////////////////////////////////////////
__CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K);
__CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN);
__CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS);
__CONFIG(5,UNPROTECT);
__CONFIG(6,UNPROTECT);
__CONFIG(7,UNPROTECT);
//////////////////////////////
//Frecuencia FOSC 8Mhz
//////////////////////////////
#define _XTAL_FREQ 8000000
//////////////////////////////
//Variable Globales //
//////////////////////////////
unsigned int result;
//////////////////////////////
//FUNCION DE 1 SEG //
//////////////////////////////
void DELAY1S(void){
unsigned char time;
for(time=0;time<100;time++){
__delay_ms(10);
}
}
//////////////////////////////////////////////
//Para usar el printf
//////////////////////////////////////////////
void putch(unsigned char byte) {
/* Salida de un byte */
while(!TXIF) /* Estbalece que el regitro esta vacio*/
continue;
TXREG = byte;
}
/////////////////////////////////////////////////
//Funcion de interrupcion
//Si no se usa simplemente no hacemos nada...
//Esto sirve para direccionar lo los datos
//en un lugar muy cercano al Inicio de la memoria
//de datos
////////////////////////////////////////////////
static void interrupt
isr(void){}
//////////////////////////////
//FUNCION PRINCIPAL
//////////////////////////////
void main(void){
OSCCON=0x70;
NOP();NOP();NOP();NOP();
MODULO CONVERTIDOR ANALOGO-DIGITAL
Curso de Hi tech Compiler for PIC18 Página 41
//////////////////////////////////////////////////////////////////////
// Configuracion de Puertos ///
//////////////////////////////////////////////////////////////////////
TRISA=0x01;
TRISC=0x80;
/*---------------------Fin de Conf. Puertos-------------------------*/
//////////////////////////////////////////////////////////////////////
// Configuracion de ADC ///
//////////////////////////////////////////////////////////////////////
OpenADC(ADC_FOSC_RC &//Internal Oscilador Interno
ADC_RIGHT_JUST &//Justificacion a la derecha (10-bit)
ADC_20_TAD, //Tiempo de Adquisicion (TAD)
ADC_CH0 &//CANAL 0 analogo
ADC_INT_OFF &//Interrupcion por ADC APAGDO
ADC_REF_VDD_VSS, //V+ref=VCC,V-ref=GND
1); //AN0=analogo,resto digitales
/*---------------------Fin de Conf. ADC------------------------------*/
/////////////////////////////////////////////////////////////////////////
Configuracion del USART ///
///////////////////////////////////////////////////////////////////////
OpenUSART(USART_TX_INT_OFF &//Interrupcion por Transmision apagado
USART_RX_INT_OFF &//Interrupcion por Recepcion Apagado
USART_ASYNCH_MODE &//Modo Asincronico
USART_EIGHT_BIT &//8-bit de transmision
USART_CONT_RX &//Recepción Continua
USART_BRGH_HIGH, //Alta velocidad de baudios
25); //para alta Velocidad:
// FOSC / (16 * (spbrg + 1))
// spbrg=(FOS/baud*16)-1
//Para baja Velocidad:
// FOSC / (64 * (spbrg + 1))
/*---------------------Fin de Conf. USART----------------------------*/
///////////////////////////////////////////////////////////////////////
// FUNCION PRINCIPAL ///
///////////////////////////////////////////////////////////////////////
while(1){
DELAY1S(); //espera 1 segundo
ConvertADC(); //Empieza Conversion
while(BusyADC()); //Espera a terminar
result=ReadADC(); //lee resultado
printf("V= %urn",result); //Imprime
}
}
/*-------------------------------Fin-----------------------------------*/
Nota:Nota:Nota:Nota:
Siempre use el Circuito MAX232 para
adaptar niveles RS232 a TTL, ya que el
protocolo de comunicación RS232
contiene voltaje más de +10 a -10 y si se
conectara directo quemara por completo
el microcontrolador.
Al conectar el MAX232 cambia esos
voltajes a niveles de 0 a +5 volts
perfecto para poder trabajar.

Más contenido relacionado

La actualidad más candente

Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
"Hola Mundo" C18, PIC18F y MPLAB
"Hola Mundo"  C18,  PIC18F y MPLAB"Hola Mundo"  C18,  PIC18F y MPLAB
"Hola Mundo" C18, PIC18F y MPLABBlackD10
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y tecladoLuis Zurita
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CLuis Zurita
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PICSohar Carr
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2dar851112
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreLuis Zurita
 

La actualidad más candente (20)

Timers 2
Timers 2Timers 2
Timers 2
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Control lcd 16X2 proton
Control lcd 16X2 protonControl lcd 16X2 proton
Control lcd 16X2 proton
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
"Hola Mundo" C18, PIC18F y MPLAB
"Hola Mundo"  C18,  PIC18F y MPLAB"Hola Mundo"  C18,  PIC18F y MPLAB
"Hola Mundo" C18, PIC18F y MPLAB
 
Guía rápidalcd y teclado
Guía rápidalcd y tecladoGuía rápidalcd y teclado
Guía rápidalcd y teclado
 
Glcd 6
Glcd 6Glcd 6
Glcd 6
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
 
Microcontroladores PIC
Microcontroladores PICMicrocontroladores PIC
Microcontroladores PIC
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
 
Comunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccsComunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccs
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
 
Manejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladoreManejo de perifericos para microcontroladore
Manejo de perifericos para microcontroladore
 

Similar a Adc 4

Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886luisvargasquinto
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Hamiltonn Casallas
 
Convertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRConvertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRCamilo Okue
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresSANTIAGO PABLO ALBERTO
 
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
Laboratorio de un convertidor de digital a anlógico 3-DAC.docxLaboratorio de un convertidor de digital a anlógico 3-DAC.docx
Laboratorio de un convertidor de digital a anlógico 3-DAC.docxJesús Tarín
 
Laboratorio de convertidores Analógico a digital.docx
Laboratorio de convertidores Analógico a digital.docxLaboratorio de convertidores Analógico a digital.docx
Laboratorio de convertidores Analógico a digital.docxJesús Tarín
 
Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0SANTIAGO PABLO ALBERTO
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886Victor Asanza
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Hamiltonn Casallas
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLDAdan Aguirre
 
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886Victor Asanza
 

Similar a Adc 4 (20)

Micro2 tema 4
Micro2 tema 4Micro2 tema 4
Micro2 tema 4
 
Proyecto de micros
Proyecto de microsProyecto de micros
Proyecto de micros
 
Compilador CCS.ppt
Compilador CCS.pptCompilador CCS.ppt
Compilador CCS.ppt
 
Digitalio config 16f887a_886
Digitalio config 16f887a_886Digitalio config 16f887a_886
Digitalio config 16f887a_886
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
Convertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVRConvertidor analogico digital de los microcontroladores AVR
Convertidor analogico digital de los microcontroladores AVR
 
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladoresMicrocontroladores: Fundamentos de microprocesadores y microcontroladores
Microcontroladores: Fundamentos de microprocesadores y microcontroladores
 
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
Laboratorio de un convertidor de digital a anlógico 3-DAC.docxLaboratorio de un convertidor de digital a anlógico 3-DAC.docx
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
 
Laboratorio de convertidores Analógico a digital.docx
Laboratorio de convertidores Analógico a digital.docxLaboratorio de convertidores Analógico a digital.docx
Laboratorio de convertidores Analógico a digital.docx
 
Arduino: Carga electrónica Arduino
Arduino: Carga electrónica ArduinoArduino: Carga electrónica Arduino
Arduino: Carga electrónica Arduino
 
Rs232
Rs232Rs232
Rs232
 
Conversor ADC
Conversor ADCConversor ADC
Conversor ADC
 
Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0Microcontroladores: Tutorial de microcontrolador AVR desde 0
Microcontroladores: Tutorial de microcontrolador AVR desde 0
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
 
Manual completo de CPLD
Manual completo de CPLDManual completo de CPLD
Manual completo de CPLD
 
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 1) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Módulo ADC del PIC16F887
Módulo ADC del PIC16F887Módulo ADC del PIC16F887
Módulo ADC del PIC16F887
 

Adc 4

  • 1. L Convertidor Análogo-Digital tiene 10 entradas análogas para los dispositivos de 28 patas y 13 para dispositivos de 40/44 patas. El modulo permite convertir de una entrada análoga a un valor digital de 10-bit. A veces es de mucha ayuda tener un ADC en nuestros proyectos ya que proporciona un enlace entre un sensor que mide una señal física y después procesarla en modo digital ya que lo único que entiende cualquier computadora es estados ceros y unos , después de tener estos valores se pueden enviar a una computadora para monitorear el estado físico que mide tal sensor, esto puede ser enviado por puertos en serie, paralelo o incluso por USB este último es mas preferible ya que todas las maquinas ya tiene por default todas las PC. El modulo ADC funciona de la siguiente manera: Si tenemos en una entrada análoga, un voltaje de entrada de 2.5 volts, y si nuestro convertidor de análogo-digital es de 10-bit, lo que vamos a tener es un valor digital de 512, con la formula siguiente se puede entender mucho mejor (formula 1). El Compilador Hi-Tech nos ofrece las librerías listas para el uso del ADC, esta es una gran ventaja ya que nos ahorrara mucho tiempo en hacer la librería correspondiente del Modulo. A continuación se explicara cada función para el uso del ADC: char BusyADC(void); Regresa el estado del ADC. Regresa 1 si el convertidor está ocupado. Regresa 0 si ya ha terminado la conversión. void CloseADC(void); Cierra el canal ADC por complete void ConvertADC(void); Empieza la Conversion de A/D void OpenADC(unsigned char config, unsigned char config2, unsigned char portconfig); A veces es necesario transformar señales físicas a eléctricas para después ser procesadas en la computadora, usando el Convertidor Análogo-Digital del Microcontrolador PIC18F2550 podemos adquirir la variación que hace un potenciómetro y después enviarla vía serial hacia la computadora. ܽ݀ܿ ൌ ‫ݏݐ݈݋ݒ‬ ∗ ‫݂݁ݎ‬ ܾ݅‫ݏݐ‬ ݀݁ ܿ‫݊݋݅ݏݎ݁ݒ݊݋‬ Formula 1: Volts=Entrada de voltaje Ref=Valor de referencia +positivo Bits de conversión= 8 o 10 bits
  • 2. MODULO CONVERTIDOR ANALOGO-DIGITAL Curso de Hi tech Compiler for PIC18 Página 38 config: Une varias configuraciones usando el operador AND A/D Frecuencia ADC_FOSC_2 Fosc/2 ADC_FOSC_4 Hasta ADC_FOSC_64 Fosc/64 ADC_FOSC_RC Oscilador Interno A/D Justificacion del resultado ADC_RIGHT_JUST El resultado es de los bits de menor peso ADC_LEFT_JUST El resultado es de los bits de mayor peso A/D Selector de Tiempo de Adquisicion ADC_0_TAD 0 Tad ADC_2_TAD 2 Tad ADC_4_TAD 4 Tad ADC_6_TAD 6 Tad ADC_8_TAD 8 Tad ADC_12_TAD 12 Tad ADC_16_TAD 16 Tad ADC_20_TAD 20 Tad config2: Une varias configuraciones usando el operador AND. Canal: ADC_CH0 canal 0 hasta ADC_CH15 canal 15 A/D Interrupciones ADC_INT_ON ADC_INT_OFF A/D Configuracion del Voltaje De referencia. ADC_VREFPLUS_VDD VREF+ = AVDD ADC_VREFPLUS_EXT VREF+ = external ADC_VREFMINUS_VDD VREF- = AVDD ADC_VREFMINUS_EXT VREF- = external Portconfig El valor del portconfig es cualquier valor desde 0 a 127 inclusive para PIC18F1220/1320 Y DE 0 a 15 para otros dispositivos. unsigned int ReadADC(void); Regresa el valor de ADC este valor es de 10-bit por default. SetChanADC(unsigned int channel); Establece el canal a leer Un ejemplo práctico para configurar el convertidor, es el siguiente: Para la realización de nuestra primera práctica usando el ADC de un microcontrolador PIC18F2550, se hará lo siguiente: 1. Configuraremos el ADC usando nada más la entrada AN0 como entrada análoga. 2. Configuraremos el USART a 19200 baud. 3. Al empezar el ciclo perpetuo, se enviara la función de empezar conversión. 4. Esperar hasta que termine la conversión. 5. Leer el resultado y lo guardamos en una variable. 6. Enviaremos el resultado a imprimir por el serial. El circuito a manejar en esta práctica es el siguiente: OpenADC(ADC_FOSC_RC &//Internal Oscilador Interno ADC_RIGHT_JUST&//Justificacion a la derecha ADC_20_TAD, //Tiempo de Adquisicion (TAD) ADC_CH0 &//CANAL 0 analogo ADC_INT_OFF &//Interrupción por ADC APAGDO ADC_REF_VDD_VSS, //V+ref=VCC,V-ref=GND 1); //AN0=analogo,resto digitales Configuracion Basica para uso del ADC
  • 3. MODULO CONVERTIDOR ANALOGO-DIGITAL Curso de Hi tech Compiler for PIC18 Página 39 Como vemos en nuestro circuito está conectado a un MAX232 para adaptar los niveles rs232 a TTL. En la entrada RA0/AN0 que es la primera entrada análoga que contiene el microcontrolador hemos conectado un POT de 10Kohm, si usted desea cambiar este componente no hay problema, mientras la resistencia en el pin MCLR/vpp evita el reset del microcontrolador por hardware. El pin VUSB puede ir conectado a masa directamente ya que no usaremos el regulador interno de 3.3 v que contiene el pic. Procure inicializar entradas y salidas de los PUERTOS C Y A, ya que como es una entrada análoga, se debe de configurar como entrada en el registro TRISA, mientras que en el PUERTO C la entrada RC7/RX esta recibiendo datos entonces se debe de configurar el registro TRISC y poner como entrada tal pin. Al tener todo conectado correctamente abrimos cualquier programa que se pueda comunicar vía serial, estos programas pueden ser el “Terminal.exe” o “hercules_3-2-1.exe”, solo conecte el COM correcto y mismos BAUDIOS con los que se puso en el Microcontrolador y listo.
  • 4. MODULO CONVERTIDOR ANALOGO-DIGITAL Curso de Hi tech Compiler for PIC18 Página 40 El programa del Microcontrolador se presenta a continuación: //////////////////////////////////////////////////////// // USO DEL ADC Y USART //// //Autor: george.manson.69 //// //Lugar: Mexico //// //Compilador: HI TECH PIC18 (LITE MODE) //// //////////////////////////////////////////////////////// #include<htc.h> #include<stdio.h> ///////////////////////////////////////////////////////////// //Configuracion para trabajar Con oscilador interno de 8Mhz __CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC); ///////////////////////////////////////////////////////////// __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K); __CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN); __CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS); __CONFIG(5,UNPROTECT); __CONFIG(6,UNPROTECT); __CONFIG(7,UNPROTECT); ////////////////////////////// //Frecuencia FOSC 8Mhz ////////////////////////////// #define _XTAL_FREQ 8000000 ////////////////////////////// //Variable Globales // ////////////////////////////// unsigned int result; ////////////////////////////// //FUNCION DE 1 SEG // ////////////////////////////// void DELAY1S(void){ unsigned char time; for(time=0;time<100;time++){ __delay_ms(10); } } ////////////////////////////////////////////// //Para usar el printf ////////////////////////////////////////////// void putch(unsigned char byte) { /* Salida de un byte */ while(!TXIF) /* Estbalece que el regitro esta vacio*/ continue; TXREG = byte; } ///////////////////////////////////////////////// //Funcion de interrupcion //Si no se usa simplemente no hacemos nada... //Esto sirve para direccionar lo los datos //en un lugar muy cercano al Inicio de la memoria //de datos //////////////////////////////////////////////// static void interrupt isr(void){} ////////////////////////////// //FUNCION PRINCIPAL ////////////////////////////// void main(void){ OSCCON=0x70; NOP();NOP();NOP();NOP();
  • 5. MODULO CONVERTIDOR ANALOGO-DIGITAL Curso de Hi tech Compiler for PIC18 Página 41 ////////////////////////////////////////////////////////////////////// // Configuracion de Puertos /// ////////////////////////////////////////////////////////////////////// TRISA=0x01; TRISC=0x80; /*---------------------Fin de Conf. Puertos-------------------------*/ ////////////////////////////////////////////////////////////////////// // Configuracion de ADC /// ////////////////////////////////////////////////////////////////////// OpenADC(ADC_FOSC_RC &//Internal Oscilador Interno ADC_RIGHT_JUST &//Justificacion a la derecha (10-bit) ADC_20_TAD, //Tiempo de Adquisicion (TAD) ADC_CH0 &//CANAL 0 analogo ADC_INT_OFF &//Interrupcion por ADC APAGDO ADC_REF_VDD_VSS, //V+ref=VCC,V-ref=GND 1); //AN0=analogo,resto digitales /*---------------------Fin de Conf. ADC------------------------------*/ ///////////////////////////////////////////////////////////////////////// Configuracion del USART /// /////////////////////////////////////////////////////////////////////// OpenUSART(USART_TX_INT_OFF &//Interrupcion por Transmision apagado USART_RX_INT_OFF &//Interrupcion por Recepcion Apagado USART_ASYNCH_MODE &//Modo Asincronico USART_EIGHT_BIT &//8-bit de transmision USART_CONT_RX &//Recepción Continua USART_BRGH_HIGH, //Alta velocidad de baudios 25); //para alta Velocidad: // FOSC / (16 * (spbrg + 1)) // spbrg=(FOS/baud*16)-1 //Para baja Velocidad: // FOSC / (64 * (spbrg + 1)) /*---------------------Fin de Conf. USART----------------------------*/ /////////////////////////////////////////////////////////////////////// // FUNCION PRINCIPAL /// /////////////////////////////////////////////////////////////////////// while(1){ DELAY1S(); //espera 1 segundo ConvertADC(); //Empieza Conversion while(BusyADC()); //Espera a terminar result=ReadADC(); //lee resultado printf("V= %urn",result); //Imprime } } /*-------------------------------Fin-----------------------------------*/ Nota:Nota:Nota:Nota: Siempre use el Circuito MAX232 para adaptar niveles RS232 a TTL, ya que el protocolo de comunicación RS232 contiene voltaje más de +10 a -10 y si se conectara directo quemara por completo el microcontrolador. Al conectar el MAX232 cambia esos voltajes a niveles de 0 a +5 volts perfecto para poder trabajar.