基于16位单片机和CPLD实时数据采集显示系统设计
数据采集是分析模拟信号量数据的有效方法。而实时显示数据是自动化检测系统的现实需求。在测试空空导弹导引头的过程中,导引头的响应信号包括内部二次电源信号和模拟量电压信号。检测过程中要求检测系统实时显示导引头的工作状态,显示二次电源和模拟量响应电压信号,判断导引头性能,同时保证在非常情况下人为对导引头做出应急处理,保护导引头。对于模拟量电压信号,通常采用模数转换、事后数据标定的方法实现。根据现实需求,研制相应检测系统可作为导引头日常维护和修理的重要工具。这里介绍一种基于单片机和CPLD的实时数据采集显示系统设计方案。
2 系统构成
该系统中待采集显示电压信号共16路,动态电压范围为-22~+27 V。由于这些电压信号变化频率较低,或者认为频率无变化,且检测系统只关心其电压值,所以在低采样率下就可满足系统要求。根据需求,系统设计的采样率即显示刷新速率在1.56 k/s以上。
采用单片机80C196KB和可编程逻辑器件EPM7128SLC为核心控制器,以80C196KB内部集成A/D转换器作为模数转换器实现16路电压信号的实时数据采集、显示、控制。= 整个系统主要由信号预处理、信号选通、单片机采集、双机数据传输以及数据处理显示等模块构成。其中,信号选通模块由CPLD和多路模拟选择器组成。
3 系统硬件电路设计
3.1 信号预处理电路
由于待采集电压信号输入动态范围较宽,且极性各异,对于单片机A/D转换器来说,需要调理到能够采集的电压范围闱0~5 V,所以要统一调理采集信号。
运放LM224和MC1556均采用双电压供电,以提高动态信号输入范围;电阻均采用精度为0.1%的精密型金属膜电阻,以提高电压转换精度。
在二级电压凋理过程中,MC1556同相输人端采用稳压电路以减少长时间通电情况下温度升高对系统产生的不良影响。南于电压跟随器具有输入阻抗大和输出驱动能力强的特点,故在预处理电路的输入端和输出端均采用电压跟随电路。
3.2 信号选通电路
ADG508A是一款8通道CMOS模拟多路选择器,具有高速转换速度和低内阻特性,通道切换具有防短路功能。在CPLD控制下,它可对采集信号进行有序通道切换,配合单片机进行数据采集。
EPM7128SLC是一款Ahera公司生产的CPLD,其容量为128个宏单元,采用硬件描述语言VHDL对CPLD编程设置实现信号的选通控制。首先编写分频器模块对1 MHz晶体振荡器进行20分频,输出2路相位相错、周期为20 μs的矩形同步信号。其中一路信号经D触发器进行2分频,得到占空比50%、周期为40μs的方波信号;然后编写信号选通控制模块。此模块根据方波信号和另一路同步信号循环输出控制信号,两模块都在MuxPlus-II环境下开发,CPLD控制信号时序仿真结果如图3所示,其中,信号FRM和ROAD是单片机主程序运行的勤务信号;CS1和CS2是2片ADG508A的片选信号:A0、A1和A2则是ADG508A通道选通控制信号。
3.3 单片机采集电路
80C196KB是Intel公司生产的一款16位CMOS单片机,片内集成有8路A/D转换器,该转换器包括一个8通道多路模拟开关,采样保持电路和10位A/D转换器。由于该系统外部有多路选择器,故内部无需通道转换,采用一个ACH0通道即可完成数据采集。对于采用12 MHz晶振的单片机系统,完成一次A/D转换需22μs。80C196KB的A/D转换器采用逐次逼近的方法完成模拟量到数字量的转换,基准电压设定非常关键,内部阻容网络将基准电压Vref等分为1 024个阶梯,每级为Vref/1 024 V。通过与基准电压比较,可得到10位数据转换结果,其中基准电压的精度以及稳定度直接影响到测量结果的绝对精度。因此在电路中Vref采用单独电源供电并通过基准稳压源如LM136的5 V提高精度及稳定度。
80C196KB通过判断ROAD信号在其上升沿读取上次A/D转换结果,同时启动A/D转换器转换下一路信号,该单片机用FRM信号作为非屏蔽中断使计数器DXL归零,主程序循环一次,保证对16路通道信号的时分复用采集。
3.4 双机数据传输
为达到采集数据的实时可控性,系统设计双机通信接口作为单片机A/D转换数据向计算机传输的通道。计算机采用WDM下的EPP模式通信,速度达500 KB/s~2 MB/s。使用双端口RAM IDT7130作为主要元件,通过通信接口,单片机将A/D转换数据存入双端口RAM中,计算机则实时显示从双端口RAM中读取的数据。单片机通过双端口RAM IDT7130的A端口进行写操作,计算机则通过B端口进行读操作。握手信号由单片机通过对ROAD信号计数产生,二者可异步读写操作,实现数据交换。
4 系统软件设计
4.1 数据标定
在给定Vref=5 V,设单片机采集端口输入电压为Vin与之相对应的A/D转换数字量为X,则X=1 024 Vin/5V。对于线性变换预处理电路可采用Y=5KX/1 024,其中,Y表示电压实测值,X表示与Y对应的A/D转换值,K为放大器增益。令K=Ymax/5 V,其中Ymax表示待测量电压的最大值。为保证采集精度,应先计算Ymax,以保持足够的A/D转换有效数字。以待采集电压0~27 V为例,预处理电路增益为27/5=5.4。
4.2 实时显示
读数及显示软件在VC++6.0环境下编写,使用对话框模式,并口采用WDM驱动方式。软件运行时直接打开驱动设备,同时使用AfxBeginThread()函数生成一个新线程,其控制线程函数实时更新读取并显示数据。由于单片机采用1O位A/D转换器,所以一次转换结果分两次传输,分别为高位和低位传输。并口数据传输也采用8位方式。上位机在读取数据后,2组数据经移位、加法运算后得出一个完整数据,标定后在计算机界面显示。
- Freescale 16位单片机的地址映射(11-28)
- Freescale 16位单片机命名参考规则(11-23)
- 凌阳16位单片机之用时基中断定时(11-20)
- 凌阳16位单片机之IRQ4中断(11-20)
- 凌阳16位单片机之定时器中断(11-20)
- 凌阳16位单片机之IRQ6中断(11-20)