基于单片机内部的ADC,相关知识梳理
编写这篇文章的初衷
当我第一次学习51单片机的AD采集时,网上找到的资源参差不齐,当然最终还是理解了工作原理,每一行代码是什么意思,但是当我过段时间想要再次梳理一遍的时候我发现我并没有过系统的整理,导致我想要再系统的学习就会略显吃力。
所以我准备以我自己的理解的尽量的让这个文章通俗易懂,无论您是第一次接触这方面的小白也好,或是这方面的技术大牛仅仅是想再回想一下AD采集里的某一个细节,都可以在这篇文章中有所收获,这也是我写这篇文章的初衷了。
一、什么是ADC?
可能在第一次学习到ADC对这方面或多或少的有些蒙,那么让我们先从字面意思来理解一下吧:ADC(Analog-to-Digital Converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。
- Analog: 直接翻译过来就是模拟,也就是说是模拟信号,这里我们就要了解一个概念了什么是模拟信号?其实并不难理解,模拟信号就是将电路模拟成信号,电信号有电压、电流等因素等等;
- Digital:直接翻译过来就是数字的,也就是数字信号,那我们又要了解一个概念了,什么是数字信号?其实它比模拟信号还要容易理解,将电路的信号模拟成数字信号,通常情况下高电平就表示1,低电平就表示0;
- Converter:当我们了解了前面两个概念之后,您或许有一些似懂非懂的意思了,那么这翻译过来就是模拟信号转变成数字信号呗!没错就是这样,我们通过相应的采集装置,采集到的值为电压的大小,此时我们就需要用到我们的模数转换来将它转换成数字信号了。
让我们总结一下:
在仪器检测系统中,常常需要将检测到的连续变化的模拟量如:温度、压力、流量、速度等转换为离散的数字量,才能进行计算处理。
这些模拟量通过传感器转换为电信号后,就需要通过一定的处理变成数字量,实现模拟量到数字量转换的设备,我们通常称为ADC,也叫做A/D。
看完之后您可能会想知道这ADC它的工作原理是如何实现的,或者是我该如何快速的使用它呢?先别着急让我们继续看下去!
二、ADC的工作原理
提示:如果您仅仅是想要知道我该如何使用ADC,那么可以直接跳过这一段。
在这一段中我想把我对ADC工作原理的理解系统的展示出来,它或许会让您对ADC工作原理能有一个更清晰的认知,如果真是这样也达到了我的目的所在了。
1.采集数据
采集数据其实并不算是ADC的工作,ADC的工作是将采集到的模拟信号转换为数字信号,这我就不过多赘述了。
采集数据需要用到相应的传感器,那什么是传感器呢?
传感器就是能够检测相应的环境因素来输出相应的数据。
其实传感器有很多种,返回的有模拟量也有的返回数据量,而我们所要用到的当然就是返回模拟量的传感器啦!
传感器通过采集到的环境值来返回一个电压信号时,这时候就需要我们ADC来将返回过来的电压信号转变为我们可以运算的数据了。
2.了解概念
这段内容是为下面的数据转换做个基础
下面来说一个例子:
一个温度传感器在0℃的时候所对应产生2.5V的电压,那么单片机是无法直接知道此时的电压是2.5v的,单片机本身只能知道电平是高还是低。因此这个2.5V的电压就需要经过ADC转换为数字量,如果是用8位分辨率的ADC、参考电压为5V,那么转换结果就是127,也就是0x7F,这样的话,单片机就可以判断这个温度是否过高或者过低,就能进行运算和控制了。
1) AD位数
表明这个该AD采集共有2n个刻度,也就是说如果一个8位的AD,它最终输出的数值是在0~255之间的值。
2) 分辨率
分辨率是AD采集数据输出数值的单位,例如5.1V的参考电压,系统采用8位的AD,那么分辨率就是:5.1/255 = 0.02V。
3) INL:Interger NonLiner——积分非线性度
它表示了ADC器件在所有的数值上对应的模拟值,和真实值之间误差最大的那一点的误差值。单位:LSB 比如:1LSB,测得数字值是100,对应电压是2v,实际电压可能是1.98V~2.02V。
4) DNL:Differencial NonLiner——差分非线性度
它表示了ADC相邻两刻度之间最大的差异,比如DNL= 2LSB,测量A点电压度数是100,那么代表了2V,B点电压是200,代表4V,表面看他们相差4-2=2V,实际相差大概是1.96V~2.04V。
5)转换速率
是指完成一次从模拟转换到数字的所需要的时间的倒数。也就是一秒内可以转换多少次。
- 积分型的AD的转换时间是毫秒级,属于低速的AD转换。
- 逐次比较型AD是微秒级的AD转换,属于中速的AD转换。
- 并行/串行的AD可达到纳秒级,属于高速AD。
3.单片机内部ADC
因为本人平常用的都是STC12C5A60S2的单片机,那么这里就拿该单片机举例
下面是STC12C5A60AD/S2系列单片机的A/D转换介绍
STC12C5A60AD/S2系列带A/D转换的单片机的A/D转换口在P1 口(P1.7~P1.0),有8路10 位高速A/D转换器,速度可达到250KHz(25万次/秒)。8路电压输入型A/D,可做滁度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型I/0口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/0口使用。
1)单片机采集信号处理数据过程
下图是单片机将模拟信号转换成数字信号
2)单片机采集信号处理数据的原理
下图是单片机ADC的原理