DAC介绍
DAC简介
DAC(Digital to analog converter)即数字模拟转换器,它可以将数字信号转换为模拟信号。它的功能与ADC相反。在常见的数字信号系统中,大部分传感器信号被转化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
DAC 的主要技术指标如下:
- 分辨率 : DAC 的分辨率是输入数字量的最低有效位(LSB)发生变化时,所对应的输出模拟量(电压或电流)的变化量。它反映了输出模拟量的最小变化值。分辨率与输入数字量的位数有确定的关系,可以表示成FS/(2^n)。FS表示满量程输入值,n为二进制位数。对于5V的满量程,采用8位的DAC时,分辨率为5V/256=19.5mV;当采用12位的DAC时,分辨率则为5V/4096=1.22mV。显然,位数越多分辨率就越高。
- 线性度 : 线性度(也称非线性误差)是实际转换特性曲线与理想直线特性之间的最大偏差。常以相对于满量程的百分数表示。如±1%是指实际输出值与理论值之差在满刻度的±1%以内。
- 绝对精度和相对精度 : 绝对精度(简称精度)是指在整个刻度范围内,任一输入数码所对应的模拟量实际输出值与理论值之间的最大误差。绝对精度是由DAC的增益误差(当输入数码为全1时,实际输出值与理想输出值之差)、零点误差(数码输入为全0时,DAC 的非零输出值)、非线性误差和噪声等引起的。绝对精度(即最大误差)应小于1个LSB。相对精度与绝对精度表示同一含义,用最大误差相对于满刻度的百分比表示。
- 建立时间 : 建立时间是指输入的数字量发生满刻度变化时,输出模拟信号达到满刻度值的±1/2LSB 所需的时间。是描述D/A转换速率的一个动态指标。根据建立时间的长短,可以将DAC分成超高速(<1μS)、高速(10~1μS)、中速(100~10 μS)、低速(≥100μS)几档。
DAC工作原理
了解了DAC基本概念及特性后,再来看下其工作原理,下面以T型电阻网络DAC 来介绍。其内部结构图如下所示:
。公式中的z表示单片机给的数字量,vref为参考电压,通常我们是接在系统
电源上,即5V,数值256表示DAC精度为8位。
DAC 主要由数字寄存器、模拟电子开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为1的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值。
上述的模拟电子开关都分别接着一个分压的器件,比如说电阻。模拟开关的个数取决于DAC的精度。那么N个电子开关就把基准电压分为N 份(并不是平均分哦),而这些开关根据输入的二进制每一位数据对应开启或者关闭,把分压的器件上的电压引入输出电路中。
PWM介绍
出于成本考虑,在实际开发应用中,使用较多的是通过PWM来模拟DAC输出。下面就先来了解下PWM相关概念。
PWM 是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信,功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些音频放大器,因此学习 PWM 具有十分重要的现实意义。
其实我们也可以这样理解,PWM 是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。
从图中可以看到,上图 a 是一个正弦波即模拟信号,b 是一个数字脉冲波形即数字信号。我们知道在计算机系统中只能识别是 1 和 0,对于 51单片机芯片,要么输出高电平(5V),要么输出低电平(0),假如要输出 1.5V 的电压,那么就必须通过相应的处理,比如本章所要讲解的 PWM 输出,其实从上图也可以看到,只要保证数字信号脉宽足够就可以使用 PWM 进行编码,从而输出 1.5V 的电压。
PWM 的输出其实就是对外输出脉宽可调(即占空比调节)的方波信号,信号频率是由T的值决定,占空比由C的值决定。其示意图如图所示:
从上图中可以看到,PWM 输出频率是不变的,改变的是C的值,此值的改变将导致 PWM 输出信号占空比的改变。占空比其实就是一个周期内高电平时间与周期的比值
。而频率的话可以使用51单片机的定时器确定。
硬件设计
本实验使用到硬件资源如下:
- DAC(PWM)模块
从上图中可知,该模块是独立的,由J50端子输入PWM信号,可使用单片机P2.1 管脚输出PWM信号至J50端子,DAC1为PWM输出信号,将其连接一个LED,这样可以通过指示灯的状态直观的反映出PWM输出电压值变化。LM358芯片与这些电容电阻构成了一个跟随电路,即输入是多少,输出即为多大电压,输出电压范围是0-5V。输出信号由J52端子的DAC1引出,在其端子上还有一个AIN3脚,它是上一章介绍ADC时的外部模拟信号输入通道。如果使用短接片将DAC1和AIN3短接,这样就可以使用XPT2046芯片采集检测PWM输出信号。
软件设计
本实验所要实现的功能是:DAC(PWM)模块上的指示灯DA1呈呼吸灯效果,由暗变亮再由亮变暗。程序框架如下:
- PWM函数
- 主函数
1 | /************************************************************************************** |
1 |
|
1 |
|
相关的头文件
1 |
|
1 |
|