引言
飞行模拟器的运动平台系统一般由机械系统、液压系统、控制系统组成。数/模转换电路是控制系统的的核心,它要把经运动平台算法解算出的各液压缸伸缩量的数字信号转换成模拟量信号,然后经滤波放大、电液伺服阀后,由电液伺服阀驱动各液压缸运动,进而驱动运动平台仿真飞机飞行时的各种姿态及地面滑跑、着陆及放起落架时的振动等。
数/模转换电路一般使用专门的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正跳变启动信号,计数器才接收新初值重新计数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)