Está en la página 1de 7

CONVERTIDOR ANALOGICO DIGITAL (ADC)

INTRODUCCION
El convertidor analógico a digital de 12 bits (ADC) permite la conversión de una señal
de entrada analógica a un número digital de 12 bits. 
Este módulo se basa en una arquitectura de Registro de Aproximación Sucesiva
(SAR) y proporciona una frecuencia de muestreo máxima de 200 ksps. 
El módulo A / D tiene hasta 16 entradas analógicas que se multiplexan en un
amplificador de muestra y retención. 
La salida de la muestra y retención es la entrada al convertidor que genera el
resultado.
El voltaje de referencia analógico es seleccionable por software para el voltaje de
alimentación del dispositivo (AVDD / AVSS) o el nivel de voltaje en el pin (VREF + /
VREF-). 
El convertidor A / D tiene una característica única de poder operar mientras el
dispositivo está en modo de Suspensión con selección de oscilador RC.
El módulo A / D tiene seis registros de 16 bits: 
• Registro de control A / D 1 (ADCON1) 
• Registro de control A / D 2 (ADCON2) 
• Registro de control A / D 3 (ADCON3) 
• Registro de selección de entrada A / D (ADCHS) 
• Registro de configuración de puerto A / D (ADPCFG) 
• Registro de selección de escaneo de entrada A / D (ADCSSL) 

 Los registros ADCON1, ADCON2 y ADCON3 controlan el funcionamiento del


módulo A / D. 
 El registro ADCHS selecciona los canales de entrada a convertir. 
 El registro ADPCFG configura los pines del puerto como entradas analógicas o
como E / S digitales. 
 El registro ADCSSL selecciona entradas para escanear. 

Para obtener más información, consulte la hoja de datos dsPIC30F4013 .


REGISTRO ADCON1

bit 1 SAMP: bit de habilitación de muestra A / D


1= Al menos un amplificador de muestra / retención A/D está muestreando
0 = amplificadores de muestra / retención A/D están reteniendo
Cuando ASAM = 0, escribir '1' en este bit comenzará a muestrear
Cuando SSRC = 000, escribir "0" en este bit finalizará el muestreo

bit 0 Done(HECHO): bit de estado de conversión A / D (silicio Rev. B o posterior)


1 = la conversión A / D está hecha
0 = NO se realiza la conversión A / D
Autorizado por software o inicio de una nueva conversión
Borrar este bit no afectará ninguna operación en progreso

bit 2 ASAM: bit de inicio automático de muestra A / D


1 = El muestreo comienza inmediatamente después de que se complete la última conversión.
El bit SAMP se configura automáticamente
0 = El muestreo comienza cuando se establece el bit SAMP

bit 3 SIMSAM: bit de selección de muestra simultánea (solo aplicable cuando CHPS = 01 o 1x)
1 = Muestras CH0, CH1, CH2, CH3 simultáneamente (cuando CHPS = 1x) o Muestras CH0 y
CH1 simultáneamente (cuando CHPS = 01)
0 = Muestra múltiples canales individualmente en secuencia

bit 7-5 SSRC <2: 0>: bits de selección de fuente de activación de conversión
111 = El contador interno finaliza el muestreo y comienza la conversión (conversión
automática)
110 = Reservado
101 = Reservado
100 = Reservado
011 = El intervalo PWM de control del motor finaliza el muestreo y comienza la conversión
010 = GP Timer3 compara el final de muestreo y comienza la conversión
001 = La transición activa en el pin INT0 finaliza el muestreo y comienza la conversión
000 = Borrar el bit SAMP finaliza el muestreo y comienza la conversión

bit 9-8 FORM <1: 0>: bits de formato de salida de datos


11 = fraccionado firmado (DOUT = sddd dddd dd00 0000)
10 = fraccional (DOUT = dddd dddd dd00 0000)
01 = Entero firmado (DOUT = ssss sssd dddd dddd)
00 = Entero (DOUT = 0000 00dd dddd dddd)

bit 13 ADSIDL: detener en modo inactivo bit


1 = Suspender el funcionamiento del módulo cuando el dispositivo entra en modo inactivo
0 = Continuar la operación del módulo en modo inactivo

bit 15 ADON: bit de modo de operación A / D


1 = El módulo convertidor A / D está funcionando
0 = el convertidor A / D está apagado

REGISTRO ADCON2

bit 15-13 VCFG <2: 0>: bits de configuración de referencia de voltaje

bit 10 CSCNA: Selecciones de entrada de escaneo para entrada CH0 + S / H para entrada de MUX A Bit
de configuración del multiplexor
1 = entradas de escaneo
0 = No escanear entradas

bit 9-8 CHPS <1: 0>: selecciona canales Bits utilizados


1x = Convierte CH0, CH1, CH2 y CH3
01 = Convierte CH0 y CH1
00 = Convierte CH0

Cuando el bit SIMSAM (ADCON1 <3>) = 0 canales múltiples muestreados secuencialmente


Cuando el bit SMSAM (ADCON1 <3>) = 1 canales múltiples muestreados como en CHPS <1: 0>

bit 7 BUFS: bit de estado de llenado del búfer


Solo válido cuando BUFM = 1 (ADRES dividido en 2 búferes de 8 palabras).
1 = A / D está llenando actualmente el búfer 0x8-0xF, el usuario debe acceder a los datos en 0x0-0x7
0 = A / D está llenando actualmente el búfer 0x0-0x7, el usuario debe acceder a los datos en 0x8-0xF

bit 5-2 SMPI <3: 0>: muestra / convertir secuencias por bits de selección de interrupción
1111 = Interrumpe al finalizar la conversión para cada 16a muestra / secuencia de conversión
1110 = Interrupciones al finalizar la conversión para cada 15a muestra / secuencia de
conversión
.....
0001 = Interrumpe al finalizar la conversión para cada segunda muestra / secuencia de
conversión
0000 = Interrumpe al finalizar la conversión para cada muestra / secuencia de conversión

bit 1 BUFM: bit de selección de modo de búfer


1 = Buffer configurado como dos buffers de 8 palabras ADCBUF (15... 8), ADCBUF (7... 0)
0 = Buffer configurado como un buffer de 16 palabras ADCBUF (15... 0)

bit 0 ALTS: bit de selección de modo de muestra de entrada alternativa


1 = Utiliza la configuración del multiplexor de entrada MUX A para la primera muestra, luego alterna
entre la entrada MUX B y MUX A configuración del multiplexor para todas las muestras posteriores
0 = Utilice siempre la configuración del multiplexor de entrada MUX A
REGISTRO ADCON3

bit 12-8 SAMC <4: 0>: bits de tiempo de muestreo automático


11111 = 31 TAD
·····
00001 = 1 TAD
00000 = 0 TAD (solo permitido si se realizan conversiones secuenciales usando más de un amplificador S
/ H)

bit 7 ADRC: bit de fuente de reloj de conversión A / D


1 = reloj RC interno A / D
0 = Reloj derivado del reloj del sistema

bit 5-0 ADCS <5: 0>: bits de selección del reloj de conversión A / D
111111 = T CY / 2 • (ADCS <5: 0> + 1) = 32 • TCY
······
000001 = TCY / 2 • (ADCS <5: 0> + 1) = TCY
000000 = TCY / 2 • (ADCS <5: 0> + 1) = TCY / 2

ADCHS: Registro de selección de canal de entrada A / D

bit 15-14 CH123NB <1: 0>: Canal 1, 2, 3 Selección de entrada negativa para bits de
configuración del multiplexor MUX B Misma definición que los bits 6-7 (Nota)

bit 13 CH123SB: Canal 1, 2, 3 Selección de entrada positiva para el bit de configuración del
multiplexor MUX B Misma definición que el bit 5 (Nota)

bit 12 CH0NB: Selección de entrada negativa del canal 0 para el bit de configuración del
multiplexor MUX B Misma definición que el bit 4 (Nota)

bit 11-8 CH0SB <3: 0>: canal 0 Selección de entrada positiva para bits de configuración del
multiplexor MUX B Misma definición que los bits 3-0 (Nota)

bit 7-6 CH123NA <1: 0>: Canal 1, 2, 3 Selección de entrada negativa para MUX A Multiplexor Bit de
configuración
11 = La entrada negativa CH1 es AN9, la entrada negativa CH2 es AN10, la entrada negativa CH3 es
AN11
10 = La entrada negativa CH1 es AN6, la entrada negativa CH2 es AN7, la entrada negativa CH3 es AN8
0x = CH1, CH2, CH3 entrada negativa es V ÁRBITRO-

bit 5 CH123SA: Canal 1, 2, 3 Selección de entrada positiva para MUX A Bit de configuración del
multiplexor
1 = La entrada positiva CH1 es AN3, la entrada positiva CH2 es AN4, la entrada positiva CH3 es AN5
0 = La entrada positiva CH1 es AN0, la entrada positiva CH2 es AN1, la entrada positiva CH3 es AN2

bit 4 CH0NA: Selección de entrada negativa del canal 0 para el bit de configuración del multiplexor
MUX A
1 = La entrada negativa del canal 0 es AN1
0 = La entrada negativa del canal 0 es VÁRBITRO-

bit 3-0 CH0SA <3: 0>: Canal 0 Selección de entrada positiva para MUX A Multiplexor Bit de
configuración
1111 = La entrada positiva del canal 0 es AN15
1110 = La entrada positiva del canal 0 es AN14
1101 = La entrada positiva del canal 0 es AN13
•••
0001 = La entrada positiva del canal 0 es AN1
0000 = La entrada positiva del canal 0 es AN0

Nota: El multiplexor de entrada analógica admite dos configuraciones de configuración de


entrada, denominadas MUX A y MUX B.
 ADCHS <15: 8> determina la configuración de MUX B,
 ADCHS <7: 0> determina la configuración para MUX A.
Ambos conjuntos de bits de control funcionan de manera idéntica.

REGISTRO ADPCFG: Registro de configuración de puerto A / D

bit 15-0 PCFG <15: 0>: bits de control de configuración de pin de entrada analógica
1 = Pin de entrada analógica en modo digital, entrada de lectura de puerto habilitada, entrada multiplexor
de entrada A / D conectada a AVSS
0 = Pin de entrada analógica en modo analógico, entrada de lectura de puerto deshabilitada, voltaje de pin
de muestras A / D
ADC del DsPIC
El ADC convierte una señal física (usualmente voltaje) en una cantidad digital que
representa amplitud. Nuestro DsPIC  tiene más de 32 canales de ADC que pueden ser
configurados de 10 y 12 bits.

Características del ADC


ADC de 10-bit
 Conversión por aproximaciones sucesivas
 Velocidad de conversión 1.1 Msps
 Modo de Scan automático de los canales del ADC
 Voltaje de referencia externo en los pines de entrada
 Muestreo simultaneo de más de 4 entradas analógicas
 Cuatro opciones de lectura (con signo/sin signo, fraccional/integrado)

ADC de 12-bit
En esta configuración de 12-bit, tiene las mismas características que en 10-bits a
excepción de las siguientes:

 En la configuración de 12-bit, la velocidad de conversión es de más de 500 ksps


es soportado.
 En la configuración de 12-bit el amplificador mantiene solo una muestra, así que
el muestreo simultáneo de múltiples canales no la soporta.
Material
 8 LEDs Amarillos 
 Protoboard 
 Eliminador 5V  
 Cables Jumper Macho a Macho 
 Potenciómetro de 1KΩ  
 8 Resistencias de 330 Ω 
 Pickit 2 
.
Diagrama de Conexiones

Diagrama de conexión, Puerto E como salida y ADC A0 para la lectura analógica.

#include "xc.h"
#define FCY 8000000ULL // FCY = FOSC/2
#include <p33FJ32MC202.h>;
// Biblioteca con las MACROS y definiciones para el dsPIC
#include libpic30.h&gt;
// Biblioteca para hacer uso de los retardos "
__delay_xx"
_FICD(JTAGEN_OFF &amp; ICS_PGD1);
// Seleccionar el canal 1 de los pines de programacion PGD
_FWDT(FWDTEN_OFF) // Deshabilitar el watchdogtimer
_FOSC(OSCIOFNC_OFF &amp; POSCMD_NONE)
// Deshabilitadas entradas externas de reloj
_FOSCSEL(FNOSC_FRCPLL) // Habilitar oscilador interno FRC con PLL

//int main(void); // Declaración de funciones


void adc1 (void);
int main(void)
{
CLKDIVbits.FRCDIV = 0; // Divisor del FRC (valor por defecto)
CLKDIVbits.PLLPRE = 0; // Divisor previo al PLL 0="/2" a
512="/128"
CLKDIVbits.PLLPOST = 0; //Divisor posterior al PLL 0="/2" a 3="/8
PLLFBD = 41; // Multiplicador 41="*43"
while(!OSCCONbits.LOCK); // Esperar que el PLL este listo
TRISE=0X0000; // Puerto E como salida
adc1(); // Llama función para inicializar el ADC
AD1CON1bits.ADON = 1; // Habilita ADC

while(1){
AD1CON1bits.SAMP = 1; // Bit para habilitar muestreo
__delay_ms(30) ;
AD1CON1bits.SAMP = 0; // Retiene el muestreo
while(!AD1CON1bits.DONE); // Esperar a que se haya realizado la convercion
PORTE=ADC1BUF0; // Datos se guardan en ADC1BUF0 y se envía al puerto E
__delay_ms(200);
}
}

void adc1 (void)


{
TRISB = 0x0001; // Entrada analógica RA0
AD1PCFGL = 0xFFFE; // Todas entradas analógicas *Solo se necesita la primera
AD1CON1bits.AD12B=1; // 1=12 bits resolución y muestreo secuencial de los canales

AD1CON1bits.ASAM=0; // El muestreo inicia cuando bit SAMP=1 *muestreo manual


AD1CON1bits.SSRC=0; // Termina el muestreo e inicia la conversión

AD1CHS0bits.CH0NA =0; // La entrada negativa será Vss


AD1CHS0bits.CH0SA =0; // Entrada positiva será AN0

AD1CON2bits.CSCNA =0; // Muestreo secuencial (scan) deshabilitado


AD1CON2bits.VCFG =0; // Referencia para la conversión: Referencia
// positiva=AVdd, Negativa=AVss

AD1CON2bits.BUFM =0; // Configurado como buffer de 16 palabras


AD1CON2bits.SMPI =0; // Después de la conversión se genera la interrupción
AD1CON2bits.ALTS =0; // Solo muestra un Canal
AD1CON3bits.ADRC =0; // Reloj del ADC es derivado del sistema
AD1CON3bits.ADCS =21; // Tiempo de conversión.

También podría gustarte