TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kidpic en 14 de Abril de 2009, 19:06:57

Título: configuracion del sensor tc1047
Publicado por: kidpic 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   
Título: Re: configuracion del sensor tc1047
Publicado por: pibe 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

Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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
Título: Re: configuracion del sensor tc1047
Publicado por: MLO__ 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
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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?
Título: Re: configuracion del sensor tc1047
Publicado por: MLO__ 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.
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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 
Título: Re: configuracion del sensor tc1047
Publicado por: MLO__ 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
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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
Título: Re: configuracion del sensor tc1047
Publicado por: MLO__ en 25 de Abril de 2009, 14:01:51
Hola.

Se me ocurre un if().
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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
}                     
}
Título: Re: configuracion del sensor tc1047
Publicado por: MLO__ 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
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic en 27 de Abril de 2009, 16:25:59
Gracias mlo va caminando
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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
Título: Re: configuracion del sensor tc1047
Publicado por: kidpic 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
Título: Re: configuracion del sensor tc1047
Publicado por: MLO__ en 28 de Abril de 2009, 02:11:03
Ok.

En la ayuda del CC$ estan todos los posibles formatos de visualizacion con printf();