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

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

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

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


  _3 [: f) Z( A7 R$ t+ v5 R


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

' y: M. O7 {9 J0 O

一、ADC采集输入阻抗的问题8 W/ m- u, H; u

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

1_meitu_8.jpg

8 v( u; Y  B3 Z  j9 I2 J3 C9 e& B8 }$ {1 J% G* w
编程采集数据时发现测试电压与实际电压有偏差,测试值总比实际值偏小一点。在软件上做补偿,把值修正了。

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

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

# B# Z3 S/ D. U. p; b2 M# S( Y8 d

   2_meitu_9.jpg

& k) ~3 ?0 |' R: H0 z, s- B+ e9 E
: M8 o# \3 P! E9 ?

3_meitu_10.jpg
4 i1 ~' S% L4 W& I  q

: Y2 y, h2 ?  Y! I) J# ]& N3 M# H图中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.


* l5 p0 x% c- J' C& d二、改进方法
8 ?8 S, i9 H" S- _( m( ^' z1 A6 }

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

. E$ m( ~$ t. R: o

1.加入电压跟随器+ ?9 ~0 @) [0 {4 x, k+ K' f" c

由上面调试可以确定是AD采集输入阻抗过大的问题,加入电压跟随器后的阻抗可以低至毫欧级,因此选用一个低功耗(待机600nA)的电压跟随器可以完美解决这个问题。此种方案成本较高,但稳定度和精确度高。* S: A/ U1 [% X* m  R' F
电路如下:

7 J3 N( k) H% z( |# o$ w( u( D

4_meitu_11.jpg

- ^5 y' q7 Z2 X2 r. p5 w- S& G4 Q8 }- K5 Q2 I9 n7 c, ^! H

2.休眠时控制参考地
+ {! e" u& Q8 ?' p% P& U! V5 n

分压电阻选用在阻抗以内的阻值,工作时采集电流高点可以忽略,休眠时通过单片机控制采集电路GND来减小功耗。单片机休眠时将PA4拉高,待机电流为(4.2-3.3)V/(50+50)mA=9uA。此种方案电路设计最为简单。. n: \8 v( {, p6 ~
电路如下:9 B, c: Z# Z7 l

5_meitu_12.jpg
$ \( y- q3 Z$ j& Z' ~/ C  W9 b

, g/ L) h2 f  x2 C; V( _

3.休眠时控制参考地& t1 k+ U2 V5 N5 e& L) C+ }8 e9 [

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

+ A/ \" J6 O$ P7 v
电路如下:

/ E0 k' f( S9 T2 o  Q. p$ C5 o

6_meitu_13.jpg
; X5 s. f6 U; m' ^6 U& Y" j

- R( R. ?9 d! A7 l/ Q; p

总结1 D; n. t8 K4 d' r4 H( g2 U
, W, _9 u" m8 c$ l, [

: T- `- s; h! ^2 q' h0 G上面介绍三个设计方案,方案一、二测试有效、方案三参考其他博客大牛,还未验证,仅供参考。关于低功耗方面的硬件方案思路很多,各位小伙伴可以大胆构思,小心求证。4 U& t9 D( y9 A: @* E: @1 V

7 b# y9 i3 J+ j# V5 h, q2 z$ e+ a7 l
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
事情应该是这样的,4 \- I* p: P+ t
检测电池电压,没有ADC的速度要求,1秒钟,1分钟,10分钟读一次没有分别。- [& ^9 j. }$ f; ^* `" q

* P- x, o( X8 A5 W8 c6 r所以简单地,对地接一只0.1-1uF的电容在ADC的脚上,既可以解决ADC的输入阻抗低的问题,又可以防止各种干扰。1 m, o: p' _) n4 ^% d' _* {" J
2只电阻+1只电容,搞定。5 P  y6 u+ J, H, x
6 b. [% t- K8 f
. {+ q5 C- I9 ^4 H$ P
3 K, L% v9 ^: [. n: o! f
网络孤客 回答时间:2021-2-1 16:58:55
还是没明白方法二中,PA4怎么接?3 n& h$ D& o7 P8 M! l' h
0 d& x0 o3 O; _  I( s/ s1 S; k
PA4与地相连?还是程序控制PA4高低电平?
  J* o; `, J' k2 c1 I/ q! j) V4 z, N) I( Q
如果程序控制PA4为高电平,这样ADC电压值不就超过Vref了吗?
西点钟灵毓秀 回答时间:2021-3-4 09:03:27
ldptest 发表于 2021-2-1 16:588 y  E6 K: M) h. u
还是没明白方法二中,PA4怎么接?: a, ^, p; ^* m9 Z) `! e+ u

1 V" G1 v$ l! _8 f  ?PA4与地相连?还是程序控制PA4高低电平?
/ y4 c' x" }5 Q- l3 A) ?
楼主只是放了个地的符号,其实是直接接PA4的。
网络孤客 回答时间:2021-3-4 15:00:36
zts329547875 发表于 2021-3-4 09:03' q& D( f+ \( d. _, q' \
楼主只是放了个地的符号,其实是直接接PA4的。
4 T- ]9 {% K( `- u: S
这个后来琢磨明白了。
3 R! v5 Q3 N  D6 i& K  }
# B  }# _6 S' X) Z% W" L; u0 s如果测量电池的电压,4楼的更方便。

所属标签

相似分享

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