XIVN1987 发表于 2012-7-24 17:20:58

求教:网上找到的NTC电阻-温度特性计算,结果不正确!!


如下面的两幅图片所示,是我在网上找到的关于NTC的电阻-温度特性求解公式:



资料的具体地址是:http://www.sinochip.net/TechSheet/3.htm


我根据上面的资料自己写了一段脚本(Python的)来完成上面所说的计算,具体代码如下:

# -*- coding: utf-8 -*-
from __future__ import division
'''
NTC温度-电阻特性近似表达式:R = R0*exp(B*(1/T - 1/T0))注:温度T的单位都是开尔文,T(K)= T(ºC)+273.15;T0为25℃

但实际上,热敏电阻的B值并非是恒定的,他是温度T的函数。因此在较大的温度范围内应用上面的表达式计算电阻时,将与实
测值之间存在一定误差。

NTC温度--B值的关系为:B = C*T**2+D*T+E,其中C、D、E为常数,且因生产条件不同造成的B值的波动会引起常数E发生变化,
但常数C、D 不变。因此,在探讨B值的波动量时,只需考虑常数E即可。

只要将上面的B值计算式带入NTC的温度-电阻特性表达式,即可降低计算值与实测值之间的误差,可认为近似相等。

所以,求解NTC温度-电阻特性曲线,必须要先求出常数C、D、E来,这可以通过代入4个已知(温度、电阻值)数据 (T0, R0)、
(T1, R1)、(T2, R2) 、(T3, R3)来完成。
'''

import math
import numpy as np
import scipy as sp
import pylab as pl
import sympy as sy


'''由R = R0*exp(B*(1/T - 1/T0))      得B = ln(R/R0)/(1/T - 1/T0)
带入:(25, 50.00)(30, 40.20) (35, 32.48) (40, 26.43) 四个点(从厂家提供的NTC手册获取)求取相应温度下的B值'''
T25 = 25+273.15
T30 = 30+273.15
T35 = 35+273.15
T40 = 40+273.15
B30 = math.log(40.20/50.00)/(1/T30 - 1/T25)
B35 = math.log(32.48/50.00)/(1/T35 - 1/T25)
B40 = math.log(26.43/50.00)/(1/T40 - 1/T25)

'''由此可得下面的多项式:
B30 = C*T30**2 + D*T30 + E
B35 = C*T35**2 + D*T35 + E
B40 = C*T40**2 + D*T40 + E
'''
B = np.array()
A = np.array([,,])
C,D,E = np.linalg.solve(A,B)

T = np.arange(-45.0,105.0,0.1)      #温度范围:-45℃——105℃,步进0.1℃
T = T + 273.15
B = C*T**2+D*T+E
R = 50.00*np.exp(B*(1/T - 1/T25))

pl.plot(T-273.15,R,'g')
pl.show()

脚本运算得到的结果如下图所示:横坐标为温度,纵坐标为NTC的阻值(单位为K):


我大致跟手册上的几个点对了一下,发现25℃——45摄氏度的数据是对的,可是在温度较大或较小时温度显然是错误的(在-40℃时的曲线都显然是错误的)。。。。

实在搞不懂为什么???是我的计算有错误还是那篇资料给的算法有局限性呢???求这方面的大侠给看一下指点一二。。。非常感谢。。。。。。。。。。。

页: [1]
查看完整版本: 求教:网上找到的NTC电阻-温度特性计算,结果不正确!!