Autor Tema: Duda LM92 y CCS  (Leído 3560 veces)

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

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Duda LM92 y CCS
« en: 12 de Febrero de 2012, 08:41:16 »
Hola a todos. Estoy haciendo pruebas con un sensor de temperatura I2C.
Se trata de un LM92.
Resulta que tengo muy poca experiencia con los microcontroladores y apenas acabo de empezar en esto, vamos que soy totalmente novato.

La duda es muy simple, no se si el código y la medición son correctas. ¿Alguien ha probado este sensor?. He visto ejemplos en otros lenguajes pero no en CCS.

Por favor, si alguien pudiera revisar el codigo o alguien que me pueda dar una idea de como comprobar que la medición es correcta me sería de gran ayuda.
Ya estoy pensando en montar otro sensor al lado a ver que pasa.

Otra pregunta: ¿me podrian decir como rellenar con ceros a la izquierda el entero y ceros a la derecha los decimales?

Muchas gracias de antemano.



Código: [Seleccionar]
i2c_start();  
      i2c_write(LM92_I2C_WRITE_ADDR);
      i2c_write(LM92_TEMP_REG_ADDR);      //Selecciona registro de temperatura del LM92      
      i2c_start();
      i2c_write(LM92_I2C_READ_ADDR);
      tempHight = i2c_read();
      i2c_start();
      tempLow = i2c_read();
      i2c_stop();
      tempLow = tempLow >> 3;
      temp = (float) tempLow * 0.0625;
      temp = tempHight + temp;
      if (bit_test(tempHight,7)){    // Si el el bit 7 es 1 (temperatura bajo cero)
         temp = -temp;              // le cambiamos el signo (positivo >> negativo)
      }  
      lcd_gotoxy(1,2);
      printf(lcd_putc,"%06.3f",temp);            
      delay_ms(500);  



Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #1 en: 12 de Febrero de 2012, 08:43:28 »
Se me olvidaba decir que esto es el while principal, el resto son declaraciones que si es necesario lo posteare

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: Duda LM92 y CCS
« Respuesta #2 en: 12 de Febrero de 2012, 16:07:00 »
¿Lo has probado? ¿te da algún problema?
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #3 en: 12 de Febrero de 2012, 16:22:20 »
¿Lo has probado? ¿te da algún problema?

Lo he probado y me muestra en el LCD los valores, pero... ¿son correctos?. No son ningun disparate desde luego.
Le doy vuentas al asunto y no se si existe un error. Me explico:
El sensor me devuelve dos bytes, de los cuales los 3 de menor peso los elimino por que no sirven y el de mas peso me da el signo siendo 1 si la medicion es negativa. Trato por separado los nibles alto y bajo y despues los sumo, pero... ¿debería restarlo si la medicion es negativa (bajo cero)?

Gracias por contestar

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: Duda LM92 y CCS
« Respuesta #4 en: 12 de Febrero de 2012, 17:22:26 »
Yo no los sumaria, si no que teniendo los dos bytes crearía una variable de 16bits y asignaría tempLow  a los 8 bits de la parte baja y tempHight a los 8bits de la parte alta.

Código: [Seleccionar]
signed int16 tem;
temp = tempLow << 8;
temp = tempHight >> 8;

y luego, para ver el signo puedes usar la funcion

Código: [Seleccionar]
value = bit_test (var, bit) si es 1 es negativo y si es 0, positivo.

Prueba a calentar el sensor con la mano  y meterlo o acercarlo en la nevera o congelador, así compruebas si funciona correctamente.

Ya comentarás, saludos.
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #5 en: 12 de Febrero de 2012, 18:24:41 »
Al acercarle calor va aumentando la temperatura, pero es sumamente lento, hasta ahora he probado un lm35, un tcn75 y este lm92, y parece ser la tónica general, lentitud en las mediciones, es decir, si le acerco la punta del soldador, que debe estar como a ¿170ºC? tarda una eternidad en aumentar la temperatura (no espero a que llegue a tal temperatura ni mucho menos), va aumentando muy lentamente, pero si es lo que hay...

Esto:
signed int16 tem;
temp = tempLow << 8;
temp = tempHight >> 8;

es lo mismo que esto verdad:
temp = make16(tempHight,tempLow);

Perdon por la insistencia en el tema, pero me gustaria saber con que tipo de sensor puedo obtener una temperatura "inmediata", es decir, si le acerco un objeto a 80ºC, quiero saberlo inmediatamente (dentro de unos limites, (ya recuerdo aquello de "calor cedido=calor ganado" etc...), es para otro proyecto que tengo en mente, para este ya me vale con este sensor. Gracias de antemano.

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: Duda LM92 y CCS
« Respuesta #6 en: 12 de Febrero de 2012, 18:41:22 »
Sip, es lo mismo, puedes usar make16().

Estos sensores son lentos, pero ten en cuenta que la medición de la temperatura es un proceso lento. No es que el sensor sea lento de por si, si no que la temperatura que captan tarda en variar, sobre todo en espacios abiertos. Ademas, el encapsulado tambien tiene que ver, ya que si haces la prueba de presionar con los dedos el sensor, tambien tarda lo suyo en calentarse. Si miras teoría de control de sistemas, el control de temperatura es el de menos critico, pudiéndose realizar mediciones hasta cada 3 segundos.

En resumidas cuentas, es normal ese retraso de temperatura  :D

En medidas profesionales de medida de temperatura en hornos industriales, etc, se usa siempre termopares, si es tu caso deberías pensar en ello, si no, olvídate, son carisimos y para aplicaciones domesticas estos sensores captan bien la temperatura.
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #7 en: 12 de Febrero de 2012, 19:11:23 »
Este sensor es para un dispositivo de adquisicion de datos y no es necesaria velocidad en las mediciones por que se supone que no habrá grandes variaciones de temperatura, pero tengo en mente hacer un horno y si que tendré que buscar un termopar. Los he visto muy baratos en ebay, tanto que dudo de su calidad.
Gracias por las respuestas.

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #8 en: 13 de Febrero de 2012, 11:06:49 »
Que tal este termopar o este. Con 8 metros podemos hacer varios termopares mas cortos

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: Duda LM92 y CCS
« Respuesta #9 en: 13 de Febrero de 2012, 12:50:47 »
Necesitarás un IC de interface entre el micro y el TC. Los he visto de tipo J y K. Busca por analog o st....
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #10 en: 13 de Febrero de 2012, 14:31:04 »
Necesitarás un IC de interface entre el micro y el TC. Los he visto de tipo J y K. Busca por analog o st....

Supongo que esto será lo caro, por que los sensores no me lo parecen

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: Duda LM92 y CCS
« Respuesta #11 en: 14 de Febrero de 2012, 06:35:33 »
Bueno, depende de tu nivel adquisitivo  :D Tambien me olvidaba mencionar que nosotros trabajabamos con TC certificados, es decir, calibrados en un rango, y claro, eso elevaba el precio que para que os hagais una idea venia a ser unos 3000€ por 200metros. Si pillas un metro de un fabricante chino por ebay...xD no tiene nada que ver.
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #12 en: 14 de Febrero de 2012, 07:01:39 »
Bueno, depende de tu nivel adquisitivo  :D Tambien me olvidaba mencionar que nosotros trabajabamos con TC certificados, es decir, calibrados en un rango, y claro, eso elevaba el precio que para que os hagais una idea venia a ser unos 3000€ por 200metros. Si pillas un metro de un fabricante chino por ebay...xD no tiene nada que ver.

Un desembolso importante, pero 3000€ por 200metros tampoco es muy caro el costo por metro, me refiero a que una medicion de temperatura en un proceso que requiera precision, es seguro que 15€ por metro es un costo perfectamente asumible, para mi, para el horno que quiero hacer (para soldar smd) me valdrá con el chino de ebay, y mas ahora que cobré de beruby por paypal, no es mucho pero cobrar por no hacer nada está bien jejejeje

Por cierto ya pedí samples de MAX31855

Desconectado alperez

  • PIC18
  • ****
  • Mensajes: 255
Re: Duda LM92 y CCS
« Respuesta #13 en: 15 de Febrero de 2012, 09:05:49 »
Yo no los sumaria, si no que teniendo los dos bytes crearía una variable de 16bits y asignaría tempLow  a los 8 bits de la parte baja y tempHight a los 8bits de la parte alta.

Código: [Seleccionar]
signed int16 tem;
temp = tempLow << 8;
temp = tempHight >> 8;

y luego, para ver el signo puedes usar la funcion

Código: [Seleccionar]
value = bit_test (var, bit) si es 1 es negativo y si es 0, positivo.

Prueba a calentar el sensor con la mano  y meterlo o acercarlo en la nevera o congelador, así compruebas si funciona correctamente.

Ya comentarás, saludos.

Vale. Me disponía a probarlo, pero analizando tu propuesta veo que "incluyes" dos variables de 8 bits en una de 16 bits, pero esto me daría un entero de 16 bits no un float (una parte entera y una decimal). La posible solucion seria dividir este valor, pero ¿como sé cuantos decimales debe tener? Es decir dividimos entre 10 o entre 100