转载:http://www.rationmcu.com/elecjc/1874.html
今天给大家简单介绍一下ADC器件的常识。
ADC,模数转换器,功能是把模拟电压转换成数字量。
概念听的模糊,说点实际的吧:把你要测的电压那条线,连接到ADC的用来测试电压的引脚上,ADC模块就会检测到这个电压,并且自动转换成一个数字,我们读出这个数字,然后知道这个数字和电压的对应关系,就可以知道现在的电压是多大了。
有些单片机内部有ADC模块,在单片机外部引出测试用的ADC引脚。
有些单片机内部没有ADC模块,可以用单独的ADC芯片,单独的ADC芯片一般留有与单片机通信的接口,常见的是8位并口、I2C口、SPI口。单片机通过通信接口与外部ADC模块连接读取ADC芯片的转化值。
分辨率
不管是单片机内部的ADC,还是独立的ADC芯片,都有一个分辨率指标。
一般的分辨率有8位、10位、12位、16位、24位。
先要知道,位就是bit,就是计算机界是最小的单位,8个位是1个字节。
8位数字,最大值就是255,范围从0~255。
10位数字,最大值就是1023,范围从0~1023。
12位数字,最大值就是4095,范围从0~4095。
14位数字,最大值就是16383,范围从0~16383。
16位数字,最大值就是65535,范围从0~65535。
24位数字,最大值就是16777215,范围从0~16777215。
为什么“位”可以表示分辨率?
假设一个我们要测一个0~5V的电压信号。
用8位分辨率的ADC测,输入电压是0V时,得到的数字是0,输入电压是5V时,得到的数字是255。
用12位分辨率的ADC测,输入电压是0V时,得到的数字是0,输入电压是5V时,得到的数字是4095。
8位的ADC,得到的数字每增加1,实际上电压增加5/256=0.0195V。
16位的ADC,得到的数字每增加1,实际上电压增加5/4096=0.0012V。
假设,现在要测一个0.015V的电压,8位的ADC得到的数字,就是1,当你得到1的时候,只能认为是1*5/256=0.0195V的电压。
那如果用12位的ADC测0.015V的电压的话,得到的数字就是12或者13,如果是12的话,我们转化一下,就会认为是12*5/4096=0.0147V,如果得到的数字是13的话,我们转一下,就会认为是13*5/4095=0.0159V。
对比一下数字,就可以看出来,位数越高的分辨率,就可以测得更精确的电压。