单片机是一个典型的数字系统,数字系统只能呢个对输入的数字信号进行处理,其输出信号也是数字的。但工业或者生活中的很多量都是模拟量,这些模拟量可以通过传感器变成与之对应的电压、电流等模拟量。为了实现数字系统对这些电模拟量的测量,运算和控制,就需要一个模拟量和数字量之间的相互转化的过程。
A/D和D/A的基本概念
A/D是模拟量到数字量的转换,依靠的是模数转换器(Analog to Digital Converter),简称ADC。D/A是数字量到模拟量的转换,依靠的是数模转换器(Digital to Analog Converter),简称DAC。它们的道理是完全一样的,只是转换方向不同,因此我们讲解过程主要以A/D为例来讲解。
什么是模拟量?就是指变量在一定范围内连续变化的量,总之,任何两个数字之间都有无限个中间值,所以称之为连续变化的量,也就是模拟量。ADC就是起到把连续的信号用离散的数字表达出来的作用
A/D的主要指标
我们在选取和使用A/D的时候,依靠什么指标很重要。由于AD的种类很多,分为积分型,逐次逼近型,并行/串行比较型,Σ-Δ型等多种类型。同时指标也比较多,并且有的指标还有轻微差别。
1.ADC的位数
一个n位的ADC表示这个ADC共有2的n次方个刻度。8位ADC,输出的是从0-255的256个数字,也就是2的8次方的一个数据刻度。
2.基准源
基准源也叫基准电压,是ADC的1个重要标准,要想把输入ADC的信号测量准确,那么基准源首先要准,基准源的偏差会导致转换结果的偏差比如一根米尺,总长度本应该是1米,假定这根米尺被火烤了一下,实际变成了1.2米,再用这根米尺测物体长度的话自然就有了较大的偏差。假如我们的基准源应该是5.10V,但是实际上提供的却是4.5V,这样误把4.5V当成了5.10V来处理的话,偏差也会比较大。
3.分辨率
分辨率是数字量变化的一个最小刻度时,模拟信号的变化量,定义为满刻度量程与2n-1的比值。假定5.10V的电压系统,使用8位的ADC进行测量,那么相当于0-255一共256个刻度把5.10V划分成255份,那么分辨率就是5.10/255=0.02V.
INL(积分非线性度)和DNL(差分非线性度)
一般容易混淆两个概念就是分辨率和精度,认为分辨率越高,则精度越高,而实际上,两者并没有必然的联系。分辨率是用来描述刻度划分的,而精度是用来描述准确程度。同样一根米尺,刻度数相同,分辨率就相当,但是精度却可以相差很大,ADC精度关系重大的两个指标是INL(Integral NonLiner)和DNL(Differencial NonLiner)。
INL指的是ADC器件在所有的数值上对应的模拟值,和真实值之间的误差最大的哪一个点的误差值,是ADC最重要的一个精度标准,单位是LSB。LSB是最低有效位的意思,那么实际上对应的就是ADC的分辨率。一个基准为5.10V的8位ADC,它的分辨率就是0.02V,用它去测量一个电压信号,得到的实际结果是100,就是表示它测到的电压值是100*0.02=2V,假定它的INL是1LSB,就是表示这个电压信号真实的准确值是在1.98V——2.02之间的,按理想情况对应的数字因该是99-101,测量误差是一个最低的有效位,即1LBS。
DNL表示的是ADC相邻两个刻度之间最大的差异,单位也是LSB。一把分辨率是1毫米的尺子,相邻的刻度之间并不都刚好是一毫米,而总是会存在或大或小的误差。同理,一个ADC的两个刻度线之间也不总是准确的等于分辨率,也是存在误差,这个就是DNL。一个基准为5.10V的8位ADC,假定DNL是0.5LSB,那么当它的转换结果从100增加到101时,理想情况下实际电压应该增加0.02V,但DNL为0.5LSB的情况下实际电压为0.01——0.03V之间,值得一提的是DNL并非一定小于1LSB,很多时候它会等于或者大于1LSB,这在相当一定程度上刻度紊乱,当实际电压保持不变时,ADC得出的结果可能会在几个数值之间跳动,很大程度上由于这个原因(但并不完全是,因为还有很多干扰)。
5.转换速率
转换速率,是指ADC每秒能进行采样转换的最大次数,单位是sps(或s/s、sa/s,即samples per second),它与ADC完成一次从模拟到数字的转换所需要的时间互为倒数关系。ADC的种类比较多,其中积分型的ADC转换时间是毫秒级的,属于低速ADC;逐次逼近型ADC转换时间是微妙级的,属于中速ADC;并行/串行的ADC的转换时间可达到纳秒级,属于高速ADC