基于FPGA的多路传感信号采集系统设计
2022-07-27但璐瑶
杨 栋,江 虹,罗 颖,但璐瑶
(1.西南科技大学,四川绵阳 621000;2.攀枝花学院,四川攀枝花 617000)
0 引言
随着无人机技术的成熟和发展,目前无人机已应用于特殊环境的数据采集,包括温度、湿度、气体浓度检测等方面[1]。由于高空环境的特殊性,无人机在特殊环境下的温度采集存在采集误差大、数据传输可靠性低、系统稳定性差等问题[2],并且受到体积和质量等限制,采集设备必须满足体积小、质量轻等要求。
FPGA(现场可编程门阵列)具有多路数据并行处理的优势,并且器件稳定性高。因此,本文针对以上问题,设计以FPGA为主控芯片,配合多个功能模块共同协作,实现对多路数据并行采集以及对K型热电偶的冷端补偿[3],并将采集数据组帧通过以太网接口模块传输至上位机,上位机再对数据进行波形重构。该系统具有设备体积小、高精度、高可靠等特点,可应用于特殊环境下的K型热电偶温度采集,例如无人机在高空中对激光打靶的测试。
1 采集系统整体设计
整体采集系统结构如图1所示,由前端信号调理模块、A/D转换模块、FPGA主控模块、数据存储模块、以太网传输模块以及上位机构成。
图1 系统框图
FPGA作为采集系统的主控模块,具有高稳定性和并行数据处理等优点[4],其主要作用为:
(1)产生各模块驱动时钟。系统时钟由YS0321SR有源晶振产生,FPGA通过内核PLL锁相环分频输出各模块需求时钟。
(2)控制前端数据采集。16路传感信号由Δ-Σ型ADC进行增益放大、滤波、模数转换等操作,最后得到可供FPGA处理的数字信号。
(3)驱动存储、传输模块工作。将采集数据进行数字滤波、打包处理,以统一的数据包格式通过UDP协议发送给无人机。
2 系统功能模块
2.1 采集模块设计
由于数据采集系统具有多通道、高分辨率以及对热电偶冷端补偿等特点,为此选用ADS1248作为模数转换芯片,其具有24位的垂直分辨率,有8个模拟输入通道,内置可编程增益放大器(PGA),可实现至多128倍增益放大。
ADS1248芯片有7根引脚和FPGA进行命令交互与数据传输,包括SPI通信引脚以及相关接口引脚,测试时需根据DRDY引脚的电平信号来判定数据是否转换完成。整体采样状态如图2所示,芯片起始于IDLE状态,经过1 μs延时后,发送RESET命令(06h),确保上电后设备复位正常,接着对寄存器进行配置操作。MUX状态为通道选择,8个通道会被依次组合成4组差分输入通道,组合完成后在SYNC状态进行数据采集,当1组数据采集完成后DRDY引脚拉低,跳转到下一组通道再进行数据采集,数据在RDATA态被读出,需给足32个时钟周期的时间。
图2 ADC采集状态图
ADS1248芯片可设置采样率为20 SPS、40 SPS、80 SPS、160 SPS、320 SPS、640 SPS、1 KSPS、2 KSPS。由于采集系统包传输间隔为25 Hz,没有对应的采样率,因此需精确控制convert的时间点,方案设计为:选择合适的采样率(转换时间的4倍小于40 ms),在SYNC状态时开始计数,当四通道数据转换完成后,状态锁定在SYNC状态,计数至25 Hz周期时再继续下一轮采样。
2.2 存储模块设计
在数据采集系统中,共有16路的传感信号(10路热电偶传感器信号、5路光耦传感器信号和1路温度补偿信号),16路信号使用4个ADC进行采集。由1 KSPS采样率可得:1 h内产生的数据量为329.6 Mbit,因此选择Nor Flash型存储器W25Q512,其具有512 Mbit的存储容量,262 144个可编程页面,每个页面可以存储256字节数据,为了实现完整翻页问题,设计上行数据包格式为128字节,则2个包数据写满1页,避免了在同一页连续刷写的问题。
FLASH与FPGA之间采用SPI通信,主控器模块直接连接存储设备的控制信号线:CLK、DIN、DOUT和CS。FPGA通过控制信号线,实现对Flash的写数据操作和读数据操作,控制器框图如图3所示。
图3 Flash控制框图
在FPGA的开发设计中,主设备控制模块负责整理命令发向状态流程控制模块,并接收Flash读写地址等;状态流程控制模块对命令进行应答处理,并将数据信息发向数据读写控制模块;读写控制模块再根据读写时序与Flash芯片进行数据交互。数据缓存模块用于缓存写入或读出Flash的数据,其中写数据FIFO用于采集模块写入数据的缓存,读数据FIFO用于读出Flash的数据缓存[5],实现对下一模块的稳定写入。Flash读写测试如图4所示,图4(a)表明CS片选信号拉低后,当检测到写Flash命令时,主设备控制模块发出写请求脉冲,并将数据写入Flash;图4(b)为Flash读数据验证,在检测到读Flash命令时,读写控制模块将Flash中数据读出。经对比写入与读出数据一致。
2.3 数据传输设计
在数据采集完成后,FPGA将所有数据按照标准以太网帧格式打包发送给W5500芯片的片上缓存Buffer,再由W5500通过UDP协议发送至上位机。单包数据包含8 Byte包头、80 Byte效应点阵数据、32 Byte状态数据、4 Byte时间码、2 Byte包计数码、2 Byte校验码。W5500的数据收发流程如图5所示。
(a)Flash写入数据
(b)Flash读出数据图4 Flash数据读写功能验证
图5 UDP数据收发流程
图5(a)为UDP协议的接收流程:FPGA读取中断寄存器Sn_IR的信息,若第3位拉高,表明接收到对方数据,则发送“RECV”命令。“接收读指针寄存器”Sn_RX_RD缓存了所要发送的数据量,SocketRxBuffer再根据接收读指针寄存器的内容发送对应的数据个数。
图5(b)为UDP协议的发送流程:FPGA从“发送写指针寄存器”Sn_TX_WR中获取所要发送的数据个数,在“SEND”命令发送后,检测中断寄存器Sn_IR第5位的信息,若该位拉高则表明数据发送完成。具体的包传输由第4节验证。
3 热电偶的冷端补偿
在无人机高空作业时,由于采集器中K型热电偶传感器冷端不为0 ℃,会造成两端电势差减小,使转换的温度值也产生误差,因此,需对热电偶作冷端补偿。
设计使用ADS1248模数芯片的三线式RTD(resistance temperature detector)应用电路作冷端补偿,分别由2个IDIC电流源实现。IDIC1电流源为RTD元件提供激励,IDIC2电流源具有相同的电流设置,通过在电阻上产生相等的电压降来消除导线电阻[6]。并且RTD两端的电压是在模数转换器引脚上差分测量的,因此导线电阻两端的电压会相互抵消,减小了测量误差。参考电平将RTD信号转换到模数转换器指定的共模输入范围内,再通过多路选择器选择双通道差分输入ADC进行转换,ADS1248的热电偶测量系统如图6所示。
图6 热电偶测量系统
考虑在FPGA内部作算法会消耗大量的逻辑资源,因此温度补偿交由上位机实现。计算时先由A/D转换模块测量出RTD的电压值:
V=2.5T/256/H
(1)
式中:V为电压,mV;T为转换的3字节十进制数;H为0x7fffff。
由于激励电流为1 mA,即冷端测量电阻值等于电压值。再根据电阻值得到冷端实际温度:
t=AR3+BR2+CR+D
(2)
式中:A=-2.667 1×10-5;B=0.009 3;C=1.497 4;
D=-216.29。
再将冷端温度转换为实际电压值:
(1)当t∈(-270 ℃,0 ℃)时:
(3)
(2)当t∈(0 ℃,1 370 ℃)时:
(4)
式中:a0、a1、a2、a3、Ci为冷端电压转换系数;t为冷端实际转换温度;E为冷端电压值。
最后利用K型热电偶采集电压值加上冷端电压值通过式(5)得出实际温度值。
T=b0+b1x+b2x2+…+bnxn
(5)
式中:T为所需的实际温度值;x为热电偶电压值加上冷端电压值;b0,…,bn为K型热电偶温度转换系数。
4 系统测试
首先对采集系统的数据传输可靠性作测试验证,其中wireshark抓包数据如图7所示。
由包传输间隔可以验证系统的采样率为25 Hz,单包数据量为128字节,其中包头为42 4a 00 14,后面为传感器采样数据以及包计数码等。
图7 wireshark抓包数据
采集系统上位机测试主要关注多通道间的转换误差、数据的转换精度以及冷端补偿后的实际温度[7]。本次实验信号源选择fluke 5522A产生25.5 mV的直流信号经由热电偶2通道采集。测试结果表明:冷端Pt100测量温度为16.93 ℃,K型热电偶未加冷端补偿温度为606.17 ℃,加入冷端补偿后温度为622.05 ℃,温度大于400 ℃时,测量误差在%1t以内,满足系统指标,测试结果如图8(a)所示。为验证系统对交流信号的采集可靠性,信号源输入10 mV、0.1 Hz交流信号,采集结果如图8(b)所示。
(a)直流信号输入
(b)交流信号输入图8 上位机界面
系统选取3个通道25 mV直流分量输入,采集结果如图9所示。整体数据落在25.02 mV与25.10 mV之间,ADC转换值为3个字节数据,经计算得出各通道间误差小于0.1%,数据转换误差小于0.4%。
图9 直流分量采集
5 结束语
针对无人机上行链路采集系统可靠性差、热电偶测量误差大等问题,本文以FPGA作为主控芯片,设计了多个功能模块对多路传感信号进行采集、存储、传输。模块之间通过FIFO实现多bit数据跨时钟域可靠传输,保证了系统的可靠性,并通过对K型热电偶的冷端作温度补偿,以此来减小测量误差。经测试,系统通道间误差以及冷端补偿误差均满足指标要求。本系统不仅可以应用于无人机在特殊环境下的温度数据采集,还可以应用于其他相关领域的数据采集中,具有一定的应用价值。