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.

Caracteristicas 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

NOTA: La tarjeta de desarrollo con el DsPIC estará próximamente a la venta, actualmente se están haciendo  sin embargo los códigos de ejemplo les pueden servir para los Circuitos integrados de empaquetado DIP, por lo que también pueden probarlo en Protoboard.

Diagrama de Conexiones

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

Código:

[code language=»cpp»]
/*
Herramientas Tecnológicas Profesionales
HeTPro
contacto@hetpro.com.mx

*/
#include "xc.h"
#define FCY 8000000ULL // FCY = FOSC/2

//#include <p33FJ128MC802.h> // Biblioteca con las MACROS y definiciones para el dsPIC
//#include <p33FJ32MC202.h> // Biblioteca con las MACROS y definiciones para el dsPIC
#include <libpic30.h> // Biblioteca para hacer uso de los retardos "__delay_xx"

_FICD(JTAGEN_OFF & ICS_PGD1); // Seleccionar el canal 1 de los pines de programacion PGD
_FWDT(FWDTEN_OFF) // Deshabilitar el watchdogtimer
_FOSC(OSCIOFNC_OFF & 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.
}
[/code]

Imágenes de funcionamiento

ADC DsPIC
Imagen 2. Lectura analógica se esta mostrando en el Puerto E en Bits

Enlaces de interés

Pagina de Tutoriales HeTPro

https://hetpro-store.com/TUTORIALES/

Tutorial DsPIC33FJ128GP710 Blink con LED RGB

https://hetpro-store.com/TUTORIALES/tarjeta-de-desarrollo-con-dspic33fj128gp710/

IDE MPLAB
http://www.microchip.com/pagehandler/en-us/family

Compilador
http://www.microchip.com/pagehandler/en_us/devtools/mplabxc/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *