怎么根据读到的ADC值,推算实际电压值(二)

来源:互联网 发布:google seo 编辑:程序博客网 时间:2024/04/28 02:22

写在前面:接上一篇文章,理论上能够根据读到的ADC值,推算出实际电压值;但是,对于管脚少于64pin封装的STM32芯片,采用的ADC参考电压是内部电源引脚上的输入电压,所以,就有可能造成不同的锂电池、LDO会有不同的参考电压值,虽然STM32可以正常工作,但是参考电压不同,就会造成根据读到的ADC值,推算的电压值并不准确。


无独有偶,笔者在实际开发中就遇到了这样的问题:在研发新项目时,延用了上个项目的电压处理模块,由于上个项目使用的是3V的LDO,而目前项目使用的是3.3V的LDO,这就导致在新项目里推算出的电压值出现了拐点,如下图:



由于出现了拐点,所以低电判断就不准确,后来根据数据手册,找到了两个内部的ADC通道,这个参考电压值的典型值为1.20V,而且基本不随外部供电电压的变化而变化。

STM32的ADC可以直接测量2个内部信号源,其中一个是温度传感器,另一个是内部参考电压。其中,温度传感器和通道ADCx_IN16相连接。内部参考电压VREFINT和ADCx_IN17相连接。


具体操作方法为:在测量某个通道的电压值之前,先读出ADCx_IN17引脚参考电压的ADC转换数值,记为AD_CH17,再读出要测量通道的ADC的转换数值,记为AD_CHX。则要测量的电压数值为:

V_CHX = 1.2 * 100 * (AD_CHX / AD_CH17);

因为用到浮点运算,所以扩大100倍,便于比较,注意把电压检测的间隔调大一点,保证浮点运算的时间;

注:必须设置TSVREFE位激活内部通道:ADCx_IN16(温度传感器)和ADCx_IN17(VREFINT)的转换


阅读全文
0 0
原创粉丝点击