|
最佳答案:我们知道,电阻R 与电容C 充电时间的关系如下图:
注:Rs 为标准电阻Rt 为热敏电阻
由上图可以看出在RC 充电开始阶段,我们可以认为是近似线性的。
那么:
Tt=K*Rt*C (1)
Ts=K*Rs*C (2)
其中: K 为常数
由(1)、(2)可知充电时间的比例与R 有关,而C 无关。
Rt=(Rs*Tt)/Ts
当然,随环境温度的变化电容C 变化比较大,我们完成标准电阻和热敏电阻对同一电容的充放电在很短的时间
内,因而电容C 变化引起的误差可以消除。为了提高精度,对电容C 的选取也有关系,电容容量不能太小,也不能太大,
与传感器的标称值有关。
下面是我自己写的程序,仅着参考:
///////////////////////////////////////
RC充放电---得到NTC的阻值
电路: p2.3(IOntc)接NTC,P2.4(IOrs)接一个1k的电子,二电阻一端连接一个10uf的电容到地
思路:
; 放电:
; 二个端口是都输出0,
; 充电:(NTC)
; 让 IOrs 输入检测 0 当 IOrs 为高,继续检测直到为0为止
; IOntc 输出 1 ,进行充电,并开始计时,
; 时刻检测IOrs的电平,当 IOrs 端口为高电平的时候,说明充电已经完成,并停止计时,把时间保持给t_ntc_middle和t_ntc_low
; 放电:同上
; 充电:(RS)
; 让 IOntc 输入检测 0 当 IOntc 为高,继续检测直到为0为止
; IOrs 输出 1 ,进行充电,并开始计时,
; 时刻检测 IOntc 的电平,当 IOntc 端口为高电平的时候,说明充电已经完成,并停止计时,把时间保持给t_rs_middle和t_rs_low
; 注:这里所说的计时是根据指令的长短计时的,比如我这里一条指令为0.25US,一周为7跳指令
///////////////////////////////////////
///////////////////////////////////////
.DATA
t_ntc_middle ds 1 ;
t_ntc_low ds 1 ;
t_rs_middle ds 1 ;
t_rs_low ds 1 ;
///////////////////////////////////////
.CODE
///////////////////////////////////////
rc:
///////////////////////////////////////
;放电
///////////////////////////////////////
rc_sub:
bset IOntcm
bset IOrsm
bclr IOntc ;输出 0
bclr IOrs
///////////////////////////////////////
bclr IOrsm ;输入检测 0,为0 说明放电完全
bts0 IOrs
jmp $-1
///////////////////////////////////////
bts0 f_turn ;为谁充电
jmp rc_rs_add
///////////////////////////////////////
;充电:(NTC)
///////////////////////////////////////
rc_ntc_add:
clr t_ntc_low
clr t_ntc_middle
bset IOntcm ;输出 1,充电
bset IOntc
incms t_ntc_low
jmp $+2
incms t_ntc_middle
bclr IOrsm
bts1 IOrs ;检测1,为1 说明充电完成
jmp $-5
bset f_turn
jmp rc_pro90
///////////////////////////////////////
;充电:(RS)
///////////////////////////////////////
rc_rs_add:
bset IOrsm ;输出 1,充电
bset IOrs
incms t_rs_low
jmp $+2
incms t_rs_middle
bclr IOntcm
bts1 IOntc ;检测1,为1 说明充电完成
jmp $-5
bclr f_turn
jmp rc_pro90
///////////////////////////////////////
rc_pro90:
Ret
RC 测温的实现方法是利用电阻R 给电容C 充放电时间来测量温度的(此处的温度感测器为热敏电阻)。
用不同的电阻给电容充放电时间不一样,对RC 测量温度的精度与电阻R 和电容C 的选取有关。我们通常是选用一个标准电阻(随温度变化其阻值变化很小,可忽略不计,通常为高精度的金属膜电阻),它的阻值Rs 与温度传感器在标准大气压下、25℃时的阻值相同。当温度发生变化时,热敏电阻的阻值Rt 发生变化,那么热敏电阻Rt 给电容C 的充放电时间也发生变化。而标准电阻Rs 给电容C 的充放电时间则不发生变化。 |
|