概述
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX 作 者:文化人
XX 联系方式:
XX 版权声明:原创文章,欢迎评论和转载~转载时能告诉我一声就最好了
XX 要说的话:作者水平有限,难免有不足之处,恳请指正!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
写在前面:接上一篇文章,理论上能够根据读到的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)的转换
最后
以上就是贪玩鸭子为你收集整理的怎么根据读到的ADC值,推算实际电压值(二)的全部内容,希望文章能够帮你解决怎么根据读到的ADC值,推算实际电压值(二)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复