AD DA.docx
《AD DA.docx》由会员分享,可在线阅读,更多相关《AD DA.docx(16页珍藏版)》请在冰豆网上搜索。
ADDA
ADC/DAC简介
数字信号:
是一种非0即1的非连续信号。
模拟信号:
是一种连续信号,身边很多量都是模拟量如温度、亮度等。
随着现代科学技术的迅猛发展,特别是数字系统已广泛应用于各种学科领域及日常生活,微型计算机就是一个典型的数学系统。
但是数字系统只能对输入的数字信号进行处理,其输出信号也是数字信号。
而在工业检测控制和生活中的许多物理量都是连续变化的模拟量,如温度、压力、流量、速度等,这些模拟量可以通过传感器或换能器变成与之对应的电压、电流或频率等电模拟量。
为了实现数字系统对这些电模拟量进行检测、运算和控制,就需要一个模拟量与数字量之间的相互转换的过程。
即常常需要将模拟量转换成数字量,简称为AD转换,完成这种转换的电路称为模数转换器(AnalogtoDigitalConverter),简称ADC;或将数字量转换成模拟量,简称DA转换,完成这种转换的电路称为数模转换器(DigitaltoAnalogConverter),简称DAC
DAC
1.1数模转换器(DAC)的基本原理
DAC的内部电路构成无太大差异,一般按输出是电流还是电压、能否作乘法运算等进行分类。
大多数DAC由电阻阵列和n个电流开关(或电压开关)构成。
按数字输入值切换开关,产生比例于输入的电流(或电压)。
此外,也有为了改善精度而把恒流源放入器件内部的。
DAC分为电压型和电流型两大类,电压型DAC有权电阻网络、T型电阻网络和树形开关网络等;电流型DAC有权电流型电阻网络和倒T型电阻网络等。
1.电压输出型(如TLC5620)。
电压输出型DAC虽有直接从电阻阵列输出电压的,但一般采用内置输出放大器以低阻抗输出。
直接输出电压的器件仅用于高阻抗负载,由于无输出放大器部分的延迟,故常作为高速DAC使用。
2.电流输出型(如THS5661A)。
电流输出型DAC很少直接利用电流输出,大多外接电流-电压转换电路得到电压输出,后者有两种方法:
一是只在输出引脚上接负载电阻而进行电流-电压转换,二是外接运算放大器。
3.乘算型(如AD7533)。
DAC中有使用恒定基准电压的,也有在基准电压输入上加交流信号的,后者由于能得到数字输入和基准电压输入相乘的结果而输出,因而称为乘算型DAC。
乘算型DAC一般不仅可以进行乘法运算,而且可以作为使输入信号数字化地衰减的衰减器及对输入信号进行调制的调制器使用。
电阻为R
很有趣的电阻网络,后面的并联部分电阻总为R
4.一位DAC。
一位DAC与前述转换方式全然不同,它将数字值转换为脉冲宽度调制或频率调制的输出,然后用数字滤波器作平均化而得到一般的电压输出,用于音频等场合。
T型电阻网络D/A转换器:
运算放大器
通过它将电流信号转换成电压信号
由高中的物理知识可以知道电流在每一个节点都被平均的分为了两部分。
所以容易得到:
这个原理牵扯到模电知识,大家可以先记住结论,具体原因的可以自己去查相关电路书籍。
当输入数据D7~D0为10000000B时,有:
IO1=I7=(I/28)×27
IO2=I6+I5+I4+I3+I2+I1+I0=(I/28)×(26+25+24+23+22+21+20)
VO=—(VREF/28)×27=-0.5VREF
所以,可以通过控制D7-D0的值来控制的IO1与IO2电流输出,再通过运放住化成相应的电压输出实现数字量到模拟量的转换。
1.2DAC的主要技术指标
1.分辨率指输出模拟电压的最小增量,即表明DAC输入一个最低有效位(LSB)而在输出端上模拟电压的变化量。
如上图所示的八位DAC其分辨率就为VREF/(28-1)。
2.建立时间是将一个数字量转换为稳定模拟信号所需的时间,也可以认为是转换时间。
DA中常用建立时间来描述其速度,而不是AD中常用的转换速率。
一般地,电流输出DA建立时间较短,电压输出DA则较长。
3.精度是指输入端加有最大数值量时,DAC的实际输出值和理论计算值之差,它主要包括非线性误差、比例系统误差、失调误差。
4.线性度在理想情况下,DAC的数字输入量作等量增加时,其模拟输出电压也应作等量增加,但是实际输出往往有偏离。
1.3DAC0832芯片及其与单片机接口
DAC0832是使用非常普遍的8位D/A转换器,由于其片内有输入数据寄存器,故可以直接与单片机接口。
DAC0832以电流形式输出,当需要转换为电压输出时,可外接运算放大器。
属于该系列的芯片还有DAC0830、DAC0831,它们可以相互代换。
1、DAC0832主要特性:
▪分辨率8位;
▪电流建立时间1μS;
▪数据输入可采用双缓冲、单缓冲或直通方式;
▪输出电流线性度可在满量程下调节;
▪逻辑电平输入与TTL电平兼容;
▪单一电源供电(+5V~+15V);
▪低功耗,20mW。
2、DAC0832内部结构及引脚
内部结构元件各个管脚
3、操作时序图
从时序图可以看出,当CS,WR都为低电平时这时,这时数据口传送的数据为有效数据(validDACdata)直接传送给DAC处理,然后输出相应的电流值。
4、直通工作方式
由于其他两种方式比较复杂,这里我们只介绍直通方式。
当DAC0832芯片的片选信号、写信号、及传送控制信号的引脚全部接地,允许输入锁存信号ILE引脚接+5V时,DAC0832芯片就处于直通工作方式,数字量一旦输入,就直接进入DAC寄存器,进行D/A转换。
5、实例通过单片机调节LED灯的亮度。
电路如下:
源代码:
#include
#defineLD50//宏定义LD表示亮度百分比
sbitcs=P1^1;
sbitwr=P1^0;//位定义
voidmain()
{
csda=0;
wr=0;
P0=255*(LD)/100
while
(1);程序在此停住
}
1.4小结
本节知识介绍了DA最基本的知识,要是想了解更为具体的知识大家还要自己去阅读DATASHEET。
本节的实例比较简单,大家可以结合前面讲的键盘识、数码管显示等知识,使LED的亮度可以随意调节并能显示亮度。
ADC
2.1模数转换器(ADC)的基本原理
模拟信号转换为数字信号,一般分为四个步骤进行,即取样、保持、量化和编码。
前两个步骤在取样-保持电路中完成,后两步骤则在ADC中完成。
常用的ADC有积分型、逐次逼近型、并行比较型/串并行型、Σ-Δ调制型、电容阵列逐次比较型及压频变换型。
下面简要介绍常用的几种类型的基本原理及特点,大家了解就行:
1.积分型(如TLC7135)。
积分型ADC工作原理是将输入电压转换成时间或频率,然后由定时器/计数器获得数字值。
其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。
初期的单片ADC大多采用积分型,现在逐次比较型已逐步成为主流。
双积分是一种常用的AD转换技术,具有精度高,抗干扰能力强等优点。
但高精度的双积分AD芯片,价格较贵,增加了单片机系统的成本。
3.并行比较型/串并行比较型(如TLC5510)。
并行比较型AD采用多个比较器,仅作一次比较而实行转换,又称Flash型。
由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。
串并行比较型AD结构上介于并行型和逐次比较型之间,最典型的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为Halfflash型。
4.Σ-Δ调制型(如AD7701)。
Σ-Δ型ADC以很低的采样分辨率(1位)和很高的采样速率将模拟信号数字化,通过使用过采样、噪声整形和数字滤波等方法增加有效分辨率,然后对ADC输出进行采样抽取处理以降低有效采样速率。
Σ-Δ型ADC的电路结构是由非常简单的模拟电路和十分复杂的数字信号处理电路构成。
5.电容阵列逐次比较型。
电容阵列逐次比较型AD在内置DA转换器中采用电容矩阵方式,也可称为电荷再分配型。
一般的电阻阵列DA转换器中多数电阻的值必须一致,在单芯片上生成高精度的电阻并不容易。
如果用电容阵列取代电阻阵列,可以用低廉成本制成高精度单片AD转换器。
最近的逐次比较型AD转换器大多为电容阵列式的。
6压频变换型(如AD650)。
压频变换型是通过间接转换方式实现模数转换的。
其原理是首先将输入的模拟信号转换成频率,然后用计数器将频率转换成数字量。
从理论上讲这种AD的分辨率几乎可以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积脉冲个数的宽度。
其优点是分辨率高、功耗低、价格低,但是需要外部计数电路共同完成AD转换。
2.逐次逼近型(如TLC0831)。
逐次逼近型AD由一个比较器和DA转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内置DA转换器输出进行比较,经n次比较而输出数字值。
其电路规模属于中等。
其优点是速度较高、功耗低,在低分辨率(<12位)时价格便宜,但高精度(>12位)时价格很高。
1.2ADC和DAC的主要技术指标
1.ADC分辨率指输出数字量变化一个最低有效位(LSB)所需的输入模拟电压的变化量。
2.ADC的精度决定于量化误差及系统内其他误差之总和。
一般精度指标为满量程的±0.02%,高精度指标为满量程的0.001%。
3.转换速率是指完成一次从模拟转换到数字的AD转换所需的时间的倒数。
积分型AD的转换时间是毫秒级属低速AD,逐次比较型AD是微秒级属中速AD,全并行/串并行型AD可达到纳秒级。
4.量化误差由于AD的有限分辨率而引起的误差,即有限分辨率AD的阶梯状转移特性曲线与无限分辨率AD(理想AD)的转移特性曲线(直线)之间的最大偏差。
通常是1个或半个最小数字量的模拟变化量,表示为1LSB、1/2LSB。
1.3DAC0804芯片及其与单片机接口
1.特性:
●逐次逼近型ADC。
●8位解析能力,转换时间为100μS,最大误差为1LSB
●
差分式模拟电压输入
2.引脚:
●
CS:
芯片选择引脚,低电平有效。
当CS=0时,选中0804,可对其操作;若CS=1,则不能对芯片操作,此时数据引脚DB0~DB7为高阻态。
●
RD:
数据读取引脚,低电平有效。
当CS=0,RD=0时可以从DB0-DB7中读取芯片输出的数字数据。
●
WR:
开始转换引脚,低电平有效。
当WR=0时,使芯片进行AD转换。
●
INTR:
完成转换后的中断引脚,低电平有效。
当INTR=0时,表明AD转化完成,此引脚用来通知单片机,请它来提取数据。
●CLKIN:
时钟输入引脚,AD0804接受100~1460kHz的时钟脉冲。
我们可以直接从单片机输出一定频率的脉冲,也可以配合CLKR引脚,外加电阻、电容,由内部电路产生脉冲,如下图所示电路,其频率为:
fCLK
●CLKR:
时钟输出引脚,与CLKIN一起使用产生时钟脉冲。
●Vref/2:
参考电压输入引脚。
大于等于模拟电路电压输入值的一半。
●VIN+:
模拟电压输入的正极引脚,所输入电压不能高于Vref/2的两倍。
●VIN-:
模拟电压输入的正极引脚。
●VCC:
电源引脚或参考电压引脚,通常为+5V,若Vref/2没有接参考电压,则以此一脚上的电压为参考电压。
●DGND:
数字信号接地引脚。
●AGND:
模拟信号接地引脚,若处理高干扰性的模拟信号,本引脚可单独接地。
通常本引脚与DGND里连接后一起接地。
●DB0~DB7:
数字数据输出引脚,这8只引脚为三态输出,可以直接连接单片机数据总线,当此IC不输出时,这三只引脚呈现高阻态。
3.时序图
ADC内部转换时序图
输出时序图
很多英文是吧?
别被吓到了,其实没啥,单词大多你都认识,实在不行还有有道电子字典呢。
很多资料都是英文的,大家见多了就不怕了。
我简单的说一下,如图所示,当CS引脚为低电平,且WR为低电平时,ADC开始转换,当转换完后INTR引脚为低电平,提醒单片机来提取数据。
这时候,如果CS为低电平,RD也为低电平时,过很小一段时间,DB0~DB7上的值就为此次转换的结果。
4.实例
我们通过改变输入电压的大小来改变DAC的输出值并让它通过八位LED的来表现出来。
有电路图可以得知,Vref=VCC,通过滑动滑动变阻器可以改变输入的模拟电压的大小,通过ADC转换传给单片机,单片机再去控制LED的亮度。
源代码:
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitwr=P2^0;
sbitrd=P2^1;
sbitcs=P2^2;
uncharflag=1;//中断标志位
voiddelay(uintz)//延时函数
{
uintt1,y;
for(t1=z;t1>0;t1--)
for(y=110;y>0;y--);
}
voidmain()
{
EA=1;//开启总中断
EX1=1;//开启外部中断1
IT1=1;//引发中断方式为下降沿
cs=0;//选中ADC
while
(1)//不停的转换进行模数转换
{
wr=1;
wr=0;
wr=1;
while(flag==1);//等待中断
}
}
voidintr()interrupt2
{
rd=0;
delay(10);
P1=P0;
rd=1;
flag=0;
}
实验结果大家可以看到随着你对滑动变阻器的调节,LED的两灭会发生变化。
当然大家还可以把它改为一个简单电压表,在数码管上显示具体的电压值,单路和程序都要改动,大家自己可以自己试试。
。