Vous êtes sur la page 1sur 20

Convertidor Analgico Digital

Los PIC pueden incorporar un mdulo de conversin de seal analgica a seal digital. Los modulos A/D que manejan los pic hacen un muestreo y retencion (sample & hold) con un capacitor y despues utiliza el modo de conversin que en este caso es de aproximaciones sucesivas.

El convertidor de aproximaciones sucesivas se utiliza en aplicaciones donde se necesitan altas velocidades de conversin. Funciona de modo que realiza comparaciones sucesivas ascendentes o descendentes hasta encontrar un valor digital que iguale el voltaje entregado por el conversor AD y el voltaje de entrada

Durante la fase de muestreo el interruptor se cierra y el capacitor se carga al voltaje de entrada, una vez abierto el interruptor, el capacitor mantendr el voltaje de entrada mientras el mdulo realiza la conversin.

El mdulo AD necesita los siguientes parmetros: Rango de entrada Numero de bits Resolucin

El mdulo que utilizan los pic de gama media tiene un numero de bits de 10, por lo que la resolucin est dada por la siguiente frmula:

Siendo Vin el voltaje de entrada y N el numero de bits del convertidor.

AD en Gama Media
Los pics de esta gama poseen hasta 8 entradas analgicas llamados canales. Los pic 16F873/876 tienen 5 canales (en el puerto A) y los 16F874a/877 tienen 8 canales (5 en el puerto A y 3 en el puerto E).

Conversor AD en C
setup_adc(modo); modo: Indica la configuracion del modulo AD
setup_adc(modo); ADC_OFF ADC_CLOCK_INTERNAL ADC_CLOCK_DIV_BY_2 ADC_CLOCK_DIV_BY_8

ADC_CLOCK_DIV_BY_32

setup_adc_ports(valor); valor: contiene la definicion de las entradas analogicas correspondientes a los registros ADCON1 segn la siguiente figura

set_adc_channel(canal); canal: selecciona el canal analgico mediante la siguiente tabla

valor = read_adc(); La variable valor es un entero de 16 bits segn la directiva #DEVICE ADC= empleada, segn la siguiente tabla,

Ejemplo 1
Por medio del canal AN0 obtener una conversin analgica y sacar el valor digital por el puerto D.

#include <16F877a.h> //#device adc=10 //#device adc=8 #FUSES XT,NOWDT,NOLVP #use delay(clock=4000000) #include <LCD.C> #include <math.h> #use standard_io(d) void main() { int16 q; float p; setup_adc_ports(ALL_ANALOG); setup_adc(ADC_CLOCK_INTERNAL);

lcd_init();
while(true) { set_adc_channel(0); delay_us(20); q = read_adc(); p = (5.0 * q) / 1024.0; output_d(q); printf(lcd_putc, "\fADC = %4ld", q); printf(lcd_putc, "\nVoltage = %01.2fV", p); delay_ms(100);

}
}

Sensor de Temperatura
El LM35 es un sensor de temperatura integrado de precisin, cuya tensin de salida es linealmente proporcional a temperatura en C (grados centgrados). Tiene una precisin calibrada de 1C. Su rango de medicin abarca desde -55C hasta 150C. La salida es lineal y cada grado centgrado equivale a 10mV, por lo tanto: 150C = 1500mV 1.5 V -40C = -400mV 0.4 V Por lo tanto los resultados tenemos que multiplicarlos por 100 para obtener la temperatura real

LM35 EN PROTEUS

Practica 1
Realizar una conversin AD utilizando un sensor de temperatura LM35 y visualizar los grados que marca en una lcd

Practica 2
Realizar una conversin AD utilizando un sensor de temperatura LM35 y visualizar los grados que marca en una lcd. Conectar dos focos de AC de 60W en color verde y rojo. Si el sistema esta en el rango de 27C a 30C grados, deber encender el foco verde y por la LCD indicar Estado: Seguro, si la temperatura es menor a 26C y mayor a 31C entonces deber encender el foco rojo y activar intermitentemente el zumbador hasta que se regule la temperatura y en la lcd debera decir Estado: Alarma

PLUS
Al sistema anterior, puede cambiarlo en hardware o software para agregar una interrupcin de tipo externa por RB0 o en su defecto por cambio de nivel en cualquiera de los pines de RB4 a RB7 para generar un botn de paro de emergencia

Vous aimerez peut-être aussi