Autor Tema: ADS 7812  (Leído 3510 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Hatsu

  • PIC10
  • *
  • Mensajes: 4
ADS 7812
« en: 28 de Abril de 2011, 13:16:30 »
Buenas a todos, necesito realizar una conversion AD serial de 12 bit y tengo disponible el ADS7812; he leido los datos tecnicos y por lo que entedi tendre q generar el DATACLK y el CONV segun este esquema

Uploaded with ImageShack.us
La idea es que generare ambas señales con el PIC16f877A, aun no estoy seguro como nose si con PWM u otra forma.

Mi duda es que la data q sale esta en complemento a 2; pero no veo en el datasheet como identifica el inicio y final de cada muestra de 12 bits. Que es lo q entrara en el uC y se supone q tengo que identificar. Tambien mi duda es que he intentado buscar el ADS7812 en el ISIS Proteus; pero me parece q no esta. Si hubiera aguien tuviera disponible el link de esa libreria seria de gran ayuda.

Bueno agradezco todo apoyo, recomendacion y critica a lo q tengan experiencias con este conversor.

Saludos

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: ADS 7812
« Respuesta #1 en: 28 de Abril de 2011, 13:47:08 »
Mirándolo rápidamente me parece que,  al dispositivo generándole un flanco descendente en CONV se le indica que comience la conversión, y BUSY se mantiene a nivel bajo durante el proceso de conversión. Luego el dato ya está disponible y se debe generar 12 clock para obtener los 12-bist, de los cuales el primer enviado es el MSB. También entra ej juego el pin CS que tiene que estar a nivel bajo para seleccionar el dispositivo.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: ADS 7812
« Respuesta #2 en: 28 de Abril de 2011, 17:25:11 »
El manejo de este conversor es simple, le das el start, esperas un tiempo corto y con un tren de 16 pulsos recibes los datos seriales por el data.
Yo trabaje con este IC pero tube algunos problemas por inestabilidad y por costos, me pasé el ADS1100, es excelente, no requiere componentes externos, fuente sencilla a 5v, I2C, recibe señales negativas, 16 bit y lo mejor a una quinta parte del costo.

Saludos.

Acá te coloco un código que hice entonces para controlarlo, está en asm.

Código: [Seleccionar]
sen_peso_to call t_104Ms2
bcf porte,ad_st ;RUTINA QUE SENSA EL RESULTADO DEL
nop ;CONVERSOR AD EXTERNO QUE SENSA EL
nop ;PESO
nop
call tiem_conv
bsf porte,ad_st
call tiem_conv

clrf conver_a
clrf conver_b

movlw d'16'
movwf respaldo

otro_bit bsf porte,ad_ck
call t_104Ms2
bcf porte,ad_ck
call t_104Ms2

btfss porte,ad_da
bcf status,c
btfsc porte,ad_da
bsf status,c

rlf conver_b,f
rlf conver_a,f
decfsz respaldo,f
goto otro_bit

Desconectado Hatsu

  • PIC10
  • *
  • Mensajes: 4
Re: ADS 7812
« Respuesta #3 en: 29 de Abril de 2011, 07:28:02 »
Gracias a ambos por su respuesta tan rápida, mi duda es mas especificamente para ti Diego E. ya q tienes experiencia trabajando con este conversor.

En esta porción de código generas el pulso t1(de la figura) del CONV , correcto? mi duda es porq el número 16 o es para el otro conversor ADS1100
Código: [Seleccionar]
sen_peso_to call t_104Ms2
bcf porte,ad_st ;RUTINA QUE SENSA EL RESULTADO DEL
nop ;CONVERSOR AD EXTERNO QUE SENSA EL
nop ;PESO
nop
call tiem_conv
bsf porte,ad_st
call tiem_conv

clrf conver_a
clrf conver_b

movlw d'16'
movwf respaldo
   
   
En las 4 primera lineas generas    el pulso de CLK para el primer bit,cierto?. De ahi no me queda muy claroa partir de la 5ta linea; solo asumo q repites 16 veces para obtener los pulsos de CLK. Y me parece q tas leyendo ya el primer bit de dato con el BTFSS y BTFSC lo del desplazamiento si no lo tengo claro.
Código: [Seleccionar]
otro_bit bsf porte,ad_ck
call t_104Ms2
bcf porte,ad_ck
call t_104Ms2

btfss porte,ad_da
bcf status,c
btfsc porte,ad_da
bsf status,c

rlf conver_b,f
rlf conver_a,f
decfsz respaldo,f
goto otro_bit

Bueno acerca de que comentabas la inestabilidad, parece q tendre q tener mucho cuidado con esos condensadores entonces . Gracias a todos de antemano por responder.

Saludos

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: ADS 7812
« Respuesta #4 en: 29 de Abril de 2011, 09:42:31 »
Hola amigo, lo de los 16 bit es porqué en algún momento utilicé el ADS7813 que sí es de 16 bit, para el 7812 se requiero sólo 12 pulsos.
Para la otra inquietud no sé que experiencia tengas con assembler pero lo que se hace es:

Generar el pulso de reloj:
bsf   porte,ad_ck
call   t_104Ms2
bcf   porte,ad_ck
call   t_104Ms2

Preguntar que bit entrega el conversor en este instante, este bit es llevado al carry para luego cargarlo en un registro.
btfss   porte,ad_da
bcf   status,c
btfsc   porte,ad_da
bsf   status,c

Llenar dos registros de 8 bit con los bit recibidos del conversor, estos bit se recogen del carry, esto para formar 12 ó 16 bit.
rlf   conver_b,f
rlf   conver_a,f
decfsz   respaldo,f
goto   otro_bit

luego el dato final queda así: valor del conversor será igual a conver_a-conver_b

Nota: si utilizas lenguaje C todo será más fácil.

Saludos.

Desconectado cristian_elect

  • PIC18
  • ****
  • Mensajes: 453
Re: ADS 7812
« Respuesta #5 en: 29 de Abril de 2011, 12:49:02 »
Consiguete un pic18f2553

Desconectado Hatsu

  • PIC10
  • *
  • Mensajes: 4
Re: ADS 7812
« Respuesta #6 en: 30 de Abril de 2011, 07:45:24 »
Gracias a todos por responder mis duda voy a empezar a programar en C, y bueno usare el 16F877A  más q todo por me lo pasaron  :D

Mas adelante comentare los resultado y mis posibles problemas y dudas.

Saludos

Desconectado Hatsu

  • PIC10
  • *
  • Mensajes: 4
Re: ADS 7812
« Respuesta #7 en: 19 de Mayo de 2011, 08:31:42 »
Buenas a todos, hace un par de dias retome el trabajo en el ADS78 y bueno tuve algunos inconvenientes. Genere sin problemas los pulsos el CONV(34us aprox.  bajo y 10us alto) y el DATACLOCK(1us alto y 1us bajo)  Adjunto la figura de  lo q genero con el PIC16F877A confirmado con el multimetro real. Sin embargo cuando meto una onda senoidal de 3V en la entrada de conversor esperaba q salieran al menos pulsos(0's y 1's) en la salida del conversor; DATA, lo q no sucede.

He programado con el PIC C,finalizado un pulso de DATACLOCK leia la entrada RB1(en mi programacion) y luego intentaba obtener el valor decimal de los 12 bits q recibia para enviarlo por hyperteminal. Adjunto el codigo para ver si alguien me hace ver algun error q no veo, por cierto lo he compilado y no he obtenido errores.

Saludos y gracias de antemano.


Código: [Seleccionar]

int dato;
int i;
int16 Ac=0;

void  pulse (void){
DATACLK=1;
delay_us(1);
DATACLK=0;
delay_us(1);
}


void main(){
   port_b_pullups(TRUE);
   set_tris_B(0x02);
   
   while(1)
   {
   if(CONV==1){
      CONV=0;
      delay_us(10);
      for (i=1;i<=12;++i){
         pulse();
         dato=DATA;
         Ac=Ac+dato*2^(12-i);
      }
     
   }   
   else{
      CONV=1;
      delay_us(10);}
   }
 printf("%Lu", Ac);
 
}









 

anything