Omet navegació

9.2.1- Estimació de la temperatura amb els NTC

 

1.- Model matemàtic de Steinhart–Hart per als NTC

Havien vist que el sensor NTC és podien descriure amb l'equeció matemàtica de  Steinhart–Hart

Steinhart–Hart

Els termistors NTC també es poden descriure amb una equació simplificada de Steinhart–Hart amb els paràmetres següents:

que amb aquests paràmetres pren la forma 

on T són graus Kelvin i és la temperatura a 25 ºC = 298,15 K

Si provem d'escriure aquesta equació de forma exponencial per facilitar el càlcul tenim

i si agrupem  constants podem tindre de forma més compacta encara l'equació de Steinhart–Hart

i on les constants B (beta) i   es poden calcular a partir dels paràmetres del fabricant.

Valors de Beta i R0 per als NTC

Si aïllem la T de la darrera equació compacta de Steinhart–Hart que hem vist, , aquesta és l'equació que utilitzarem per calcular la Temperatura que ens dona el termistor NTC muntat sobre el divisor de tensió i connectat a Arduino.

2.- Càlculs per utilitzar el model de Steinhart–Hart amb Arduino. 

 Recordem que en el divisor de tensió

Divisor de tensió

és compleix que la tensió     però com el el podem calcular si sabem la lectura analògica d'Arduino que varia de 0 a 1024 amb l'equació: , en efecte quan la lectura és màxima i val 1024 el

 

Aïllem de l'equació del divisor de tensió la que ens cal per l'equació compacta de  Steinhart–Hart i obtenim:

 

La constant B la traurem del full Datasheet del fabricant del NTC.

La   la trauem de les constants que em simplificat de l'equació de  Steinhart–Hart sabent que és la resistència del NTC a , llavors

és coneguda en tots els termes.

En el nostre cas hem utilitzat un NTC que segueix un curva D, fent proves agafant una beta en l'interval de 0ºC a 50ºC i així les constants han valgut:

, , B (beta) = 3891 i

 

Ara ja sols falta calcular la temperatura estimada amb el mètode de  Steinhart–Hart amb l'equació:

i podem comprovar com la T estimada amb aquest mètode no diferiex de la llegida amb un termometre de Mercuri fent el muntatge següent.

Muntatge per comparar temperatures

  3.- Muntatge de la pràctica.

Ens cal un vas de precipitats, un termòmetre de Mercuri que mesure de 0 a 100 ºC, un Bunsen, un tub de precipitats de vidre per posar el NTC dins una vegada estiga soldat a un parell de cables conductors.

Conectarem els cables dels NTC a la resistència de 10 K i a la targeta Arduino com veus al esquema elèctric següent.

Comparació valors NTC i termòmetre Hg

  4.- Programa per calcular Temperatura en graus centigrads.


 
			// Copyright (C) 2010 MODAT7
			// Modificat el 30-11-2011 per Carles Ferrando
			// This program is free software; you can redistribute it and/or modify it under the terms
			// of the GNU General Public License as published by the Free Software Foundation;
			// See the GNU General Public License for more details
			// ( http://www.gnu.org/licenses/gpl.html )
			//
			// Steinhart–Hart
			// En aquest programa llegirem el valor d'un NTC i estimarem el seu valor en graus centigrads
			// amb el metode de Steinhart–Hart
			//
			#include <stdio.h> //llibreria estandard
			#include <math.h> //libreria de funcions matematiques
						//Definició de coeficients i constants
			float Ventrada=5.0;     // [V]        Tensió d'entrada al divisor de tensió
			float Rauxiliar=10000;  // [ohm]      Resistencia secundaria al divisor de tensió.
			float R0=10000;    // [ohm]      Valor de NTC nominal a 25ºC
			float T0=298.15;   // [K] (25ºC) Valor en ºK de 25ºC
			float beta=3891;    // [K] Paràmetre B
			float Rinfinit=0.0214906446;    // [ohm]      Paràmetre Rinfinit
			//Definició de variables
			float Veixida=0.0;    // [V]     Tensió donada pel divisor de tensió
			float RNTC=0.0;    // [ohm]      Resistència del NTC
			float TempK=0.0;   // [K]        Temperatura d'eixida en Kelvin
			float TempC=0.0;   // [ºC]       Temperatura d'eixida en Celsius
			int LecturaNTC = 3; // selecciona el pin d'entrada per al sensor de calor
			void setup() {
			Serial.begin(9600); //Configuració del monitor serie (pantalla)
			pinMode(LecturaNTC, INPUT);  //Configuració del pin d'entrada  
			}
			void loop()
			{
			Veixida=Ventrada*((analogRead(LecturaNTC))/1024.0); //Càlcul del valor de voltatge del NTC ara
			RNTC=(Rauxiliar*Veixida/(Ventrada-Veixida)); //Càlcul del valor la Resistencia del NTC ara 
			TempK=(beta/log(RNTC/Rinfinit));   //Càlcul de la temperatura estimada de SteinHart-Hart en Kelvins
			TempC=TempK-273.15;   //Càlcul de la temperatura estimada en Centigrads
			Serial.print("T (C)="); //imprimeix el retol
			Serial.println(TempC); //imprimeix T en centigrads
			delay(400);
			}