Autor Tema: configuracion del sensor tc1047  (Leído 5275 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
configuracion del sensor tc1047
« en: 14 de Abril de 2009, 19:06:57 »
estoy trabajando con una placa de desarrollo y tengo que configurar mi sensor de temperatura que es un tc1047. Su manual dice que ltengo que programar el conversor analogico a digital con referencia externa. Como se haria mediante programa lo estoy haciendo en ccs o bien me podrian dar algun hilo para que me sirva de guia. Gracias   
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: configuracion del sensor tc1047
« Respuesta #1 en: 15 de Abril de 2009, 04:05:50 »
Justamente yo estoy trabajando con el TC1047A, pero lamentablemente en ASM.

Cuando logres habilitar el conversor AD en C te cuento el truquillo que he hecho para convertir la medición :

Con una referencia externa de 2,56v (lo puedes hacer con un LM336z 2,5 y ajustarlo a 2,56) y con la resolución a 8 bits te daría 01h / ºC (ideal para un LM35) . Entonces , cuando leo el ADRESH  le resto 50 decimal para equiparar con el TC1047A y miro si me ha dado un valor negativo , en ese caso invierto totalmente el valor con un COMF y le sumo 1.
De esta manera me queda exactamente todo el rango de temperatura del TC1047C

MOVLW .50
SUBWF ADRESH,1   ;LE RESTAMOS 50 PARA EQUIPARAR. Y SI LA RESTA DA UN NUMERO NEGATIVO
BTFSS ADRESH,7 ; EL BIT 7 ESTARÁ A 1, ENTONCES TENDREMOS UN RANGO ENTRE +127 Y -128
GOTO SALTEA     ;NO DIO NEGATIVO, SALTEAMOS


ESNEGATIVO
;ES NEGATIVO
COMF ADRESH ;HACEMOS SU COMPLEMENTO
INCF ADRESH,1 ;LE SUMAMOS 1

SALTEA
;sigue programa Y MUESTRA EL RESULTADO EN LCD, ETC ETC

Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #2 en: 15 de Abril de 2009, 17:12:35 »
Como podria sumar diez o n valores de la adquisicion , y sacar el promedio para despues mostrarlo por un lcd
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: configuracion del sensor tc1047
« Respuesta #3 en: 16 de Abril de 2009, 00:29:06 »
Hola.

Podria ser algo asi:

Código: C#
  1. for(i=0;i<NumMedidas;i++)
  2.  value[i]=read_value();
  3.  
  4. for(i=0;i<NumMedidas;i++)
  5.  ValorTotal +=  value[i]
  6.  
  7. Valor = ValorTotal/NumMedidas;

La variable value[] debe tener una dimension de NumMedidas+1

Saludos
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #4 en: 20 de Abril de 2009, 17:45:03 »
Tengo que configurar el pic16f887 para trabajar con un sensor de temp tc1047 con referencia externa. como  le digo al conversor que trabaje entre cero y vref, la señal del sensor entra por el Pin A5 y la de refernecia por el A3. Como seria la letura enta situacion, sería una lectura directa voltaje -temmperatura?
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: configuracion del sensor tc1047
« Respuesta #5 en: 20 de Abril de 2009, 21:40:00 »
Hola.

Pues usa la funcion set_adc_channel() para configurar los puertos. Lo de la medida, lee bien la hoja tecnica del sensor, ahi debe estar especificada la funcion de transferencia.
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #6 en: 21 de Abril de 2009, 18:31:10 »
Gracias MLO.
Con esta línea de programa (setup_adc_ports(AN0_AN1_AN2_AN4_AN5_VSS_VREF);)le digo al  pic para tengo tension de referencia externa por AN3 . Ok.
Ahora esta tension de ref donde la utilizo para obtener mi temperatura.  Antes la tension de ref interna  era de 5 volt y con ella sacaba la resolucion la que despues multiplicaba con el valor leido del adc de esta forma

tempvolt= valor * resolucion  (me dá un voltaje aproximado de 0,65v que corresponde de acuerdo a  la hoja de caraceristicas del sensor a 18ºC aproximadamente.con esto ningun problema )

Mi pregunta es: Donde tengo que tener en cuenta mi tensión de referencia o como modifico la ecuacion que me da el voltaje que se correponde con la temp.
Gracias 
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: configuracion del sensor tc1047
« Respuesta #7 en: 22 de Abril de 2009, 00:02:27 »
Ok.

Res = \frac{V_{ref}}{2^{n}}

Donde:

Res: Resolucion del ADC en Volt/bit
n : Numeros de bits del conversor (8, 10, etc)

Saludos
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #8 en: 25 de Abril de 2009, 01:27:40 »
Gracias MLO, todo OK.
Otra pregunta: Como podria hacer que con dos pulsadores podria elegir el de selecionar una funcion u otra Como por eejmplo si acciono A0 hacer una esritura en mem externa y si es A1 la lectura de la mem externa. Necesitaria una pista solamente tengo algo diseñado pero no me funciona
Gracias
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: configuracion del sensor tc1047
« Respuesta #9 en: 25 de Abril de 2009, 14:01:51 »
Hola.

Se me ocurre un if().
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #10 en: 27 de Abril de 2009, 15:11:01 »
Gracias MLO, tengo estas líneas de programa utilizandio IF y no puedo saltar a ninguna de las funciones que deseo hacer. ¿ que es lo que puede estar pasando?
Te paso las lineas para que le sches un miro Ok?

//PROGRAMA PRINCIPAL
void main()               
{
lcd_init();
delay_ms(6);
while(TRUE) 
 {   
delay_ms(500); 
lcd_gotoxy(1,1);
printf(lcd_putc,"Write Mem A0");
lcd_gotoxy(1,2);
printf(lcd_putc,"Read Mem A1");

if(input (PIN_A0))                //Si se pulsa A0...
{                                 
while(!input(PIN_A0))            //elimina rebotes 
escribir();                        //....va funcion escribir
}
if(input(PIN_A1))                //....Si se pulsa A1
{                                 
while(!input(PIN_A1))            //elimina rebotes 
leer();                          //va funcion leer
}                     
}
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: configuracion del sensor tc1047
« Respuesta #11 en: 27 de Abril de 2009, 15:58:51 »
Hola.

Lo que pasas es que tienes un delay de 500mS dentro del while(true) y deberias tener muy buena punteria para atinarle justo a las lineas de codigo que evaluan el estado del pulsador. Te recomiendo que saques fuera del while los mensajes de la LCD y dejes dentro del ciclo while solo la verificacion del estado de los pulsadores.

Saludos
El papel lo aguanta todo

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #12 en: 27 de Abril de 2009, 16:25:59 »
Gracias mlo va caminando
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #13 en: 27 de Abril de 2009, 18:38:37 »
Otra mano  mlo
Guardo en memoria los valores 0xff y oxfe: como pdria hacer para leerla, esta es la funcion que implemente pero no visualizo esto valores en hexa

void leer(void){
int dir=0;   

lcd_putc("f>>>Leyendo..." ) ;
    for(dir=0;dir<2;dir++){         //bucle para leer mensajes en eeprom externa y muestra por lcd
      printf(lcd_putc," %d ~ %s",dir,read_ext_eeprom(dir) ) ;
      delay_ms(500);                  //retraso para que se vea en pantalla los mensajes
            }
Gracias
Si quieres trascender..., enseña humildemente  lo que sabes.

Desconectado kidpic

  • PIC16
  • ***
  • Mensajes: 231
Re: configuracion del sensor tc1047
« Respuesta #14 en: 27 de Abril de 2009, 20:19:10 »
Solucionado el tema muchachos!  Posteo lo corregido:
 
valor=read_ext_eeprom(dir);
      printf(lcd_putc," %x",valor);
Gracias de todos modos
Si quieres trascender..., enseña humildemente  lo que sabes.


 

anything