lectura de la hoja de datos del termistor

4

Tengo la siguiente hoja de datos para un termisistor: enlace

Estoy tratando de usar la fórmula (que se encuentra aquí http: // iwantmyreal.name/blog/2012/09/23/measuring-the-temperature-with-an-arduino-and-a-thermistor/): $$ 1 / T = 1 / T_0 + 1 / B * ln (R / R_0) $$ No estoy seguro de estar usando los valores correctos, entiendo que los valores proporcionados en la hoja de datos son los siguientes: $$ R_0 = 20,000 ohm, $$ $$ T_0 = 25 C, $$ $$ Beta = 4300 $ $ ¿Puede alguien confirmar que esto es correcto?

Estoy tratando de obtener una lectura de temperatura de ese sensor usando un microcontrolador Arduino UNO usando lo siguiente que se encuentra en enlace en la parte inferior donde dice el ejemplo # 2 usando números en lugar de la definición de episco k164 ... (sustituyendo con los valores anteriores)

Los resultados son ~ 41.96 grados F, y la sala está entre 75-80 grados F, lo que significa que las lecturas de temperatura están muy alejadas, no entiendo por qué, a menos que obtenga los valores incorrectos de la hoja de datos. También tengo dos de estos sensores y ambos dan aproximadamente el mismo valor.

Código actualmente en uso:

// Code obtained from http://playground.arduino.cc//ComponentLib/Thermistor2
#include <math.h>
// enumarating 3 major temperature scales
enum {
  T_KELVIN=0,
  T_CELSIUS,
  T_FAHRENHEIT
};

// manufacturer data for episco k164 10k thermistor
// simply delete this if you don't need it
// or use this idea to define your own thermistors
#define EPISCO_K164_10k 4300.0f,298.15f,10000.0f  // B,T0,R0

// Temperature function outputs float , the actual 
// temperature
// Temperature function inputs
// 1.AnalogInputNumber - analog input to read from 
// 2.OuputUnit - output in celsius, kelvin or fahrenheit
// 3.Thermistor B parameter - found in datasheet 
// 4.Manufacturer T0 parameter - found in datasheet (kelvin)
// 5. Manufacturer R0 parameter - found in datasheet (ohms)
// 6. Your balance resistor resistance in ohms  

float Temperature(int AnalogInputNumber,int OutputUnit,float B,float T0,float R0,float     R_Balance)
{
  float R,T;

  R=(1024.0f*R_Balance/float(analogRead(AnalogInputNumber)))-R_Balance;
  T=1.0f/(1.0f/T0+(1.0f/B)*log(R/R0));

  switch(OutputUnit) {
    case T_CELSIUS :
      T-=273.15f;
    break;
    case T_FAHRENHEIT :
      T=9.0f*(T-273.15f)/5.0f+32.0f;
    break;
    default:
    break;
  };

  return T;
}

void setup() {
 Serial.begin(9600);
}

void loop() {

 Serial.println("*************************");
 Serial.println("10k Balance");
 Serial.println(Temperature(0,T_FAHRENHEIT,4300.0f,298.15f,20000.0f,9770.0f));
 //Serial.println(Temperature(1,T_FAHRENHEIT,4300.0f,298.15f,20000.0f,9770.0f));
 Serial.println("*************************");

 delay(500);
}
    
pregunta joze

1 respuesta

0

Para cualquier persona interesada en saber cómo resolví este problema, usé el AREF y 3.3V del microcontrolador Arduino conectado directamente a uno de los lados de los termistores. Creo que el voltaje que salía de mi computadora portátil estaba disminuyendo; USB + 5V se redujo a ~ 4.7V, por lo que mis cálculos disminuyeron.

Aquí está el sitio web que ayudó a encontrar mi respuesta (este sitio incluye CÓDIGO y DIAGRAMA):

enlace

Gracias a todos por su ayuda.

    
respondido por el joze

Lea otras preguntas en las etiquetas