Utilizar NTC para Temperatura

  • 1 Respuestas
  • 232 Vistas

Coldmind

  • Novato
  • *
  • Mensajes: 4
Utilizar NTC para Temperatura
« : febrero 18, 2018, 22:19:27 pm »
Buen día, quisiera saber si es posible calcular el logaritmo natural de una variable FLOAT?

Lo necesito para calcular temperatura medida con un termistor NTC.

Muchas gracias


Hola Teraclima, quisiera contactarme contigo para me asesores como has conectado la sonda ntc y el codigo que has usado para leerla.
Muchas gracias.
« Última Modificación: febrero 19, 2018, 16:34:58 pm por Soporte »

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2011
  • Soporte Técnico
Re:Utilizar NTC para Temperatura
« Respuesta #1 : febrero 19, 2018, 16:32:21 pm »
Buenas tardes.

Para utilizar un NTC de 10 KOhm debes polarizarla, es decir conectarla por ejemplo a +5V con un resistor de 10K.

Te muestro un ejemplo de dos NTC conectadas a entradas de tensión VIN1 y VIN2 de un PLC STX8091:



Luego como sabrás un NTC no es lineal, es decir, su resistencia no varia proporcionalmente con la temperatura, sino que lo hace logaritmicamente.

Si bien entendiendo el proceso es algo simple, no es algo trivial de configurar y requiere tiempo hasta entender.

Para poder hacer el cálculo se utiliza la formula Steinhart-Hart.

La formula necesita que sepas parámetros/coeficientes del sensor NTC, generalmente en su hoja de datos están.

El principal es el Beta (llamado B, B25/100, B0/50, etc), si no está en la hoja de datos, se puede obtener realizado un medición de resistencia del NTC con dos diferentes temperaturas y haciendo un calculo.

El siguiente link permite calcular el Beta empíricamente:

http://www.giangrandi.ch/electronics/ntc/ntc.shtml

Una vez conseguidos dichos datos, mediante formula es posible calcular la temperatura del NTC.

La siguiente función en Pawn calcula la temperatura del NTC conociendo su resistencia:

Código: (Pawn) [Seleccionar]
Float: NtcGetTemperature(Float: NtcRes)
{
   new Float: T
     
   // Calcular temperatura en Kelvins del NTC usando la formula Steinhart-Hart.
   T = 1 / ( (Float: LogN(NtcRes/NTC_R25) / NTC_BETA) + (1 / NTC_T25) )
   
   // Convertir temperatura a grados Celcius y retornar.
   return (T - 273.15)
}

Como se puede ver en la constante NTC_BETA hay que colocar el Beta del NTC.

Sin embargo como el PLC mide voltaje, no resistencia, necesitas otra función para deducir del voltaje leido (ver circuito arriba) la resistencia del NTC (por simple ley de Ohm):

Código: (Pawn) [Seleccionar]
// --------------------------------------------------------------------------------
// CONSTANTES INTRINSECAS DE RED DE POLARIZACION PARA TERMISTOR NTC
//
// Suponemos que el NTC está en un divisor resistivo, y medimos en el punto medio
// VSEN el voltaje del sensor de la siguiente manera:
//
//                  VSEN
// VCC O-----(RP)-----|-----(NTC_RES)-----> GND
//
// --------------------------------------------------------------------------------

// Fuente de alimentacion de red de polarizacion (en Volts)
#define NTC_RP_VCC               (5.2)

// Resistencia de polarizacion en Ohms.
#define NTC_RP                   (10000.0)

// ********************************************************************************
// Funcion     : NtcGetResistence()
// Descripcion : Obtiene la resistencia en ohms del NTC en la red de polarizacion.
//
// ENTRADA     :
//
//     - Vsen = Voltaje del sensor obtenido de la red de polarizacion.
//
// SALIDA      :
//
//    - Resistencia en Ohms.
//
// ********************************************************************************

Float: NtcGetResistence(Float: Vsen)
{
   new Float: NtcRes
   
   // Evitar tension negativa o valor 0.
   if(Vsen < 0.1)
   {
      Vsen = 0.1
   }
     
   // Calcular resistencia NTC en red de polarizacion por ley de ohm.
   NtcRes = NTC_RP / ((NTC_RP_VCC / Vsen) - 1)
     
   return NtcRes
}

Dicha función entrega la resistencia del NTC a partir del voltaje leido (pasado como argumento).

Te dejo el código completo en el archivo Ntc.p y el proyecto completo en el archivo .ZIP (es un proyecto que además de leer NTC, realiza otras operaciones por lo que es un código grande, pero debe centrarse en la función para leer el NTC solamente).

Le recomiendo tomarse su tiempo para entender e investigar como funciona el NTC, sus parámetros principales y luego con las formulas/código mencionado realizar la lectura.

Saludos












« Última Modificación: febrero 19, 2018, 16:43:17 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com