Mego 发表于 2019-10-26 16:55:31

3.7V锂电池给STM32供电,内部ADC计算电池电压如何接?

        目前有个产品是用STM32L051来做主控,3.7V电池供电,记得STM32可以用内部ADC来计算前供电电压 ,电池满电4.2V经过LDO给STM32供电,有个疑问是单片机都经过了LDO,即便电池降压到了3.4V那ADC计算的也还是当前供电(当前还是3.3V)。小弟不才,望高手告知

ackyee 发表于 2019-10-26 16:57:26

内部有VREF的    前端电阻分压 给单片机ADC 进行计算

OneRain 发表于 2019-10-26 16:58:33

分压!!!测量电池不能高于MCU供电电压,高于了,就采用分压。。。然后用计算对应的值就可以啦!!!

Mego 发表于 2019-10-26 17:00:57

OneRain 发表于 2019-10-26 16:58
分压!!!测量电池不能高于MCU供电电压,高于了,就采用分压。。。然后用计算对应的值就可以啦!!! ...

我的问题就是不用分压有没可能?因为分压后好像功耗多了40UA

OneRain 发表于 2019-10-26 17:03:22

Mego 发表于 2019-10-26 17:00
我的问题就是不用分压有没可能?因为分压后好像功耗多了40UA

ST有专门的作为参考电压的脚。。。你可以把这个脚的供电改为了5V。。。就不用分压啦!!!

Achin 发表于 2019-10-26 17:09:45

Mego 发表于 2019-10-26 17:00
我的问题就是不用分压有没可能?因为分压后好像功耗多了40UA

用单片机引脚控制分压网络的GND

wuha 发表于 2019-10-26 17:10:00

OneRain 发表于 2019-10-26 17:03
ST有专门的作为参考电压的脚。。。你可以把这个脚的供电改为了5V。。。就不用分压啦!!! ...

不合理,你这还得让再弄个5V基准?
直接电池用电阻分压即可,想低功耗了,再用mos管控制一下,测量时打开电阻分压,不测量时关闭mos管。

OneRain 发表于 2019-10-26 17:15:53

wuha 发表于 2019-10-26 17:10
不合理,你这还得让再弄个5V基准?
直接电池用电阻分压即可,想低功耗了,再用mos管控制一下,测量时打开 ...

有可能5V是现成的基准呢。。。看实际情况吧,不过你用mos管控制,不是一样也耗电,那可是连40ua都觉得高的。。。{:titter:}

wuha 发表于 2019-10-26 17:20:21

本帖最后由 wuha 于 2019-10-26 17:21 编辑

OneRain 发表于 2019-10-26 17:15
有可能5V是现成的基准呢。。。看实际情况吧,不过你用mos管控制,不是一样也耗电,那可是连40ua都觉得高 ...

采集时才导通,也还是40uA,大部分时间都是关断了还怎么耗电?

擦鞋匠 发表于 2019-10-26 17:27:02

如果这个5V电压来自于外部,如何保证5v电压是高精度的?
如果这个5V是单片机自己的,那就是内部还集成升压电路,可能消耗的电流超过40uA吧?

avr-job 发表于 2019-10-26 17:47:08

OneRain 发表于 2019-10-26 17:15
有可能5V是现成的基准呢。。。看实际情况吧,不过你用mos管控制,不是一样也耗电,那可是连40ua都觉得高 ...

什么逻辑?用MOS,平时关断,不耗电的

Mego 发表于 2019-10-27 09:11:06

我想表述的意思是STM32有个ADC_CHANNEL_17直接可以当前供电电压 。但电池过了LDO肯定给单片机的供电是3.3V。我不想用任何外设,因为接分压电阻,肯定有电流流过电阻,除非像上边说的,检测的时候才开MOS,这样又费一个引脚,有没比较好的办法直接就能获取到电池的电压。

nanfang2000 发表于 2019-10-27 09:16:55

Mego 发表于 2019-10-27 09:11
我想表述的意思是STM32有个ADC_CHANNEL_17直接可以当前供电电压 。但电池过了LDO肯定给单片机的供电是3.3V ...

什么都不想付出就想得到,怎么可能? 分压可以用兆欧级的电阻分压然后并个小电容就可以实现只有na级的电流消耗。查了很多资料后发现的最佳用法,我一直这么用

浮华一生 发表于 2019-10-27 09:25:25

Mego 发表于 2019-10-27 09:11
我想表述的意思是STM32有个ADC_CHANNEL_17直接可以当前供电电压 。但电池过了LDO肯定给单片机的供电是3.3V ...

哦, 既然是这样的话,你让ADC 隔一段时间问问锂电池: 哥,你还剩好多电? {:lol:}

Mego 发表于 2019-10-27 09:31:24

nanfang2000 发表于 2019-10-27 09:16
什么都不想付出就想得到,怎么可能? 分压可以用兆欧级的电阻分压然后并个小电容就可以实现只有na级的电 ...

OK,了解!那单片机直接17通道直接获取供电电压好像就觉得没多大意义了啊,做这个功能是干嘛呢

Mego 发表于 2019-10-27 09:32:33

浮华一生 发表于 2019-10-27 09:25
哦, 既然是这样的话,你让ADC 隔一段时间问问锂电池: 哥,你还剩好多电?   ...

^_^,也没错。我这个设备大多时候都是休眠,醒了也就工作2S

canspider 发表于 2019-10-27 09:35:41

Mego 发表于 2019-10-27 09:11
我想表述的意思是STM32有个ADC_CHANNEL_17直接可以当前供电电压 。但电池过了LDO肯定给单片机的供电是3.3V ...

ldo出来的3.3v也不一定准,最好用内部的bandgap再校准一次
如果对功耗要求不太高,可以接大电阻分压,测得时候保持时间长一些
如果对功耗要求很高,还是需要用mos控制采样电路

Mego 发表于 2019-10-27 09:36:55

canspider 发表于 2019-10-27 09:35
ldo出来的3.3v也不一定准,最好用内部的bandgap再校准一次
如果对功耗要求不太高,可以接大电阻分压,测 ...

嗯,目前来看也只有这个是最好的办法了

anjiyifan 发表于 2019-10-27 09:51:12

Achin 发表于 2019-10-26 17:09
用单片机引脚控制分压网络的GND

当采样电压比单片机VDD电压高的时候,一般都是是控制采样电路的高端的开关。如果断开低端GND的话,从电池经过采样电阻上端电阻,再经过IO口的钳位二极管,到单片机VDD会有电流流过,还是没实现不采样时无电流。

anjiyifan 发表于 2019-10-27 09:53:25

最好还是直接使用支持5V供电的单片机,电池直接供电。通过测量芯片内部bandgap电压值,可以反推出电池电压。

Mego 发表于 2019-10-27 09:56:07

anjiyifan 发表于 2019-10-27 09:53
最好还是直接使用支持5V供电的单片机,电池直接供电。通过测量芯片内部bandgap电压值,可以反推出电池电压 ...

这种我也用过,只是现在用的STM32L我就在想除了MOS或者加大分压电阻,好像那个直接17通道读供电电压就没意义了

nanfang2000 发表于 2019-10-27 10:01:52

Mego 发表于 2019-10-27 09:56
这种我也用过,只是现在用的STM32L我就在想除了MOS或者加大分压电阻,好像那个直接17通道读供电电压就没 ...

这是给电池直接供电时用的。另外我用过一个芯片ADC供电是独立的,可以直接电池供电

Mego 发表于 2019-10-27 10:17:36

nanfang2000 发表于 2019-10-27 10:01
这是给电池直接供电时用的。另外我用过一个芯片ADC供电是独立的,可以直接电池供电 ...

嗯,有那种3.2V电池的

anjiyifan 发表于 2019-10-27 10:18:38

我记得EFM8还是EFM32来着,ADC可以直接测量参考电压4倍的电压值,芯片内部ADC输入端加了除法电路。

sz-wtp 发表于 2019-10-27 10:23:01

Achin 发表于 2019-10-26 17:09
用单片机引脚控制分压网络的GND

用IO控制GND不好,断开时,相当于电池接了一个电阻(分压上面的电阻)到IO脚,也会有功耗.
好最是断分压电阻的输入电压.

Achin 发表于 2019-10-27 23:27:46

本帖最后由 Achin 于 2019-10-27 23:31 编辑

anjiyifan 发表于 2019-10-27 09:51
当采样电压比单片机VDD电压高的时候,一般都是是控制采样电路的高端的开关。如果断开低端GND的话,从电池 ...

错误答复:你释放控制的时候,可以让单片机引脚切换到输入状态嘛

看错了,你说的是采样电压高于VCC,这要看你的信号源电压具体有多少,常见如果是锂电池、锂亚电池这种,受限于分压网络的阻值,影响倒不会很大。不过更通用的环境下,还是用mos来切换通断

单片机的VBAT采样,大部分情况应该是针对锂亚电池这种3.6V输出的电池的。单片机本身支持锂亚电池3.6V的供电范围。

tuy0326 发表于 2019-10-28 03:26:14

我的印象,STM32的VREF引脚好像不能大于VDD吧?前面几楼:MCU的VDD用3.3,VREF接5V?扯吗?

Mego 发表于 2019-10-28 14:42:54

这个是我现在的图纸,我把1/2分压电阻改20M了,电流的确下来了,但奇了怪,按道理是1/2分压,但实际万用表测试的电压值居然1V不到(电池电压4.1V)

jao317 发表于 2019-10-28 15:15:31

Mego 发表于 2019-10-28 14:42
这个是我现在的图纸,我把1/2分压电阻改20M了,电流的确下来了,但奇了怪,按道理是1/2分压,但实际万用表 ...

不知道听过阻抗匹配没有。。

Mego 发表于 2019-10-28 15:28:36

jao317 发表于 2019-10-28 15:15
不知道听过阻抗匹配没有。。

愿闻其详

Codoox 发表于 2019-10-28 23:02:01

Mego 发表于 2019-10-28 14:42
这个是我现在的图纸,我把1/2分压电阻改20M了,电流的确下来了,但奇了怪,按道理是1/2分压,但实际万用表 ...

电池内阻先不说,ADC有输入阻抗的,具体多大可以看一下手册

lbhj310 发表于 2019-10-29 09:51:04

ADC输入阻抗大约50K

Mego 发表于 2019-10-29 10:29:35

lbhj310 发表于 2019-10-29 09:51
ADC输入阻抗大约50K

嗯,了解的。现在还是改MOS控制

jao317 发表于 2019-10-29 10:42:05

Mego 发表于 2019-10-28 15:28
愿闻其详

STM32的ADC输入阻抗只有30K左右,你的输入信号对地阻抗要低于20K,高了数据乱跳

Mego 发表于 2019-10-29 11:27:33

jao317 发表于 2019-10-29 10:42
STM32的ADC输入阻抗只有30K左右,你的输入信号对地阻抗要低于20K,高了数据乱跳 ...

嗯,输入阻抗是一回事,另外要低功耗就必须还是考虑要用MOS

csg0203 发表于 2019-10-29 12:21:20

楼主的应用估计只能用MOS作为开关分压电阻来实现,如果内部有基准的话,芯片的直接电池供电,不用LDO,

ADC用内部的基准,这样的话,VCC电压可以通过计算得到,如果电池到VCC中间有LDO,那就没有办法了。

Mego 发表于 2019-10-29 13:22:07

csg0203 发表于 2019-10-29 12:21
楼主的应用估计只能用MOS作为开关分压电阻来实现,如果内部有基准的话,芯片的直接电池供电,不用LDO,

AD ...

是的,3.2V电池的话就可以直接获取当前电压了

go2deathward 发表于 2019-10-29 14:07:12

canspider 发表于 2019-10-27 09:35
ldo出来的3.3v也不一定准,最好用内部的bandgap再校准一次
如果对功耗要求不太高,可以接大电阻分压,测 ...

3.3V可以不准,但是Ref1.2是准的,先测一下ref1.2,反推出AD的参考电压就可以了

zhaoyuanxian 发表于 2019-10-29 19:19:39

低功耗必须间歇工作的

sme 发表于 2019-10-30 08:09:13

tuy0326 发表于 2019-10-28 03:26
我的印象,STM32的VREF引脚好像不能大于VDD吧?前面几楼:MCU的VDD用3.3,VREF接5V?扯吗? ...

说对了,5楼就是来扯的。

除非特别说明,所有IC的输入耐压值都不能超过VDD+0.7V。

chenliangliang_ 发表于 2019-10-30 08:18:33

3V供电即可,用低压差LDO

TANG2016 发表于 2019-11-8 11:09:29

要想准不走弯路,要用VREF引脚配置出一个基准电压出来,不要用VCC电源来做基准电压,要不电池3.6V可以供电 3.0V也是可以给单片机供电的,你的AD电池是不可能准的,假如省分压的功耗电流就用一个MOS管隔断,采集的时候打开。

Mego 发表于 2019-11-8 11:24:18

TANG2016 发表于 2019-11-8 11:09
要想准不走弯路,要用VREF引脚配置出一个基准电压出来,不要用VCC电源来做基准电压,要不电池3.6V可以供电...

嗯嗯,已经解决了谢谢
页: [1]
查看完整版本: 3.7V锂电池给STM32供电,内部ADC计算电池电压如何接?