作者:Ken Kavanagh
原则上,您向DAC提供数字输入,并提供精确的输出电压。实际上,输出电压的精度受DAC和信号链中其他元件的增益和失调误差的影响。系统设计人员必须补偿这些误差,以获得精确的输出电压。这可以通过外部组件和制造后修整来实现。数字校准修改发送到DAC的输入,从而考虑增益和失调误差,从而消除了对外部元件和微调的需求。
开环系统的校准
开环系统没有反馈路径,因此设计人员可以相信输出电压处于正确的值。高精度通常需要具有14至16位分辨率的精密DAC。积分非线性(INL)和微分非线性(DNL)的数据手册规格不包括增益和失调误差。这些误差因设备而异,必须先测量,然后才能删除。这通常作为工厂校准的一部分完成。
图1显示了理想DAC与实际DAC的传递函数。在本例中,当预期输出为0 V时,失调误差会导致输出电压为负,增益误差产生的跨度大于预期范围。
图1.DAC 传递函数
传递函数可以建模为由 y = mx +c 描述的直线。
其中:
y 是输出
m 是传递函数的斜率
x 是 DAC 的输入
c 是失调电压
理想DAC的增益(m)为1,失调(c)为0,输出以完美的线性方式跟踪输入。实际DAC具有非理想的增益和失调值,一旦已知即可进行补偿。
以标称输出范围为16 V至0 V的10位DAC为例。当数字输入设置为0时,测量–30 mV输出。当数字输入设置为65,535(满量程)时,将测量10.02 V输出。
由此,我们可以确定:
失调误差为 –30 mV
量程误差为 20 mV – (–30 mV) = 50 mV,实际量程为 10.05V
增益为 10.05 V/10 V = 1.005
补偿增益误差
为了补偿增益误差,DAC的数字输入必须乘以增益误差的倒数:
x 1 = x × (10 V/10.05 V)
其中 x 是所需的输入,x1 是加载到 DAC 的值。输入为 0 和 65,535 将产生 10.05V 跨度,而 0 和 65,209 的输入将产生所需的 10V 跨度。
补偿失调误差
失调误差导致DAC在数字输入为0时产生0 V以外的输出电压。失调误差可以通过在DAC输入中添加或减去一个等效数字来测量和消除。
在本例中,DAC有65,536个可能的代码,输出范围为10.05V。这意味着每 1 LSB(最低有效位)步长为
10.05 V/65536 = 153.35 μV。
在本例中,–30 mV失调相当于(30 mV/153.35 μV)= 196 LSB。因此,写入DAC的值196将产生0 V的输出电压。
将一切整合在一起
补偿增益和失调误差可产生精确的电压。下面的公式显示了如何计算正确的DAC输入以产生所需的电压。
实际DAC输入 = (10 V/10.05 V) × 理想 DAC 输入 + 196
替代选项
在DSP或微处理器中执行这些计算需要额外的开销,这可能既昂贵又耗时。一些DAC包括片内寄存器,允许在DAC中进行计算,从而释放处理器来执行其他功能。AD536x、AD537x、AD538x和AD539x系列密集DAC ™多通道DAC具有8至40个通道,分辨率为12至16位。单电源版本可产生 5V 输出。双电源版本可产生 ±10V 输出。每个器件的每个通道都有专用的m和c寄存器,允许每个通道的增益和失调校准。
图2显示了AD5370 16位、40通道DAC的一个通道。计算 m 和 c 寄存器的值的过程如下所述:
通过将DAC输入设置为零和满量程来测量失调和满量程误差。
通过将范围除以可能的代码数(在本例中为 65536)来计算实际 LSB 大小
从默认的 m 寄存器值中减去与超额跨度对应的 LSB 数。例如,50 V范围内10 mV的超量范围相当于326 LSB
将与偏移量对应的LSB数量添加到默认c寄存器值。例如,–10 mV的失调为65 LSB
现在可以将DAC视为理想值,并计算适当的值以补偿内部和系统误差。
图2.AD5370 DAC的单通道
|