Conversor ADC de 16 bits - AD7715

holas , quisiera saber si alguno de ustedes a manejado este tipo de conversor ya en en la web no he encontrado muchos circuitos para guiarme con su uso, este conversor es
programable la ganacia, filtro etc, he trabajado en balanzas y descubri en unas que llevan este integrado , quiero construir una balanza pero primero quiero aser la parte analoga-digital , tengo el datasheet de este chip , mi duda es como guardar los datos obtenidos del conversor despues de calibrarlo con un sensor ? creo que necesito diagrama de flujo algo parecido porque solo se calibrarlo hasta y nomas llego ops:
 
He visto que no hay muchas respuestas sin responder en la web acerca de este dispositivo.
Aquí dejo un ejemplo probado con un PIC16F.

PHP:
void adc_init()        //inicializacion AD7715
{
    //escribe primero sobre registro de comunicacion [ ToWrite Now /Status next/write/Normal/Ganancia 1    ]
    SSPIF=0;
    SSPBUF=0x10;        //Solicitud de escritura sobre Status Register
    while(!SSPIF);        //espera transmision de datos

    //escritura sobre Status register 
    SSPIF=0;
    SSPBUF=0x54;        //[ AutoCalibracion/1MHz/100 Sps/Unipolar/unBuffe/noSync ]
    while(!SSPIF);        //espera transmision de datos
}

void read_adc()
{
    unsigned char byte,upper;
    
    SSPIF=0;            //limpia flag
    SSPBUF=0x08;        //solicitud lectura de Status register
    while(!SSPIF);        //espera escritura y recepcion de dato
    
    SSPIF=0;
    SSPBUF=0x00;        //Escribe para activar reloj en modo lectura
    while(!SSPIF);        //espera recepcion de dato
    byte=SSPBUF;    //carga dato recivido

    byte=byte&0x80;    //se queda con bit 7
    if(byte!=0x00)    //DRDY !=0 aun en espera, 
    { return;} 
        
    //Dato disponible
    SSPIF=0;            //limpia flag
    SSPBUF=0x38;    //solicitud lectura de Data register
    while(!SSPIF);        //espera escritura y recepcion de dato
    
    SSPIF=0;            //limpia flag
    SSPBUF=0;
    while(!SSPIF);        //espera escritura y recepcion de dato
    upper=SSPBUF;
    
    SSPIF=0;            //limpia flag
    SSPBUF=0;         //Escribe para activar reloj en modo lectura
    while(!SSPIF);        //espera recepcion de dato
    byte=SSPBUF;

    Valor.adc=upper*256+byte;    
        
}

(y)
 
Última edición por un moderador:
Atrás
Arriba