博士
最后登录1970-1-1
在线时间 小时
注册时间2020-5-13
|
首先是非常感谢村长的的加分- -初来乍到,分享一下刚毕业出来的时候做的项目用到的NTC测温
如下图所示,使用ATmega88做为主控MCU,电源电压为5.34V,上拉电阻为10K,选用B值为3950,T1为50K的NTC热敏电阻。
NTC的电阻值和温度变化的关系式为:
RT = RN expB(1/T – 1/TN)
RT :在温度 T ( K )时的 NTC 热敏电阻阻值。
RN :在额定温度 TN ( K )时的 NTC 热敏电阻阻值。
T :规定温度( K )。
B : NTC 热敏电阻的材料常数,又叫热敏指数。
exp :以自然数 e 为底的指数( e = 2.71828 …)
温度阻值表如下:
原理是,ADC0不停检测NTC的电压,然后计算出阻值,代入公式,计算出阻值。但是公式比较复杂不适合一直做这个运算。
因为我们的温度测量范围是确定的。所以最好的办法是是查表法,但是我们又不可能做一个把所有温度的的表格,这样子会占用很大的程序空间。
所以需要一定的技巧。
以下是我在这个项目中所使用到的,利用NTC的特定公式,直接根据上拉电阻、供电电压,计算出每个电压点的温度值,然后做成表格。程序里读到电压值之后直接查表。
下图是我所使用到的excel表格,
从表格中可以看到,测量到的电压为1V则对应的是115.21度,2V对应的是81.87度。有的童鞋会说,如果我测量到1.03V,那温度值是多少呢?
这个就是本帖子的另外一个知识点了,叫做线性插值法。有想深入了解的可以搜一下,我这里大概说一下,上面图形中我们可以看到温度电阻值的关系是一条曲线,不是普通的线性关系。
但是为了方便计算,我们可以把曲线分成苦干等份,分成的每一段都可以认为是线性关系。如果测量到1.03V,那么我们可以把1V-1.1V当做一条直线,然后1.03V在这区域所占的比例跟温度所占的比例关系是对等的,
从而计算是相对准确的数值。
刚毕业写的代码,没法见人,就只附上关键点。
float temptab[]=
{
292.97, 241.17, 197.51, 174.82, 159.71, 148.46, 139.51, 132.08, 125.72, 120.16,
115.21, 110.73, 106.64, 102.86, 99.34, 96.05, 92.93, 89.98, 87.17, 84.47,
81.87, 79.36, 76.93, 74.56, 72.25, 69.99, 67.76, 65.57, 63.41, 61.27,
59.13, 57.01, 54.89, 52.76, 50.62, 48.46, 46.27, 44.05, 41.79, 39.47,
37.08, 34.61, 32.03, 29.34, 26.49, 23.46, 20.18, 16.59, 12.59, 8.01,
}; //电压对应温度表
void adc_init(void)//ADC初始化
{
EICRA=0x00; //低电平触发
EIMSK=0x01; //int0使能
SMCR=0x04; //掉电模式
ADCSRA = 0x00; //disable adc
ADMUX = 0x60; //select adc input 0 VCC 左对齐 输入0
ACSR = 0x80; //禁用模拟比较器
ADCSRB = 0x00;//禁用自动触发源
ADCSRA = 0x83;//使能ADC 8分频
}
#pragma interrupt_handler adc_isr:22
void adc_isr(void)//ADC中断
{
//conversion complete, read value (int) using...
//value=ADCL; //Read 8 low bits first (important)
//value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
value=ADCH;//左对齐 只要高八位
}
Vol= 53.4*value/256;
//Rt=(unsigned int)(1000*(Vol/(5.33-Vol)));
//CheckTem(Rt);
//temp=V;
//temp=CalcTemp(Rt);
Rt=(int)Vol;
Vm=Vol-Rt;
temp=temptab[Rt]-Vm*(temptab[Rt]-temptab[Rt+1]);//之前写的线性插值。
附件上传有NTC计算表格、NTC计算公式。欢迎大家拍砖。
BHS-NTC温度特性计算工具.zip
(6.38 KB, 下载次数: 64)
NTC计算表格.zip
(76.45 KB, 下载次数: 65)
|
|