Autor Tema: Calculo de una temperatura con decimas  (Leído 5909 veces)

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

Desconectado Limbo

  • PIC10
  • *
  • Mensajes: 44
Calculo de una temperatura con decimas
« en: 23 de Marzo de 2015, 18:26:19 »
Hola buenas,

Estoy con un proyecto de un medidor de temperatura de 4 sondas PT1000 de platino  o mas, esta todavia por ver.
La parte análogica de la medicion del sensor esta controlada, y el resto no tengo problema.
Lo que nunca he hecho es transformar un valor analogico a una unidad real.

De analogico a digital no tengo problema, el problema me surge al transformar el valor digital a la unidad real ¿Como hago para transformarlo?

Teneis algun pdf o web que explique cual es el proceso?Sino me valdria con alguna ayudita por aqui.

Graciass.
Saludos!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Calculo de una temperatura con decimas
« Respuesta #1 en: 23 de Marzo de 2015, 19:51:50 »
Exisen varias formas, una es recurrir al datasheet del mismo fabricante, tomar los valores a distintas temperaturas y tratar de crear una funcion  ( lo mejor es que sea lineal por su simpleza ) de tal forma que represente a todos los puntos
Una regresion lineal:
http://es.wikipedia.org/wiki/Regresi%C3%B3n_lineal

O de ultima si queres agregar mas precision por que se aleja mucho del valor real podes hacer una regresion polinomica.
Esto lo podes hacer con muchas cosas, como excel, el wolfram alpha que es online, etc

Si no algunos farbicantes ya te dan las formulas:

http://www.km.kongsberg.com/ks/web/nokbg0397.nsf/AllWeb/A707D00EE0F558D6C12574E1002C2D1C/$file/tsiec751_ce.pdf?OpenElement

- for the range 0 °C to 850 °C:
Rt  = R0 [1 + At + Bt^2]

A = 3.9083 x 10-3 °C -1
B = -5.775 x 10-7 °C -2

Observaras que son unidades muy pequeñas, podrias despreciar B y te queda una ecuacion linea, despejas t, y la funcion te queda en funcion de la Resistencia medida, pero vos medis tension.
Deberias tener una ecuacion que transforme esa "tension" en el valor de la "resistencia" reemplazarla y listo :3

EDIT: tal ves me fui un poco del tema. Y no era lo que buscabas.

el ADC te dara un resultado de 0 a 1023 ( si es de 10 bits )
eso reprensenta una tension de 0v a 5V ( si tenes Vref+ a VCC y Vref- a GND )
Asi que ya te queda algo asi:

voltaje = (ADC * 5) /1023

Ahora va a depender del circuito que tengas para el PT1000, si lo tenes amplificado con un AO buscaria que el MAXIMO rango que alcance sea de 5V
La otra que es bastante comun es la de un divisor resistivo, usado en muchas heladeras y Aire Acondicionado, esto va a hacer que sea mas pequeño la variacion, pero podes modificar la Vref+ y Vref- para tener una mejor precision sobre el rango de tension que  de a la salida.

el modificar Vref+ y Vref-, hace que el maxima diferencia que puedas leer sea (Vref+ - Vref-) / 1024 , para no complicarla seguimos con esto

En fin el valor leido ADC va a variar en funcion de la temperatura.
La resistencia varia en con la temperatura, aplicando la formula del divisor resistivo y multiplicado por 5V ya te daria una grafica de voltios en un eje y ºC en el otro.
Aplicas regresion lineal y tenes una funcion en que introducis los voltios y salen los grados centigrados ( ºC / V )

temperatura = [ ADC * 5V / 1023 ] * [ Formula ºC / V ]

                   Te los volts en el ADC   y luego lo convertis a ºC

Y ojo que son variables del tipo float
« Última modificación: 23 de Marzo de 2015, 20:47:45 por KILLERJC »

Desconectado Limbo

  • PIC10
  • *
  • Mensajes: 44
Re: Calculo de una temperatura con decimas
« Respuesta #2 en: 23 de Marzo de 2015, 20:46:50 »
Es decir, sabiendo la corriente que circula por el sensor y su voltaje..... buala! resistencia sabida y po rla formula saco la temperatura :O ((:-))

Otra cuestion,con un pic pic16f876, tengo manera de sacar una resolucion de 0,01ºC

Segun mis calculos serian maximo 0,1 pero no lo tengo claro, hace tiempo qu eno toco ADC

A ver si no me equivoco:
Quiero un rango de -10ºC a 100ºC por lo que el rango serian 110ºC
Tengo una señal previamente tratada que va de 0 a 2,5V por lo que tendria que 2,5V/110ºC = 1/44 =0,0227 (aprox.) Con 10 bits 2,5/1024 =0.00244 (aprox.)
Mi logica me dice que si cada 22,7mV sube un grado y cada 2,44mV se suma un bit, la logica plastante me dice que 22,7/2.44 =9,303 , es decir por cada grado tendre 9,3bits, asi que cada bit seria casi una decima

Esto es correcto??
Si es correcto, como puedo calcular para saber cuantos ºC tengo de error si redondeno el 9,3 a 10 para conseguir decimas de grado?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Calculo de una temperatura con decimas
« Respuesta #3 en: 23 de Marzo de 2015, 23:41:15 »
Primero que nada:

Para que esto de 10:

22,7/2.44 =9,303

Hay 2 formas, o tener una mejor resolucion del ADC asi el valor 2.44 se vuelve mas pequeño
o Aumentar la salida de la señal de 0v a 2.684V ahi si te daria 10bits por cada grado y no tendrias "error". Pero es de notar la dificultad de tener esa tension tanto en Vref+ como de salida del sensor.
Y tambien hay que echarle un ojo a las especificaciones de Vref+ y Vref- en el datasheet ( cual es el maximo y minimo de cada uno y la diferencia )

Ahora podes si redondear a 9 bits por grado, pero esto haria que al valor 1023 ( 2.5V - que vendria a ser los 100ºC )tengas 103.6ºC  ya que el error seria acumulativo.

Para saber cual es el error maximo podrias hacer con un script tomando 9.3 bits lo mas rapido seria hacer un script con amabas formulas y ver cual es el error en cada valor ( pasos de a 0.1º )

Lo que si, si queres un rango de -10ºC a 100ºC por ahi te conviene que tu sensor pueda leer un poco mas que 100, ejemplo 110ºC , ya que sino cualquier valor mayor a 100, marcaria 100ºC ya que el ADC estaria dando una salida de 1023.
Tambien la formula para temperaturas negativas cambia. Igual todo este ejemplo que se nombre se cree que la tension varia de forma linea con la temperatura.

Desconectado Limbo

  • PIC10
  • *
  • Mensajes: 44
Re: Calculo de una temperatura con decimas
« Respuesta #4 en: 24 de Marzo de 2015, 18:11:21 »
Citar
En fin el valor leido ADC va a variar en funcion de la temperatura.
La resistencia varia en con la temperatura, aplicando la formula del divisor resistivo y multiplicado por 5V ya te daria una grafica de voltios en un eje y ºC en el otro.
Aplicas regresion lineal y tenes una funcion en que introducis los voltios y salen los grados centigrados ( ºC / V )

temperatura = [ ADC * 5V / 1023 ] * [ Formula ºC / V ]
Este facor "[ Formula ºC / V ]" de donde lo saco??tengo que sacarla hacinedo medidas?? Necesito decimas de grado.. y necesito una tecnica que me de  precision.. :(

Citar
o Aumentar la salida de la señal de 0v a 2.684V ahi si te daria 10bits por cada grado y no tendrias "error".
Vamos a ver. Si tengo un rango de 0 a 2,684V entre -10 y 110 grados, la vref deberia de ser 2,684V para que no me diera 1024 en 2,5 no?
Citar
Y tambien hay que echarle un ojo a las especificaciones de Vref+ y Vref- en el datasheet ( cual es el maximo y minimo de cada uno y la diferencia )
Minima Vref 2,5V
Por tanto esto me hace pensar. Si supuestamente cuando bajo la Vref obtengo más resolucion, como es posible que subiendo de 2,5 a 2,684V obtenga de 9,3 a 10 bits por grado?????  :2] :2]
(5/110)/(5/1024)= (2,5/110)/(2,5/1024)=(2,5/110)/(2,5/1024)
Creo que te has confundido o no nos hemos entendido bien...

Citar
Ahora podes si redondear a 9 bits por grado, pero esto haria que al valor 1023 ( 2.5V - que vendria a ser los 100ºC )tengas 103.6ºC  ya que el error seria acumulativo.
Inviable, necesito muchisima mas precision. El termometro es para medir maquinas PCR (Termocicladores) y tienen una resolucion de 0,1 y no se me puede ir mucho la medida a ser posible.

Citar
Lo que si, si queres un rango de -10ºC a 100ºC por ahi te conviene que tu sensor pueda leer un poco mas que 100, ejemplo 110ºC , ya que sino cualquier valor mayor a 100, marcaria 100ºC ya que el ADC estaria dando una salida de 1023.
es una PT1000, el rango esmuchiiiiiisimo mas amplio.

Citar
ambien la formula para temperaturas negativas cambia. Igual todo este ejemplo que se nombre se cree que la tension varia de forma linea con la temperatura.
Pero esto por software puedo cambiar la formula cuando baje de 0 no???


Bufff, vaya parrafada  :lol: :lol:
Estoy aprendiendo mucho cone sta practica :-/
« Última modificación: 24 de Marzo de 2015, 18:35:51 por Limbo »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Calculo de una temperatura con decimas
« Respuesta #5 en: 24 de Marzo de 2015, 20:56:43 »
Citar
Este facor "[ Formula ºC / V ]" de donde lo saco??tengo que sacarla hacinedo medidas?? Necesito decimas de grado.. y necesito una tecnica que me de  precision..
Eso va a depender de tu acondicionamiento de señal que tengas Vos me decis que de -10 a 100 tenes una salida de 0v a 2.5V, esto debe tener una razon matematica por detras.
Yo di el ejemplo de lo mas simple, que es un divisor resistivo. En este caso solo debias calcular la resistencia por cada grado ( obviamente que no a mano - o lo sacabas del datasheet ) luego multiplicas por la relacion del divisor y por los 5V, eso te da unos puntos que son temperatura en un eje y tension en el otro. haces una regresion lineal y ya tendrias tu funcion.

Citar
Vamos a ver. Si tengo un rango de 0 a 2,684V entre -10 y 110 grados, la vref deberia de ser 2,684V para que no me diera 1024 en 2,5 no?
Acordate que estas saliendo con mas tension del sensor tambien para que cuando llegue a 100 sea de 2.684V , no es que mantenes el sensor en 2.5v y aumentas solo la Vref.

Citar
Por tanto esto me hace pensar. Si supuestamente cuando bajo la Vref obtengo más resolucion, como es posible que subiendo de 2,5 a 2,684V obtenga de 9,3 a 10 bits por grado?????  helado helado
(5/110)/(5/1024)= (2,5/110)/(2,5/1024)=(2,5/110)/(2,5/1024)
Creo que te has confundido o no nos hemos entendido bien...

Perdon me confundi yo.. es imposible, siempre mantendrias la misma resolucion

Citar
Inviable, necesito muchisima mas precision. El termometro es para medir maquinas PCR (Termocicladores) y tienen una resolucion de 0,1 y no se me puede ir mucho la medida a ser posible.
Entonces 12 bits o podes "fabricarlo" por oversampleo, para 1 bit mas necesitarias 4 muestras, sumarlas y dividirlo por 2 esto te dejaria con 11bits.

Citar
es una PT1000, el rango esmuchiiiiiisimo mas amplio.
Lo se y ese no fue mi problema, sino el que al limitar el ADC a un maximo de 2.5V ( suponiendo que obtenes 2.5v del sensor cuando tenes 100ºC) hace que para tensiones superiores a esas siempre obtengas el mismo numero 1023 o que es igual a 100ºC, como distinguirias que estas en 105ºC  y no 100ºC ?

Citar
Pero esto por software puedo cambiar la formula cuando baje de 0 no???
Si pero eso depende del acondicionamiento de señal que recibio tu sensor.

Si no queres complicartela mucho, simplemente pone el sensor en el mismo lugar que algun otro sistema esta midiendo y controla a cada grado la tension que tenes en la salida. ahi tendrias un tabla temperatura/tension

Desconectado Limbo

  • PIC10
  • *
  • Mensajes: 44
Re: Calculo de una temperatura con decimas
« Respuesta #6 en: 27 de Marzo de 2015, 16:22:12 »
Citar
Lo se y ese no fue mi problema, sino el que al limitar el ADC a un maximo de 2.5V ( suponiendo que obtenes 2.5v del sensor cuando tenes 100ºC) hace que para tensiones superiores a esas siempre obtengas el mismo numero 1023 o que es igual a 100ºC, como distinguirias que estas en 105ºC  y no 100ºC ?
Simplemente me da igual. No necesito medir más de 95 grados.

De hecho he decidido cambiar al rango 0-100ºC y asi puedo obtener decimas

Sinceramente, tanta informaciondesordenada me esta saturando.

En general tengo claro casi todo, solo me pierdo cuando me hablas de sacar mi funcion..
No se supone que la funcion es la que me da el datasheet?? (Que define la Rt del sensor en funcion de la temperatura)
Esta funcion ºC/V que me hablas es para transformar los V en ohms  y poder aplicar la formula del datasheet del sensor?
Yo tengo estos sensores: http://docs-europe.electrocomponents.com/webdocs/1118/0900766b811182de.pdf
A ver si puedes hecharme un cable mas concretamente, porque no me acabo de aclarar..

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Calculo de una temperatura con decimas
« Respuesta #7 en: 27 de Marzo de 2015, 16:59:24 »
Con esos sensores podrás conseguir una exactitud de 0.1ºC afinando bastante y un conversor con exactitud de 10 bit (tendrás que comprar alguno de 12 a 16 bits).

En Analog Devices o Linear Technology tienes bastantes y no son caros.

También necesitas una referencia de tensión con exactitud ajustable de 0.1% y resistencias como mínimo del 0.1%

Cada 6 meses tendrás que calibrar todo.

¿Estás seguro de que el circuito analógico está bien diseñado?

------------------------

La resolución no es tan difícil de conseguir.

Para calcular la resolucion:
   Rango temp = 100 - 0 = 100ºC
   Rango ADC 14 bit = 2^14 = 16384 ptos
   Resolucion = 100ºC / 16384 = 0.006 ºC/pto

Desconectado Limbo

  • PIC10
  • *
  • Mensajes: 44
Re: Calculo de una temperatura con decimas
« Respuesta #8 en: 27 de Marzo de 2015, 17:09:14 »
Citar
¿Estás seguro de que el circuito analógico está bien diseñado?
No he diseñado nad todavia porque no se que voltaj enecesito en la salida del acondicionamiento, pero uso amplificador de intrumentacion y un wheatstone normalito ¿Algun consejo?

Tan dificil es hacer una resolucion de 0,1 grados?? Si los termometros del sobaco dan esa resolucion! :D :D

Citar
Para calcular la resolucion:
   Rango temp = 100 - 0 = 100ºC
   Rango ADC 14 bit = 2^14 = 16384 ptos
   Resolucion = 100ºC / 16384 = 0.006 ºC/pto
Asi es sobrado..
Mis calculos son  100ºC /1024 =0.097 por pto.. no sirve???

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Calculo de una temperatura con decimas
« Respuesta #9 en: 27 de Marzo de 2015, 19:41:04 »
La resolución es fácil de conseguir. Pero la exactitud es bastante difícil.
Un polímetro cualquiera puede medir 1.000 voltios. En la pantalla ves milivoltios de resolución .
Pero la exactitud suele ser del 1%. Es decir, que tiene un error de hasta 10milivoltios en esa medida.

Saludos.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Calculo de una temperatura con decimas
« Respuesta #10 en: 27 de Marzo de 2015, 19:42:13 »
Citar
Mis calculos son  100ºC /1024 =0.097 por pto.. no sirve???

Tenes 0.1ºC pero normalmente el ultimo bit esta variando siempre. Siempre tenes errores sumados a los ADC etc etc etc (Y si te pusieras a ver todos los errores ahi si te saturarias xD). lo mas seguro que vas a tener un punto en que el medidor haga un salto de 0.2ºC ( ej 10.1ºC a 10.3ºC ) sin pasar por el 10.2ºC.

Yo crei que no era de tanta importancia tu requerimiento de precision, pero si eso se vuelve tu problema entonces hacele caso a Picuino

Si realmente te interesa la precision:

Citar
También necesitas una referencia de tensión con exactitud ajustable de 0.1% y resistencias como mínimo del 0.1%
+ un mejor ADC, podes conseguir ADC Sigma-Delta de 125 SPS (no necesitas mas velocidad) a casi 1 dolar el ADC ( 16 bits )

Desconectado Limbo

  • PIC10
  • *
  • Mensajes: 44
Re: Calculo de una temperatura con decimas
« Respuesta #11 en: 27 de Marzo de 2015, 20:03:24 »
Mas que precision necesito que por lo menos mida estable en saltos de 0,1, es para medir maquinas que varian su temperatura en saltos de 0,1 y se mantienen estables.


Mira, como me estais desbaratando el plan que yo tenia desde un principio.. Voy a hacer una cosa; Empezare de 0 otra vez con vuestros consejos y santas pascuas.

Empezemos por el principio: ¿La parte de analogica uso el puente o hay otro montajes mas precisos?¿Que me recomendais?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re: Calculo de una temperatura con decimas
« Respuesta #12 en: 27 de Marzo de 2015, 20:45:53 »

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Calculo de una temperatura con decimas
« Respuesta #13 en: 28 de Marzo de 2015, 05:33:54 »
No me había dado cuenta de que utilizas un puente.
Si alimentas un puente, no es tan importante la exactitud de la alimentación.

Quizás lo primero que deberías preguntar es si es necesaria tanta exactitud o es suficiente con tener precisión.
Conseguir exactitud de 0.1ºC en el rango completo de 0 a 100ºC es dificil.
Te pongo una imagen que vale más que mil palabras:



Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5883
    • Picuino
Re: Calculo de una temperatura con decimas
« Respuesta #14 en: 28 de Marzo de 2015, 05:51:44 »
En la página 14 de este documento:
http://cds.linear.com/docs/en/application-note/an78fs.pdf
aparece un conversor que permite resoluciones de 0.001 ºC. Los componentes no son caros.

El problema de ese conversor es que utiliza dos referencias distintas de tensión para el ADC y para el RTD.
Tu puedes utilizar la misma. No hay problema porque el ADC consume poquísimo.

Puedes utilizar un ADR435 para alimentarlos (vale unos 4 euros), aunque otra más barata sería suficiente:
Buscador de referencias de tensión de Analog Devices

Saludos.

P.D. La forma más barata que conozco de conseguir varias resistencias de precisión es con este componente:
Precision Resistor Network
« Última modificación: 28 de Marzo de 2015, 05:57:52 por Picuino »


 

anything