SlideShare una empresa de Scribd logo
(c) Domingo Llorente 2010 1
EL módulo conversor A/D
(c) Domingo Llorente 2010 2
Características del conversor A/D
Ocho entradas de señal analógica. (5 para el 16F876x)
Resolución de la conversión de 10 bits. (0-1024)
Distintas fuentes de tensión de referencia seleccionadas por software.
Capacidad para operar en el modo Sleep.
Los registros asociados al módulo son:
• PORTA,TRISA,PORTE y TRISE: Definición de pines de entrada
• INTCON,PIE1 y PIR1: Manejo de interrupciones
• ADCON0,ADCON1,ADRESH y ADRESL: Control del conversor
(c) Domingo Llorente 2010 3
Registros asociados al conversor A/D (I)
El registro ADCON0 sirve para:
a) Seleccionar la señal de reloj del conversor, en funcion de Fosc
Nota: Fosc = Frecuencia del oscilador. (*) Dato del datasheet de Microchip para el pic 16F877x
El tiempo empleado en la
Conversion viene dado por
la expresion:
TACQ= TAMP+TC+TCOFF
Tiempo empleado en la
conversión ~= 20us
(*)
(c) Domingo Llorente 2010 4
Registros asociados al conversor A/D (II)
b) Seleccionar el canal analógico para realizar la conversión
c) Iniciar/parar la conversión
d) Encender/Apagar el conversor
b
c
d
(c) Domingo Llorente 2010 5
Registros asociados al conversor A/D (III)
El registro ADCON1 sirve para:
a) Seleccionar la justificación del resultado de la conversión.
ADFM = 1 : Los seis bits más significativos del registro ADRESH se leen como ‘0’.
ADFM = 0 : Los seis bits menos significativos del registro ADRESL le leen como ‘0’
(c) Domingo Llorente 2010 6
Registros asociados al conversor A/D (IV)
b) Configurar las entradas analógicas
(c) Domingo Llorente 2010 7
Interrupción del conversor (I)
Para habilitar la interrupción del conversor hay que:
a) Poner a uno los bits GIE y PEIE del registro INTCON
(c) Domingo Llorente 2010 8
Interrupción del conversor (II)
b) Poner a uno el bit ADIE del registro PIE1
c) Cada vez que se finalice una conversión se pondrá a uno la
bandera ADIF del registro PIR1.
(c) Domingo Llorente 2010 9
Conexión de las entradas analógicas en la
placa de ampliación
Para usar la entrada analógica de RA0 hay que poner el puente JP9 en pos. ANL0.
Para usar la entrada analógica de RA3 hay que poner el puente JP8 en pos. ANL3.
ANL0
ANL3
JP8 JP9
(c) Domingo Llorente 2010 10
Configuración del conversor en CCS (I)
Para configurar la entrada del conversor se utilizan la función:
setup_adc_ports( VALOR );
Donde VALOR puede ser:
NO_ANALOG, Ninguna entrada analógica
ALL_ANALOGS, Todas las entradas analógicas
AN0, Configura RA0 como única entrada analógica
AN0_AN1_AN3, Configura RA0, RA1 y RA3 como entradas analógicas
Para fijar la señal de reloj utilizada en la conversión se utiliza:
setup_adc(ADC_CLOCK_INTERNAL); // Reloj interno para la conv.
Otros valores posibles son:
ADC_OFF, Para parar el conversor
ADC_CLOCK_DIV_32, Utiliza un divisor por 32 de la Fosc.
Nota: La lista completa de valores se puede consultar en el archivo: 16F877A.h
(c) Domingo Llorente 2010 11
Configuración del conversor en CCS (II)
Para leer el valor analógico hay seguir los siguientes pasos:
1º) Fijar el canal a leer:
set_adc_channel(0); // Canal AN0 seleccionado
2º) Esperar, al menos 20us:
delay_us(20); // Retardo para asegurar la conversión
3º) Guardar el valor leído en una variable de 16 bits:
valor_leido=read_adc();
Adicionalmente, si queremos pasar a voltios la lectura obtenida:
voltios=5.0*valor_leido/1024.0;
Nota: No olvidar declarar las variables: int16 valor_leido; float voltios;
(c) Domingo Llorente 2010 12
Ejemplo de programa
Diseñar un programa que esté, constantemente leyendo la entrada analógica ANL0 y
mostrando en el LCD de la placa el valor leído y su valor en voltios.
(c) Domingo Llorente 2010 13
Solución en CCS (I)
Comenzamos utilizando el
asistente “PIC Wizard”
Luego creamos la carpeta para
nuestro proyecto y damos un
nombre al archivo con extensión .pjt
(c) Domingo Llorente 2010 14
Solución en CCS (II)
Elegir:
Pic: PIC17F877A
Frecuencia del oscilador: 4Mhz
Fuses: Crystal osc <=4Mhz
Memoria de programa: No protegida
(c) Domingo Llorente 2010 15
Solución en CCS (III)
En la pestaña de “Analog” configurar:
• Resolución: 1024 (10bits).
• Fuente de reloj para
la conversión: Internal
• La entrada analógica: A0
(c) Domingo Llorente 2010 16
Solución en CCS (IV)
En la pestaña “Code” podemos ver
el código que se añadirá en nuestro
programa.
(c) Domingo Llorente 2010 17
Solución en CCS (V)
El compilador nos genera la siguiente plantilla.
(c) Domingo Llorente 2010 18
Solución:
(c) Domingo Llorente 2010 19
Resumen
Para realizar un programa con la interrupción externa habilitada:
1º.- Antes de la función main(); declarar una varialbe de 16bits.
int16 valor_leido;
2º.- En la función main() configurar el conversor:
setup_adc_ports( AN0 );
setup_adc(ADC_CLOCK_INTERNAL);
3º.- Seleccionar la entrada y hacer la lectura:
set_adc_channel(0); // Canal AN0 seleccionado
delay_us(20); // Retardo para asegurar la conversión
valor_leido=read_adc(); // Lectura del conversor

Más contenido relacionado

DOC
Micc final feb04_2010_soluc
DOCX
Leccion3 y4
DOCX
Micc parcial dic9_2010 - copia (1)_sol
DOCX
Micc mejoramiento-sept2011-solucion
DOC
Micc temas examen
DOC
Micc final sep02_2010 solucion
DOCX
Micp mej feb18_2011_solucion
PDF
Laboratorio de Microcomputadoras - Práctica 03
Micc final feb04_2010_soluc
Leccion3 y4
Micc parcial dic9_2010 - copia (1)_sol
Micc mejoramiento-sept2011-solucion
Micc temas examen
Micc final sep02_2010 solucion
Micp mej feb18_2011_solucion
Laboratorio de Microcomputadoras - Práctica 03

La actualidad más candente (18)

PDF
Laboratorio de Microcomputadoras - Práctica 02
DOC
Micc final feb14_2009
DOCX
Micc parcial dic9_2010 - copia (3)_sol
DOC
Micc final sept05_2009
DOCX
Micp mejoramiento-sept2011solucion
DOCX
Parcial t1 2011 sol
PDF
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
DOCX
Tercer Laboratorio - Sistemas Digitales I
DOC
Micc final feb14_2009_soluc
PDF
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
DOCX
Parcial t1 2010 sol
DOC
Micc final sept05 2009 soluc
DOC
Parcial dic 13 t2 2008 sol
DOC
Micc mej sept16_2010_solucion
DOCX
Mej feb17 2011_solucion
DOCX
Parcial 2 tdic10_2010
PDF
Laboratorio de Microcomputadoras - Práctica 01
DOCX
Primer Laboratorio - Sistemas Digitales I
Laboratorio de Microcomputadoras - Práctica 02
Micc final feb14_2009
Micc parcial dic9_2010 - copia (3)_sol
Micc final sept05_2009
Micp mejoramiento-sept2011solucion
Parcial t1 2011 sol
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 2 RESUELTA 2do PARCIAL (2019 2do ...
Tercer Laboratorio - Sistemas Digitales I
Micc final feb14_2009_soluc
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN 1 RESUELTA 2do PARCIAL (2019 2do ...
Parcial t1 2010 sol
Micc final sept05 2009 soluc
Parcial dic 13 t2 2008 sol
Micc mej sept16_2010_solucion
Mej feb17 2011_solucion
Parcial 2 tdic10_2010
Laboratorio de Microcomputadoras - Práctica 01
Primer Laboratorio - Sistemas Digitales I
Publicidad

Similar a El conversor adc (20)

DOC
Micc final feb04_2010_soluc
PDF
Digitalio config 16f887a_886
PDF
Módulo ADC del PIC16F887
PPT
Compilador CCS.ppt
PDF
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
PPT
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
DOCX
Micc parcial dic9_2010 - copia (2)_sol
PDF
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, Mejoramiento (2020 PAO 1)
PDF
Dialnet programando microcontroladorespicenlenguajec-4587553
DOCX
Laboratorio de convertidores Analógico a digital.docx
DOC
Micc final feb14_2009_soluc
PPTX
Tarea final
PDF
Curso de microcontroladores capitulo 08
DOC
Micc final sept05 2009 soluc
PDF
Microprogramacion - Interrupciones y timers
PDF
S06_12 - Configuración y manejo de puertos IO (1).pdf
PDF
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
PDF
Programación del microcontrolador
PDF
Micro2 tema 4
Micc final feb04_2010_soluc
Digitalio config 16f887a_886
Módulo ADC del PIC16F887
Compilador CCS.ppt
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, 1er Parcial (2020 PAO 2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Micc parcial dic9_2010 - copia (2)_sol
⭐⭐⭐⭐⭐ SOLUCIÓN EVALUACIÓN SISTEMAS EMBEBIDOS, Mejoramiento (2020 PAO 1)
Dialnet programando microcontroladorespicenlenguajec-4587553
Laboratorio de convertidores Analógico a digital.docx
Micc final feb14_2009_soluc
Tarea final
Curso de microcontroladores capitulo 08
Micc final sept05 2009 soluc
Microprogramacion - Interrupciones y timers
S06_12 - Configuración y manejo de puertos IO (1).pdf
⭐⭐⭐⭐⭐ DISEÑO DE SISTEMAS DIGITALES, LECCIÓN A RESUELTA 1er PARCIAL (2019 2do ...
Programación del microcontrolador
Micro2 tema 4
Publicidad

El conversor adc

  • 1. (c) Domingo Llorente 2010 1 EL módulo conversor A/D
  • 2. (c) Domingo Llorente 2010 2 Características del conversor A/D Ocho entradas de señal analógica. (5 para el 16F876x) Resolución de la conversión de 10 bits. (0-1024) Distintas fuentes de tensión de referencia seleccionadas por software. Capacidad para operar en el modo Sleep. Los registros asociados al módulo son: • PORTA,TRISA,PORTE y TRISE: Definición de pines de entrada • INTCON,PIE1 y PIR1: Manejo de interrupciones • ADCON0,ADCON1,ADRESH y ADRESL: Control del conversor
  • 3. (c) Domingo Llorente 2010 3 Registros asociados al conversor A/D (I) El registro ADCON0 sirve para: a) Seleccionar la señal de reloj del conversor, en funcion de Fosc Nota: Fosc = Frecuencia del oscilador. (*) Dato del datasheet de Microchip para el pic 16F877x El tiempo empleado en la Conversion viene dado por la expresion: TACQ= TAMP+TC+TCOFF Tiempo empleado en la conversión ~= 20us (*)
  • 4. (c) Domingo Llorente 2010 4 Registros asociados al conversor A/D (II) b) Seleccionar el canal analógico para realizar la conversión c) Iniciar/parar la conversión d) Encender/Apagar el conversor b c d
  • 5. (c) Domingo Llorente 2010 5 Registros asociados al conversor A/D (III) El registro ADCON1 sirve para: a) Seleccionar la justificación del resultado de la conversión. ADFM = 1 : Los seis bits más significativos del registro ADRESH se leen como ‘0’. ADFM = 0 : Los seis bits menos significativos del registro ADRESL le leen como ‘0’
  • 6. (c) Domingo Llorente 2010 6 Registros asociados al conversor A/D (IV) b) Configurar las entradas analógicas
  • 7. (c) Domingo Llorente 2010 7 Interrupción del conversor (I) Para habilitar la interrupción del conversor hay que: a) Poner a uno los bits GIE y PEIE del registro INTCON
  • 8. (c) Domingo Llorente 2010 8 Interrupción del conversor (II) b) Poner a uno el bit ADIE del registro PIE1 c) Cada vez que se finalice una conversión se pondrá a uno la bandera ADIF del registro PIR1.
  • 9. (c) Domingo Llorente 2010 9 Conexión de las entradas analógicas en la placa de ampliación Para usar la entrada analógica de RA0 hay que poner el puente JP9 en pos. ANL0. Para usar la entrada analógica de RA3 hay que poner el puente JP8 en pos. ANL3. ANL0 ANL3 JP8 JP9
  • 10. (c) Domingo Llorente 2010 10 Configuración del conversor en CCS (I) Para configurar la entrada del conversor se utilizan la función: setup_adc_ports( VALOR ); Donde VALOR puede ser: NO_ANALOG, Ninguna entrada analógica ALL_ANALOGS, Todas las entradas analógicas AN0, Configura RA0 como única entrada analógica AN0_AN1_AN3, Configura RA0, RA1 y RA3 como entradas analógicas Para fijar la señal de reloj utilizada en la conversión se utiliza: setup_adc(ADC_CLOCK_INTERNAL); // Reloj interno para la conv. Otros valores posibles son: ADC_OFF, Para parar el conversor ADC_CLOCK_DIV_32, Utiliza un divisor por 32 de la Fosc. Nota: La lista completa de valores se puede consultar en el archivo: 16F877A.h
  • 11. (c) Domingo Llorente 2010 11 Configuración del conversor en CCS (II) Para leer el valor analógico hay seguir los siguientes pasos: 1º) Fijar el canal a leer: set_adc_channel(0); // Canal AN0 seleccionado 2º) Esperar, al menos 20us: delay_us(20); // Retardo para asegurar la conversión 3º) Guardar el valor leído en una variable de 16 bits: valor_leido=read_adc(); Adicionalmente, si queremos pasar a voltios la lectura obtenida: voltios=5.0*valor_leido/1024.0; Nota: No olvidar declarar las variables: int16 valor_leido; float voltios;
  • 12. (c) Domingo Llorente 2010 12 Ejemplo de programa Diseñar un programa que esté, constantemente leyendo la entrada analógica ANL0 y mostrando en el LCD de la placa el valor leído y su valor en voltios.
  • 13. (c) Domingo Llorente 2010 13 Solución en CCS (I) Comenzamos utilizando el asistente “PIC Wizard” Luego creamos la carpeta para nuestro proyecto y damos un nombre al archivo con extensión .pjt
  • 14. (c) Domingo Llorente 2010 14 Solución en CCS (II) Elegir: Pic: PIC17F877A Frecuencia del oscilador: 4Mhz Fuses: Crystal osc <=4Mhz Memoria de programa: No protegida
  • 15. (c) Domingo Llorente 2010 15 Solución en CCS (III) En la pestaña de “Analog” configurar: • Resolución: 1024 (10bits). • Fuente de reloj para la conversión: Internal • La entrada analógica: A0
  • 16. (c) Domingo Llorente 2010 16 Solución en CCS (IV) En la pestaña “Code” podemos ver el código que se añadirá en nuestro programa.
  • 17. (c) Domingo Llorente 2010 17 Solución en CCS (V) El compilador nos genera la siguiente plantilla.
  • 18. (c) Domingo Llorente 2010 18 Solución:
  • 19. (c) Domingo Llorente 2010 19 Resumen Para realizar un programa con la interrupción externa habilitada: 1º.- Antes de la función main(); declarar una varialbe de 16bits. int16 valor_leido; 2º.- En la función main() configurar el conversor: setup_adc_ports( AN0 ); setup_adc(ADC_CLOCK_INTERNAL); 3º.- Seleccionar la entrada y hacer la lectura: set_adc_channel(0); // Canal AN0 seleccionado delay_us(20); // Retardo para asegurar la conversión valor_leido=read_adc(); // Lectura del conversor