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:

/* 
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. 
} 

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/

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.