模拟技术
数/模转换电路一般使用专门的D/A转换器,D/A转换器的种类比较多,如有权电阻网络型、倒T型电阻网络型、权电流型、开关数型、权电容网络型、串行输入型等,本文利用Intel 8254设计了一种简单实用的数模转换(D/A)电路,并应用于飞行模拟器三自由度运动平台控制系统中。
1 运动平台控制系统组成
三自由度运动平台控制系统硬件由平台控制计算机、接口系统、滤波功放板、看门狗电路和液压伺服系统组成,接口系统包括D/A,A/D转换电路(见图1)。通过主计算机接收到飞行方程解算出的与控制平台有关的各种信息,由平台控制计算机进行处理,经数/模转换(D/A)、滤波、功放成为伺服阀控制指令,驱动液压缸平滑、稳定的伸缩,实时产生和被模拟的飞机相似的过载、姿态、振动等运动信息。液压缸的伸长量经位移传感器送给比较放大器,形成硬件闭环控制,位移信号经模/数转换(A/D),送给平台控制计算机,用来对平台极限位置的限制。同时,由看门狗电路实时监视控制电路的工作情况,确保运动平台的安全。控制系统硬件电路的核心为自行研制的D/A转换电路及看门狗电路。
2 D/A转换电路
三自由度运动平台数/模转换电路主要由74LS138译码器、可编程定时器/计数器芯片8254、8位数据缓存器74LS245等组成,核心元件是可编程定时器/计数器芯片8254。
2.1 8254简介
可编程定时器/计数器是为方便计算机系统的设计和应用而研制的,定时值及其范围可以很容易地由软件来控制和改变,能够满足各种不同的定时和计数要求,因此得到广泛应用。8254是Intel公司生产的通用定时/计数器,是在8253的基础上稍加改进而推出的改进型产品,两者硬件组成和引脚完全相同。
8254是24脚双列直插式芯片,用+5 V电源供电。芯片内有3个相互独立的16位定时/计数器。主要管脚如图2所示。
数据线D0~D7与CPU的数据总线相连接,是双向三态的数据线,用于与CPU交换信息。读信号RD是一个低电平有效的由CPU发来的控制信号,RD信号通知8254,CPU要读8254中的某个通道的计数值或状态字,也就是说由RD来读取8254中的某个计数器的相关内容;WR是一个低电平有效的由CPU发来的控制信号,CPU通过此信号向8254发送控制字和计数值;片选信号CS是一个低电平有效的信号,CPU用此信号来选择8254。在芯片不被选中的情况下,读信号和写信号没有意义,也不起作用;地址线A1,A0一般接到系统地址总线的A1,A0上,它们的功能是编码选择3个通道和1个控制寄存器,其端口编码略,CS,RD,WR,A1和A0组合起来才能对寄存器进行选择和操作。
CLK0~CLK2是3个通道的外部时钟脉冲收入线,是8254作计数器或定时器的计数脉冲;GATE0~GATE2是3个通道的门控信号输入线,高电平有效,用于启动或禁止通道工作的外部信号;OUT0~OUT2是3个通道的计数为0/定时时间到脉冲输出线,输出波形取决于8254通道的工作方式。
8254的每一个计数器都有6种工作方式。不同的工作方式下,计数过程的启动方式不同,OUT端的输出波形不同,自动重复功能、GATE的控制作用以及更新计数初值对计数过程的影响也不完全相同。同一芯片中的3个计数器,可以分别编程选择不同的工作方式。三自由度运动平台数/模转换电路中的计数器使用了方式1和方式2。
2.1.1 工作方式1
8254工作方式1——可编程单次脉冲,是一种硬件启动计数工作方式,不能自动重复但通过GATE的正跳变可使计数过程重新开始。在写入方式1的控制字后,OUT成为高电平,在写入计数初值后,要等GATE信号出现正跳变时才能开始计数。在下一个CLK脉冲到来后,OUT变低,将计数初值送入计数器并开始减1计数,直到计数器减到0后OUT变为高电平。
计数过程一旦启动,GATE即使变成低电平也不会使计数中止。计数完成后若GATE再来一个正跳变,计数过程又重复1次。也就是说对应GATE的每一个正跳变,计数器都输出1个宽度为N*TCLK(其中N为计数初值,TCLK为CLK信号的周期)的负脉冲,因此称这种方式为可编程单次脉冲方式,计数初值N=3的工作波形图如图3所示。
在计数过程启动之后计数完成之前,若GAFE又发生正跳变,则计数器又从初值开始重新计数,OUT端仍为低电平,两次的计数过程合在一起使OUT输出的负脉冲加宽了。
在方式1计数过程中若写入新的计数初值,也只是写入到计数初值寄存器中,并不马上影响当前计数过程,同样要等到下一个GATE正跳变启动信号,计数器才接收新初值重新计数。
2.1.2 工作方式2
8254工作方式2——分频工作方式,既可以用软件启动(GATE=1时写入计数初值后启动),也可以用硬件启动(GATE=0时写入计数初值后并不立即开始计数,等GATE由低变高时启动计数)。方式2一旦启动,计数器就可以自动重复地工作。
方式2工作波形图如图4所示,写入控制字后,OUT信号变为高电平,若计数初值N=3,启动计数后,以CLK信号的频率进行减1计数。当减到1时,OUT输出宽度为一个CLK时钟周期的负脉冲,OUT恢复成高电平后,计数器又重新开始计数。可以看出,OUT输出信号的频率为CLK信号频率的1/N,即N次分频,故称这种工作方式为分频工作方式。
方式2需要GATE信号保持高电平。当GATE变为低电平时,停止计数。GATE由低变高后,计数初值又重新装入减1计数器中开始计数。
方式2在计数过程中若写入新的计数初值,并不影响当前的计数过程。在本次计数结束后,才以新的计数初值开始新的分频工作方式。
2.2 D/A转换原理
采用1片74LS138译码器、2片可编程定时器/计数器芯片8254、1片8位数据缓存器74LS245组成D/A变换电路,如图5所示。
74LS138译码器略。其中1片8254(U2的计数器2)的计数器工作在方式2,对时钟信号进行分频,输出信号OUT为一宽度为一个时钟周期的负脉冲,作为另外5个计数器的门控启动信号,启动8254开始进行D/A变换。其余5个计数器工作在方式1,在门控信号GATE上跳后的下一时钟的下降沿处开始计数,输出OUT将变低,直到计数器的值减少到零时输出将变高。给定的计数值越小,输出OUT“高”保持越长,平均电压越大;给定的计数值越大,输出OUT“高”保持越短,平均电压越小,如输出OUT的“高”和“低”相同,则输出平均电压为2.5 V,如输出OUT全为“高”,则输出平均电压为5 V,如输出OUT全为“低”,则输出平均电压为0 V,这样利用调制脉宽的方法就实现了D/A变换。
8254输出的5路电压信号经8位数据缓存器74LS245输出。其中OUT0,OUT1,OUT2作为三路控制信号送给3个电液伺服阀,由电液伺服阀驱动各液压缸运动,进而驱动运动平台仿真飞机飞行时的升降、倾斜、俯仰等位姿。OUT3和OUT4这2路电压信号作为备份,维修时使用。
3 软件实现
8254的内部功能通过系统软件编程来确定,系统通过接口传送所要求的工作方式和数值来初始化计数器,每个计数器都是独立地通过一个命令数据来编程,D/A转换程序流程图如图6所示。
程序的设计思想是首先为8254进行端口地址分配,以便CPU对硬件进行访问并对8254赋初值。开始计数时每隔一段时间(ms)对计数器进行1次读数,并将当前所得计数值与上一计数时间所得计数值相减,将得到的计数差值进行累加,最终所得值即为8254读入的脉冲方波个数。将此脉冲方波输出,就实现了D/A转换,得到系统所需要的模拟电压值。
8254控制字由D7~D0组成,D7D6选择计数器0,1,2或锁存计数器;D5D4选择操作类型,如先读/写低8位,后读/写高8位等;D3D4D1选择计数工作方式,有6种工作方式,如方式1为001、方式2为010等;D0位选择计数器的数制,该系统采用二进制,D0=0,而计数初值取256,即十六进制的FF。
4 结语
基于Intel 8254的运动平台数/模转换电路简单实用,实时性好,已经应用于我单位研制的某型飞机飞行模拟器的三自由度运动平台控制系统、仪表控制系统、操纵负荷仿真系统等的数/模转换电路中。该电路还可推广应用于工业控制系统中的数模转换电路中。
全部0条评论
快来发表一下你的评论吧 !