单片机裸机程序——NTC检测


单片机裸机程序——NTC检测

NTC就是热敏电阻,它的阻值会随着温度的变化而变化,温度越高,它的阻值越小,两端电压也越小。

NTC检测在电路应用中是充当产品充电和放电温度保护机制的依据,有板载NTC或电池上的NTC。

NTC阻值反映了电池表面的温度,一旦温度超出预设的安全范围,立即开启保护机制,避免产品损坏或电池起火。

一、ADC采集知识

ADC转换和采样为什么需要参考电压?

参考电压也叫基准电压,是ADC转换的内部标准电压,它限定了模拟电压的转换范围,所有模拟输入电压都按照它进行比例转换

当模拟信号电压较低时,怎么提高ADC分辨率?

通过降低参考电压,降低参考电压意味着ADC的转换范围变窄,从而增加了每个数字输出代码所代表的模拟电压范围。例如,Vref从8V降低到4V,对于一个3位(2的3次方等于8)的ADC,其LSB(最低有效位)将从1V(8V/8)降低到0.5V(4V/8),从而提高分辨率。另一个办法是换精度更高(位数高)的ADC芯片,ADC的位数决定能够表示的数字值的范围。8位的ADC,其最大数值为2^8-1=255。

如何将采集到的ADC值转换成实际电压?

输出的数字值是相对于参考电压的。实际的模拟电压值必须将数字代码与参考电压进行比例计算。例如,ADC输出为“101”(对于3位ADC),参考电压Vref为8V,那么实际的模拟电压值将是 (5/8) * Vref = 5V(“101”代表5个LSB,每个LSB(ADC的分辨率)为
Vref/(2^3-1)约为 1V)。
V_actual = V_ref*(ADC_value / (2^n - 1))

采集精度为0.1V的电压值,参考电压是3.3V,请计算选择的ADC位数?
0.1 = 3.3 / (2^n - 1),n约为5.17,那么最小整数位数为6

电池实际电压是充电时的电压吗?

不是的,今天调试给电池充电发现,本来只有百分之50的电池电压,一插充电器,电池电压瞬间变到百分之75,一拔充电器,电压一下子降低不少,看到电量指示灯就是插电变绿灯,拔电变红灯。真正原因是给电池充电时,充电电压必须高于电池实际电压才能充进去,转变电量灯不能以充电电压为依据,而是加入算法,比如充电时需要每隔一段时间才认为电量增加百分之一,放电时同样判断方式,这个时间长度可以根据实际充电电流而定,这样指示灯指示的电量才是最接近电池实际电量。

二、NTC阻值采样

热敏电阻NTC有阻值表,把热敏电阻跟一个10k参考电阻串联,电源电压和参考电压都是5V,那么NTC电压,ADC值跟阻值表是什么关系呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通常在ADC采集过程中,其参考电压(电压基准)都是固定不变的,所以可以使用绝对ADC值来确定采集的模拟量大小。

那如果参考电压是变化的,如电池电压,模拟电路的供电电压也是变化的,还能以绝对ADC值来确定采集的模拟量大小吗?

现在的电子产品安全性变强了,特别是充电安全,大部分使用锂电池供电的产品,比如蓝牙耳机的充电盒的锂电池就带有NTC温度检测功能,除了正极和负极外的第三根线就是NTC信号线。

NTC电阻的特性是阻值随表面温度的变化而变化,温度越高,阻值越小,NTC电阻两端的电压越小。所以通过检测NTC阻值的变化而知道电池温度。

知道NTC电阻两端的电压以及通过其的电流,就能计算出当前的阻值了。

两端的电压可以通过ADC采集的方式,然后结合参考电压及AD转换器的位数。
参考电压通常是固定电压,也可以是变化的电压。给NTC电路供电的也可以是固定电压或电池电压或I/O上拉输出电压。

假设是由I/O上拉输出电压给NTC电路供电的,NTC电路参考电路如下。
在这里插入图片描述
P1.3口输出高电平(上拉到MCU供电电压,MCU由锂电池不经稳压而直接供电),P1.4是ADC采集输入口。当电池电压变化时,那么P1.3口输出的电压也会变,NTC电阻两端的电压也会变,即使NTC阻值(只与温度有关)没变。

电池电压VDDH也是需要ADC采集得到的,假设是通过特定ADC通道采集内部LDO电压(该电压可以认为是固定的,有变化也是很小的)。LDO的实际电压LDO_V可以通过直接读取指定地址而得,ADC采集LDO得到的值是LDO_ADC。采用12位的AD转换器,则有以下公式1:
在这里插入图片描述

4095是ADC的最大值(2的12次方-1)。

采集NTC的ADC值是以电池电压为参考电压,就有以下公式2:
在这里插入图片描述
公式1和2结合得到
在这里插入图片描述
那么NTC电阻两端电压是
在这里插入图片描述
根据串联电路电路相等可以得到NTC阻值NTC_R:
在这里插入图片描述
在这里插入图片描述
以NTC电阻的当前阻值确定温度值,即使参考电压和供电电压是变化的,只要温度不变,得到的阻值就不变。如果以采集到的ADC绝对值或NTC电阻两端电压为判断依据,得到的温度是不正确的。

NTC电阻有对应的R-T表,每个温度点对应一个阻值范围。
在这里插入图片描述
可以用电阻箱模拟NTC电阻,调节到R-T表中温度点对应的最大最小阻值,验证实测到的NTC阻值存在多少误差。在实际应用时,读到的阻值在那个范围内,就知道当前的温度点了。

另外,NTC温度保护机制中启动保护和关闭保护之间的切换不能只以一个临界点,比如温度超过45℃了,马上关闭充电,一旦小于45℃,又马上打开充电,这样就会出现在45℃左右频繁切换。合理的方法是超过45℃,滤波几秒后关闭充电,等降回43或42℃了再打开充电。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值