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

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

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

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

0 o6 \! G0 k3 t  g) ~1 Z


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


' E* o8 g1 E" I* L: d! ]6 m

一、ADC采集输入阻抗的问题0 J0 Q; h+ Q. B9 [( h

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

1_meitu_8.jpg

. L' Z( v3 Y' W+ o" Q9 ~6 K! ^% r. D1 P' q1 l$ q
编程采集数据时发现测试电压与实际电压有偏差,测试值总比实际值偏小一点。在软件上做补偿,把值修正了。

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

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

) b# r6 v3 H# ^

   2_meitu_9.jpg
) |; [" x1 g' B
( h2 U" M8 u5 K8 A+ D) ~

3_meitu_10.jpg

% U9 P& r5 s3 z  L$ |+ L: M4 |8 Z. A9 ]/ a7 u, T! [  r( x
图中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.

) {6 p/ T4 {5 _) x$ ]5 F3 `
二、改进方法
. M+ h4 m8 k9 ^! {, u. V  U

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


5 d3 s1 k7 n: ^, P+ {  |

1.加入电压跟随器' G( M+ K6 a) _( H2 H

由上面调试可以确定是AD采集输入阻抗过大的问题,加入电压跟随器后的阻抗可以低至毫欧级,因此选用一个低功耗(待机600nA)的电压跟随器可以完美解决这个问题。此种方案成本较高,但稳定度和精确度高。
# }# ?8 G. w, Y% I电路如下:


' h5 \( R2 z& |( o/ m

4_meitu_11.jpg
# ]" Q. Q9 F1 K5 g3 }) J/ k
) N5 B- G' \+ W/ G* }

2.休眠时控制参考地
; [7 Q3 c( d8 t8 S  A; _

分压电阻选用在阻抗以内的阻值,工作时采集电流高点可以忽略,休眠时通过单片机控制采集电路GND来减小功耗。单片机休眠时将PA4拉高,待机电流为(4.2-3.3)V/(50+50)mA=9uA。此种方案电路设计最为简单。" v2 I+ x+ }; W+ W! Z' e/ ?5 p7 o
电路如下:
- M# _2 g; k# R& s+ R' m! g

5_meitu_12.jpg

9 E; v& c" b* C& z0 [, B& u; k" C) P3 u% V7 q$ W3 L& D

3.休眠时控制参考地2 f  d' D. i. o9 w# a2 _+ e* p4 N$ C0 @

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

7 G& s2 E) `2 [$ b
电路如下:

- I* a* P0 f( P# f* \" m- W

6_meitu_13.jpg
6 _) r% Q) E- ~+ y
9 U5 U) @  F% o0 d; u+ |

总结8 P# D, J) @% I
% E. h: v4 c; q6 V6 D. \0 y, P0 O/ }
* s3 H, F0 E3 s) [
上面介绍三个设计方案,方案一、二测试有效、方案三参考其他博客大牛,还未验证,仅供参考。关于低功耗方面的硬件方案思路很多,各位小伙伴可以大胆构思,小心求证。( X2 ?' Y: U' o# N9 B$ Q: L8 t; l

( M) d; v! c" z% h3 A
1 收藏 1 评论4 发布时间:2020-9-22 10:11

举报

4个回答
goyhuan 回答时间:2020-9-22 11:02:41
很有用
安静的句型 回答时间:2021-1-29 14:34:46
第二个方法很实用啊!
radio2radio 回答时间:2021-1-29 16:48:35
事情应该是这样的,
* t0 J6 E8 h$ ^9 e% D检测电池电压,没有ADC的速度要求,1秒钟,1分钟,10分钟读一次没有分别。
6 [' s! @/ L& ^0 L( F7 }
" M4 O0 W4 |. C" M所以简单地,对地接一只0.1-1uF的电容在ADC的脚上,既可以解决ADC的输入阻抗低的问题,又可以防止各种干扰。) u' s# W8 ~1 W5 @- K/ O9 n) h& q
2只电阻+1只电容,搞定。$ a& r* T% X( T$ [: M

% _# ^" e! r" @: W! n7 k3 T; Z  a2 ^+ ^1 a5 M/ {! U

! Y" `+ H9 N4 X
网络孤客 回答时间:2021-2-1 16:58:55
还是没明白方法二中,PA4怎么接?5 y3 {( Z% x0 [  z
" [; w* X9 S8 h% n6 ~. W
PA4与地相连?还是程序控制PA4高低电平?
8 ^8 C& h1 K$ S$ m: @* H2 c% J  X, z
& U' A: ?; b4 E如果程序控制PA4为高电平,这样ADC电压值不就超过Vref了吗?
西点钟灵毓秀 回答时间:2021-3-4 09:03:27
ldptest 发表于 2021-2-1 16:58+ [) M/ p0 ]6 I: ~& d
还是没明白方法二中,PA4怎么接?
1 v, U0 D! I, L( Q$ r+ _) ^+ R6 R1 o& E+ Z  y4 ^- t
PA4与地相连?还是程序控制PA4高低电平?
3 [) n) z- z; m/ I# A
楼主只是放了个地的符号,其实是直接接PA4的。
网络孤客 回答时间:2021-3-4 15:00:36
zts329547875 发表于 2021-3-4 09:03
/ E% x0 H& V7 ^" O楼主只是放了个地的符号,其实是直接接PA4的。
8 Q' f! r: e: d9 U+ b2 I. s# n
这个后来琢磨明白了。" W. u# h( l! i# P+ D7 |- X% z9 F

) C+ x5 F- G8 f" ^% Z如果测量电池的电压,4楼的更方便。

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版