Sensor de temperatura barato con MCU


13

Estoy buscando una solución barata para detectar la temperatura con un MCU. Mis requisitos son:

  • 2 canales
  • rango de temperatura: 30-35 ° C
  • resolución temporal: 1-2 K
  • distancia del cable (MCU -> sensor) 10cm - 2m son aceptables
  • la temperatura relativa entre dos canales es suficiente, no se requiere temperatura absoluta

Mi punto de partida son dos termopares con amplificadores de termopar, pero esto parece ser excesivo para mi aplicación. Los termopares funcionan a 10 $ en Radiospares, amperios a 5 $ que costarían 30 $ solo para estimar la temperatura.

Cuál es una buena dirección para buscar una solución más barata. NTC?


Editar 18 de julio de 2012

Después de que stevenvh extendió su respuesta para mostrar el alto grado de linealidad que se puede obtener con los NTC, invertí algo de tiempo para reconsiderar si los NTC no son una mejor solución.

Sin embargo, no estoy seguro de poder seguir a stevenvh en su razonamiento sobre el error que se puede obtener con los NTC a bajo precio en comparación con los chips semiconductores.

Para obtener la temperatura con un NTC entran en juego las siguientes funciones:

  1. función de transferencia la conversión de la temperatura ambiente a una resistenciaHTunRnorteTC(R25,si25/ /85)
  2. el voltaje producido por el divisor de voltaje HRnorteTCV(VmiXCyotuntyoonorte,RnorteTC,Rlyonorte)
  3. Conversión AD HVsiyots(V,VrmiF,σConortevmirsyoonorte)
  4. aproximación de curva lineal: HsiyotsTmist(siyots,σunpagpagroX)

Las fuentes de error que veo son las siguientes:

  1. Errores de valor NTC: 1% cada uno para los valores y B 25 - 85 : total aproximadamente 2%R25si25-85
  2. 1% para el valor de resistencia lineal de saturación y digamos 0.5% para la fuente de voltaje de excitación
  3. Para un PIC16F1825, el voltaje de referencia interno utilizado para el ADC tiene un 6% de incertidumbre. Además, el ADC en sí tiene errores integrales, diferenciales, de compensación y ganancia, cada uno del orden de 1,5 lsb. A 10 bits, estos últimos combinados son como máximo 0,5%.
  4. Como stevenvh demostró en su respuesta, la aproximación lineal tiene un error de solo 0.0015% en el rango de interés.

El error en la estimación de la temperatura estará claramente dominado por el error de la referencia de voltaje ADV y los errores en los valores de resistencia. Claramente será superior al 6%. El error debido a la aproximación lineal es completamente insignificante como señaló stevenvh.

Una incertidumbre del 6% a 300 Kelvin es equivalente a un error de temperatura de 18K. Los chips de temperatura tienen un error de aproximadamente 1K. A 300K esto corresponde a una incertidumbre del 0.3%.

Me parece que es imposible superar esto con un NTC sin una calibración y verificación de rendimiento extremadamente cuidadosas. La incertidumbre en las resistencias de linealidad, el voltaje de excitación o el ADC visto de forma aislada empuja la incertidumbre de la solución NTC por encima de esto. ¿O tengo un error importante en mi razonamiento?

Por el momento estoy convencido de que los NTC pueden ser una solución de detección de temperatura de alta precisión, pero a bajo costo me parece que su rendimiento será un disparo en la oscuridad.

Respuestas:


12

1-2 grados es una resolución fácil (incluso cuando quieres decir precisión, ¡lo cual no es lo mismo!). Consideraría LM75 y varios clones, o un DS1820 / 18S20 / 18B20 / 1822. Microchip tiene muchos sensores de temperatura , incluidos los clones LM75 por <$ 1. Las versiones de salida de voltaje son baratas, pero preferiría una digital.


Todas las respuestas que recibí sobre esta pregunta fueron muy útiles. Acepté esto debido a la facilidad de uso de los clones LM75. No tener que preocuparme por la linealización, etc. es una gran ventaja en mi caso.
ARF

Solo curiosidad: ¿Por qué preferirías un sensor digital?
m.Alin

55
No se preocupe por las referencias, la linealización, la configuración del convertidor A / D y el hardware es trivial. La desventaja es que tienes que lidiar con el protocolo.
Wouter van Ooijen

15

Yo diría NTC, sí. Este es el más barato que pude encontrar en Digikey. Alrededor de medio dólar, eso es mucho más barato que los IC de sensores de temperatura, que tienen aproximadamente la misma precisión. La ventaja de un NTC es que solo necesita una resistencia en serie y una entrada ADC en su microcontrolador, que la mayoría tiene hoy en día.

El bajo precio también tiene una desventaja: los NTC son cualquier cosa menos lineales. Tiene que usar su función de transferencia (que tiene un exponencial, que puede no gustarle, o usar una tabla de búsqueda, que para el rango dado puede ser la mejor solución.

editar dd. 2012-07-13
Bah, golpeado por un miserable LM75. No voy a dejar pasar esto. :-)

Voy a usar el * 103 * MT * de esta serie NTC . Primero la función de transferencia:

R=10kΩmi-13.4096+4481.80T-150522T2+1877103T3

T

No parece prometedor, y de hecho entre 0 ° C y 100 ° C la curva se ve así:

ingrese la descripción de la imagen aquí

cualquier cosa menos lineal, como dije. Podemos intentar linealizar eso, pero recuerde que vamos a hacer un divisor de resistencia con él, y tampoco son lineales, por lo que cualquier linealización ahora se arruinará por la resistencia en serie. Entonces, comencemos con la resistencia y veamos qué sucede. Tengo un suministro de 3.3 V y elijo una resistencia de 5.6 kΩ a Vcc, luego la salida se convierte

ingrese la descripción de la imagen aquí

¡No está mal! La curva púrpura es la tangente en nuestro rango de interés: 30 ° C a 35 ° C. Podría trazar el gráfico ampliado sobre eso, pero eso nos da dos líneas coincidentes, así que echemos un vistazo al error:

ingrese la descripción de la imagen aquí

Tampoco se ve bien, pero hay que mirar la escala vertical, que da el error relativo de la aproximación lineal en comparación con nuestra característica NTC entre 30 ° C a 35 ° C. El error es inferior a 15 ppm, o 0.0015% .

Mathematica dice que la ecuación para nuestra aproximación lineal casi perfecta es

VOUT=-0,0308 T 1V/ /°C+2.886 V

Esto dará como resultado lecturas de ADC de 609 y 561, resp. para un ADC de 10 bits. Eso es un rango de 48 para una diferencia de 5 ° C, o una resolución de aproximadamente 0.1 ° C. Solo el NTC y una resistencia.

¿Quién necesita un LM75?



editar dd. 2012-08-13

Hecho: la solución NTC necesita calibración.

Le prometí a Arik volver al cálculo del error, pero es mucho más complicado de lo que pensaba, y no se puede completar debido a datos incompletos. Por ejemplo, tengo números muy precisos para los coeficientes en la función de transferencia del NTC (¡los números de 7 dígitos significativos ya están redondeados!), Pero no hay información sobre su precisión. Sin embargo, algunos comentarios.

ββ

±

La referencia de ADC del PIC tiene una tolerancia bastante mala del 6%. Arik dice que una incertidumbre del 6% a 300 kelvin es equivalente a un error de temperatura de 18 K , que por supuesto es absurdo y completamente absurdo. Hice una comprobación rápida: calculé la salida del divisor de voltaje para una temperatura de 20 ° C. Agregó 6% a eso, y se calculó de nuevo al valor de resistencia del NTC y la temperatura que sería. El error no es 18 ° C, sino 1 ° C, o menos del 0.5%, referido a 0 K.

Aun así, ¡el error del 6% es completamente irrelevante ! Si usa el voltaje de referencia del ADC para el divisor de resistencia, ese voltaje ni siquiera aparece en los cálculos. No me importaría si el error fue del 50%. Utilice otra referencia si la referencia interna incorrecta no está disponible fuera del controlador. Al igual que la fuente de alimentación de 3.3 V, o cualquier otro voltaje de CC que tenga.

La calibración no es lo que desea para un proyecto único, pero para la producción en masa no es una preocupación, y especialmente en la electrónica de consumo, donde cada centavo cuenta, es más probable que encuentre el NTC que un LM75 costoso.


3
Lo bueno de preguntar a los expertos es que obtienes cada respuesta (analógica versus digital), ahora Arik solo necesita un experto para elegir entre los expertos :)
Wouter van Ooijen

¿Alrededor de medio dólar? ¿No es este el mismo artículo que mencionas? Es $ 0.15 / 100pcs. Y MCP9701A cuesta aproximadamente $ 0.25 / 100pcs. ¡Guau, pensé que los digitales eran muy caros, como $ 2 o $ 3 cada uno!
abdullah kahraman

2
@abdullah: todo es relativo. Un gran ingeniero probablemente apuntaría a la resistencia en serie del 1% de tolerancia, y su coeficiente de temperatura de 100 ppm / ° C. En cualquier caso, si tenemos errores de lectura, ¡no será debido a la aproximación! :-)
stevenvh

1
@stevenvh Su respuesta extendida me dio razones para revisar mi evaluación original. Sin embargo, no estoy seguro de entender completamente cómo puede llegar a una medición de alta precisión con NTC a bajo precio. Le agradecería que mirara mi pregunta editada y me dijera si tengo un defecto en mi razonamiento. ¡Muchas gracias por su ayuda!
ARF

1
@Arik: actualicé mi respuesta. Sentí especialmente que el supuesto error de 18 K necesitaba una respuesta :-)
stevenvh

6

Esto suena como un trabajo para un termistor, o dos termistores para ser más precisos. Dado que solo necesita distinguir tres estados de temperatura diferentes y solo está buscando temperatura relativa, puede conectar los dos termistores para formar una sola señal analógica. Eso se puede medir con un A / D integrado en el micro. La mayoría de los micros tienen A / D, por lo que esto no costará nada más. Probablemente agregaría un par de resistencias y condensadores como filtros de paso bajo para reducir el ruido.

Un termistor va de tierra a la señal analógica y el otro de potencia a la señal analógica. Es posible que deba calibrar un poco, pero con su rango de temperatura estrecho y su baja resolución, no necesita ponerse elegante. Probablemente solo es suficiente guardar el voltaje de diferencia cero y restarlo de la lectura futura.


Gracias por la sugerencia sobre el uso de dos termistores en la configuración del divisor de voltaje para medir un voltaje relativo. No hubiera pensado en eso.
ARF

@Arik: los dos termistores en serie solo funcionan si su resistencia varía linealmente con la temperatura, así que asegúrese de verificar eso. (Lo hice en mi respuesta.)
stevenvh

@stevenvh: Sí, tienes razón, pero ten en cuenta el rango de temperatura muy estrecho y la baja resolución. Dos termistores una vez calibrados para el caso de igual temperatura cerca del medio del rango deberían funcionar lo suficientemente bien. Uno nunca estará separado del otro por más de 5 grados centígrados.
Olin Lathrop

@Olin: todo es cierto. Supongo que debería haber agregado "en caso de que alguna vez quiera medir en un rango de temperatura mucho más amplio".
stevenvh

5

Si no conoce el método de medición de temperatura delta-voltaje de diodo escalonado y está interesado en medir la temperatura, debe leer esto: puede transformar sus ideas sobre la medición de temperatura.


Llego un poco tarde a la fiesta.
Como la respuesta ya se habrá utilizado ahora, describiré un método alternativo que tiene considerables ventajas pero que parece ser sorprendentemente poco utilizado en forma discreta.

Este método se usa comúnmente en los circuitos integrados de medición de temperatura de CI, pero aún parece menos conocido de lo que cabría esperar.

Si un diodo de silicio (digamos) se alimenta alternativamente con dos corrientes conocidas, el cambio de voltaje delta con el cambio de corriente está relacionado con la temperatura absoluta.

Este método se utiliza (al menos) en los sensores TI LM82, LM83, LM84, LM87 y LTC3880, LTC3883 y LTC2974.

Tenga en cuenta que este método es diferente del método habitual para medir la caída absoluta de voltaje directo del diodo a una corriente dada para inferir la temperatura. Este método es sustancialmente más preciso y no requiere calibración específica del sensor.

Se pueden lograr precisiones de alrededor de 0.1 grados C (o K).
Las resoluciones dependen del método de medición.

El resultado es la calibración del dispositivo libre.
El resultado depende solo del tipo de diodo básico (por ejemplo, silicio, germanio),
por ejemplo, si usa un diodo de señal 1N4148 por debajo de 1 centavo, puede cambiar esto por otro 1N4148 y obtener las mismas precisiones sin recalibración.

La precisión de establecer las dos corrientes utilizadas obviamente afecta la precisión de los resultados, pero como se pueden elegir para adaptarse a los recursos disponibles, los resultados pueden ser muy buenos.

Este método es utilizado por algunos, pero no por todos, los sistemas de medición de temperatura del procesador incorporado. Por lo general, encontrará que cuando se usa este sistema, las descripciones técnicas son muy ligeras en los detalles y algo ofuscadas, es decir, parecen querer mantenerlo en secreto a pesar de que el método probablemente se remonta al trabajo de Widlar a mediados de la década de 1960.

Este método rivaliza con las precisiones alcanzables con un cuidado razonable usando termistores NTC o PT100, etc. Resistencias de platino y similares, con un grado muy complejo de complejidad y dificultad.


Esta excelente nota de aplicación del dispositivo analógico 199 La medición de temperaturas en chips de computadora con velocidad y precisión afirma que la técnica es nueva. No estoy del todo seguro de que sean correctos, pero es ciertamente útil y menos conocido que se esperaría.

Del documento anterior (ligeramente reescrito) para las corrientes de I y NI y la caída de voltaje del diodo Cv1 en la corriente 1 y Vd2 en la corriente 2:

Vd1 - Vd2 = DVd = (kT / q) ln (I / NI) = (kT / q) ln (1 / N)

Como N, k y q son todas constantes conocidas,
T = (constante) (DVd)

_ _

Excelente aplicación TI nota múltiple diodo remoto de detección de temperatura

Wikipedia - Sensor de temperatura de banda prohibida de silicio

[Detección precisa de temperatura LT AN137 con una unión PN externa] http://cds.linear.com/docs/Application%20Note/an137f.pdf
Utilizado, por ejemplo, en LTC3880, LTC3883 y LTC2974.


3

Medición de temperatura muy simple (Celcius) con termistor (10K) B25 / 100 = 4300 Me inspiré en el comentario anterior leído en este artículo.

Compré termistores de DigiKey 10K 5% a $ 1 cada uno. Quería obtener una medición de temperatura justa sin matemática flotante y compleja. Conexión a un Arduino de la siguiente manera: Vref a 3.3v; analógico-0 A0 a través de una resistencia de 10K y 3.3v. ; Termistor A0 a tierra. Obtengo la temperatura en Celcius de la siguiente manera: Código parcial: analogReference (EXTERNAL);
ADC = analogRead (0);
Th = 10000 / (1023 / ADC) -1; // 10000 es el dispositivo de reparación utilizado en el divisor.
T = (775 - Th) / 10;

La precisión es: +1 a 25C, +0 a 20C, -1 a 0C, +2 a -20C. Cambia la constante 775 para ajustarse más al rango de deseo que desea. Por ejemplo, use 765 en lugar de 775 para obtener un error de 0 alrededor de 25C. Como esto es matemática entera, agregué 5 a 770 antes de dividir por 10 para redondear.

Mostrando relación entre termistor, ADC, temperatura y resultado calculado


1

Estoy usando LM35DZ . La temperatura varió de 0 Celsius a 100 Celsius, salida lineal y baja impedancia ; Lo he estado usando con conexión directa a mi entrada PIC ADC, funciona muy bien hasta ahora.

Una unidad cuesta alrededor de USD 3.


3
Y necesitará dos de ellos. No me parece una solución barata. ¡No comparado con mis excelentes NTC! :-)
stevenvh

También uso los chips LM35 (y me gustan), pero creo que son un poco excesivos para esta pregunta.
Johan

0

Medición de temperatura muy simple (Celcius) con termistor ... a $ 1 cada uno.

¿Qué tal un chip STM32F0? Su módulo ADC contiene un sensor de temperatura interno Y valores calibrados en dos puntos de temperatura Y valor calibrado para su generador Vref interno.

Con todo eso combinado, puede usarlo como un sensor de temperatura muy preciso (12 bits adc, y sigma con poco más de 1 lsb) en un amplio rango de voltaje.

También se puede programar como un sensor de temperatura dedicado: principalmente en reposo y despertar para leer la temperatura y transmitir datos y luego volver a dormir.

todo eso por menos de un dólar en pequeñas cantidades.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.