341 likes | 726 Views
Conversor A/D. Programación en C para electrónica. Conversor A/D. Programación en C para electrónica. Conversión A/D. Los microcontroladores PIC pueden incorporar un módulo conversor analógico-digital. El módulo es un conversor A/D por aproximaciones sucesivas.
E N D
Conversor A/D Programación en C para electrónica
Conversor A/D Programación en C para electrónica Conversor A/D - Programción en C para electrónica
Conversión A/D • Los microcontroladores PIC pueden incorporar un módulo conversor analógico-digital. • El módulo es un conversor A/D por aproximaciones sucesivas. • Utiliza un circuito de retención y muestreo. Conversor A/D - Programción en C para electrónica
Conversión A/D • Durante la fase de muestreo se carga el condensador del retenedor a la tensión de entrada durante el tiempo necesario (20us). • Después el condensador se aísla del circuito de entrada. • Luego el conversor realiza la conversión del nivel de tensión adquirido por el retenedor. Conversor A/D - Programción en C para electrónica
Módulo conversor Conversor A/D - Programción en C para electrónica
Características de resolución • La resolución viene dada por la siguiente ecuación: • En el caso que las tensiones de referencia sean las de alimentacion: • Con esto para calcular la tensión convertida solo tenemos que multiplicar el valor de conversión por el valor de 1LSB. Conversor A/D - Programción en C para electrónica
Registros asociados • Registro de control ADCON0 (dir. 0x1F) Conversor A/D - Programción en C para electrónica
Registros asociados • Registro de control ADCON1 (dir. 0x9F) Conversor A/D - Programción en C para electrónica
Configuraciones • Selección del reloj de conversión. Conversor A/D - Programción en C para electrónica
Configuraciones • Selección del canal de conversión • Estado conversión Conversor A/D - Programción en C para electrónica
Configuraciones • Activación del conversor • Formato del resultado (ADCON1) Conversor A/D - Programción en C para electrónica
Configuraciones • Configuración de entradas Conversor A/D - Programción en C para electrónica
Proceso de conversión. • Configurar módulo A/D • Configurar pines analógicos (ADCON1) • Seleccionar canal (ADCON0) • Selección del reloj de conversión (ADCON0) • Habilitar módulo (ADCON0) • Esperar tiempo de adquisición • Comenzar la conversión. (ADCON0) • Esperar a que termine la conversión. • Leer registro de conversión (ADRES). Conversor A/D - Programción en C para electrónica
Tiempos • Tiempo de adquisición (TACQ). • Tiempo necesario para que se cargue el condensador del circuito de retención. • Normalmente este tiempo es de 20μs. • La adquisición no empieza hasta que no termina la conversión. • Tiempo de conversión (TAD): • Tiempo necesario para obtener el valor digital. • Depende de la frecuencia de reloj. • Como mínimo deber ser de 1,6μs. Conversor A/D - Programción en C para electrónica
Funciones ADC en CCS • El compilador CCS dispone de funciones que facilitan el uso del conversor A/D. setup_adc(modo); • Donde modo es una constante que configura la velocidad de conversión. • ADC_OFF • ADC_CLOCK_INTERNAL • ADC_CLOCK_DIV_2 • ADC_CLOCK_DIV_4 • ADC_CLOCK_DIV_8 • ADC_CLOCK_DIV_16 • ADC_CLOCK_DIV_32 • ADC_CLOCK_DIV_64 Conversor A/D - Programción en C para electrónica
Funciones ADC en CCS setup_adc_ports(valor); • Donde valor es una constante definida en el fichero device.h que se utiliza para configurar el funcionamiento de todos los canales analógicos. • Esta función configura los bits del 3 al 0 del registro ADCON1. Conversor A/D - Programción en C para electrónica
Funciones ADC en CCS Conversor A/D - Programción en C para electrónica
Funciones ADC en CCS set_adc_channel(canal); • Donde canal es el canal analógico seleccionado. Conversor A/D - Programción en C para electrónica
Funciones ADC en CCS Valor = read_adc([modo]); • Lectura del resultado de la conversión. • Modo es el modo de lectura, según la siguiente lista. • ACD_START_AND_READ • Inicia la conversión y lee el resultado (Por defecto) • ADC_START_ONLY • Solo inicia la conversión. • ADC_READ_ONLY • Solo lee el resultado de la conversión. Conversor A/D - Programción en C para electrónica
Funciones ADC en CCS Valor = read_adc([modo]); • El resultado es un entero de 16 bits. • La precisión en bits de la conversión y el desplazamiento de los bit se pueden configurar mediante la directiva #device según la siguiente tabla: #device ADC=x Conversor A/D - Programción en C para electrónica
Ejemplo Conversor A/D - Programción en C para electrónica
Ejemplo Conversor A/D - Programción en C para electrónica