打印
[STM32F2]

STM32 精准采集ADC电压,误差分析

[复制链接]
174|41
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ADC模块采集电压流程STM32 大部分系列都是使用SAR 逐次逼近型电压采集VIN是采集的模拟输入口,VREF表示参考电压。Sa PIN和内部ADC的开关。Sb 接地开关。电压采集阶段电压采集阶段就是内部电容充电的过程。Sb闭合后ADC内部(这里称之为采样保存电路,并不是转换器核心)的电容会进行充电,这个过程需要消耗一定的时间。一但采集完成,相当于复制了一份模拟输入引脚的 电压值。采集阶段完成后

ADC模块采集电压流程

数字世界和模拟世界的桥梁,对于嵌入式软件而言,大家止于采集功能的实现。

本文目的在于深入理解ADC,积累技术做出更加稳定优秀的产品。




STM32 大部分系列都是使用SAR 逐次逼近型电压采集
VIN是采集的模拟输入口,VREF表示参考电压。Sa PIN和内部ADC的开关。Sb 接地开关。

使用特权

评论回复
沙发
yutingwei|  楼主 | 2024-6-30 23:50 | 只看该作者
电压采集阶段


电压采集阶段就是内部电容充电的过程。Sb闭合后ADC内部(这里称之为采样保存电路,并不是转换器核心)的电容会进行充电,这个过程需要消耗一定的时间。一但采集完成,相当于复制了一份模拟输入引脚的 电压值。采集阶段完成后这个时候VIN已经不需要了,也就是说这个Pin 上的电压已经采集完毕。

使用特权

评论回复
板凳
yutingwei|  楼主 | 2024-6-30 23:51 | 只看该作者


等效电路就是VIN对电容2C进行充电。

使用特权

评论回复
地板
yutingwei|  楼主 | 2024-6-30 23:51 | 只看该作者
前面说道这里是采用保持电路,所以有保持阶段



这个阶段就是各个电容充电完毕,在ADC核心转换器工作前的这断时间。这个时候VIN PIN模拟输入引脚已经和ADC断开了。Sb开路。

使用特权

评论回复
5
yutingwei|  楼主 | 2024-6-30 23:51 | 只看该作者
也就是说实际上ADC 转换核心转换的是采样保持电路的电压。所以务必要根据手册,明确采样阶段最小用时,确保充电阶段完成。

其等效电路入上图所示电容器一断的电压为-VIN

使用特权

评论回复
6
yutingwei|  楼主 | 2024-6-30 23:52 | 只看该作者
转换阶段
这个阶段的重点在于每次二分。

使用特权

评论回复
7
yutingwei|  楼主 | 2024-6-30 23:52 | 只看该作者

使用特权

评论回复
8
yutingwei|  楼主 | 2024-6-30 23:52 | 只看该作者
这里设计到一些电路的知识,如果是软件开发会比较难懂

使用特权

评论回复
9
yutingwei|  楼主 | 2024-6-30 23:52 | 只看该作者

使用特权

评论回复
10
yutingwei|  楼主 | 2024-6-30 23:52 | 只看该作者
具体的过程讲起来比较复杂,软件工程师只需要对其逐次逼近转换的二分思路有理解即可。

这个可能会因为各个芯片的转换核心而异

使用特权

评论回复
11
yutingwei|  楼主 | 2024-6-30 23:53 | 只看该作者
本节重点:
1.ADC的采样保持电路 ,采集VIN电压,形成副本供ADC转换核心使用
2.电压转换逐次逼近转换的二分思路 0.5+0.25+0.125+…=1

使用特权

评论回复
12
yutingwei|  楼主 | 2024-6-30 23:53 | 只看该作者
关于采样时间,采样时间是电容充电的过程,如上图所示,实线代表充电过程虚线代表放电。
t =RC, C 为采样电容,R为充电回路的电阻。
一般来说需要5 RC采样时间,这样内部电容可以精准的采集到输入电压。

使用特权

评论回复
13
yutingwei|  楼主 | 2024-6-30 23:53 | 只看该作者
5RC 时间大概采集到两端电压的99.3%

6RC 时间大概采集到两端电压的99.8%
这个电压值***都无法充电到100%V,一般来说5RC的时间,认为充满。

使用特权

评论回复
14
yutingwei|  楼主 | 2024-6-30 23:53 | 只看该作者
5RC 充满到99.3%,还有千分之七的电压未采集。 7/1000
一般的ADC 12位 1/4049的采样精度。这个时候需要去看产品的设计要求。一般情况下不需要做补偿。

使用特权

评论回复
15
yutingwei|  楼主 | 2024-6-30 23:53 | 只看该作者
ADC module 转换误差
对于STM32 ADC,电压的最小可检测增量变化用LSB表示为:

1 LSB 表示ADC模块可分辨的最小电压
12 位ADC 其一个单位表示V* 1/4096
10 位ADC 其一个单位表示V* 1/1024

为了后面书写方便 1LSB的系数表示为 12 位ADC P = 1/4096 ,10 位ADC P= 1/1024

满量程转换电压V
V 满量程转换电压,这部分不同的ADC和电路有不同的设计
V =(VREF+)-(VREF-) 一般采用这种

V =(VREF+)-(VSSD)
其中VSSD可以为GND。这取决于电路设计。

resault = Vin/V *P 其中Vin为需要采集的电压
Vin在不同的ADC模块中有不同的配置
Vin = Vi -VGND,对地电压
Vin = Vp -Vn 差分输入电压。
Vin = Vp- Vref-
一般而言是最后一种,取决于电路的连接情况和ADC模块。

使用特权

评论回复
16
yutingwei|  楼主 | 2024-6-30 23:53 | 只看该作者
把ADC作为一个系统而言,Vin是系统的输入,resault 是系统的输出

V是系统内部的电压,其如果变化,那么输出结果变化。转换结果的稳定性就会受到影响。

使用特权

评论回复
17
yutingwei|  楼主 | 2024-6-30 23:54 | 只看该作者
ADC器件内部的误差

1.偏移误差 offset

offset一般指的是偏移误差,较正确值产生的一段位移。

理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1。

V >0.5 LSB 输出1,V<0.5LSB 输出0,实际上 V>0.5LSB +W 时输出才为1,V<0.5LSB +W 为0
就会有下面的曲线,W>0 也就是Eo >0

使用特权

评论回复
18
yutingwei|  楼主 | 2024-6-30 23:54 | 只看该作者
w < 0 时


可通过应用固件轻松校准偏移误差。也就是在ADC初始化的时候 calibration

ADC Calibration 是一个很复杂的学问。我们只需要记得,一定要开启。

使用特权

评论回复
19
yutingwei|  楼主 | 2024-6-30 23:54 | 只看该作者
增益误差是指ADC实际传输特性曲线和理想传输特性曲线的偏差程度。增益误差的单位是%FSR(满量程值)。如果没有校准,那么增益误差会限制信号输出的准确性

红线为理想ADC的传输特性曲线,蓝线为实际ADC的传输特性曲线。
当然蓝色曲线在红色上方误差为 + ,再下方是为 -

使用特权

评论回复
20
yutingwei|  楼主 | 2024-6-30 23:54 | 只看该作者
微分线性误差
手册用 Linearity error 来表示。他表示了ADC器件在所有的数值点上对应的模拟值,和真实值之间误差最大的那一点的误差值。
输出数值偏离线性最大的距离

使用特权

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

本版积分规则

29

主题

290

帖子

0

粉丝