你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 电池电压采集之低功耗设计

[复制链接]
STMCU-管管 发布时间:2020-9-22 10:11
前言

最近在做物联网项目,需要在硬件上实现休眠时超低功耗设计(整机待机电流在50uA以内),工作时必须带有电池电压检测(3.3V-4.2V)。项目是STM32L051做的,电池供电,功耗要求极高。

; ]' r: \8 c& W  |


提示:以下是本篇文章正文内容,下面案例可供参考


! ?' ~. ?3 @. B: S% k

一、ADC采集输入阻抗的问题$ F+ @4 j$ t9 e  L( ~

初始设计是用两个阻值相同电阻分压直接进行ADC采集,阻值1M,由该电路引起的待机电流为4.2/(1000 +1000)mA=2.1uA.此时比较合理。

1_meitu_8.jpg

9 R. b" L/ L4 q7 M# ]& q- D* g) q3 T' H/ {
编程采集数据时发现测试电压与实际电压有偏差,测试值总比实际值偏小一点。在软件上做补偿,把值修正了。

但是换一个板子测试的时候发现测试的电压又不准了,此时知道通过软件补偿这种方法行不通。那么只能从硬件找原因。

查找datasheet发现AD的输入阻抗最大只有50KΩ。


* d2 c. [/ ^4 u

   2_meitu_9.jpg
7 q: P0 w; O2 I5 ?
: R# _6 c) J. H2 N

3_meitu_10.jpg
% h+ E% D) p6 W6 i! e

6 W. Z1 B4 i# D  U图中RAIN:外部输入阻抗,STM32芯片中这个值最大为50KΩ;

RADC:采样开关电阻,最大值为1KΩ;

CADC:内部采样和保持电容,最大值为7pF.

在ADC数据采集的时候需要有电流流入,那么RAIN会产生一个压降。阻容网络中的RADC和CADC上,对电容的充电由RADC控制。随着源电阻(RADC)的增加,对保持电容的充电时间也相应增加。

对CADC的充电由RAIN+RADC控制,因此充电时间常数为tc = (RADC + RAIN) × CADC。如果时间过短,ADC转换的数值会小于实际值。

通过以上数据知道,采集精度跟采集时间和输入阻抗有关。但是通过计算得知,如果输入阻抗为300KΩ,那么充电时间约为2.4uS。在软件上把采样周期调到最大(ADC_SampleTime_239_5Cycles,频率为12M,时间19.9uS),还是存在误差。说明此时跟周期不是主要原因。

问题出在输如阻抗大于IC里ADC允许的最大阻抗。充电时电流分两路,一路经过R1到R2到地,还有一路经过R1流入MCU的AD接口。(不知是不是IO口会有一定的漏电流到地,IL)此时相当于在R2旁边并了一个电阻到地,检测点的电压不是标准的1/2Vbat.


3 V& L$ v7 j8 V! m/ C二、改进方法

! M' A+ O9 d' [+ o

下面介绍三个设计方案,方案一、二测试有效、方案三参考其他博客大牛,仅供参考。


) P. z7 Y- s9 F3 o8 e7 F$ M

1.加入电压跟随器$ P$ g4 m% J$ \" L2 |

由上面调试可以确定是AD采集输入阻抗过大的问题,加入电压跟随器后的阻抗可以低至毫欧级,因此选用一个低功耗(待机600nA)的电压跟随器可以完美解决这个问题。此种方案成本较高,但稳定度和精确度高。
6 N* O% Q! j* i, [6 G6 q; h, \电路如下:

  T; k8 C% u+ y: K" ~: b

4_meitu_11.jpg

+ X3 h8 Z. ]; L% t; g7 n' `+ [( C6 V, U* ]3 M1 B2 i

2.休眠时控制参考地& H- k5 S; ~$ L3 l" \3 C7 z/ v2 a* C: M

分压电阻选用在阻抗以内的阻值,工作时采集电流高点可以忽略,休眠时通过单片机控制采集电路GND来减小功耗。单片机休眠时将PA4拉高,待机电流为(4.2-3.3)V/(50+50)mA=9uA。此种方案电路设计最为简单。7 B" S$ X2 {( L* Y; Q
电路如下:
+ H+ W6 A0 U/ Q8 s3 M4 O% `* W( F

5_meitu_12.jpg
2 Q) e2 {+ E8 ^4 z1 ^5 |' K
" i3 S6 t+ ]5 @* X6 v* J" \

3.休眠时控制参考地
8 ^# R4 E' g0 A3 j, G' l

用MOS管控制电量采集开关,此种方法休眠时电流最小,几乎不计。休眠时PA4为低电平关断测量分压电阻不耗电,要测量前置高,在PA5测量电压。


8 N& U& G# m* ^% {6 i3 n+ ~电路如下:


/ E$ a- P) e: K5 @: r

6_meitu_13.jpg
% {/ F: v/ f* s/ f( @0 ~8 G, l6 U
" ~! q; W" i' z" K8 q6 R3 m

总结
& O, @1 G9 O* K& j8 k' m
  r5 R. c" o6 V3 H
$ c+ D/ N0 ?2 G$ g+ {/ t% q' t
上面介绍三个设计方案,方案一、二测试有效、方案三参考其他博客大牛,还未验证,仅供参考。关于低功耗方面的硬件方案思路很多,各位小伙伴可以大胆构思,小心求证。
2 u0 a/ Z3 f2 S1 G( V' e' [
% |$ m, H- E7 A0 d1 I6 T. N2 X
赞 1 收藏 1 评论4 发布时间:2020-9-22 10:11

举报

4个回答
radio2radio 回答时间:2021-1-29 16:48:35
事情应该是这样的,
4 W! \5 `# t9 V7 u7 J* H4 W( \检测电池电压,没有ADC的速度要求,1秒钟,1分钟,10分钟读一次没有分别。0 C2 d  N, @+ J: f: z+ h2 e. s

# K5 n% a8 F' E# l6 W所以简单地,对地接一只0.1-1uF的电容在ADC的脚上,既可以解决ADC的输入阻抗低的问题,又可以防止各种干扰。9 ]- A  W7 ?- L& N/ K! Y& t: g
2只电阻+1只电容,搞定。' P8 |3 F6 ]/ Q0 @( @! R

' y& |- m/ F) _3 |% O5 U
& T6 ]; L* {+ {! \% ?$ f# B" b$ D" X: [
goyhuan 回答时间:2020-9-22 11:02:41
很有用
安静的句型 回答时间:2021-1-29 14:34:46
第二个方法很实用啊!
网络孤客 回答时间:2021-2-1 16:58:55
还是没明白方法二中,PA4怎么接?
7 R9 m' U9 P5 L% m3 r3 L/ W7 Z7 [9 w7 s8 v. M' Y8 v& @/ t( H( f
PA4与地相连?还是程序控制PA4高低电平?
  ~; L0 T' I+ L/ {/ `5 ]+ D6 l
" B( I9 h& Z) |, U9 m9 U. |如果程序控制PA4为高电平,这样ADC电压值不就超过Vref了吗?
西点钟灵毓秀 回答时间:2021-3-4 09:03:27
ldptest 发表于 2021-2-1 16:583 ~$ H% |7 v3 ]" f2 ]  z$ Y# ]
还是没明白方法二中,PA4怎么接?
2 C1 M% P, M1 V' L7 J3 m- L  z+ z( N' C* p( o5 M, P
PA4与地相连?还是程序控制PA4高低电平?
, M, j) ?; a3 k+ h) _
楼主只是放了个地的符号,其实是直接接PA4的。
网络孤客 回答时间:2021-3-4 15:00:36
zts329547875 发表于 2021-3-4 09:03
, x: i4 S$ t6 E/ L  x6 Y$ @楼主只是放了个地的符号,其实是直接接PA4的。

$ Q2 |, L6 j( B' D% c* d4 w6 \这个后来琢磨明白了。0 Z2 X' S4 Y' U3 q

. O# ]' V+ M. M6 s! E如果测量电池的电压,4楼的更方便。

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版