7 votos

Intentando obtener (más) lecturas precisas del termistor (electrónica, matemáticas y código interno)

Así que estoy tratando de obtener lecturas precisas de temperatura fuera de este TDK B57164K472J termistor...

Se conecta en serie con un resistor de 1 K, y conectado a un ESP8266 a bordo del ADC.

El termistor tiene una Beta de 3950, y la hoja de datos incluye una tabla de resistencias entre -55 y 150 C.

En mi intento de aumentar la precisión, puedo calcular la Beta de mí para el intervalo de la resistencia del termistor es en el uso de la siguiente ecuación:

B = 1 / ( 1 / T1 - 1 / T2 ) log ( R1 / RR2 )

Entonces yo trate de determinar la temperatura a partir de esta ecuación:

T = T1 * B / log ( R1 / R2 ) / ( B / log ( R1 / R2 ) - T1 )

El código completo se puede ver aquí: https://pastebin.com/ECQHruKN

Los factores que están afectando posiblemente precisión: El ESP del intervalo de referencia de voltaje lee 3.56 V, se supone que debe de ser de 3.3 V, y mi multímetro lee 3.26.

No estoy seguro acerca de la señalización, es decir, si mis términos, debe ser positivo o negativo, o cuando ellos deberían ser los otros.

No estoy seguro acerca de mi circuito... es simple para mí para aprender, pero he visto más complejo termistor circuitos, yo no sólo estaba seguro de cómo llevarlas a la práctica, y aún menos seguro de que yo iba a ser capaz de solucionar los problemas.

Ayuda sería muy apreciada. Gracias.

Esquemático

schematic

simular este circuito – Esquema creado mediante CircuitLab

9voto

Spehro Pefhany Puntos 90994

El ESP8266 ADC no es realmente muy bueno para la instrumentación de los efectos. Creo que no es muy lineal (especialmente para los voltajes de cerca de 0V) y el interior de la tensión de referencia puede ser de +/-10% o peor tolerancia - vagamente especificado (sin límites de precisión que puedo ver, una especie de "bono" de la funcionalidad que usted no debería depender demasiado para aplicaciones serias).

Usted también tiene bastante malo NTC y están poniendo una gran cantidad de corriente a través de él a altas temperaturas debido a la poca resistencia de 1K (significado de la auto-calefacción).

Método preferido para la medida de termistor es proporcional, de modo que la tensión de referencia cancela, sin embargo, el Espressif chip no llevar a cabo el voltaje de referencia, además de muchos consejos (I inferir que el tuyo es uno de ellos) incluyen un divisor en la entrada que va a cargar su entrada al menos un poco, tal vez 220K/100K de un valor nominal de ~V 3.52 para 1024 cuenta +/- lo que sea. 10 bits no es mucho para una amplia gama de resistencia.

Hay otras formas de medición de la resistencia de un termistor, pero por lo general, requieren más de circuitos, por ejemplo, para convertir la resistencia a la frecuencia, y cambiar entre una referencia resistores o resistencias y el termistor.

Dada la enorme memoria en el ESP8266 usted puede olvidarse de todo el lujo de matemáticas y generar sólo una simple tabla de búsqueda con 1024 entradas, pero probablemente tenga que construir una calibración de equipo de perforación para hacer que (al menos un voltaje programable) para cancelar los errores y el chip no es realmente especificado para cualquier precisión o estabilidad, por lo que la mayoría de nosotros podría utilizar un ADC externo o de otro circuito, de modo que la exactitud y la estabilidad se cuece en el principio.

6voto

MadHatter Puntos 590

A menos que usted tenga una mejor que la 1C de la temperatura de referencia, no me moleste en tratar de conseguir una mayor precisión absoluta de lo que se obtiene utilizando los datos nominales de la hoja de información. Si usted necesita una verdadera alta precisión de la temperatura de referencia, el uso térmico de la pareja o de Platino sensor de temperatura (RTD).

Si quieres probar esto de todos modos:

  1. La tensión de referencia, si su información es correcta hará de manera más error, a continuación, el 3% de error Beta y el 5% de la resistencia de error.
  2. Primera línea de calibración sería verificar la resistencia especificada a 25C, ya que la fabricación especificaciones del 5%.
  3. A continuación, trabajar en el 3% de la Beta a la deriva... Suponiendo que usted necesita precisión en un amplio rango más allá de la cerca de la temperatura ambiente.

También considerar la compra de una mejor especificación ed CNT para guardar su auto por algún tiempo. Usted puede encontrar 2% Beta, El 2% de la Resistencia o mejor para no mucho más que la suya.

5voto

graycrow Puntos 1175

¿Cuán exactos que usted desea que sus lecturas sean? 0.1 de un grado? 0.01 de un grado?

Usted tiene un par de problemas. En primer lugar tu ADC no es muy preciso, para empezar. Usted también debe buscar en la reducción de ruido a su ADC en la actualidad es objeto. Mcu producir ruido, si usted no ha hecho nada acerca de que entonces el ADC es probablemente sujeto a ruido suficiente para dar resultados inconsistentes.

Luego está el termistor, ellos no son realmente super precisión de los dispositivos, para empezar. Ellos sufren de la calefacción para empezar y luego está el grado de estabilidad de su entrada.

Usted también necesita una calibración precisa de los datos en el termistor, como no puede ser de 5% de diferencia a la hoja de datos de valores en algunos casos. Pero conseguir una lectura a 25 grados no es fácil, ¿cómo mantener el sensor en 25 grados, mientras que medida es? Obtener una lectura a 100 grados es mucho más fácil, hirviendo el agua tiene que estar al 100 grados (a nivel del mar, las partes más calientes convertirse en vapor). Por lo que sólo puede pegarlo en un poco de agua hirviendo.

Una vez que tienes todos tus circuito problemas cuadrado de la distancia que usted puede comenzar a pensar acerca de su programación. Los termistores tienen una relación logarítmica con la temperatura de la resistencia. Generalmente tienen mejor precisión en cierto rango de temperatura. El enfoque habitual es seleccionar el rango de temperatura específico que usted está interesado en (rango menor significa una mayor precisión) y, a continuación, utilizar sus funciones de registro en dicho rango. Generar una tabla de búsqueda o si es que tienes suficiente chip que no es terriblemente ocupado, podrá hacer las matemáticas sobre la marcha.

Pero luego de esto vuelve a la exactitud de su ADC. Si sólo es capaz de producir 1024 valores discretos, a continuación, sólo se puede medir 1024 discretos temperaturas.

Ahora bien, si usted sólo cuidado de que la temperatura es, sin duda entre decir 35.0 y el 35,5 y sólo estás interesado en temperaturas entre -20 y 50. Entonces esto sería totalmente alcanzable con lo que tienen. Pero si usted quiere un mayor rango o una mayor precisión, que en realidad no va a ser posible, con lo que se está utilizando.

Para obtener más precisión que tendría el uso de un rango menor y por el contrario, para un mayor alcance usted tiene que reducir la precisión. Luego, en algún punto de tu ADC no ser capaz de decir la diferencia entre los dos valores o el ruido va a hacer lo imposible para conseguir una lectura estable.

Yo recomiendo el uso de esta hoja de cálculo. Puedes jugar con los valores y ver lo que los márgenes de error será junto con proporcionar recomienda valores de resistencia para medir en un determinado rango de temperatura.

4voto

Colin Bowern Puntos 966

En adición a los otros comentarios/respuestas que has recibido, hasta la fecha, la cifra que se ha añadido a tu post original muestra un defecto de diseño que deben ser abordados. Según mis cálculos, si VCC el voltaje nominal es de 3.3 V, entonces para termistor de temperatura los valores de

T = [-40 0 25 40]  (°C)

la correspondiente salida nominal de tensiones V_OUT de su circuito

V_OUT = [ 3.2667    3.0633    2.7211    2.4198 ]  (VDC)

(n.b. V_OUT es el voltaje que se conecta a la entrada del ADC pin.) De acuerdo a Espressif la hoja de datos para el ESP8266EX (p. 16):

El [ADC] rango de tensión de entrada es de 0 a 1.0 V cuando TOUT está conectado al circuito externo.

Así que estos V_OUT voltajes son demasiado altos y, posiblemente, podría dañar la entrada del ADC.

FWIW, si cambia la resistencia y termistor de posiciones, de manera que la topología de circuitos se convierte en

VCC -- thermistor --(V_OUT)-- resistor -- GND

el nominal resultante V_OUT las tensiones que se aplican a la ADC para la mencionada termistor las temperaturas son

V_OUT = [ 0.0333    0.2367    0.5789    0.8802 ]  (VDC)

que estaría bien. Esta topología también se asegura de que V_OUT aumenta con el aumento de la termistor de temperatura, Y en el peor de los casos la resolución (no teniendo en cuenta otras fuentes de error-por ejemplo, las tolerancias en los componentes) sería de alrededor de 0.5 °C/bit a -40°C, lo cual no es tan terrible.

En Espressif de preguntas frecuentes para el ESP8266 (desplácese hacia abajo a los "Periféricos" de la sección), el artículo titulado "¿Qué debo usar el ADC interno para?" los estados (énfasis añadido).

El ADC interno puede ser utilizado para la detección de temperatura o de detección aproximada de la corriente consumida por los dispositivos externos. Tenga en cuenta que debido a que el ADC lecturas son propensas al ruido, sólo debe ser utilizado para aplicaciones donde la alta precisión no es necesaria. Por ejemplo, corte térmico mecanismos, etc.

Consideraciones adicionales relacionadas con este ^^^ tema respecto a las formas de reducir los errores en las mediciones que son abordadas por el otro a los encuestados a tu post, por ejemplo, el ajuste de las tolerancias de los componentes, el uso de un método de medición radiométrica (que probablemente requeriría un ADC externo chip con al menos dos entradas para medir VCC y V_OUT), etc.

La FAQ tema titulado "¿Cuán precisa es la interna ADC?" los estados (énfasis añadido):

Si una alta precisión es necesaria, por favor, utilice system_adc_fast_read de la API. Pero los circuitos de RF, se debe cerrar antes de la medición y el Wi-Fi se desconecta. Para una relativamente menor precisión en las lecturas de la' diferencia de 1 o 2 puede ser tolerada, recomendamos a los usuarios configurar el Wi-Fi de modo de no dormir wifi_set_sleep_type(NONE_SLEEP_T).

Por menor exactitud, el usuario puede entrar en modo de suspensión. El consumo de energía es menor en este caso.

Cuando el Wi-Fi transmisor está aullando a la energía de RF, la energía que se extrae de la fuente de alimentación del transmisor de RF, y la radiación electromagnética emitida por el transmisor de RF+antena añade (posiblemente sustancial) ruido eléctrico a) el consejo del poder de autobuses (por ejemplo, la caída de voltaje VCC), y b) su cercana resistencia + termistor + conexión de los cables del circuito. Tenga en cuenta que su componente de cables y cables de conexión de actuar como antenas y va a recibir una parte de la energía del RF que los emitidos por la Wi-Fi del transmisor. IOW, el poder de la tensión del bus cae y no deseados de absorción de energía de RF en el bus de alimentación eléctrica y sus componentes son otras importantes fuentes de ruido que debe ser administrado, si desea que sus mediciones de temperatura para la exhibición de la reproducibilidad, precisión y exactitud.

1voto

Velociraptors Puntos 1152

Si tiene una resistencia de entrada analógica adicional, divida la tensión de alimentación y mídala con la entrada analógica. Esto le permitirá compensar el error de voltaje y la deriva.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X