模数转换器(ADC)是嵌入式产品应用比较多的模块,可以将电路上的模拟信号转成可供MCU或FPGA等控制器处理的数字信号,很多MCU上也带有ADC外设模块。ADC模块本身涉及了不少参数,其中分辨率(resolution)就是其中比较重要的一个,在很多产品中也会有这个参数,那ADC的分辨率究竟是什么呢?有什么实际作用呢?本文简单讲解一下,供大家参考。 ADC的分辨率,其实指的就是能够将模拟信号细分的最小量化等级,一般都是用位数(bit)来表示,比如MCU的ADC外设模块: 再比如专用的ADC芯片的分辨率说明: 或者说分辨率就是ADC输出的数字编码位数,常见的分辨率有8位,12位,16位,24位和32位等。而量化等级就是2n,其中n就是分辨率位数,比如12位的,即为212=4096,也就是将输入电压范围细分成4096个离散值。 而分辨率的实际意义也可以用最小可分辨电压来说明,类似于尺子上的最小刻度,即: 最小可分辨率电压=满量程电压(FullScale Range, FSR)/( 2n -1); 如果满量程电压为5V,对于12位ADC来说,最小可分辨电压就是5/4095,差不多是1.22mV。 所以可以看出,ADC分辨率越高,其对微小电压变化的检测能力就越强。 这里需要注意,高分辨率不意味着高精度,分辨率只是ADC理论上的细分能力,而精度是实际测量值与真实值之间的误差情况。 那怎么样根据分辨率计算出实际的模拟电压值呢? ADC采集到的数值和电压值之间存在一定的线性关系,当ADC模块将模拟信号转换为数字信号后,输出的数字值与输入的模拟电压值成正比例关系。具体来说,ADC采集到的数值可以通过以下公式计算得到对应的电压值: V = ADC_value * Vref / (2n - 1); 其中,Vref为ADC参考电压,n为ADC的分辨率,ADC_value为ADC采集到的数字值(采样值),这个公式需要根据具体的ADC模块进行调整,不过基本思路是一致的。 举个例子,如果ADC参考电压为5V,ADC采集到的数字值为2048,ADC的位数为12位,那么对应的电压值为: V = 2048 * 5 / (212- 1) ≈ 2.50V; 那实际应用时该如何选择合适分辨率的ADC模块呢?不同分辨率的ADC,其实在价格上的差异还是蛮大的,因为这是ADC的一个比较重要的参数和性能指标。如果只是用于一般的温度监控和数据采集等,可以用8位分辨率ADC(256级);如果对精度有要求,可以用12位或16位分辨率ADC,比如需要用采集数据来做一些控制操作或者PID调控等;如果对精度有更高要求,那可以用24位及以上分辨率ADC,比如用于医疗设备和工业称重模块等精密仪器。 实际应用时,需要注意以下情况: 参考电压:直接影响分辨率的价值,如果参考电压不稳定,实际分辨率也会打折扣; 噪声:信号噪声可能淹没ADC的最小分辨能力,此时提高位数可能毫无意义。
综上所述,分辨率是ADC的“理论细分能力”,但实际效果需结合精度和噪声等综合考虑。
|