模数转换模块ADC是连接现实世界模拟量和数字量之间的桥梁,它的转换精度经常可以决定一个产品的品质。现在单片机上一般都会集成ADC,我们如何根据自己的应用选择恰当的产品呢?怎么实现高的性价比,让产品在激烈的市场竞争中立于不败之地呢?下面我们从常用的几种ADC类型的特点,到使用中的注意事项,逐一探讨一下。
ADC类型
常用的ADC基本上可以分为三种类型: Flash型,SAR型,Sigma-Delta型。下面我们来了解一下它们的工作原理与性能特点。单片机中最常采用的是SAR型,在一些高精度场合会用到Sigma-Delta型,而Flash型很少会集成在MCU内部,如果需要一般需要通过串行或并行总线外扩。
Flash型
这种ADC使用电阻分压网络,输入的电压会同时与分压网络中的多个参考电压比较,比较器的输出通过编码器输出2进制的数字输出。这种ADC速度快,精度高,但缺点是随着输出位数的增加,它需要的分压电阻和比较器成指数增长,体积和成本随之迅速增加。
SAR逐次逼近型
SAR(Successive Approximation Register)型ADC仍然使用电压比较的方法,它使用数字电路控制DAC输出一个变化的电压,并用此电压和输入电压比较,经过多次比较逐渐使DAC输出接近输入电压,从而得出数字输出。
举例如下:
假设ADC参考电压为0-5V,输入为3.2V。
压控寄存器最高位置为1,其余位为0,DAC输出参考电压一半2.5V,输入3.2 > 2.5,比较器输出1,压控寄存器最高位1保留。然后次高位置1,DAC输出3.75V,此时3.2V < 3.75V,比较器输出0,压控寄存器次高位置0。之后与3.125V比较得到1,与3.4375V比较得到0。这样如果是8位ADC,最后就得到数字输出 10100011。SAR型ADC以较低的成本实现较高的转换速度和分辨率,比较常用的可以达到1MHz的转换速度和12-Bit的分辨率,得到了比较广泛的应用。如果单片机手册没有特别注明,一般都是集成的这种类型的ADC。
Sigma Delta型
下图为一个简化的原理电路。左半部分为模拟调制电路,它的作用为根据输入电压的大小输出位宽为1bit的比特流。右半部分为数字滤波和裁决器,根据比特流输出数字转换结果。
工作过程如下:输入电压减去DAC输出后的差值经过积分器后和0V电压比较,如果大于等于0V输出1,否则输出0。以一定的频率控制比较器输出形成比特流,控制DAC输出电压,1控制DAC输出+Vref参考电压,0控制DAC输出-Vref参考电压。当DAC在比较器输出的比特流控制下高速切换时,类似于PWM在输出端产生一个平均电压。容易看出,全1的比特流对应的平均电压为+Vref,全0的比特流对应的电压为-Vref,如果1和0各占一半,那么对应的电压是0V。
当平均电压Vadc小于输入Vin时,趋向于输出更多的1来增大Vadc。当平均电压Vadc大于Vin时,趋向于输出0来减小Vadc。这样一个合适的1,0比率的比特流会使Vadc最接近Vin,达到平衡状态。后级的数字滤波和裁决器从1,0的比率就可以推断出输入电压Vin的大小。
Sigma Delta原理动画演示链接:
http://designtools.analog.com/dt/sdtutorial/sdtutorial.html
Sigma Delta型单片机可以达到很高的分辨率,但转换速度慢很多。比较典型的如24-Bit,输出速率几十到几百HZ。集成此类ADC的单片机一般用于计量,仪表等。如TI的MSP430AFE253。
如果想更深入的了解Sigma Delta ADC的工作原理,如过采样,噪声整形,数字滤波等,可以参考ADI公司的一篇应用文档:
AN283 - Sigma Delta ADCs and DACs
Pipeline型
这种类型的ADC,结合了Flash型和SAR型,先用分压电阻比较法,快速判断输入电压落入的范围,然后用逐次逼近法在此范围内取得精确的转换结果。此类型ADC很少在单片机中采用。
参考资料:
ADI: The Data Conversion Handbook
ADI: Sigma-Delta ADC Tutorial