ADC/DAC精度校准
ADC(模数转换器)和DAC(数模转换器)的精度校准是确保信号转换准确性的关键步骤
1. 误差来源分析
(1) ADC主要误差类型
- 偏移误差(Offset Error):实际转换曲线与理想曲线的垂直偏移(零点偏差)。
- 增益误差(Gain Error):实际转换曲线斜率与理想值的偏差(满量程偏差)。
- 积分非线性(INL):实际转换点与理想直线的最大偏差(非线性误差)。
- 微分非线性(DNL):相邻码值之间的实际步长与理想步长的偏差。
- 噪声与温漂:热噪声、电源波动、温度变化引起的误差。
(2) DAC主要误差类型
- 类似ADC,包括偏移、增益、非线性误差,但方向相反(数字到模拟)。
2. ADC校准方法
(1) 硬件校准(适用于12位/16位)
偏移校准:
步骤:
- 输入已知的零电平(如短接AIN到GND)。
- 读取ADC输出码值(应为0,实际可能为N_offset)。
- 软件补偿:后续采样值减去N_offset。
实现:
1
2int16_t raw_value = ADC_Read();
int16_t calibrated_value = raw_value - offset;
增益校准:
步骤:
- 输入满量程参考电压(如VREF)。
- 读取ADC输出码值(理想为最大值,如4095对应12位)。
- 计算增益误差系数:
gain = (理论最大值) / (实际测量值)
- 软件补偿:采样值乘以增益系数。
实现:
1
2float gain = 4095.0 / measured_max_value;
int16_t calibrated_value = raw_value * gain;
多点校准(提升INL精度):
- 步骤:
- 使用精密电压源输入多个已知电压点(如10%VREF, 50%VREF, 90%VREF)。
- 记录实际ADC码值与理论值的偏差。
- 构建查找表(LUT)或拟合多项式曲线,实时补偿非线性误差。
- 适用场景:16位高精度系统,需补偿非线性误差。
- 步骤:
(2) 自动校准(芯片内置功能)
示例
:STM32的ADC自校准模式
触发内部校准流程,自动计算偏移校正值并存入寄存器。
代码示例:
1
HAL_ADCEx_Calibration_Start(&hadc); // 启动自校准
(3) 外部参考源校准
- 使用高精度外部电压基准(如ADR4550)替代内部VREF,减少基准源误差。
3. DAC校准方法
(1) 偏移校准
- 步骤:
- 设置DAC输出数字码为0,测量实际输出电压V_off。
- 软件补偿:输出码值动态调整为
DAC_code = target_code + (V_off / LSB)
。
(2) 增益校准
- 步骤:
- 设置DAC输出最大码值(如65535对应16位),测量实际电压V_full。
- 计算增益误差系数:
gain = V_full / (理论满量程电压)
- 软件补偿:输出码值乘以增益系数。
(3) 分段线性校准
- 对DAC输出范围分段,每段单独校准偏移和增益,适用于高分辨率(16位)系统。
4. 校准实现注意事项
(1) 12位 vs. 16位系统差异
参数 | 12位 ADC/DAC | 16位 ADC/DAC |
---|---|---|
LSB精度 | 1 LSB = VREF/4096 | 1 LSB = VREF/65536 |
校准精度要求 | ±2 LSB以内 | ±1 LSB以内 |
校准点数量 | 2点(偏移+增益)通常足够 | 需多点校准(如5-10点) |
噪声影响 | 较小(LSB较大) | 显著(需低噪声PCB布局和滤波) |
(2) 校准设备要求
- 电压源:精度至少比目标系统高4倍(如校准16位需20位精度的源表)。
- 测量仪器:使用高精度万用表(如6½位)或校准ADC。
(3) 温度补偿
在宽温范围内工作的系统需存储不同温度下的校准系数(EEPROM存储)。
公式示例:
1
calibrated_value = raw_value * gain_table[temp] + offset_table[temp];
5. 校准流程示例(以16位ADC为例)
- 预热系统:上电稳定30分钟,减少温漂影响。
- 偏移校准:
- 输入0V,读取100次取平均,得到N_offset。
- 增益校准:
- 输入VREF-1LSB(避免饱和),读取N_full,计算增益系数。
- 多点INL校准:
- 输入10个均匀分布的电压点,构建LUT或二次多项式拟合。
- 存储系数:将offset、gain和LUT存入非易失存储器。
6. 代码实现片段(STM32 HAL库示例)
1 |
|
7. 高精度设计技巧
- PCB布局:
- 分离模拟/数字地,使用星型接地。
- 缩短模拟信号走线,避免平行数字信号线。
- 参考源选择:
- 使用低温漂参考电压(如MAX6126,温漂3ppm/℃)。
- 软件滤波:
- 多次采样取平均(16位系统建议64次以上)。
- 中值滤波消除脉冲噪声。
通过系统级校准(硬件+软件)和严格的环境控制,12位系统可达到±1 LSB精度,16位系统可控制在±2 LSB以内。