文件名:ccsa4_5
模拟量输入输出
第四章
4-1 模拟量输入通道基本组成包括哪些环节,各环节的作用是什么?
⒈模拟量输入通道的基本组成
模拟量输入通道一般由前置调理电路、采样保持器、A/D转换器和计算机I/O接口电路组成,如图4-1所示。来自生产现场的过程工艺参数由传感变送器转换为模拟电信号,再依次经过前置调理、采样保持和模数转换环节,转化为数字信号,最后通过I/O接口电路由计算机接收。
图4-1 模拟量输入通道基本组成框图
传感变送器在计算机控制系统中作为广义被控对象的一个组成部分,是模拟量输入通道的信息提供者,它通常包括传感器和变送器(两者配套使用)两个部分。传感器是将某一物理量,如温度、流量、压力等生产过程工艺参数,转换为电参量的装置,电参量的形式有电流值、电压值、电阻值、电容值、电感值、电荷值和频率值等。变送器也称信号调理单元,一般包括标度变换、滤波、非线性校正、零点和满刻度调整等电路。其中标度变换电路将传感器输出的电参量进行规格化处理,变换成0~5V、1~5 V 、0~±10 V 或0~10mA、4~20mA等统一标准信号;有些传感器的输出信号与被测物理量之间呈非线性关系,为提高测量转换的灵敏度,可以用软件或硬件方法来实现线性化,应用硬件方法时就需要变送器中的线性化校正电路。为了便于使用,大多数传感器生产商往往将传感器与变送器做成一体,直接输出0~5V、-5V~5V、0~10V、-10V~10V等电压信号,或0~10mA、4~20mA的电流信号。传感器和变送器的种类繁多,电路组成复杂多样,有许多相关的文献和书籍,因其是广义被控对象的一部分,在本教材中不做介绍。
模拟量输入通道各组成部分的作用分述如下:
⑴前置调理电路:在计算机控制系统中,传感变送器的输出信号多数采用标准电流0~10mA或4~20mA,以便经双绞线进行远程传送。在信号到达模拟量输入通道后,需要将现场传送来的电流信号转换为电压信号。不论是电流型信号还是电压型信号,来自现场的信号本身会有噪声,在传送过程中也会受到干扰,因此需要在采样环节之前设置硬件滤波电路消除高频干扰。前置调理电路包括滤波电路和I/V转换电路,可以根据模拟信号的实际情况灵活设置。
⑵采样保持器:模拟量在进行A/D转换时需要一个过程,如果信号变化很快则A/D转换结果是不确定的。采样保持器的作用在于,保证A/D转换期间待转换的电压信号保持不变,避免引起A/D的转换误差。
⑶A/D转换器:A/D转换是模拟信号向数字信号转换的关键环节,A/D转换器一端连接模拟量输入通道的模拟电路部分,另一端连接计算机I/O接口电路,它将模拟电压信号转化为数值上等效的数字信号,以便计算机接收和识别。
⑷计算机接口和控制电路:该电路是计算机与模拟量输入通道之间的连接电路,其功能包括两个方面:一是启动A/D转换,并将结果送计算机;二是控制模拟量输入通道中的其它受控元件,如采样保持器和多路转换开关等。
4-2 简述模拟量输入通道的结构类型,并分析它们的特点。
⒉模拟量输入通道的结构类型
计算机控制系统在实际应用中往往需要检测多种物理量,或者对同一种物理量的多个参数测量点进行检测,在时间安排上采取同步检测或者巡回检测的方式。针对控制系统的技术要求,应当为模拟量输入通道选配适当的结构形式,这主要取决于需要检测的参数测量点数量和相应的时序关系。图4-1所示的模拟量输入通道,只能检测一种物理量的一个参数测量点,称为模拟量单输入通道;能完成多个参数测量点同时或巡回检测任务的模拟量输入通道,称为多路模拟量输入通道。按照A/D转换器的利用情况和各路模拟量采集时序,多路模拟量输入通道可分为两大类型,即多路独立设置A/D转换器形式和多路共享A/D转换器形式。
多路共享A/D转换器形式如图4-2(a)所示,多路模拟量输入通道由被测信号各自对应的前置调理电路(1……n)、模拟多路开关、前置放大器、采样保持器、A/D转换器、逻辑控制电路和计算机I/O接口电路组成。其中,模拟多路开关相当于一个单刀多掷开关,它的作用是把各路被测信号按预定时序分时地接入通道。该结构的特点是多路信号共同使用一个前置放大器、采样保持器和A/D转换器,由多路模拟开关轮流采入各路模拟信号,经放大、采样、保持和A/D转换,送入计算机I/O接口电路。优点是能够以较低的成本采集多路信号,但是存在两方面的缺点,一是各路信号在时间是依次被采集的,不能获得同一时刻的数据,二是多路模拟开关不是理想开关,易受失调电压、开关噪声、非线性和信号之间窜扰的影响,系统精度因此受到影响。这种形式通常用于对速度要求不高的数据采集系统中,对于要求多路信号严格同步采集测量的系统是不适用的。
(a)多路共享A/D转换器形式
(b)多路独立设置A/D转换器形式
图4-2 多路模拟量输入通道结构图
多路独立设置A/D转换器形式如图4-2(b)所示,多路模拟量输入通道由若干模拟量单输入通道并联组成。该结构的特点是每路信号都有独自的采样保持器和A/D转换器,每一组采样保持器和A/D转换器只对本路模拟信号进行转换,允许各路通道同时进行采样、保持和A/D转换,采集的数据在计算机I/0接口的协调下按一定顺序输入计算机。优点是各路通道互不影响,如果某一路产生故障,不影响其它通道正常工作,而且可同步采样,信号转换速度快。缺点是通道路数越多,成本越高,而且会使系统体积增大。这种形式通常用于高速数据采集系统,能够满足多路信号同步采集的需要。
4-3 说明模拟量输入通道的信号变换过程和香农采样定理。
⒈模拟量输入通道的信号变换
在图4-1所示的模拟量输入通道中,传感变送器输出的模拟信号经前置调理电路后,仍然是模拟电压信号,向计算机I/O接口传送还需要完成模拟信号到数字信号的转换,包括采样和量化两个过程,先是经过采样保持器实现信号采样,然后保持。在信号保持过程中,由A/D转换器实现量化过程,保持是为量化提供保障的。
⑴信号采样
通过特定的装置,获取模拟信号瞬时量值的过程,叫作采样。执行采样动作的装置是采样器(s),其采样开关(k)周期性地闭合并迅速断开。如图4-3所示,采样开关(k)为常开状态,每间隔一个时间段T闭合一次,闭合持续时间为t,然后再迅速断开。采样开关闭合持续的时间(t)是极短的,称之为采样时间,采样开关周期性闭合的时间间隔(T),称之为采样周期。采样开关随采样周期的节拍,一次次动作的时点,即0T、1T、2T、3T……,各时间点称为采样时刻。
(a)被采样信号 (b)脉冲序列信号 (c)采样信号
图4-3 采样过程示意图
采样器的输入端为时间连续的模拟信号y(t),经过采样开关后在采样器的输出端产生一系列时间上离散的模拟信号y*(kT),该系列信号称为脉冲序列信号,脉冲的宽度等于采样时间t。在t≤T的情况下,y*(kT)称为采样信号。模拟信号y(t)在t= kT采样时刻转换为采样信号y*(kT)的过程,称为采样过程或离散过程。
⑵信号保持
采样信号时间上离散而在幅值上仍是模拟量,需经过A/D转换成为相应的数字量,才能被计算机接收处理。完成A/D转换总需要一定的时间,为保证测量结果的准确性,需要将采样信号保持到下一采样时刻到来,至少要保持A/D转换结束。因此需要在采样器的基础上增加保持器的功能,统称为采样保持器(S/H)。
图4-4 采样保持器电路原理图
采样保持器的工作原理如图4-4所示,采样保持器(S/H)由采样开关(K)、保持电容(CH)、输入缓冲放大器(A1)、输出缓冲放大器(A2)和控制端(P)组成。在控制端(P)的作用下,S/H有两种工作方式:一种是采样方式,另一种是保持方式。当采样开关(K)闭合时,S/H处于采样状态,输入电压信号y(t)通过缓冲放大器(A1)对保持电容(CH)快速充电,保持电容(CH)的电压迅速达到输入模拟信号y(t)的电压值,S/H的输出跟随输入的模拟电压信号。当采样开关(K)断开,保持电容(CH)的电容电压与采样时刻y(kT)的电压瞬时量值相同,输出缓冲放大器(A2)的输出电压与保持电容(CH)的电容电压相同,由于输出缓冲放大器(A2)的输入阻抗极高,可使电容电压衰减很慢,在理想情况下可将本次采样信号y*(kT)维持到下一采样时刻到来。采样与保持的过程如图4-5所示。
图4-5 采样与保持过程示意图
⑶信号量化
将采样信号转化为相应的数字信号的过程,称为量化。在采样信号被保持期间,A/D转换器执行量化动作。设有一个n位字长的A/D转换器,将量程为Ymax~Ymin范围内的采样信号y*(kT),变换为0~(2n-1)范围内的数字信号,共有2n种可能的取值。它能分辨的最小模拟量值q,称为量化单位。
(4-1)
式(4-1)表明,量化单位是A/D转换器输出的数字量中最低位为1、其它位均为0时所对应的模拟量,也称为1LSB。实际上,量化就是把待测模拟信号转化为量化单位(q)的整数倍的过程,即以q为法码来衡量待测模拟信号幅值高低的小数取整过程。量化算法表达式下:
(4-2)
式(4-2)中y*(kT)为采样保持器输出的待测模拟量,Ymin表示A/D转换器量程的下限,q是量化单位,[ ]表示取整运算,YN为y*(kT)对应的数字量。在A/D转换过程中,由于(y*(kT)-Ymin)不一定恰好被量化单位整除,余数被近似处理的结果必然产生误差,该误差称为量化误差。A/D转换器对式(4-2)进行计算产生的余数,有两种处理方法,即截尾法和舍入法。
截尾法规定,凡是小于量化单位的余数均视为零。所产生的量化误差始终为正数,其值随机分布在0~q之间。最大量化误差为q,即。
舍入法规定,小于半个量化单位的余数视为零,大于或等于半个量化单位的余数则计入为1。所产生的量化误差可能为正,也可能为负,其值随机分布在之间,最大误差为,即。一般情况下,A/D转换器总存在的量化误差,因为舍入法的量化误差小,所以被大多数A/D转换器所采用。
⒉模拟量输入通道的相关定理
模拟量输入通道的信号变换过程及信号形态的变化,可在图4-6集中体现出来,由此产生的问题是:采样信号y*(kT)能否反映原模拟信号y(t)的全部信息,怎样才能如实地反映模拟信号y(t)的所有变化与特征?
图4-6 模拟量输入通道信号变换过程示意图
采样信号y*(kT)仅获得模拟信号y(t)在t=KT(K=0,1,2,3……)时刻的瞬时值,而相邻两次采样相隔时间段内的模拟信号y(t)的信息则处于检测盲区。如果采样周期越长则丢失的信息就越多,反之,采样的频率越高,采样信息y*(kT)的系列值越可以逼真地反映模拟信号y(t)。同时,也不能认为采样频率越高越好,因为采样频率越高,计算机会把许多宝贵的时间用于采样,而无法进行数据分析和算法处理,从而失去实时控制的机会。那么在确保采样信号y*(kT)能唯一地复现模拟信号y(t)的条件下,采样频率最低取多少为宜呢?香农采样定理指出:如果模拟信号(包括噪声干扰在内)频谱的最高频率为,只要按照采样频率≥2进行采样,那么采样信号y*(kT)就能唯一地复现模拟信号y(t)。在实际的计算机控制系统中,通常取≥(5~10)。
香农采样定理仅给出了采样信号能恢复模拟信号的理论依据,然而并非所有的模拟信号y(t)都是有限带宽,有的y(t)的最高频率是很难确定的。如果模拟信号y(t)中含有高于的频率分量,则会产生频率混淆。因此模拟量输入通道中一般都设置低通滤波器,截频,把高于的频率分量,即满足采样定理。当然,如果被采样模拟量y(t)的频谱中不包含高于的频率分量,或者即使存在也很微弱,那就不必增加去混淆滤波环节。设置低通滤波器之后,去混淆滤波器的截频即为被测信号的最高频率,与采样周期保持固定的关系,即:
(4-3)
式中,C为选定的截频因数,根据香农采样定理,至少C>2, C通常取5~10。确定工程实际需要的采样频率有两条途径:一条是根据信号的最高频率(去混淆滤波后),按照香农采样定理取≥(5~10);另一条是根据工业参数的经验采样时间,确定。表6-1列出了过程控制中各种物理量检测时采样周期选取的经验值。
4-4 为什么A/D转换需要采样/保持器?是否设置采样/保持器的依据是什么?
采样保持器的工作原理如图4-4所示,采样保持器(S/H)由采样开关(K)、保持电容(CH)、输入缓冲放大器(A1)、输出缓冲放大器(A2)和控制端(P)组成。在控制端(P)的作用下,S/H有两种工作方式:一种是采样方式,另一种是保持方式。当采样开关(K)闭合时,S/H处于采样状态,输入电压信号y(t)通过缓冲放大器(A1)对保持电容(CH)快速充电,保持电容(CH)的电压迅速达到输入模拟信号y(t)的电压值,S/H的输出跟随输入的模拟电压信号。当采样开关(K)断开,保持电容(CH)的电容电压与采样时刻y(kT)的电压瞬时量值相同,输出缓冲放大器(A2)的输出电压与保持电容(CH)的电容电压相同,由于输出缓冲放大器(A2)的输入阻抗极高,可使电容电压衰减很慢,在理想情况下可将本次采样信号y*(kT)维持到下一采样时刻到来。采样与保持的过程如图4-5所示。
图4-5 采样与保持过程示意图
如果直接将模拟量送入A/D转换器进行转换,则应考虑到任何一种A/D转换器都需要有一定的时间来完成量化及编码的操作。在转换过程中,如果模拟量产生变化,将直接影响转换结果。特别是在同步系统中,几个并列的参量均需取自同一瞬时,如果所得到的采样结果不是同一时刻的值,就无法进行计算和比较。所以要求输入到A/D转换器的模拟量在整个转换过程中保持不变,但转换之后,又要求A/D转换器的输入信号及时跟随模拟量变化,能够在完成上述任务的器件叫采样/保持器(Sample/Hold),简称S/H。描述上述采样/保持过程的示意曲线图,如图4-15所示。
图4-15 采样/保持器的工作方式
采样/保持器的作用如下:
①稳定地保持模拟信号以便能够完成A/D转换;
②在测量中同时对若干个模拟输入量采样(每个输入需要一个采样/保持电路);
③消除A/D转换器的输出瞬变,如限制输出电压的尖峰。
假定A/D转换器之前无采样/保持器,直接对正弦波信号进行转换,则A/D转换器的转换时间基本上就等于采样时间,用tc表示。如图4-16所示,正弦信号的最大变化率为:,
由上式可以看出,采样时间tC内信号幅值允许变化为一个量化单元q(1LSB)时,在没有使用保持电路的条件下允许采样的最大信号频率是:,即:
(4-4)
若A/D转换器使用n位编码,满量程为2E,则 ,此时。
从上式可以看出,被采样的信号频率受A/D转换器的分辨率和采样速度的限制。
4-5 模拟量输入通道的性能指标包括哪些内容?A/D转换速度和A/D转换位数如何确定?
模拟量输入通道的性能指标如下:
⑴输入信号量程和类型:输入量程是指所能转变的电压或电流幅值的范围,常见的有0~5V,0~10V,-2.5V~2.5V,-5V~5V,-10V~10V,以及4~20mA、0~10mA等,或直接输入毫伏级电压信号,输入方式有单端输入和差分输入两种。
⑵输入通道数目和结构类型:由现场模拟量参数测量点的数量,决定采取模拟量单输入通道或多路模拟量输入通道;根据系统对各路模拟量采样的时序要求,选择多路共享A/D转换器形式或多路独立设置A/D转换器形式。
⑶分辨率:分辨率是指能对转换结果发生影响的最小输入量,与转换成数字量的二进制位数相对应。分辨率越高,转换时对输入模拟信号变化的反应就越灵敏,常用的分辨率有8位、10位、12位和16位等,由A/D转换器所决定。对二进制而言,实际分辨值为,n为位数。分辨率有时也用十进制位数表示,如位、位…位是对十进制而言,实际分辨值为。
⑷精度:是指转换后所得结果相对于实际值的偏差,有绝对精度和相对精度两种表示法。常用数字量的位数作为度量绝对精度的单位,如精度为最低位LSB的1/2,即为1/2LSB。相对精度常用百分比来表示满量程时的相对误差,如“±0.04%FSR25℃”,表示在25℃环境温度下,相对满量程时的相对误差为0.04%。工业常用仪表精度为0.1级、0.2级、0.5级、1.0级、1.5级等,其对应的相对误差是该值加百分号。一般情况是分辨率越高,精度越高。但这又是两个不同的指标概念,例如分辨率即使很高,但由于温度漂移、线性不良等原因使得附加误差很大,总的精度并不一定很高。
⑸采样速率:是指每秒能转换多少个点(通道)或对一个通道重复采样多少次,采样速率决定了A/D转换的速率。采样速率高,则在一定时间内采样点就多,对信号的数字表达就越精确。根据采样定理,采样频率必须是信号最高频率的两倍以上,采集到的数据才可以有效地复现出原始的采集信号。
在上述指标中,分辨率、精度和采样速率是关键性指标,其中分辨率的设置应服从于精度的要求。系统的精度既与传感器和变送器有关,又与模拟量输入通道有关,在设计上可采取如下办法进行误差分配。
A/D转换器是模拟量输入通道的核心部件,它的转换位数和转换速度与模拟量输入通道的精度、分辨率和采样速率密切相关,因此要着重了解A/D转换位数和转换速度的确定方法。
⑴A/D转换位数的确定
假定传感变送器的量程为0~Ymax,分辨率为Ymin,实质上Ymin即为传感变送器在零点的绝对误差,通过调整信号检测装置的零位,可以使Ymin是整个量程范围内的最大绝对误差,则传感变送器的相对误差可以表示为。传感变送器的输出即为A/D转换器的输入,两者的量程范围应该是相同的,而A/D转换器的最大绝对误差可以调节为量化单位q,其相对误差可以表示为
为保证模拟量输入通道的精度不因为A/D转换而下降,要求A/D转换器的相对误差,不应超过传感变送器的相对误差,即:
显然,上式可以变换为:
又因为,得:
可以求得: (4-5)
A/D转换位数也可以按分配的误差进行推测,系统要求模拟量输入通道的精度指标δ,n位ADC量化误差为±LSB,即满度值的;按选择元件精度的一般规则,每个元件的精度指标应优于系统精度的10倍左右。可由式(4-6)估算所需A/D转换器的位数n。
(4-6)
4-6 模拟量输入通道为何需要设置滤波环节?数字滤波和模拟滤波器各自有何特点?
计算机控制系统处理原始采样数据的一般流程是,先进行数字滤波,获得代表被测量的“真值”;再进行标度变换,获得有物理量纲的数值;最后才送去显示或进行控制计算。
⒈模拟量输入通道的数字滤波
在计算机控制系统中,由于被控对象的环境一般比较恶劣,存在各种干扰源,如环境温度、电场、磁场等,使来自传感器及其变送器的被测信号中混入了随机性的干扰信号,而干扰信号的存在会导致A/D采样的数值偏离真实值。为了准确地测量和控制,需要通过模拟滤波器和数字滤波器统筹配置,以减小乃至消除叠加在被测信号中的随机干扰信号。数字滤波即通过一定的计算程序,对多次采样数据进行加工处理,减小或消除干扰信号在有用信号中的比重,确保测量和控制精度,提高计算机控制系统的可靠性与稳定性。
模拟模拟器和数字滤波器各有所长,互为补充。数字滤波不能解决连续信号中有频率高于奈奎斯特频率的分量所引起的混淆问题,只能依靠模拟滤器来实现;模拟滤波器由于受到电容容量的限制,对频率很低的信号无法实现滤波,而数字滤波恰好适用于0~频率段信号的滤波。因此,数字滤波器不能完全取代模拟滤波器,通常在模拟信号输入通道配置RC低通滤波器以抑制高频干扰信号,同时在计算机软件中采用数字滤波器对低频干扰信号进行滤波,以弥补RC低通滤波器的不足。数字滤波器不需要增加硬件设备,可以根据需要选择不同的滤波方法和滤波器参数。
4-7 常用的数字滤波方法有哪些?简述它们各自的含义和应用场合。
⑴限幅滤波
在工业现场由于大功率用电设备的启动或停止,会造成电流的尖峰干扰。这种随机脉冲干扰通过变送器进入模拟量输入通道,从而造成测量信号的严重失真。经验表明,许多物理量的变化都需要一定的时间,相邻两次采样值之间的变化幅度有一定的限度。限幅滤波是根据这种实际经验,确定出相邻两次采样信号之间可能出现的最大偏差,以此作为程序判断的标准。当本次采样值和上次采样值的差值小于或等于,则本次采样值有效;当本次采样值和上次采样值的差值大于,则取上次采样值作为本次采样值。即
当≤时,;
当>时,。
该方法对变化比较缓慢的输入量,如温度、液位等信号,滤波效果较好。在应用该方法时,关键在于的取值。一般按照被测参数可能的最大变化速度及采样周期来测算值,即。
⑵中位值滤波
中位值滤波就是在采样时刻,对某一被测参数连续采样次(取为奇数),得到采样序列、……,然后将其从大到小或从小到大排序,取中间值为本次采样值。
该方法对于滤除偶然因素引起的波动,或者仪器不稳定所引起的脉冲干扰比较有效。适用于物理量变化缓慢的被测参数,如温度、液位等过程参数测量。
⑶算术平均值滤波
算术平均值滤波的方法是,在采样时刻,对被测参数连续采样次,得到采样序列、……,将这个数的算术平均值作为本次采样值,其数学表达式为:
…
该方法对于滤除周期性脉动干扰比较有效,如信号本身在某一数值范围附近作上下波动的情况。适用于变化比较快的参数,如压力、流量等在检测时的数字滤波。取值越大,对信号滤波的平滑程度越高,但灵敏度降低,同时采样时间也增加。在一个采样周期内,采样次数的取值决定于对参数平滑度和灵敏度的要求,应视具体对象而定。流量测量时,取;压力测量时,取。
⑷滑动平均值滤波
滑动平均值滤波也称为递推平均滤波,把个采样数据看成一个队列,从队首到队尾依次、、……、、、,每进行一次新的采样,把测量结果作为队尾,将保留时间最长的采样队首数据移走,其余数据依次向队首方向移动一位,然后把队列中的个数据进行算术平均就可得到新的滤波值。其数学表达式为:
式中,为经滤波后输出的第次采样值,为队列中未经滤波的第次采样值,为队列中数据项数。
与算术平均值滤波法相比,滑动平均值滤波有很强的优势。前者在每一个采样时刻到来时都要采样次,如果通道采样速度较慢而系统要求计算速度较高,则该方法是不适用的。后者在每一个采样时刻只进行一次采样,就可以计算得到滤波结果,因而减少了总的采样次数,减少了占用计算机的时间。
滑动平均值滤波算法对周期性干扰有良好的抑制作用,平滑度高,但灵敏度低,对偶然出现的脉冲性抑制作用差。在工程应用中的经验值如表4-4所示。
表4-4 的经验值表
被测参数 |
温度 |
流量 |
压力 |
液面 |
N值 |
1~4 |
12 |
4 |
4~12 |
⑸加权滑动平均值滤波
在算术平均值滤波和滑动平均值滤波算法中,次采样值在输出结果中的权重是均等的。因此对时变信号会引入滞后,越大则滞后越严重。为了提高系统对当前采样值的灵敏度,需要改进滑动平均滤波算法,增加最近采样数据的比重。即不同时刻的采样数据赋予不同的权值,越靠近当前时刻的数据,其权值取得越大。加权滑动平均值滤波算法为:
式中为经滤波后输出的第次采样值,为第次采样值,、、……为常数,且满足以下条件:
……,(其中……)
该算法适用于有较大纯滞后时间常数的对象和采样周期较短的系统,而对于纯滞后时间常数较小、采期周期较长、变化缓慢的信号,因其不能迅速反映当前所受干扰的严重程度,故滤波效果差。
⑹一阶惯性滤波
一阶惯性滤波即仿照RC低通滤波器的方式,用数字形式实现低通滤波。对第次采样值的滤波算法为:
式中表示本次采样经滤波值后的输出值,为本次采样值,表示滤波器的上次输出值,为滤波常数,。
该方法对于周期性干扰具有良好的抑制作用,不足之处是相位滞后,灵敏度低,同时它不能滤除频率高于采样频率1/2(即奈奎斯特频率)的干扰信号。
⑹复合数字滤波
模拟量输入通道在接收工业现场信号过程中,所受的扰动往往不是单一的,如有时既受随机性脉冲干扰,也受周期性脉动干扰。复合数字滤波就是把两种以上的滤波方法结合使用,以进一步提高滤波效果。例如防脉冲干扰平均值滤波算法就是一种复合数字滤波方法,以算术平均滤波或加权平均值波动对周期性的脉动采样值进行平滑加工,以中值滤波滤除随机的脉冲干扰。具体操作算法是:
…+
式中…为在采样时刻对被测参数的采样序列,其中为该序列中的最大值,为该序列中的最小值。该方法集中了平均值滤波算法和中位值滤波算法的优点,所以对缓慢变化的过程变量和快速变化的过程变量都能起到良好的滤波效果。
上面介绍了几种常用的数字滤波方法,每种都有各自的特点,可根据具体的测量对象合理地选用。特别说明的是:数字滤波在过程控制中并非一定需要,应根据具体情况,经过实验和分析加以选用。不适当地使用数字滤波,可能将待控制的偏差值滤掉,反而会降低控制效果,甚至失控。
4-8 用8051系列单片机和ADC0809设计一个8通道的数据采集电路,ADC0809参考电压UREF(+)=5.12V,UREF(-)=0V,要求:⑴画出硬件电路图;⑵自行设计程序,并画出程序流程图;⑶求其量化单位,当0#通道输入模拟信号为3.67V,对应的数字量是多少?⑷ 如0#通道测量温度,其量程为10℃~50℃,A/D采样值经数字滤波后得到的数值为7BH,那么本次采样获得的温度值是多少?
(1)
A/D数据采集系统硬件电路如图4-23所示。
图4-23 A/D数据采集系统硬件原理图
(1)51单片机、时钟电路和复位电路构成一个基本的单片机系统。
(2)在单片机外部扩展ADC0809芯片,单片机的P0口与ADC0809的数据输出口D0~D7相连,用于接收A/D转换后的数据。
(3)ADC0809的工作频率由外部时钟振荡电路提供。
(4)ADC0809芯片的3个地址选择端连接到单片机的P0口,由编程实现模拟通道的选择。本项目中选择0通道。
(5)0通道(ADC0809的IN0端)接液位传感器的正输出端,负输出端接地,注意传感器地与单片机地要共地。
(6)当单片机接收到液位值经计算处理后,在7289上显示出来,其硬件连线见图2-1。
ADC0809工作时序如图4-24所示。
图4-24 ADC0809工作时序图
(2)
A/D转换程序流程图如图4-25所示,在程序中给出ADC0809所需要的转换控制信号,采用延时方式等待数据的转换完成。
图4-25 A/D转换程序流程图
(3)
根据式(4-1),它的量化单位是:;
若输入模拟电压为3.67V,由式(4-2)及舍入法,求得量化结果为:
=10111000B=B8H
(4)
=10,=50,=00H=0D,=FFH=255D,=7BH=123D
=29.3
附加:
/*************** code ******************/
#include<reg52.h>
#defineuint unsigned int
#defineuchar unsigned char
ucharcode LEDData[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
sbitOE = P1^0;
sbit EOC= P1^1;
sbit ST = P1^2;
sbit CLK= P1^3;
voidDelayMS(uint ms)
{
uchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
voidDisplay_Result(uchar d)
{
P2= 0xf7;
P0 = LEDData[d%10];
DelayMS(5);
P2 = 0xfb;
P0 = LEDData[d%100/10];
DelayMS(5);
P2 = 0xfd;
P0 = LEDData[d/100];
DelayMS(5);
}
voidmain()
{
TMOD= 0x02;
TH0 = 0x14;
TL0 = 0x00;
IE = 0x82;
TR0 = 1;
P1 = 0x3f;
while(1)
{
ST = 0;
ST = 1;
ST = 0;
while(EOC == 0);
OE = 1;
Display_Result(P3);
OE = 0;
}
}
voidTimer0_INT() interrupt 1
{
CLK= !CLK;
}
第五章
5-1 什么是模拟量输出通道?它是由哪些部分组成的?
模拟量输出通道(Analog Output ,缩写AO)是计算机控制系统实现控制输出的关键部件,它的任务把计算机输出的数字量信号转换成相应的模拟量信号(如电压、电流信号),以便驱动执行机构,以达到对被控对象进行控制的目的。
分析和设计模拟量输出通道,需要了解模拟量输出通道的一般结构,并且掌握其中的各个环节。本章首先讲述模拟量输出通道的两种基本结构形式,然后依次说明数模转换器的工作原理、性能指标、与计算机的接口电路,以及电压/电流变换器和信号隔离技术。
5-2 模拟量输出通道的结构有几种形式?各有何特点?
输出保持分为数字量保持和模拟量保持,因此,输出通道也有两种基本结构形式。一种结构如图5-2所示,在这种结构中每一个通道都有一个D/A转换器。D/A转换器是按照采样周期T对控制器输出的数字量进行D/A转换的,但由于D/A转换器具有数据输入锁存功能,它能够在接收下一组数字量之前,一直保持前一组数字量不变,因而D/A转换器的输出模拟量,能够在一个采样周期内保持不变,也就是说,D/A转换器本身就具有零阶保持器的功能。
零阶保持作用的实质,就是在两次输出模拟量之间进行插值,插值的结果能够使时间轴上的离散信号,变为时间轴上的连续信号,是由数字控制信号重构模拟控制信号的重要步骤。
图5-2 输出通道结构
图中各个部分的作用为:
I/O接口:接受来自主机系统总线的数据、地址及控制信号,并向主机送应答信号。主要包括数据缓冲器、地址译码器、数据寄存器以及相应的控制逻辑。
D/A转换器:作用是将数字量转换成相应的模拟量。
隔离级:将计算机与被控对象隔离开来,以防止来自现场的干扰。图中所示为模拟侧隔离,另外也可将隔离级放到D/A转换器之前,构成数字侧隔离。
输出级:由运算放大器、V/I转换器等组成,以提供不同形式的输出信号。
执行器:作用是接受计算机发出的控制信号,并把它转换成调整机构的动作,使生产过程按照预先规定的要求正常进行。它包括电动、气动和液压执行器。
这种结构的优点是转换速度快、工作可靠、精度高且各个通道相互独立而互不影响;缺点是要使用较多的D/A转换器,投资偏高,在工业过程控制中多采用此种形式。
另一种结构如图5-3所示,其多个输出通道共享一个D/A转换器,这种结构需要在每一个输出通道中都加入一个采样保持器(S/H),是采用模拟量保持的方案。
图5-3 共享D/A的输出通道结构
图中的采样保持电路(S/H)的作用,是将D/A转换器输出的离散模拟信号转换成执行器能够接受的连续信号,即把上一采样时刻的输出值保持到下一次采样输出。这种结构的优点是节省D/A转换器,但由于共用一个D/A,故它必须在CPU的控制下分时工作,即D/A转换器依次把数字量转换成模拟电压(或电流),通过多路模拟开关传送给各路输出采样保持器(S/H)。而S/H又不能长久保持信号不变,因此这种结构精度较差,只适用于转换速度要求不高、通路较多的系统中。由于S/H和多路开关在前章已详细叙述,因此下面将分别讲述图5-2中D/A转换器、输出级常用的电压/电流转换(V/I)电路。
5-3 为何有的模拟量输出通道需要设置采样保持器?
图中的采样保持电路(S/H)的作用,是将D/A转换器输出的离散模拟信号转换成执行器能够接受的连续信号,即把上一采样时刻的输出值保持到下一次采样输出。这种结构的优点是节省D/A转换器,但由于共用一个D/A,故它必须在CPU的控制下分时工作,即D/A转换器依次把数字量转换成模拟电压(或电流),通过多路模拟开关传送给各路输出采样保持器(S/H)。而S/H又不能长久保持信号不变,因此这种结构精度较差,只适用于转换速度要求不高、通路较多的系统中。由于S/H和多路开关在前章已详细叙述,因此下面将分别讲述图5-2中D/A转换器、输出级常用的电压/电流转换(V/I)电路。
5-4 为何在模拟量输出通道中通常有V/I转换电路?
因为电流信号易于远距离传送,且不易受干扰,因而在输入、输出通道中常以电流信号来传送信息,此外测控系统中的有些仪表只提供电流输入口,这些都需要采用V/I变换器将电压信号转换成相应的电流信号。实现V/I变换可以采用专用的电流输出型运放F3080和F3094来实现;也可以利用通用运放构成V/I变换电路;还有适用于高精度要求的集成V/I转换器,如AD694、2B20/21等。
⒈ 采用F3080组成的V/I变换电路
F3080是电流输出型运放,其输入特性与通常运放是相同的,而输出是以电流的形式出现。
图5-11是用F3080 组成的基本V/I变换电路。图中IABC为⑤脚注入电流,可在0.1μA~500μA 范围内自由设置,可以是直流或交流控制信号。采用直流控制就成为可控式V/I转换器。W用做失调补偿,使Vi=0V时输出Io=0。F3080的失调温漂虽然不太大(约3μV/℃),但对于0mV~50mV小信号输入仍然可能产生约1%的误差,因此其仅适用于精度要求一般的场合。输出电流Io≈19.2IABCVi。
图5-11 基本V/I变换
⒉ 运放V/I变换电路
采用通用运放实现V/I的方法很多,考虑实际电流信号多采用统一标准值(0mA~10mA或4mA~20mA),故这里只介绍如图5-12所示的V/I转换电路。
由图可见,两个运放A1、A2均接成射随输出形式。在稳定工作时Vi=V1,所以
又由I1≈I2,所以
,即
在稳定状态下,V2=V3,If≈Io,故
由上两式可得
式中:R1、R2、Rf均为精密电阻,所以输出电流I。线性比例于输入电压Vi,且与负载无关,即近似于恒流。若R1=5kΩ,R2=2 kΩ, R3=100Ω,当Vi=1V~5V时,输出电流Io=4mA~20mA。
⒊ 集成V/I转换器
采用普通运放和分立元件构成的V/I转换电路结构简单,价格低,但精度受外接电阻等元件的性能及参数匹配的影响很大,故对精度要求较高的场合应采用集成V/I转换器。下面就以美国AD公司生产的ZF2B20/21为例予以介绍。ZF2B20/21电压/电流转换器的外引脚图如图5-13所示,输入电压范围为0V~10V,输出电流为4mA~20mA,采用单正电源供电,电源电压范围为10V~32V。其特点是低漂移,在工作温度为-25℃~+85℃范围内,最大漂移为0.005%℃;其输入电阻为10kΩ,非线性小于0.025%,动态响应时间小于25ms。
图5-12 输出4mA~20mA的V/I电路 图5-13 ZF2B20/21外引脚
利用ZF2B20/21实现V/I转换,只需外接很少的调节元件即可,图5-14外接初始校准电位器即可实现0V~10V/4mA~20mA的转换,图5-15是一种带满度校准的0V~10V/0mA~10mA的转换电路。
图5-14 0V~10V/4mA~20mA转换 图5-15 0V~10V/0mA~10mA转换
5-5 DAC0832与CPU有几种连接方式?各有何用途?
D/A转换器的种类很多,这里以DAC0832为例介绍其与单片机的接口电路。DAC0832是8位分辨率的D/A芯片,与微处理器完全兼容,具有价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的使用。
⑴ DAC0832的结构
DAC0832的结构框图如图5-7所示,它由8位输入寄存器、8位DAC寄存器、8位D/A转换器及转换控制电路组成,可直接与CPU总线连接。
图中输入寄存器用来锁存数据总线上送来的数据。当输入锁存允许信号ILE、片选信号和写控制信号同时有效时,数据总线DI7~DI0上的数据送输入寄存器锁存。当写控制信号和传送控制信号同时有效时,输入寄存器中的数据送DAC寄存器,然后由D/A转换电路进行转换,最后在和端获得模拟量的输出信号。VREF为基准电压,其范围为-10V~+10V。Vcc可在+5~+15V范围内选取。
DAC0832是电流型输出,外接运算放大器可以获得单极性或双极性模拟电压,如图5-8所示。图中,A点输出为单极性模拟电压,其值为
(数字量/256)
从B点输出为双极性模拟电压,其值为
(数字量-128)/128
以上两式输出电压的极性由VREF确定。其中的数字量是指DAC0832的数字量输入,其范围为00~FFH,在计算时应将其转换成十进制数。如若VREF=+5V,则A点的输出电压可算得为0V~-5V,B点输出电压为-5V~+5V。
图5-7 DAC0832结构框图
图5-8 DAC0832模拟电压输出电路
⑵ DAC0832与MCS-51单片机的接口电路
DAC0832与MCS-51单片机有两种基本的接口方法,即单缓冲器方式和双缓冲同步接法。
①单缓冲器方式 单缓冲方式是使DAC0832中的输入寄存器和DAC寄存器中的任意一个始终处于常通方式或同时处在选通和锁存的工作状态。它适用于系统只有一路D/A转换或虽然是多路转换但不要求同步输出时采用。单缓冲器方式的电路有三种接法:一是DAC寄存器处在常通状态时,、接地,使输入寄存器成选通工作状态;二是输入寄存器处在常通状态时,、接地,ILE接高电平,使DAC处在选通工作状态;三是两个寄存器同时处于选通及锁存工作状态时,ILE接高电平,和同时接受芯片选中信号,而、同时与CPU的相连。图5-9是采用第三种接法的单缓冲器方式接口电路。图中和都与8031的高位地址线P2.7相连。由于0832具有数字量的输入锁存功能,故数字量可直接从P0口送给0832。
图5-9 DAC0832单缓冲器方式单极输出接口电路
可见,DAC0832的口地址为7FFFH。执行下面的程序段,可以完成一次D/A转换:
MOV DPTR,#7FFFH ;指向0832
MOV A,#DATA ;要转换的数装入A中
MOVX @DPTR,A ;数据送入0832,并转换
②双缓冲器同步方式接口 DAC0832芯片内有输入寄存器和DAC寄存器,它们和、锁存控制信号构成两级锁存。这样,若要求多个数据同时转换输出时,可以先将这些数据分别送入对应的多路D/A转换器的输入寄存器中保存,待所有数据传送完毕后,再对所有的D/A转换器同时发出转换控制信号,使各D/A转换器将输入寄存器中的数据同时送至各自的DAC寄存器中,因而实现同步转换输出。设现有两组8位数据,每组中均有8个数据,分别存在以#DATA1和DATA2为首地址的内存中。若要对两组数据同时转换并单极性输出,可用图5-10电路实现。
图5-10 DAC0832的双缓冲器同步方式输出接口电路
图中P2.5和P2.6分别用于两路D/A转换器的输入寄存器的选择及锁存控制,P2.7与两路D/A转换器的端相连用于控制同步转换输出,两路的、均与CPU的写信号相连。上面问题的实现程序如下:
MOV R0,#DATA1 ;第一组数据首地址
MOV R1,#DATA2 ;第二组数据首地址
MOV R2,#08H ;每组数据个数
LOOP:MOV DPTR,#0DFFFH ;指向0832(1)
MOV A,@R0 ;将第一组数据之一送入A中
MOVX @DPTR,A ;A中数据送入0832(1)中锁存
MOV DPTR,#0BFFFH ;指向0832(2)
MOV A,@R1 ;将第二组数据之一送入A中
MOVX @DPTR,A ;A中数据送入0832(2)中锁存
MOV DPTR,#7FFFH ;同时指向0832(1)、0832(2)
MOVX @DPTR,A ;同时完成D/A转换输出
INC R0 ;指向第一组的下一个数据地址
INC R1 ;指向第二组的下一个数据地址
DJNZR2,LOOP ;转换结束否,未完转LOOP
END ;转换输出结束
5-6 试用DAC0832与单片机设计一个单缓冲的D/A转换器,要求绘制接口电路图,编写程序,使DAC0832产生方波、三角波和锯齿波,并画出波形,标明波峰和波谷的电压值。
/*************** code ******************/
#include<reg52.h>
#include<absacc.h>
#defineuint unsigned int
#defineuchar unsigned char
#defineDAC0832 XBYTE[0xfffe]
char codesin_data[256]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,
0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,
0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,
0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xda,0xd8,0xd6,
0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,
0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,
0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,
0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,
0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,
0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,
0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,
0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c};//正弦码表,可通过SIN()函数获得
voidDelayMS(uint ms)
{
uchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void delay_nus(unsigned int i)
{
unsigned int j;
while(i--)
{
for(j=0;j<127;j++);
}
}
/**********************************************/
voiddelay(unsigned char i)
{
unsignedchar t;
for(t=0;t<i;t++);
}
/**********************************************
输出数据到端口(注意考虑延时)
**********************************************/
voidconversion(unsigned char out_data)
{
DAC0832 =out_data; //输出数据
delay(1);
//delay_nus(10); //延时等待转换
}
/************************************************
产生正弦波函数
************************************************/
voidsine(void)
{
unsignedchar i;
for(i=0;i<255;i++)
{
conversion(sin_data[i]);
}
}
/***********************************************
产生锯齿波(下降型)
***********************************************/
voidsaw(void)
{
unsignedchar j;
for(j=0;j<255;j++)
conversion(j);
}
/***********************************************
产生方波(脉冲)
***********************************************/
void pulse(void)
{
conversion(0xff);
delay_nus(1000);
conversion(0x00);
delay_nus(1000);
}
/***********************************************
产生三角波
***********************************************/
voidtriangle(void)
{
unsignedchar k;
for(k=0;k<255;k++)
conversion(k);
for(;k>0;k--)
conversion(k);
}
voidmain()
{
// uint i;
while(1)
{
// if(i)
pulse();
//saw();
//sine();
//triangle();
}
}