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

使用STM32采集电池电压踩过的坑

[复制链接]
gaosmile 发布时间:2020-9-8 22:18
本文来解析一个盆友在使用STM32采集电池电压踩过的坑。以STM32F4 的ADC属于逐次逼近SAR 型ADC为例进行分析,参考STM32F405xx  Datasheet,对于如何编写ADC程序就不做描述了。

5 H8 v4 t% A! _
先描述一下坑
微信图片_20200908221543.png
微信图片_20200908221548.png

采集电池电压,利用两个电阻将电池电压分压,然后送入单片机,当电阻如上分别取4M欧/1M欧时,ADC采集到的ADC值与万用表测得的ADC输入端相差很大,取30K欧以及10k欧时,则相差变小。

盆友咨询我这是为什么?我给出了建议,先卖个关子,先来看看应用最为广泛的STM32单片机的一些特性。
STM32 ADC:
STM32 12位ADC是逐次逼近型的模数转换器。它有多达19个多路复用通道,允许它测量来自16个外部源、2个内部源和VBAT通道的信号。通道的A/D转换可以在单次、连续、扫描或间断模式下进行。ADC的结果存储在左对齐或右对齐的16位数据寄存器中。模拟看门狗功能允许应用程序检测输入电压是否超过用户定义的、更高或更低的阈值。
主要功能,具体操作,怎么编程这些细节,有大量的资料就不罗嗦了,主要来看看电气特性。
电气特性
微信图片_20200908221551.png
  • ADC 可支持采样频率受供电电压影响,供电电压高,可支持采样频率范围更高
  • 可支持输入电压范围须在参考电压范围内
  • 外部输入阻阻抗最大为
  • 开关切换阻抗 最大为
  • 内部采样保持电容 为4pF
    # `( d. d' _# g( i. M; `
微信图片_20200908221554.png
上面的公式用于确定误差小于1/4 LSB时允许的最大外阻抗。N = 12(12位分辨率),k是在ADC_SMPR1寄存器中定义的采样周期数。
ADC精度vs.负注入电流:应该避免在任何模拟输入引脚上注入负电流,因为这会显著降低在另一个模拟输入上执行转换的精度。建议在模拟引脚上增加一个肖特基二极管(引脚接地),这可能会注入负电流。
微信图片_20200908221558.png

Page 136 图例(上图中标识解释):

  • 见表68
  • 实际转移曲线的示例。
  • 理想转移曲线
  • 终点相关线
  • ET =未调整总误差:实际和理想传递曲线之间的最大偏差。EO =偏移误差:第一个实际过渡与第一个理想过渡之间的偏差。EG =增益误差:最后一个理想过渡与最后一个实际过渡之间的偏差。ED =微分线性误差:实际步长与理想步长之间的最大偏差。EL =积分线性误差:任何实际过渡和终点相关线之间的最大偏差。
      C! N% T' z+ _! s, L! @
微信图片_20200908221602.png
寄生电容表示PCB的电容(取决于焊接和PCB布局质量)加上焊盘电容(大约5 pF)。寄生电容值高会降低转换精度。为了解决这个问题,应该减少fADC。
回到坑里
将盆友的电路等效绘制一下,忽略ADC采样通道内部ESD保护二极管,以及等效电流源,如下图:
微信图片_20200908221605.png
好了,这图一画出来,问题的原因就显而易见了,SAR ADC是将采样电容上的电压通过逐次逼近原理转换为数字量的,按上述图,由于R2为兆级电阻,那么等效加载在采样电容上的电压就不能简单的看成是R1/R2的分压了,此时ADC的输入阻抗在百50K欧级别,简化定性看一下,忽略分布电容影响,计算方便将输入阻抗看成50K直流电阻(实际深入动态分析的话则不可忽略,假定电池电压为5V),具体计算就不做了。
为什么电阻选这么大呢?我想估计是为了将电池电压监控取样回路的电流降低,以节省电量。
跳出坑里怎么办呢?我觉得这样应该可以:
微信图片_20200908221610.png
找一个低功耗的运放做一个阻抗变换就可以兼顾两者需求,当然如果更完善一点,还可以考虑串入一个RC低通滤波环节,可以有效降低噪声。
总结一下
对于单片机ADC的使用,个人总结了这几点:
  • 将输入短路,可测量热噪声。实际应用时,将输入端短路,采集一定数量的样本,由于热噪声符合高斯分布,可计算出其期望、方差,接入真实信号可以利用统计规律进行相应的噪声滤波处理。
  • 量化噪声,可以通过输入一定幅度及频率的正弦波,进行度量系统的量化噪声。
  • 设计ADC采样电路时,需要注意阅读芯片手册的电气特性参数,这个对于设计一个稳定的模数采集系统至关重要。" k+ l! F/ j7 y' {5 [
至此,我想要写的关于ADC的笔记文章就暂时总结分享到此了,如果觉得本文有价值,在看转发起来,也算对我的肯定支持。9 `* l/ B% P  T+ H, O/ E6 ]$ `
1 收藏 2 评论2 发布时间:2020-9-8 22:18

举报

2个回答
a838899 回答时间:2020-10-23 15:25:42
想降低功耗 可以加个MOS做开关  你这运放比MOS 贵多了。。。
radio2radio 回答时间:2021-1-22 16:41:58
简单的解决办法,分压电阻用300K+100K,ADC的输入脚并联一只104电容到GND。

所属标签

相似分享

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