如何通过STM32内部参照电压VREFINT获取电压和电量?

        最近项目开发需要使用ADC采集显示电压和电量(单片机STM32L476RGT6),拜读了很多大佬的文章,记录如下:

        每个STM32芯片都有一个内部的参照电压,相当于一个标准电压测量点,在芯片内部连接到ADC1的通道17。

        根据数据手册中的数据,这个参照电压的典型值是1.20V,最小值是1.16V,最大值是1.24V。这个电压基本不随外部供电电压的变化而变化。 不少人把这个参照电压与ADC的参考电压混淆。ADC的参考电压都是通过Vref+提供的。100脚以上的型号,Vref+引到了片外,引脚名称为Vref+;64脚和小于64脚的型号,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。 在ADC的外部参考电压波动,或因为Vref+在芯片内部与VCC相连而VCC变化的情况下,如果对于ADC测量的准确性要求不高时,可以使用这个内部参照电压得到ADC测量的电压值。

         

        以测量1通道的电压值为例,先读出参照电压的ADC测量结果,记为ADre;再读出要测量通道1的ADC转换结果,记为ADch1;则要测量的电压为:

Vch1 = VREFINT* (((ADch1*(VREF/4096))/(ADre*(VREF/4096)))  

注:VREFINT=1.21V(根据手册,其实际范围为1.18~1.24v),VREF为参考电压值=3.3V

公式简化:

Vch1 = VREFINT*(ADch1/ADre)  

大白话 :STM32内部参照电压VREFINT的模拟量是固定的,出厂的时候已经标好;在通过ADC采集求出ADC1的17通道的参照电压的数字量;就可以通过通道1的数字量获取到对应的模拟量了,即电压,VREFINT的模拟量 / VREFINT的数字量 = 要求的电压 / 此通道的数字量


2、根据电压怎么算电量百分比?

电量百分比=(当前电压值-最低电压值)/ (最高电压值-最低电压值)*100%;

最高和最低电压值需要根据电池的实际情况进行设置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值