STM8L系列芯片一般采用电池供电,当电池使用一段时间后,电池电压下降,如果使用电池电压作为AD转换参考电压,会导致AD采样失真。STM8L内部有一个参考电压,电压为1.225V,使用内部参考电压做基准,可以解决这个问题。
以stm8l052为例,
AD初始化:
采样内部参考电压,以单片机供电电压为基准
采样NTC热敏电阻电压,以单片机供电电压为基准,在AD采样4通道。
#define VREF 1.225L
根据内部参考电压计算NTC电阻电压,因为内部参考电压固定,而且和检测NTC电阻电压AD都使用单片机供电电压同一个参考源,所以内部参考电压AD值和NTC电阻电压AD值成比例关系。
NtcAdValue = GetNtcAd();
VNtc = ((float)NtcAdValue*VREF)/(float)VrefintAdValue;
也可以根据内部参考电压计算当前单片机的实际供电电压
VrefintAdValue = GetVrefintAd();
VddValue = (4096*VREF)/(float)VrefintAdValue;
当NTC电阻和一个430K电阻串联分压时,根据当前单片机的实际供电电压就可以计算出NTC电阻当前的阻值了
Rs = (430*VNtc)/(VddValue-VNtc);
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持以下吧