你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
解析在使用STM32采集电池电压踩过的坑
[复制链接]
gaosmile
提问时间:2021-3-3 13:30 /
问答
是否解决:
本文来解析一个盆友在使用
STM32
采集电池
电压踩过的坑。以STM32F4 的ADC属于逐次逼近SAR 型ADC为例进行分析,参考STM32F405xx Datasheet,对于如何编写ADC程序就不做描述了。
先描述一下坑
采集电池电压,利用两个电阻将电池电压分压,然后送入单片机,当电阻如上分别取4M欧/1M欧时,ADC采集到的ADC值与万用表测得的ADC输入端相差很大,取30K欧以及10k欧时,则相差变小。
盆友咨询我这是为什么?我给出了建议,先卖个关子,先来看看应用最为广泛的STM32单片机的一些特性。
STM32 ADC:
STM32 12位ADC是逐次逼近型的模数转换器。它有多达19个多路复用通道,允许它测量来自16个外部源、2个内部源和VBAT通道的信号。通道的A/D转换可以在单次、连续、扫描或间断模式下进行。ADC的结果存储在左对齐或右对齐的16位数据寄存器中。模拟看门狗功能允许应用程序检测输入电压是否超过用户定义的、更高或更低的阈值。
主要功能,具体操作,怎么编程这些细节,有大量的资料就不罗嗦了,主要来看看电气特性。
电气特性
1、ADC 可支持采样频率fADC受供电电压影响,供电电压高,可支持采样频率范围更高
2、可支持输入电压VAIN范围须在参考电压范围内
3、外部输入阻阻抗RAIN最大为
4、开关切换阻抗RADC 最大为
5、内部采样保持电容CADC为4pF
上面的公式用于确定误差小于1/4 LSB时允许的最大外阻抗。N = 12(12位分辨率),k是在ADC_SMPR1寄存器中定义的采样周期数。
ADC精度vs.负注入电流:应该避免在任何模拟输入引脚上注入负电流,因为这会显著降低在另一个模拟输入上执行转换的精度。建议在模拟引脚上增加一个肖特基二极管(引脚接地),这可能会注入负电流。
Page 136 图例(上图中标识解释):
1、见表68
2、实际转移曲线的示例。
3、理想转移曲线
4、终点相关线
5、ET =未调整总误差:实际和理想传递曲线之间的最大偏差。EO =偏移误差:第一个实际过渡与第一个理想过渡之间的偏差。EG =增益误差:最后一个理想过渡与最后一个实际过渡之间的偏差。ED =微分线性误差:实际步长与理想步长之间的最大偏差。EL =积分线性误差:任何实际过渡和终点相关线之间的最大偏差。
寄生电容表示PCB的电容(取决于焊接和PCB布局质量)加上焊盘电容(大约5 pF)。寄生电容值高会降低转换精度。为了解决这个问题,应该减少fADC。
回到坑里
将盆友的电路等效绘制一下,忽略ADC采样通道内部ESD保护二极管,以及等效电流源,如下图:
好了,这图一画出来,问题的原因就显而易见了,SAR ADC是将采样电容上的电压通过逐次逼近原理转换为数字量的,按上述图,由于R2为兆级电阻,那么等效加载在采样电容上的电压就不能简单的看成是R1/R2的分压了,此时ADC的输入阻抗在百50K欧级别,简化定性看一下,忽略分布电容影响,计算方便将输入阻抗看成50K直流电阻(实际深入动态分析的话则不可忽略,假定电池电压为5V),具体计算就不做了。
为什么电阻选这么大呢?我想估计是为了将电池电压监控取样回路的电流降低,以节省电量。
跳出坑里
怎么办呢?我觉得这样应该可以:
找一个低功耗的运放做一个阻抗变换就可以兼顾两者需求,当然如果更完善一点,还可以考虑串入一个RC低通滤波环节,可以有效降低噪声。
对于单片机ADC的使用,个人总结了这几点:
将输入短路,可测量热噪声。实际应用时,将输入端短路,采集一定数量的样本,由于热噪声符合高斯分布,可计算出其期望、方差,接入真实信号可以利用统计规律进行相应的噪声滤波处理。
量化噪声,可以通过输入一定幅度及频率的正弦波,进行度量系统的量化噪声。
设计ADC采样电路时,需要注意阅读芯片手册的电气特性参数,这个对于设计一个稳定的模数采集系统至关重要。
至此,我想要写的关于ADC的笔记文章就暂时总结分享到此了,如果觉得本文有价值,在看转发起来,也算对我的肯定支持。
赞
0
收藏
0
评论
1
分享
发布时间:2021-3-3 13:30
举报
请先
登录
后回复
1个回答
radio2radio
回答时间:2021-3-3 13:45:21
a0a.1 32b0c
怎么又把这种错误的文章转出来了: 原文作者,想多了, 把简单的事情搞到复杂得很, 貌似很专业的样子, 其实是误导了很多人。
STM32 电池电压采集之低功耗设计
事情应该是这样的,
检测电池电压,没有ADC的速度要求,1秒钟,1分钟,10分钟读一次没有分别。
所以简单地,对地接一只0.1-1uF的电容在ADC的脚上,既可以解决ADC的输入阻抗低的问题,又可以防止各种干扰。
2只电阻+1只电容,搞定。
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
STM32 电池电压采集之低功耗设计
检测电池电压,没有ADC的速度要求,1秒钟,1分钟,10分钟读一次没有分别。
所以简单地,对地接一只0.1-1uF的电容在ADC的脚上,既可以解决ADC的输入阻抗低的问题,又可以防止各种干扰。
2只电阻+1只电容,搞定。