CONVERSOR A/D INTERNO DEL PIC16F877A
-
Upload
independent -
Category
Documents
-
view
0 -
download
0
Transcript of CONVERSOR A/D INTERNO DEL PIC16F877A
CONVERSOR A/D INTERNO DEL PIC16F877A
Ph.D. Yeison Javier Montagut Ferizzola
Electrónica digital y microcontroladores Ingeniería Biomédica
EIA-CES
ADC-PIC16F877A
• Especificaciones:
– ADC de aproximaciones sucesivas.
– Resolución = 10 Bits (1024 pasos). » Ejemplo: para una tensión analógica de entrada de 5V
𝑟𝑒𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛 =5𝑉
2𝑛−1=
5𝑉
1024−1= 4.89𝑚𝑉
– Tensión de referencia configurable:
• Absoluto (de 0 𝑎 + 𝑉𝑟𝑒𝑓 ).
• En un margen (−𝑉𝑟𝑒𝑓 𝑎 + 𝑉𝑟𝑒𝑓)
– ADC de 8 canales.
ADC-PIC16F877A • Distribución de pines
– 8 canales ADC: • RA0/AN0 = 2
• RA1/AN1 = 3
• RA2/AN2 = 4
• RA3/AN3 = 5
• RA5/AN4 = 7
• RE0/AN5 = 8
• RE1/AN6 = 9
• RE2/AN7 = 10
– Tensión de referencia: • Vref- = RA2
• Vref+ = RA3
ADC-PIC16F877A • Registros asociados:
– Puertos:
• TRISA, TRISE, PORTA, PORTE.
– Interrupciones:
• INTCON, PIE1, PIR1.
– Control:
• ADCON0, ADCON1, ADRESH, ADRESL
ADC-PIC16F877A – Ejemplo: Usando el microcontrolador PIC16F877A,
diseñe mediante simulación un voltímetro digital; para ello use el canal AN0 del ADC interno del microcontrolador y muestre el valor (conversión y tensión) en una pantalla LCD 16x2. El circuito de simulación se muestra en la siguiente figura:
ADC-PIC16F877A Programa: (firmware – PIC C) #include <16F877A.h> #device ADC=10 #FUSES XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #include <lcd.c> #define use_portb_lcd TRUE void main(){ int16 q; int16 z; float p; setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); lcd_init();
for (;;) { set_adc_channel(0); delay_us(20);
q = read_adc(); z = 5 * q; p = z/1024.0;
printf(lcd_putc, "\fADC = %4ld", q); printf(lcd_putc, "\nVoltajeE = %01.2fV", p);
delay_ms(100); } }