51单片机学习笔记(清翔版)(21)——ADDA数模转换

时间:2021-01-02 03:43:57

A:anolog模拟的         D:digital数字的

AD模拟转数字,DA数字转模拟

51单片机学习笔记(清翔版)(21)——ADDA数模转换

生活中的基本都是模拟量,如温度,可以是10℃,10.1℃等

手机的背光亮度自动调节,拿到太阳光下,亮度会增亮,拿到暗的地方光线会减暗,是因为,手机上有一个感光头,采集环境光的亮度,采集到的的是模拟量,经过内部的AD转换器,把模拟量转换成数字量给CPU,CPU通过亮度值再输出一个数字量,输出的数字量再转换为模拟量去控制背光屏的电压,手机后面有一个背光板,手机液晶屏自身是不发光的,为什么能看到字?是因为手机屏上有背光,很多LED灯组成的还有背光板导光片等,LED灯的亮度决定了屏幕的亮度,光线强的时候,要把亮度调高,先通过感光元件返回的模拟量,转化为数字量,通过这个数字量控制LED背光亮度,背光亮度是一个电压,电压大,会变亮,就是把数字量又输出出去,控制灯的亮度。

所以手机自动调节用了AD和DA。还有重力感应、打电话时靠近面部息屏等等,以及烟雾传感器,压力传感器等。

51单片机学习笔记(清翔版)(21)——ADDA数模转换

光线不充足下,发出声音,灯会被打开,在下面有孔的铁罩内,有一个咪头(咪头,是将声音信号转换为电信号的能量转换器件,是和喇叭正好相反的一个器件(电→声)。是声音设备的两个终端,咪头是输入,喇叭是输出。)模块,能检测到震动或声音,这些都是模拟量,通过这个模块,通过内部的电路,把模拟量转换为数字量,去控制灯的开关,同时在红罩内,内有光敏电阻,开发板上也有,当光线充足,无论发出多大声音,灯是不会亮的,只有光线暗,发出声响,才会亮。它就是靠这声音检测和光线检测结合来控制的。

我们开发板也有AD和DA,我们也可以模拟手机背光,控制LED亮暗。

初学了解技术指标就好,以后设计产品的时候就需要关注ADDA性能了,不同应用场合使用不同的AD。

51单片机学习笔记(清翔版)(21)——ADDA数模转换

假设从1变到2,两个相邻数码,那电压需要变化多大呢?假设电压从0.1V变到0.2V,数码就可以从1到2了,如果从0.1边到0.19V,数字量还是1,这就是说之间有0.1V的变化量,有的AD变化0.05V就可以检测到,这就是分辨率,分辨率越高,电压发生一个很小的变化都能识别到。

再例如图中例子,满量程10V,是说能采集的最大电压为10V,从0到10V间发生任何变化,只要在分辨率以内,都可以用一个数字量表示出来,通过这个数字量,通过计算,我们就能知道电压变化了多少。12位的ADC,电压每变化2.4mV,它的数字量就会变化一位。如果是2.4mV,数字量是1,通过这个1,就知道电压是2.4mV,若电压为4.8mV,那么数字量是2,如果变到5.9mV,那么数字量还是2,因为变化量小于2.4mV,所以不会识别到,这就是分辨率的问题。

例如称黄金的称就需要分辨率很高的,每发生几毫克的变化我都需要知道,因为1g几百块是很贵的,所以如果我们要设计一个电子秤,它的用途是称首饰珠宝的,就需要分辨率高的,如果是批发蔬菜的,那么分辨率就可以低些,少那几克也没事,因为AD分辨率越高价格越贵。我们开发板上AD是八位的。满量程是5V。可以算出没变化,0.01953125V就可以检测到。

51单片机学习笔记(清翔版)(21)——ADDA数模转换

比如你模拟量能变到0.0000几,小数点后好几位,但数字量就不能做到,因为硬件的局限性。

从左面的图就可以看出,模拟电压从0到1LSB(最小变化量),数字电压始终是0。

51单片机学习笔记(清翔版)(21)——ADDA数模转换

偏移误差的图就是上一个图的右边的图像。

上述两个误差都是AD内部的误差,生产工艺决定的,价格不同,误差也不同,价格越贵,误差越低,精度越高。当然也不是价格越高越好,要看用到什么场合。总不能称白菜的称拿一个做导弹的高速AD去做,一个AD就几百块,还需要外部晶振,做出来卖给谁去。

51单片机学习笔记(清翔版)(21)——ADDA数模转换

线性度51单片机学习笔记(清翔版)(21)——ADDA数模转换

51单片机学习笔记(清翔版)(21)——ADDA数模转换

我们开发板用的是第二种逐次逼近式。

51单片机学习笔记(清翔版)(21)——ADDA数模转换

里面有DA转换器、N位寄存器、控制器、比较器、D0~D7数据输出、VIN数据模拟量输出、VREF参考电压。

例如我们开发板,参考电压是5V,八位,首先把8位最高位置1,其它为0,那么参考电压就取了一半,VREF/2,拿到VN这里与VIN比较,假设模拟输入电压是3.75V(要将他转换为数字量),如果模拟输入大,那么比较器会输出1,保存到移位寄存器,然后把次高位置1(就是又取了剩下的2.5V的一半,也就是1.25V),加上前面你的2.5V,就是3.7V5,然后比较器还是输出1,下一次又把下一位也置1,这时肯定模拟输入电压小,比较器就输出0,然后再加一个1,比较器又输出一个0,直到8位,然后就把这个N位寄存器的数字量输出出去,输出到锁存缓冲器,然后输出。

51单片机学习笔记(清翔版)(21)——ADDA数模转换