当我们在项目为了节约成本,在mcu没有AD模块的情况下,想要获取外界温度,可以利用RC充放电的特性获取外界温度(对温度精度要求不高的情况下)。
实现原理
在RC电路进行充电或放电时,若电压、电容的值不发生改变,且RC的时间常数足够大,那么我们可以认为电阻之比等于电容充电/放电时间之比。
K
=
参考电阻值
n
t
c
电阻值
=
参考电阻对电容充
/
放电时间
n
t
c
电阻对电容充
/
放电时间
K= \frac{参考电阻值}{ntc电阻值}= \frac{参考电阻对电容充/放电时间}{ntc电阻对电容充/放电时间}
K=ntc电阻值参考电阻值=ntc电阻对电容充/放电时间参考电阻对电容充/放电时间
P13对电容进行充电
P10端口设置为输入态。
P11端口设置为输入态。
P13端口设置为输出态,输出低电平,此时C1两端的压差近似等于5V,电容以极短的时间充满电。
电容C1通过R1进行放电
P13端口设置为输入态。
P11端口设置为输入态。
P10端口设置为输出态,输出高电平,此时C1两端的电荷通过P10进行泄放。使能定时器进行计数,当P13端口采样到高电平时(建议外部中断触发采样),视为电容C1通过R1放电结束,获取定时器的计数值,该值为电容C1通过参考电阻R1的放电时间。
电容C1通过NTC电阻进行放电
P13端口设置为输入态。
P10端口设置为输入态。
P11端口设置为输出态,输出高电平,此时C1两端的电荷通过P11进行泄放。使能定时器进行计数,当P13端口采样到高电平时(建议外部中断触发采样),视为电容C1通过Rntc放电结束,获取定时器的计数值,该值为电容C1通过Rntc的放电时间。
通过上述操作,我们可以得到电容C1通过R1和Rntc的放电时间。R1是以知值,由此可以计算出在当前温度下Rntc的阻值,通过查表的方式可以获得当前的温度。
示波器抓取P13端口的波形