打印

STM32的ADC很脆弱吗?

[复制链接]
11694|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcu000|  楼主 | 2009-9-7 08:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近做一个产品,要测试多串锂电池的电压,系统也是用锂电池供电的。选择的是STM32F101RBT6,稳压管用的是HT7533;电池每串的电压范围是2.8~4.2V,目前我系统上做到10串,电压采集直接用分压电阻按照15:1来做的。
      问题是:我用电压模拟的时候,ADC采集数据都是好的,但直接把多串电池直接接上,第一次还能正常采集,但热插拔几次,ADC采集出来的数据就全部变成4095,我再尝试读取内部的参照电压和温度传感器,依然是4095;再把ADC输入的几个管脚配置成IO,能进行正常的电平变化;我再小心翼翼的换上另外一块装有同样程序同样电路的板子,ADC就能正常采集数据了。我再测试那个异常的板子,串口通讯、PWM、定时器等都是好的,所以我几乎可以肯定是STM32的ADC外设损坏了。这个问题在我的实验中已经碰到了两次,在没有找出最可能的原因之前都不敢做实验了,不是芯片太贵,而且拆卸一次太麻烦了,请大家帮我分析下原因,谢谢!

LDO_SCH.JPG (59.74 KB )

LDO_SCH.JPG

Res_Vol.JPG (110.65 KB )

Res_Vol.JPG
沙发
mcu000|  楼主 | 2009-9-7 09:40 | 只看该作者
急呀,已经困惑我一个周了,有哪位兄弟碰到类似的情况呀?
我在STM32板块查了下,没有找到类似的帖子!

使用特权

评论回复
板凳
香水城| | 2009-9-7 09:51 | 只看该作者
使用有问题的板子再回头做电压模拟,结果如何呢?

使用特权

评论回复
地板
香水城| | 2009-9-7 09:55 | 只看该作者
楼主的2张图中的Bat03是不是同一个?如果是同一个,问题可就大了!

使用特权

评论回复
5
mcu000|  楼主 | 2009-9-7 09:55 | 只看该作者
本帖最后由 mcu000 于 2009-9-7 09:56 编辑

已经没有用了,但ADC模拟端口的电压是随外界输入变化而变化,就是ADC采集不到!

使用特权

评论回复
6
mcu000|  楼主 | 2009-9-7 10:02 | 只看该作者
香水城 是同一个!
怎么啦,麻烦解释下?
谢谢

使用特权

评论回复
7
香水城| | 2009-9-7 10:13 | 只看该作者
当Q1关闭时,Bat03的12.0~16.8V高电压会直接通过ADC引脚进入STM32中。

使用特权

评论回复
8
mcu000|  楼主 | 2009-9-7 10:19 | 只看该作者
香水城 不好意思
你说的“Q1关闭”,指的是LDO吗?

使用特权

评论回复
9
香水城| | 2009-9-7 10:23 | 只看该作者
我说的“Q1关闭”,指的是靠近R33的MOS管,它把SGND与地线连通。

使用特权

评论回复
10
香水城| | 2009-9-7 10:24 | 只看该作者
我说的“Q1关闭”,指的是靠近R33的MOS管,它把SGND与地线连通。

使用特权

评论回复
11
mcu000|  楼主 | 2009-9-7 10:25 | 只看该作者
不好意思,刚看了下,现在这个MOSFET由于货源问题,没有接!我直接跳线接地的!
不是这个原因哦

使用特权

评论回复
12
mcu000|  楼主 | 2009-9-7 10:44 | 只看该作者
香水城 还能帮我找出别的什么原因吗?
或者是ADC采集这块,能给我提供一点比较可靠的电路!
我现在不敢轻易上电池测试了,一不小心又把片子干掉了!
其他有没有碰到碰到类似的情况,给点建议,不甚感激!

使用特权

评论回复
13
香水城| | 2009-9-7 10:45 | 只看该作者
即使不是这个原因,这也是一个问题。

图中没有画出来,所有的Bat01~Bat13之间有什么关系?所有的BatA00~BatA13接到哪里?

还有你在5楼的回答我看不懂,什么东西已经没有用了?

使用特权

评论回复
14
香水城| | 2009-9-7 10:49 | 只看该作者
电池每串的电压范围是2.8~4.2V,这个电压对应图中哪个信号?共有多少串?每串之间什么关系?

请一次交待清楚,不要让大家管窥一豹,胡乱猜呀。

使用特权

评论回复
15
mcu000|  楼主 | 2009-9-7 10:57 | 只看该作者
本帖最后由 mcu000 于 2009-9-7 11:00 编辑

3楼: 使用有问题的板子再回头做电压模拟,结果如何呢?
我5楼是针对你这个问题说的,回头再做的时候,已经没有数据返回,ADC采集出来的全部是4095,包括内部参照电压和内部温度;

Bat01~Bat13代表每节电池的正极电压点:
Bat00:  3.0~4.2V
Bat01:  6.0~8.4V
Bat02:  9.0~12.6V
...
(备注:由于我现在只测试10串,所以暂时把分压比定为15:1,如果串数再多点,电阻分压比就要变了,但这不是影响问题的关键!)
BatA00~BatA13我直接接到CPU的ADC输入端口

另外,谢谢香水城的建议,下次我改版的时候,肯定要把你说的Q1关断的反压问题解决掉!否则始终是个隐患,谢谢!

也谢谢你耐心的解答,非常感动!

使用特权

评论回复
16
香水城| | 2009-9-7 11:37 | 只看该作者
还是不太清楚你的电池是如何接的。

是否是这样:  Bat00  -电池0+  Bat01  -电池1+  Bat02  -电池2+  Bat03 ......

在你的热插拔实验时,假定只剩一个电池1时,它是否是只接在Bat01与Bat02之间?

使用特权

评论回复
17
老狼| | 2009-9-7 11:47 | 只看该作者
所有模拟输入端口,加TVS保护。

使用特权

评论回复
18
mcu000|  楼主 | 2009-9-7 12:03 | 只看该作者
电池是这样接的:

不好意思,是我没有说清楚!
这种接法的问题是:当把排线插上,Bat03通过HT7533给CPU供电,同时所有电池的电压信号也通过分压电阻到CPU的ADC输入管脚。
所有的线都已经在电池上接好,要么全有,要么全没!

老狼,你的建议不错,我考虑到了,手上没有这个器件,正在申请购买中;另外,这不是解决问题的最好方法,如果每个输入口线都加的话,10串要就要加10个TVS或者是ESD,成本将接受不了!
(据我们市场部估计,这个产品批量将是至少10K以上的量!)

InterFace.JPG (26.05 KB )

InterFace.JPG

使用特权

评论回复
19
老狼| | 2009-9-7 12:17 | 只看该作者
或者修改各个分呀电阻,让每一路都工作在1-1.5伏,你在试一下!,电池的输出,
((4.2×15)/210)×15=4.5 太高了!
而且,插拔的时候,肯定要拉弧呀!

使用特权

评论回复
20
mcu000|  楼主 | 2009-9-7 12:23 | 只看该作者
谢谢
你的建议很对
我现在主要是从我手上有的精密电阻考虑的
而且我目前测试的是10串,最高电压只到42V,输入到ADC端口的只有2.8V

但你说的热插拔拉弧是有可能的
我现在就是想请大家多帮我出点主意
到时候我帮大家建议的方法都加上
确保下次做实验不烧CPU的ADC

否则一个LQFP64脚的芯片拆卸一次太麻烦了,多搞几次,板子都费了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

36

帖子

0

粉丝