Adc 4

5
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

Transcript of Adc 4

Page 1: Adc 4

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

Page 2: Adc 4

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

Page 3: Adc 4

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.

Page 4: Adc 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 & PLL POSTDIV2 & CPUDIV1 & USBOSC); /////////////////////////////////////////////////// ////////// __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BOR V45 & 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 vaci o*/ 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();

Page 5: Adc 4

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 Tra nsmision 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= %u\r\n",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.