|
如下面的两幅图片所示,是我在网上找到的关于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([B30,B35,B40])
A = np.array([[T30**2,T30,1],[T35**2,T35,1],[T40**2,T40,1]])
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℃时的曲线都显然是错误的)。。。。
实在搞不懂为什么???是我的计算有错误还是那篇资料给的算法有局限性呢???求这方面的大侠给看一下指点一二。。。非常感谢。。。。。。。。。。。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|