Back to Blog

基于FPGA的热电偶测温数据采集系统,替代NI的产品(二)总体设计方案

#fpga开发#嵌入式硬件#arm开发#人工智能

2024 年,中北大学任勇峰等人针对飞行试验中设备温度测量的要求,设计了一种适合飞行试验的高精度多通道温度采集装置,系统框图如图 1.18 所示[32]。系统采用 FPGA

搭建信号采集处理系统,采用 AD8227 和 AD590 实现信号调理和温度冷端补偿,采用

AD7667 对热电偶信号进行采样。系统通过标准 RS422 协议实现 16 路温度信号传输,并通过线性拟合对输出进行非线性校正,提高了系统的精度和稳定性。测试结果表明,测温电路在 0℃~1200℃相对误差低于±0.083%F.S.。

通过对国内外现状的研究,可以看出当前主要的热电偶电子测量装置(包括 NI 公司制造和一些个别自我研发的设备)均存在采样速率低、传输速率低的问题,造成这些问题的主要原因在于这些方案在器件上主要采用集成信号放大和模拟-数字转换的专用器件或外置模拟-数字转换器件的方案,数据传输上多依赖 Zigbee、蓝牙、串行端口或低速 WiFi 模块。显然现阶段的热电偶电子测量装置无法满足薄膜热电偶纳秒级瞬态温度信号的采集需求,为解决数据丢失和处理滞后问题,需设计高速采集与传输系统。

FPGA 凭借其高灵活性、高吞吐量、快速并行运算和适于模块化设计等特点,能够高效处理大规模数据流并实现实时处理,完美适配薄膜热电偶的高速需求,同时也具有大量将其应用在测温领域的实例。因此,开发基于 FPGA 的薄膜热电偶模块化高速数据采集系统是目前切实可行的解决方案。

2.1 薄膜热电偶测温原理

热电偶作为一种无源测温元件,因其结构简单、价格便宜、准确度高而被广泛应用于各种领域。其能够在极端温度下稳定工作,适用于从-200°C 到+1800°C 的广泛温度范围。此外,热电偶具有良好的耐久性和抗干扰能力,适合用于工业过程控制、实验室测量、食品加工等场合。薄膜热电偶在保留其原有优势的前提下,增加了相应迅速这一特点,使其成为更有优势的传感器。热电偶的工作原理主要依赖于三种热电效应:塞贝克效应、帕尔帖效应和汤姆逊效应,这些效应都与温度差引起的电压变化密切相关[33]。

薄膜热电偶工作原理如图 2.1 所示。

2.5 下位机设计方案

由前文分析可知,薄膜热电偶电信号是一种具有信号小、变化速度快等特点的模拟信号,因此下位机需要能够放大微弱信号并滤除杂波,然后交由高速 ADC 进行采集并送到主控中处理,最后由高速通讯部分将数据发送给上位机。下位机包括下位机硬件和下位机软件。硬件部分分为放大滤波部分,ADC 板卡和主控板卡组成,软件部分由 ADC

数据处理模块、ADC 数据打包模块、千兆以太网数据传输模块和 GMII 接口转 RGMII

接口模块组成。系统下位机整体框图如图 2.8 所示。

2.6 上位机设计方案

由于采集系统短时数据量大的特点,上位机软件上采用了分段式设计,主要分为了数据提取,数据导出和图像绘制这几个部分,这样设计的好处在于使各个部分更加独立,并灵活调试每个阶段,方便后续如有需求更改或需要进行功能添加或二次开发时进行更改。具体流程为先将抓取到的以太网数据包中的数据部分提取出来,然后将每个数据单独分割出来再进行数据转换并导入到数据库中,再在需要进行数据分析的时候将数据导出为.CSV 表格的形式,并进行图像的绘制。其中数据提取和图像绘制由 Python 代码实现,数据导出由数据库脚本实现。

本文涉及的 Python 代码均为通过 PyCharm 平台实现。PyCharm 是一款由 JetBrains

公司开发的专业级 Python 集成开发环境(IDE),广泛应用于 Python 编程的各个领域。

PyCharm 提供了强大的代码编辑功能,包括智能代码补全、实时错误检查和代码重构工具,极大提高了开发效率。它还支持丰富的开发工具集成,如版本控制系统、调试器、测试框架和数据库管理工具,使得开发者能够在同一个环境中进行全面的开发、调试和测试[42]。

使用 PyCharm 进行 Python 项目开发的流程通常包括以下几个主要步骤。首先,开发者创建或导入一个 Python 项目。在 PyCharm 中,可以通过简单的项目向导创建一个新项目,选择 Python 解释器,并配置虚拟环境,以确保项目依赖的库和包在独立的环境中管理。接下来,开发者开始编写代码,利用 PyCharm 的智能代码补全、代码导航和实时错误检查等功能,高效编写和调试 Python 代码。在代码编写过程中,PyCharm 的内置调试器允许开发者设置断点、逐步执行代码,并查看变量的状态,从而快速定位和修复问题。最后,开发者可以通过 PyCharm 的测试工具运行单元测试或集成测试,确保代码的正确性和稳定性。可以说从项目创建到代码编写、调试、测试和版本管理,PyCharm

提供了全方位的支持,使开发者能够高效地完成 Python 项目的开发[43]。

数据存储采取数据库存储的方式,软件上选取了 SQL Sever 数据库软件,并使用内置查询功能实现了将数据库数据导入到多个.CSV 表格的功能。SQL Server 是由微软开发的一款关系型数据库管理系统,广泛应用于企业级数据管理和分析。作为一款功能强大的数据库平台,SQL Server 支持复杂的查询、数据存储、事务处理和安全管理,同时提供了丰富的工具和服务,如 SQL Server Management Studio(SSMS)和 SQL Server

Reporting Services(SSRS),用于数据库开发、管理和报表生成。SQL Server 支持多种数据类型和复杂的数据库结构,能够处理大量数据和并发用户[44]。

2.7 系统模块化设计方案

本文采用 FPGA 作为下位机系统的主控制器,AD9280 作为 ADC 采集经过 LM7171

放大的薄膜热电偶电压信号,经过模数转换将数字信号通过并行总线传递给 FPGA,

FPGA 将数据整合打包成以太网数据包,通过 UDP/IP 协议将数据发送给上位机,上位机软件先将数据包解包然后拆分数据并转换成十进制数存入到数据库中,并在需要调用时将其导出为.CSV 格式,并实现图像绘制。

在现代电路设计中,模块化电路设计在发动机电控、汽车电子、智能家居和仪器仪表等领域得到了越来越多的应用[45-48],数字电路上也更倾向于模块化设计[49]。模块化设计的优势主要有以下几点。

(1)提高了系统的可维护性。当某个模块出现问题时,只需要定位并修复该模块,无需影响到整个系统;

(2)增强了系统的可扩展性。新的功能或模块可以方便地加入到现有系统中,而不需要对整个系统进行重新设计;

(3)提高了各个模块的重用性。各个功能被封装成了相对独立的模块,减少了重复性的工作,提高开发效率;

(4)简化了系统的测试与调试,可以针对单独的模块进行单元测试,确保每个模块的功能正确性,出现问题时可以局限在某个单个模块范围内,避免了系统级调试的复杂性[50,51]。

综合上述优势,本系统参照此类设计,总体上也均采用了模块化设计方法。在模块化设计思想的指导下,系统总体设计方案如图 2.9 所示。整个系统可以分为上位机和下位机两个大模块,下位机模块包括放大滤波模块、电源模块、下位机系统模块,其中的下位机系统模块包含 ADC 数据处理模块、ADC 数据打包模块、千兆以太网数据传输模块和 GMII 接口转 RGMII 接口模块;上位机模块包括数据转换与存储模块、数据导出模块和数据图像绘制模块。本文也将围绕这几大功能模块进行重点介绍。