第六讲:AD、DA的工作原理及实现(郭天祥)

说明:此文章仅是我学习过程中的一些记录,如有侵权,请联系我删除,文章中难免有遗漏错误之处,欢迎指出。

目录

一、D/A转换器

二、D/A转换器的主要性能指标

1.分辨率(掌握)

2.线性度

3.绝对精度和相对精度

4.建立时间

三、DAC0832芯片

四、A/D转换器

五、A/D转换器的主要技术指标

1.分辨率

2.量化误差

3.偏移误差

4.满刻度误差

5.线性度

6.绝对精度

7.转换速率 

六、AD0804芯片

七、补充,也是重点

1.想要用一个芯片,去下载芯片的文档(datasheet),可以来这个网站

2.那么我们要怎么选择合适的芯片呢,根据我们的要求,去查找合适的芯片

3.查芯片资料还有这个网站,这个网站比较齐全


一、D/A转换器

首先要知道为什么会在单片机的外围电路使用D/A转换,原因是单片机只有数字量,只能操作数字量,而实际生活中大多数的数据是模拟量,为了将单片机的数字量转换为实际生活中的模拟量,所以需要用到D/A转换。A/D转换同理。

D/A转换的具体做法是:通过D/A芯片输出特定电流或者电压。

一种经典的D/A转换器内部原理是T型电阻网络:

一般输出的内容是Io1与Io2,也可以如图所示将一个运放,将电流转换成电压输出。最终输出电压的大小与数字量具有对应的关系。具体的原理我也还不是很明白,需要回去再复习一些数电模电的知识,不过也是一些比较简单的电路知识,但是这里就不介绍了。下面是PPT的内容,揣摩一下应该就可以理解。

二、D/A转换器的主要性能指标

1.分辨率(掌握)

分辨率是指输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。

分辨率与输入数字量的位数有确定的关系,可以表示成FS / 2^n。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。

2.线性度

线性度(也称非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差。常以相对于满量程的百分数表示。如±1%是指实际输出值与理论值之差在满刻度的±1%以内。

3.绝对精度和相对精度

绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。绝对精度是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值之差)、零点误差(数码输入为全0时,DAC的非零输出值)、非线性误差和噪声等引起的。绝对精度(即最大误差)应小于1个LSB。

相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。

4.建立时间

建立时间 是指输入的数字量发生满刻度变化时,输出模拟信号达到满刻度值的±1/2LSB所需的时间。是描述D/A转换速率的一个动态指标。

电流输出型DAC的建立时间短。电压输出型DAC的建立时间主要决定于运算放大器的响应时间。根据建立时间的长短,可以将DAC分成超高速(<1μS)、高速(10~1μS)、中速(100~10μS)、低速(≥100μS)几档。

应当注意,精度和分辨率具有一定的联系,但概念不同。DAC的位数多时,分辨率会提高,对应于影响精度的量化误差会减小。但其它误差(如温度漂移、线性不良等)的影响仍会使DAC的精度变差。

三、DAC0832芯片

内部结构及引脚功能:

DAC0832与08C51单片机的接口方式由上面可知有三种,本次实验只选用直通方式。具体内容可以参见DAC0832的文档。

直通工作方式:

当DAC0832芯片的 片选信号、写信号、及传送控制信号的引脚全部接地 允许输入锁存信号ILE引脚接+5V 时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
下面我们来写一个程序,通过给单片机的I/O口赋不同的值,通过D/A转换芯片,来使开发板上对应的LED灯亮度改变。
开发板原理图:
通过原理图可以看到,该芯片的数字输入引脚连接的是单片机的P0口,因此我们需要对P0口赋不同的值,来使D/A转换芯片输出不同的模拟量,最终的输出通过D12流向地,所以不同的输出会使D12的亮度发生改变。
现在来操作芯片,在原理图上可以看到,芯片的传送控制信号引脚 已经默认接地,而且允许输入锁存信号引脚ILE也已经接上VCC及+5V了,所以根据直通工作方式原理,只需要 给片选信号以及写信号软件接地,此时单片机的I/O输出什么数字量,就会直接进行DAC寄存器,进行D/A转换,从而改变D12的亮度。
具体代码如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit csda = P3^2;
sbit wr = P3^6;

void main()
{
	csda = 0;//片选信号
	wr = 0;  //写信号
	P0 = 0;  //P0=0时D12不亮,P0=0xff时D12最亮
	while(1);
}

四、A/D转换器

A/D转换原理常见的有两种,逐次逼近式以及双积分式,图示如下。

逐次逼近式ADC的转换原理

 

双积分式ADC的转换原理

五、A/D转换器的主要技术指标

1.分辨率

ADC的分辨率是指使输出数字量变化一个相邻数码所需输入模拟电压的变化量。常用二进制的位数表示。例如12ADC的分辨率就是12位,或者说分辨率为满刻度FS的1/。一个10V满刻度的12ADC能分辨输入电压变化最小值是10V×1/=2.4mV。

2.量化误差

3.偏移误差

偏移误差 是指输入信号为零时,输出信号不为零的值,所以有时又称为零值误差。假定 ADC 没有非线性误差,则其转换特性曲线各阶梯中点的连线必定是直线,这条直线与横轴相交点所对应的输入电压值就是偏移误差。

4.满刻度误差

满刻度误差又称为增益误差。ADC的满刻度误差是指满刻度输出数码所对应的实际输入电压与理想输入电压之差。

5.线性度

线性度 有时又称为非线性度,它是指转换器实际的转换特性与理想直线的最大偏差。

6.绝对精度

在一个转换器中,任何数码所对应的实际模拟量输入与理论模拟输入之差的最大值,称为绝对精度。对于ADC而言,可以在每一个阶梯的水平中点进行测量,它包括了所有的误差。

7.转换速率 

ADC转换速率是能够重复进行数据转换的速度,即每秒转换的次数。而完成一次A/D转换所需的时间(包括稳定时间),则是转换速率的倒数。

六、AD0804芯片

这是芯片文档里的一种典型接法,其中CLK是该芯片的时钟输入,每来一次时钟周期,进行一次AD转换。而图中10k的电阻以及150pF的电容构成的RC振荡电路,也可以产生时钟周期,其决定了AD转换速率,当然,芯片本身的AD转换速率是有上限的,时钟的速率不能超过上限。

在郭天祥实验板上为了焊接方便,电容选用的是104的电容,即10乘10的4次方的pF,明显大于150pF,造成AD转换速率变慢,不过影响不大,因为本身该实验板仅作学习用,实验时只需延时一下即可。

现在我们来写一个程序,通过改变滑动变阻器阻值的大小,使实验板上的一排发光二极管改变亮灭情况。

开发板原理图如下: 

可以看到,对于AD芯片来说,它的模拟量输入是可以由滑动变阻器Re2来改变的,而输入模拟量的不同造成的数字量的输出通过74HC573寄存器流向发光二极管,即不同的模拟量输入代表的数字量输出最终会表示在发光二极管上。

观察AD0804芯片的文档可知,我们需要让片选信号处于低电平才能启动,并且写信号必须由高电平到低电平再到高电平,最终在读信号从低电平转向高电平的瞬间读取模拟量,因此写有程序代码如下:

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rd = P3^7;
sbit wr = P3^6;
void delay(uint z);
void init();
void start();
void main()
{
	init();
	while(1)
	{
		start();
		delay(10);
		rd = 0;
		delay(10);
		rd = 1;
		delay(10);
	}
	
}

void delay(uint z)  //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{					//delay(500);大约延时500ms.
	uint x,y;
	for(x=z;x>0;x--)
		for(y=110;y>0;y--);	
}

void init()
{
	P0 = 0x7f;//寄存器是直通的,因为上电后I/O口是高电平
}

void start()
{
	wr = 1;
	wr = 0;
	wr = 1;
}

七、补充,也是重点

其实A/D以及D/A并不属于单片机,它属于单片机的外围电路,在大多数的单片机项目中会用到,当然也有可能不会用到。所以在本文中我没有详细的介绍相关的知识,也没有详细介绍芯片的使用,一方面是老师没有讲很多,一方面是因为在实际开发中,并不是一定要用这个芯片,需要根据自己想要实现的功能去选择合适的芯片,对于芯片,开发商会配有文档,我们要用的时候再根据文档去设计以及编写程序即可,还有就是需要常用的芯片,网上也会有需要资料补充。

现在已经有很多新型的单片机以及集成了A/D、D/A功能在其I/O口中,不需要再额外连接一个A/D转换芯片了,但是有时候由于成本的问题,我们仍需要外接一个转换芯片。

下面推荐几个老师推荐的网站:

1.想要用一个芯片,去下载芯片的文档(datasheet),可以来这个网站

https://www.21ic.com/

2.那么我们要怎么选择合适的芯片呢,根据我们的要求,去查找合适的芯片

http://www.maxim-ic.com/

但是这个网站目前我打不开

3.查芯片资料还有这个网站,这个网站比较齐全

https://www.alldatasheet.com/

  • 11
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值