SlideShare una empresa de Scribd logo
MICROCONTROLADORES II
MÓDULO A/DMÓDULO A/D
(Convertidor Analógico/Digital)
TEMA 4
PROF. LUIS ZURITA
RESOLUCIÓN
Prof. Luis Zurita Microcontroladores II
VOLTAJES DE REFERENCIA EXTERNOS
• El convertidor A/D puede seleccionar como tensión de
referencia la interna VDD y Tierra.
• Para referencias externas, se introducen por:
• RA3/AN3/VREF+ y RA2/AN2/VREF-
• Las siguientes limitaciones aplican:
– El máximo voltaje aplicado a VREF+ (RA3/AN3) será– El máximo voltaje aplicado a VREF+ (RA3/AN3) será
VDD+0,3V y el mínimo VDD-2,5V.
– Sobre el voltaje aplicado a VREF- (RA2/AN2) la
mínima tensión será VSS-0,3V y la máxima (VREF+) -
2V.
– Por ejemplo, si la tensión de alimentación es de 5V, la
tensión en RA3/AN3 no podrá exceder de 5V. Por lo
que el máximo voltaje en VREF- será de 3V.Prof. Luis Zurita Microcontroladores II
REGISTROS RELACIONADOS AL MÓDULO A/D
• ADCON0: Registro de control 0. (Banco 0).
• ADCON1: Registro de control 1. (Banco 1).
• ADRESH: Guarda la parte alta del Resultado de• ADRESH: Guarda la parte alta del Resultado de
la conversión. (Banco 0).
• ADRESL: Guarda la parte baja del Resultado de
la conversión. (Banco 1).
Prof. Luis Zurita Microcontroladores II
• Selección del reloj de conversión A/D
El tiempo de conversión A/D por bit se define como
TAD. La conversión A/D requiere mínimo 12TAD por
10-bits de conversión.
• La fuente del reloj de conversión A/D es seleccionado
por software, mediante los bits ADCON0 <7:6>. Las
cuatro opciones posibles para TAD son:
ADCS 1:0 PERÍODO
0 0 2TOSC
0 1 8TOSC
1 0 32TOSC
1 1 RC interno (2-6 μs)
Prof. Luis Zurita Microcontroladores II
Tiempo de adquisición (TACQ)
• Es el tiempo necesario para que se cargue el
condensador de retención interno, con la tensión de
entrada. Este proceso de carga del condensador
depende de distintos factores, entre otros, la
impedancia de la fuente de tensión de entrada (el
fabricante recomienda que se sitúe por debajo de 10fabricante recomienda que se sitúe por debajo de 10
kohm.
• El tiempo de adquisición dentro de los márgenes
típicos es de aproximadamente 20μs.
• La adquisición no comienza hasta que no acabe la
conversión. Por lo que se debe esperar un TACQ tras
una conversión , para seleccionar un nuevo canal o
luego de encender el módulo AD.
Prof. Luis Zurita Microcontroladores II
Tiempo de conversión (TAD)
• Es el tiempo necesario para obtener el valor digital
de la tensión analógica de entrada. Este tiempo
depende de la fuente de reloj que se seleccione para
la conversión.
Prof. Luis Zurita Microcontroladores II
• Para un control adecuado de conversiones A/D, el reloj
de conversión A/D (TAD) deben ser seleccionados para
asegurar un tiempo mínimo TAD de 1,6 μs.
•La siguiente tabla muestra los tiempos de TAD derivada
de las frecuencias de funcionamiento del dispositivo y de
la fuente de reloj A/D de reloj seleccionado.
Prof. Luis Zurita Microcontroladores II
CICLOS DE CONVERSIÓN
Prof. Luis Zurita Microcontroladores II
FORMATO DE RESULTADOS
Prof. Luis Zurita Microcontroladores II
Prof. Luis Zurita Microcontroladores II
Prof. Luis Zurita Microcontroladores II
Prof. Luis Zurita Microcontroladores II
A/D en C
• En el compilador C las funciones para manejar el
convertidor A/D son las siguientes:
setup_adc(modo);
Donde modo, determina la configuración del módulo
A/D correspondiente a los bits 7:6 del ADCON0.
setup_adc(modo); ADCON0(1Fh)
ADC_OFF 00000000ADC_OFF 00000000
ADC_CLOCK_INTERNAL 11000000
ADC_CLOCK_DIV_2 00000000
ADC_CLOCK_DIV_8 01000000
ADC_CLOCK_DIV_32 10000000
setup_adc_ports(valor);
Valor: definición de las entradas analógicas
correspondiente a los bits 3:0 del ADCON1.Prof. Luis Zurita Microcontroladores II
PCFG3
PCFG0
AN7
RE2
AN6
RE1
AN5
RE0
AN4
RA5
AN3
RA3
AN2
RA2
AN1
RA1
AN0
RA0
setup_adc_ports(valor);
0000 A A A A A A A A ALL_ANALOG
0001 A A A A VREF+ A A A AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF
0010 D D D A A A A A AN0_AN1_AN2_AN3_AN4
0011 D D D A VREF+ A A A AN0_AN1_AN2_AN4_VSS_VREF
0100 D D D D A D A A AN0_AN1_AN3
0101 D D D D VREF+ D A A AN0_AN1_VSS_VREF
011X D D D D D D D D NO_ANALOGS011X D D D D D D D D NO_ANALOGS
1000 A A A A VREF+ VREF- A A AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF
1001 D D A A A A A A AN0_AN1_AN2_AN3_AN4_AN5
1010 D D A A VREF+ A A A AN0_AN1_AN2_AN4_AN5_VSS_VREF
1011 D D A A VREF+ VREF- A A AN0_AN1_AN4_AN5_VREF_VREF
1100 D D D A VREF+ VREF- A A A_ANALOG_RA3_RA2_REF
1101 D D D D VREF+ VREF- A A AN0_AN1_VREF_VREF
1110 D D D D D D D A AN0
1111 D D D D VREF+ VREF- D A AN0_VREF_VREF
set_adc_channel(canal)
Canal: selección del canal analógico correspondiente a
los bits 5:3 del ADCON0.
A/D en C
0(AN0) 1(AN1) 2(AN2) 3(AN3)
4(AN4) 5(AN5) 6(AN6) 7(AN7)
Prof. Luis Zurita Microcontroladores II
valor= read_adc();
Lectura del resultado donde valor es un entero de 16
bits, según la directiva #DEVICE ADC= empleada. Esta
directiva trabaja según la tabla:
A/D en C
DEVICE 8 bit 10 bit 11 bit 16 bit
ADC=8 00-FF 00-FF 00-FF 00-FF
ADC=10 x 0-3FF x x
ADC=11 x x 0-7FF x
ADC=16 0-FF00 0-FFC0 0-FFE0 0-FFFF
Prof. Luis Zurita Microcontroladores II
• Por ejemplo, el fichero 16F877.h incluye como
primera directiva #device PIC16F877. Para incluir la
información del tipo de conversor A/D se debe
añadir #device adc=10.
READ_ADC() admite tres modos de funcionamiento:
A/D en C
READ_ADC() admite tres modos de funcionamiento:
ADC_START_AND_READ Si no se indica nada es la opción por
defecto.
Permite iniciar y leer el convertidor.
ADC_START_ONLY Sólo inicia la conversión.
ADC_READ_ONLY Sólo lee los registros del convertidor.
Prof. Luis Zurita Microcontroladores II
En el siguiente ejercicio, se
medirá un canal analógico
que ingresa por RA0 y se
muestra su valor en digital y
en voltaje en una pantalla
LCD.
#include <16f877a.h>
#device ADC=10
#fuses
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
lcd_init();
while(TRUE){
set_adc_channel(0);
delay_ms(100);
valor=read_adc();
p=0.004883*valor;
A/D en C. Ejercicio 1. Lectura de un canal.
#fuses
XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use fast_IO(c)
#include <lcd.c>
int16 valor=0;
float p;
void main(){
p=0.004883*valor;
lcd_gotoxy(1,1);
printf(lcd_putc,"fA/DValor=%4LUn",valor);
printf(lcd_putc,"Voltaje=%g",p);
}
}
Prof. Luis Zurita Microcontroladores II
A/D en C. Ejercicio 1. Lectura de un canal.
Prof. Luis Zurita Microcontroladores II
En el siguiente ejercicio, se medirán dos canales
analógicos (RA0 y RA1), el primero será el valor de
una variable que se desea medir y el segundo será el
set point.
Si la variable está por encima del set point se activa un
A/D en C. Ejercicio 2. Lectura de dos canales.
Si la variable está por encima del set point se activa un
led rojo. En caso contrario se activa un led verde.
Prof. Luis Zurita Microcontroladores II
#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use fast_IO(C)
#include <lcd.c>
int16 valor=0;
long setpoint=0;
A/D en C. Ejercicio 2. Lectura de dos canales.
long setpoint=0;
float p;
float psp;
void main(){
set_tris_c(0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
lcd_init();
output_C(0);
Prof. Luis Zurita Microcontroladores II
while (TRUE){
set_adc_channel(0);
delay_ms(10);
valor=read_adc();
p=0.004883*valor;
printf(lcd_putc,"fSENSOR=%gn",p);
set_adc_channel(1);
delay_ms(10);
setpoint=read_adc();
psp=0.004883*setpoint;
A/D en C. Ejercicio 2. Lectura de dos canales.
Continuación.
psp=0.004883*setpoint;
printf(lcd_putc,"SPOINT=%gn",psp);
if(p>=psp){
output_high(PIN_C0);
output_low(PIN_C1);}
else{
output_low(PIN_C0);
output_high(PIN_C1);
}
delay_ms(50);
}
}
Prof. Luis Zurita Microcontroladores II
A/D en C. Ejercicio 2. Lectura de dos canales.
Prof. Luis Zurita Microcontroladores II
En este ejercicio se plantea diseñar un
termómetro basado en una NTC modelo
NTCSA0WB203, con una beta de 4050 y una
resistencia a 25°C de 20 kΩ.
A/D en C. Ejercicio 3. Termómetro con una NTC
NTSA0WB203
Estas características se pueden ajustar así como
la temperatura a medir en el menú de edición del
componente.
Prof. Luis Zurita Microcontroladores II
Modificación de los valores de la NTC en
Proteus
Cambiar por 25°C
Prof. Luis Zurita Microcontroladores II
La NTC se linealiza mediante una resistencia R1 de 10
kΩ, el valor de la tensión de la NTC(VT) se puede
obtener mediante las siguientes ecuaciones
(temperatura en °k):
A/D en C. Ejercicio 3. Termómetro con una NTC
NTSA0WB203
Prof. Luis Zurita Microcontroladores II
#include "16f877.h"
#device adc=10
#fuses XT,NOWDT
#use delay(clock=4000000)
#include <math.h> //Se incluye para los cálculos matemáticos
#include <lcd.c>
A/D en C. Ejercicio 3. Termómetro con una NTC
NTSA0WB203
void main() {
float tv,tr,temp,y; //Variables de ecuación
int16 value;
lcd_init();
setup_adc_ports(ALL_ANALOG);
setup_adc( ADC_CLOCK_INTERNAL );
set_adc_channel( 0 );
delay_us(10);
Prof. Luis Zurita Microcontroladores II
while(true) {
value = Read_ADC();
tv = 5.0 * value / 1024.0;
tr = tv * 10000.0 / (5.0 - tv);
A = log(tr/20000.0);
y = (1.0/298.15) + (A *(1.0/4050.0));
A/D en C. Ejercicio 3. Termómetro con una NTC
NTSA0WB203
y = (1.0/298.15) + (A *(1.0/4050.0));
temp=1.0/y;
temp = temp -273.15;
printf(lcd_putc,"fTEMPERATURAn");
printf(lcd_putc,"nT = %04.2fC", temp);
}
}
Prof. Luis Zurita Microcontroladores II
A/D en C. Ejercicio 3. Termómetro con una NTC
NTSA0WB203
Prof. Luis Zurita Microcontroladores II

Más contenido relacionado

PDF
Diagramas de bode
PPTX
Sesion 03 - Digitalizacion de señales
PPTX
Double gate mosfet
PDF
Ee6378 bandgap reference
PDF
CMOS Operational Amplifier Design
PPTX
Te442 lecture02-2016-14-4-2016-1
PDF
lineas de transmision y guias de onda
PPTX
Finfet; My 3rd PPT in clg
Diagramas de bode
Sesion 03 - Digitalizacion de señales
Double gate mosfet
Ee6378 bandgap reference
CMOS Operational Amplifier Design
Te442 lecture02-2016-14-4-2016-1
lineas de transmision y guias de onda
Finfet; My 3rd PPT in clg

La actualidad más candente (20)

PPTX
faults in digital systems
PPTX
bandgap ppt
PPTX
Presentacion sdh
PDF
Manual al uso pspice
PPT
TPS720xx: LDO Linear Regulators
PPT
Sequential logic circuit optimization
PDF
SRAM Design
PPTX
Amplificadores multiplicadores
PDF
Eecb351 exp 8 ask fsk
PPTX
PPTX
Field Effect Transistor ppt
DOCX
Respuesta en frecuencia
PPTX
Modulación por desplazamiento de fase (psk) exposicion
DOCX
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
PDF
Conmutadores Digitales
PPTX
Teknologi spread spectrum
PPT
CMOS VLSI design
PDF
Demodulador fsk mediante pll
DOCX
5to laboratorio
PDF
minimisation of crosstalk in VLSI routing
faults in digital systems
bandgap ppt
Presentacion sdh
Manual al uso pspice
TPS720xx: LDO Linear Regulators
Sequential logic circuit optimization
SRAM Design
Amplificadores multiplicadores
Eecb351 exp 8 ask fsk
Field Effect Transistor ppt
Respuesta en frecuencia
Modulación por desplazamiento de fase (psk) exposicion
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Conmutadores Digitales
Teknologi spread spectrum
CMOS VLSI design
Demodulador fsk mediante pll
5to laboratorio
minimisation of crosstalk in VLSI routing
Publicidad

Destacado (20)

PDF
Micro2 tema 5
PDF
Micro2 tema 3
PDF
Micro2 tema 1
PDF
Guía rápidalcd y teclado
PDF
Micro2 tema 2
PDF
Manejo de perifericos para microcontroladore
PDF
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
PPT
Curso Micro Tema 3 2
PPT
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
PPT
Curso Micro Tema 3
PPTX
MICROCONTROLADORES II EN C. TEMA 2
PDF
Microcontroladores ii en c. tema 4
PDF
MICROCONTROLADORES II EN C. TEMA 5
PDF
MICROCONTROLADORES II EN C. TEMA 3
PDF
Guía de ejercicios resueltos tema 2
PDF
TALLER NORMAS APA
PPTX
Contador ascendente con interruptor pic16f877a
PDF
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
DOCX
Manejo de teclado 4x4 con pic 16 f84a
PDF
CIRCUITOS SECUENCIALES
Micro2 tema 5
Micro2 tema 3
Micro2 tema 1
Guía rápidalcd y teclado
Micro2 tema 2
Manejo de perifericos para microcontroladore
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
Curso Micro Tema 3 2
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso Micro Tema 3
MICROCONTROLADORES II EN C. TEMA 2
Microcontroladores ii en c. tema 4
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 3
Guía de ejercicios resueltos tema 2
TALLER NORMAS APA
Contador ascendente con interruptor pic16f877a
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
Manejo de teclado 4x4 con pic 16 f84a
CIRCUITOS SECUENCIALES
Publicidad

Similar a Micro2 tema 4 (20)

PDF
Clase 4 pro
PDF
PDF
Curso de microcontroladores capitulo 08
PPT
Compilador CCS.ppt
PPTX
Tema3 Microii
PPTX
Tema3 Microii
PDF
Adc y usart pic16 f887
DOC
Micc final sept05_2009
DOC
Micc final feb14_2009
DOCX
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
PPTX
Tarea final
PDF
Microcontroladores de microchip pic16f877-en-espanol.pdf
PDF
Digitalio config 16f887a_886
DOC
Micc final feb14_2009_soluc
DOC
Micc final feb14_2009_soluc
DOCX
Leccion3 y4
DOC
Micc final sept05 2009 soluc
DOC
Micc final sept05 2009 soluc
PDF
Descripcion detallada del pic 16 f877
Clase 4 pro
Curso de microcontroladores capitulo 08
Compilador CCS.ppt
Tema3 Microii
Tema3 Microii
Adc y usart pic16 f887
Micc final sept05_2009
Micc final feb14_2009
Laboratorio de un convertidor de digital a anlógico 3-DAC.docx
Tarea final
Microcontroladores de microchip pic16f877-en-espanol.pdf
Digitalio config 16f887a_886
Micc final feb14_2009_soluc
Micc final feb14_2009_soluc
Leccion3 y4
Micc final sept05 2009 soluc
Micc final sept05 2009 soluc
Descripcion detallada del pic 16 f877

Más de Luis Zurita (20)

PDF
PROTOCOLO MODBUS
PDF
Pevmicroi ieo
PDF
Pevmicroii13 2
PDF
Pevmicro1 t2 13
PDF
Pev electronica
PDF
Grupos micro2 13
PDF
Pevmicro1 t2 13
PDF
Pevmicroii13 2
PDF
Notas def electronica
PDF
Notas proyecto3 iyc
PDF
Notas definitivas iyc2013
PDF
Proyecto 2 electronica
PDF
Acumuladas electronica
PDF
Pevmicro2013
PDF
Proyecto2 notas iyc2013
PDF
Acumuladas iyc2013
PDF
TMR0 Y RB0_INT
PDF
Guía de ejercicios resueltos y propuestos tema 4
PDF
Guía rápida tmr0 e interrupciones
PDF
Eomicro2013
PROTOCOLO MODBUS
Pevmicroi ieo
Pevmicroii13 2
Pevmicro1 t2 13
Pev electronica
Grupos micro2 13
Pevmicro1 t2 13
Pevmicroii13 2
Notas def electronica
Notas proyecto3 iyc
Notas definitivas iyc2013
Proyecto 2 electronica
Acumuladas electronica
Pevmicro2013
Proyecto2 notas iyc2013
Acumuladas iyc2013
TMR0 Y RB0_INT
Guía de ejercicios resueltos y propuestos tema 4
Guía rápida tmr0 e interrupciones
Eomicro2013

Último (20)

PDF
Metodologías Activas con herramientas IAG
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
biología es un libro sobre casi todo el tema de biología
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PDF
DI, TEA, TDAH.pdf guía se secuencias didacticas
Metodologías Activas con herramientas IAG
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
COMUNICACION EFECTIVA PARA LA EDUCACION .pdf
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Tarea De El Colegio Coding For Kids 1 y 2
biología es un libro sobre casi todo el tema de biología
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Unidad de Aprendizaje 5 de Educacion para el Trabajo EPT Ccesa007.pdf
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
caso clínico iam clinica y semiología l3.pptx
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
DI, TEA, TDAH.pdf guía se secuencias didacticas

Micro2 tema 4

  • 1. MICROCONTROLADORES II MÓDULO A/DMÓDULO A/D (Convertidor Analógico/Digital) TEMA 4 PROF. LUIS ZURITA
  • 2. RESOLUCIÓN Prof. Luis Zurita Microcontroladores II
  • 3. VOLTAJES DE REFERENCIA EXTERNOS • El convertidor A/D puede seleccionar como tensión de referencia la interna VDD y Tierra. • Para referencias externas, se introducen por: • RA3/AN3/VREF+ y RA2/AN2/VREF- • Las siguientes limitaciones aplican: – El máximo voltaje aplicado a VREF+ (RA3/AN3) será– El máximo voltaje aplicado a VREF+ (RA3/AN3) será VDD+0,3V y el mínimo VDD-2,5V. – Sobre el voltaje aplicado a VREF- (RA2/AN2) la mínima tensión será VSS-0,3V y la máxima (VREF+) - 2V. – Por ejemplo, si la tensión de alimentación es de 5V, la tensión en RA3/AN3 no podrá exceder de 5V. Por lo que el máximo voltaje en VREF- será de 3V.Prof. Luis Zurita Microcontroladores II
  • 4. REGISTROS RELACIONADOS AL MÓDULO A/D • ADCON0: Registro de control 0. (Banco 0). • ADCON1: Registro de control 1. (Banco 1). • ADRESH: Guarda la parte alta del Resultado de• ADRESH: Guarda la parte alta del Resultado de la conversión. (Banco 0). • ADRESL: Guarda la parte baja del Resultado de la conversión. (Banco 1). Prof. Luis Zurita Microcontroladores II
  • 5. • Selección del reloj de conversión A/D El tiempo de conversión A/D por bit se define como TAD. La conversión A/D requiere mínimo 12TAD por 10-bits de conversión. • La fuente del reloj de conversión A/D es seleccionado por software, mediante los bits ADCON0 <7:6>. Las cuatro opciones posibles para TAD son: ADCS 1:0 PERÍODO 0 0 2TOSC 0 1 8TOSC 1 0 32TOSC 1 1 RC interno (2-6 μs) Prof. Luis Zurita Microcontroladores II
  • 6. Tiempo de adquisición (TACQ) • Es el tiempo necesario para que se cargue el condensador de retención interno, con la tensión de entrada. Este proceso de carga del condensador depende de distintos factores, entre otros, la impedancia de la fuente de tensión de entrada (el fabricante recomienda que se sitúe por debajo de 10fabricante recomienda que se sitúe por debajo de 10 kohm. • El tiempo de adquisición dentro de los márgenes típicos es de aproximadamente 20μs. • La adquisición no comienza hasta que no acabe la conversión. Por lo que se debe esperar un TACQ tras una conversión , para seleccionar un nuevo canal o luego de encender el módulo AD. Prof. Luis Zurita Microcontroladores II
  • 7. Tiempo de conversión (TAD) • Es el tiempo necesario para obtener el valor digital de la tensión analógica de entrada. Este tiempo depende de la fuente de reloj que se seleccione para la conversión. Prof. Luis Zurita Microcontroladores II
  • 8. • Para un control adecuado de conversiones A/D, el reloj de conversión A/D (TAD) deben ser seleccionados para asegurar un tiempo mínimo TAD de 1,6 μs. •La siguiente tabla muestra los tiempos de TAD derivada de las frecuencias de funcionamiento del dispositivo y de la fuente de reloj A/D de reloj seleccionado. Prof. Luis Zurita Microcontroladores II
  • 9. CICLOS DE CONVERSIÓN Prof. Luis Zurita Microcontroladores II
  • 10. FORMATO DE RESULTADOS Prof. Luis Zurita Microcontroladores II
  • 11. Prof. Luis Zurita Microcontroladores II
  • 12. Prof. Luis Zurita Microcontroladores II
  • 13. Prof. Luis Zurita Microcontroladores II
  • 14. A/D en C • En el compilador C las funciones para manejar el convertidor A/D son las siguientes: setup_adc(modo); Donde modo, determina la configuración del módulo A/D correspondiente a los bits 7:6 del ADCON0. setup_adc(modo); ADCON0(1Fh) ADC_OFF 00000000ADC_OFF 00000000 ADC_CLOCK_INTERNAL 11000000 ADC_CLOCK_DIV_2 00000000 ADC_CLOCK_DIV_8 01000000 ADC_CLOCK_DIV_32 10000000 setup_adc_ports(valor); Valor: definición de las entradas analógicas correspondiente a los bits 3:0 del ADCON1.Prof. Luis Zurita Microcontroladores II
  • 15. PCFG3 PCFG0 AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 setup_adc_ports(valor); 0000 A A A A A A A A ALL_ANALOG 0001 A A A A VREF+ A A A AN0_AN1_AN2_AN4_AN5_AN6_AN7_VSS_VREF 0010 D D D A A A A A AN0_AN1_AN2_AN3_AN4 0011 D D D A VREF+ A A A AN0_AN1_AN2_AN4_VSS_VREF 0100 D D D D A D A A AN0_AN1_AN3 0101 D D D D VREF+ D A A AN0_AN1_VSS_VREF 011X D D D D D D D D NO_ANALOGS011X D D D D D D D D NO_ANALOGS 1000 A A A A VREF+ VREF- A A AN0_AN1_AN4_AN5_AN6_AN7_VREF_VREF 1001 D D A A A A A A AN0_AN1_AN2_AN3_AN4_AN5 1010 D D A A VREF+ A A A AN0_AN1_AN2_AN4_AN5_VSS_VREF 1011 D D A A VREF+ VREF- A A AN0_AN1_AN4_AN5_VREF_VREF 1100 D D D A VREF+ VREF- A A A_ANALOG_RA3_RA2_REF 1101 D D D D VREF+ VREF- A A AN0_AN1_VREF_VREF 1110 D D D D D D D A AN0 1111 D D D D VREF+ VREF- D A AN0_VREF_VREF
  • 16. set_adc_channel(canal) Canal: selección del canal analógico correspondiente a los bits 5:3 del ADCON0. A/D en C 0(AN0) 1(AN1) 2(AN2) 3(AN3) 4(AN4) 5(AN5) 6(AN6) 7(AN7) Prof. Luis Zurita Microcontroladores II
  • 17. valor= read_adc(); Lectura del resultado donde valor es un entero de 16 bits, según la directiva #DEVICE ADC= empleada. Esta directiva trabaja según la tabla: A/D en C DEVICE 8 bit 10 bit 11 bit 16 bit ADC=8 00-FF 00-FF 00-FF 00-FF ADC=10 x 0-3FF x x ADC=11 x x 0-7FF x ADC=16 0-FF00 0-FFC0 0-FFE0 0-FFFF Prof. Luis Zurita Microcontroladores II
  • 18. • Por ejemplo, el fichero 16F877.h incluye como primera directiva #device PIC16F877. Para incluir la información del tipo de conversor A/D se debe añadir #device adc=10. READ_ADC() admite tres modos de funcionamiento: A/D en C READ_ADC() admite tres modos de funcionamiento: ADC_START_AND_READ Si no se indica nada es la opción por defecto. Permite iniciar y leer el convertidor. ADC_START_ONLY Sólo inicia la conversión. ADC_READ_ONLY Sólo lee los registros del convertidor. Prof. Luis Zurita Microcontroladores II
  • 19. En el siguiente ejercicio, se medirá un canal analógico que ingresa por RA0 y se muestra su valor en digital y en voltaje en una pantalla LCD. #include <16f877a.h> #device ADC=10 #fuses setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(ALL_ANALOG); lcd_init(); while(TRUE){ set_adc_channel(0); delay_ms(100); valor=read_adc(); p=0.004883*valor; A/D en C. Ejercicio 1. Lectura de un canal. #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #use fast_IO(c) #include <lcd.c> int16 valor=0; float p; void main(){ p=0.004883*valor; lcd_gotoxy(1,1); printf(lcd_putc,"fA/DValor=%4LUn",valor); printf(lcd_putc,"Voltaje=%g",p); } } Prof. Luis Zurita Microcontroladores II
  • 20. A/D en C. Ejercicio 1. Lectura de un canal. Prof. Luis Zurita Microcontroladores II
  • 21. En el siguiente ejercicio, se medirán dos canales analógicos (RA0 y RA1), el primero será el valor de una variable que se desea medir y el segundo será el set point. Si la variable está por encima del set point se activa un A/D en C. Ejercicio 2. Lectura de dos canales. Si la variable está por encima del set point se activa un led rojo. En caso contrario se activa un led verde. Prof. Luis Zurita Microcontroladores II
  • 22. #include <16f877.h> #device ADC=10 #fuses XT,NOWDT,NOPROTECT,NOLVP #use delay(clock=4000000) #use fast_IO(C) #include <lcd.c> int16 valor=0; long setpoint=0; A/D en C. Ejercicio 2. Lectura de dos canales. long setpoint=0; float p; float psp; void main(){ set_tris_c(0); setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(ALL_ANALOG); lcd_init(); output_C(0); Prof. Luis Zurita Microcontroladores II
  • 23. while (TRUE){ set_adc_channel(0); delay_ms(10); valor=read_adc(); p=0.004883*valor; printf(lcd_putc,"fSENSOR=%gn",p); set_adc_channel(1); delay_ms(10); setpoint=read_adc(); psp=0.004883*setpoint; A/D en C. Ejercicio 2. Lectura de dos canales. Continuación. psp=0.004883*setpoint; printf(lcd_putc,"SPOINT=%gn",psp); if(p>=psp){ output_high(PIN_C0); output_low(PIN_C1);} else{ output_low(PIN_C0); output_high(PIN_C1); } delay_ms(50); } } Prof. Luis Zurita Microcontroladores II
  • 24. A/D en C. Ejercicio 2. Lectura de dos canales. Prof. Luis Zurita Microcontroladores II
  • 25. En este ejercicio se plantea diseñar un termómetro basado en una NTC modelo NTCSA0WB203, con una beta de 4050 y una resistencia a 25°C de 20 kΩ. A/D en C. Ejercicio 3. Termómetro con una NTC NTSA0WB203 Estas características se pueden ajustar así como la temperatura a medir en el menú de edición del componente. Prof. Luis Zurita Microcontroladores II
  • 26. Modificación de los valores de la NTC en Proteus Cambiar por 25°C Prof. Luis Zurita Microcontroladores II
  • 27. La NTC se linealiza mediante una resistencia R1 de 10 kΩ, el valor de la tensión de la NTC(VT) se puede obtener mediante las siguientes ecuaciones (temperatura en °k): A/D en C. Ejercicio 3. Termómetro con una NTC NTSA0WB203 Prof. Luis Zurita Microcontroladores II
  • 28. #include "16f877.h" #device adc=10 #fuses XT,NOWDT #use delay(clock=4000000) #include <math.h> //Se incluye para los cálculos matemáticos #include <lcd.c> A/D en C. Ejercicio 3. Termómetro con una NTC NTSA0WB203 void main() { float tv,tr,temp,y; //Variables de ecuación int16 value; lcd_init(); setup_adc_ports(ALL_ANALOG); setup_adc( ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); delay_us(10); Prof. Luis Zurita Microcontroladores II
  • 29. while(true) { value = Read_ADC(); tv = 5.0 * value / 1024.0; tr = tv * 10000.0 / (5.0 - tv); A = log(tr/20000.0); y = (1.0/298.15) + (A *(1.0/4050.0)); A/D en C. Ejercicio 3. Termómetro con una NTC NTSA0WB203 y = (1.0/298.15) + (A *(1.0/4050.0)); temp=1.0/y; temp = temp -273.15; printf(lcd_putc,"fTEMPERATURAn"); printf(lcd_putc,"nT = %04.2fC", temp); } } Prof. Luis Zurita Microcontroladores II
  • 30. A/D en C. Ejercicio 3. Termómetro con una NTC NTSA0WB203 Prof. Luis Zurita Microcontroladores II