oldslam 发表于 2019-6-21 14:20:29

STM32L151RET6 使用3.6V的锂亚电池供电,怎么获得比较准确电压

一般使用过程中,MCU使用稳定的3.3V(12V电压转3.3V)进行供电,然后对12V电池采用采样,获得准确的电压。但是我有个特殊使用情况。
MCU: STM32L151RET6 使用 3.6V的一次性锂亚电池供电,由于电池(MCU工作电压)随着时间变化电池电压逐渐变低,MCU怎么才能获得比较准确的电池电压?

oldslam 发表于 2019-6-21 14:28:26

STM32L151RET6,没有VREF+、VREF-引脚

tomzbj 发表于 2019-6-21 14:34:51

没有内部基准么?那就外加个TLV431之类,对它的输出电压采样,然后反算出电池电压。TLV431的地端接到GPIO,不用的时候把GPIO设为高阻,减小电池消耗。

physis 发表于 2019-6-21 14:45:28

stm32都有内置1.2V的参照电压,可以先用这个参照值算出锂电的电压作为Vref电压,再去算12V电池的采样电压
当然stm32内置的参照电压精度一般,如果要求更高精度,可以找个电压基准芯片连接到stm32的一个空闲Ain引脚上,同理先算出锂电的电压,再算采样电压

如果不差钱:1.换100pin带Vref脚的芯片+电压基准。2.外接带电压基准的ADC

lyzhangxiang 发表于 2019-6-21 15:39:05

一般内部会有VCC=3.0V的时候 采集到的一个ADC值存储在FLASH中
由于是一个低成本的内部参考 所以出厂用3V供电纪录了ADC值 等于变向校准了参考源
这个低成本的参考有个特性就是 每片的一致性不好 但是还算是稳定 所以出厂单独校准下就满足用户使用了
使用者通过这个关系来获取很好的精度 具体的手册应该有讲
以上是L0xx上的 L1上猜测是一样的

hall 发表于 2019-6-21 16:07:22

4楼的是正解。

zjykymt 发表于 2019-6-21 16:47:06

是的,手册上都会描述vref会对应到ADC的哪一个通道以及vref的额定值,先采集vref的ADC值,然后使用vref进行校准并获取vdda。

oldslam 发表于 2019-6-21 19:15:48

多谢各位提醒。
STM32L151RET6系列MCU:
100脚和144脚封装: 为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和VREF-脚上。在VREF+的电压范围为2.4V~VDDA。 64脚或更少封装: 没有VREF+和VREF-引脚,他们在芯片内部与ADC的电源(VDDA)和地(VSSA)相联。

下午调试

oldslam 发表于 2019-6-21 19:21:23

由于 :STM32L151RET6 在芯片内部与ADC的电源(VDDA)和地(VSSA)相联,Vref+在芯片内部与VCC信号线相连,没有引到片外,这样AD的参考电压就是VCC上的电压。使用电池供电并用ADC采样电池电压值,程序无法完成这一任务,解决的办法就是使用100引脚带Vref的MCU。经过一个下午的调试终于得到了比较满意的结果:
感谢 physis。问题解决。
页: [1]
查看完整版本: STM32L151RET6 使用3.6V的锂亚电池供电,怎么获得比较准确电压