基于FPGA的多路温度实时监测系统的设计

2022-06-24 03:04于小龙
山西电子技术 2022年3期
关键词:数据处理蓝牙总线

于小龙

(山西省机电设计研究院有限公司,山西 太原 030009)

在仪器仪表等领域中,温度是反映设备运行状态的重要参数,对温度的实时监测具有十分重要的意义。随着电子技术的飞速发展,FPGA器件越来越多地应用到仪器仪表中,FPGA具有速度快、灵活性强的特点,非常适合温度的实时采集。LM75A是一款内置带隙温度传感器的温度检测器,采用I2C接口。本文采用型号为EP4CE6E22C8的FPGA芯片作为温度实时监测系统的主控芯片,温度检测模块采用LM75A芯片,采集的4路温度数据通过RS232接口分别发送给7寸LCD液晶屏和蓝牙模块。7寸LCD液晶屏用于温度的实时显示,蓝牙模块用于无线接收。

1 系统总体框图

本系统的总体框图如图1所示。

图1 系统总体框图

由图1可知,整个系统划分为3部分:1)由4个LM75A构成的分布式温度测量模块,该模块通过I2C总线与FPGA相连。2)由FPGA构成的系统控制核心,负责分时采集处理4路温度信号并将其通过RS232接口送至LCD屏幕和蓝牙模块。3)由7寸LCD屏幕构成的显示模块及用于将数据无线发送的蓝牙模块。

2 分布式温度测量模块

分布式温度测量模块由4块LM75A芯片构成。LM75A是一种I2C接口的温度传感器,各大半导体生产厂家都有生产,如德州仪器(TI)、恩智浦(NXP)、意法半导体(ST)等,各个厂家的命名稍有差别,但硬件上、程序上是完全兼容的。本设计采用的是恩智浦(NXP)的芯片。LM75A具有如下特点:1)测量的温度范围为-55 ℃~+125 ℃。2)测量精度0.125 ℃。3)3个地址选择引脚,同一根I2C总线上最多挂8个LM75A。LM75A的引脚图如图2所示。

图2 LM75A的引脚图

各引脚功能如下:SDA:I2C串行双向数据线。SCL:I2C串行时钟输入。OS:过热关断输出。GND:系统地。A2:用户定义的地址位2。A1:用户定义的地址位1。A0:用户定义的地址位0[1]。VCC:电源3.3 V。4块LM75A芯片挂在同一条I2C总线上,3位地址分别为000、001、010和100。I2C总线如图3所示。

图3 I2C总线

3 系统控制核心

FPGA芯片的型号为EP4CE6E22C8,控制核心采用硬件描述语言Verilog进行编程设计,具体又划分为3个模块:1)LM75A控制模块,主要模拟I2C时序,产生50 kHz时钟,控制4块LM75A芯片分时采集温度数据,并将采集到的温度数据传到数据处理模块。2)数据处理模块,将温度数据处理为便于LCD屏显示的数据。因为LM75A采集到的数据是以二进制补码形式表示的11位温度数据,分辨率为0.125 ℃,实际中并不需要这么高的分辨率,本设计只精确到0.1 ℃。3)数据发送模块,负责处理数据处理模块发送过来的8位数据,并通过RS232接口同时发送给LCD屏幕和蓝牙模块。

程序中通过设置一个250 ms的计数器,实现FPGA每间隔250 ms发送一次采集指令,读取一块LM75A的温度数据,即1 s内依次读取4块LM75A温度。FPGA是主机,LM75A是从机。第一个测量周期内主机首先发送起始信号,然后发送从机地址和方向位“读”,从机返回应答位,从机返回高字节,然后主机发送应答位,从机返回低字节,主器件发送非应答[2],至此第一块LM75A采集过程结束。另外三块LM75A数据采集过程类似,如此循环。

采集到的数据是以二进制补码形式表示的11位温度数据,而LCD屏幕可以显示的数据格式为十六进制,因此需要将数据进行处理。例如,温度为25 ℃时,LM75A传回的数据为两字节二进制数0001_1001_0000_0000,用十六进制表示为1900,十进制表示为6400,而LCD屏幕要显示25.0 ℃时需传给它的数据应为00FA(十六进制)。故数据处理模块首先将收到的两字节二进制数(记为temp)右移5位(记为temp1),去掉无效数据,然后temp1右移2位(记为temp2),将temp2和temp1相加(结果记为temp3),则temp3即为要发送给LCD屏显示的数据。还是以25 ℃数据为例进行说明,收到0001_1001_0000_0000(temp),右移5位得0000_0000_1100_1000(temp1),再右移2位得0000_0000_0011_0010(temp2),将temp2和temp1相加得最终结果0000_0000_1111_1010(temp3,十六进制250),发送给屏幕即可显示25.0 ℃。

FPGA程序编译后的RTL视图如图4所示,lm75_ctr为LM75A控制模块,lm75_data_process为数据处理模块,usart_tx为数据发送模块。

图4 RTL视图

4 LCD屏幕和蓝牙模块

LCD屏幕尺寸为7英寸,分辨率800×640,数据接口为RS232,用于实时显示4块LM75A芯片采集的温度数据。蓝牙模块可将温度数据无线发送,用于远端接收及调试。LCD实际显示效果如图5所示。手机蓝牙APP收到的数据如图6所示。

图5 LCD实际显示效果

图6 手机蓝牙APP界面

以蓝牙收到的一帧数据A5 5A 05 82 00 01 00 D2为例,A5 5A是发给LCD屏幕的帧头,05表示指令长度,82表示写屏幕寄存器指令,00 01表示存储器单元地址也即第一个LM75A数据存放地址,00 D2表示温度数据(十六进制,十进制为210,屏幕设置为小数点后一位)即温度为21.0 ℃。其他类似。

5 结语

本文设计实现了一种基于FPGA和LM75A的多路温度实时监测系统,该系统具有响应速度快,测量稳定、准确的特点,显示媒介为更加美观的彩色LCD屏幕,同时数据可通过蓝牙模块发送至远端用于无线接收。该系统具有较高的应用价值。

猜你喜欢
数据处理蓝牙总线
蓝牙音箱的直线之美
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
基于低频功率数据处理的负荷分解方法
无人机测绘数据处理关键技术及运用
简单、易用,可玩性强Q AcousticsBT3蓝牙音箱
一种基于CAN总线的误码测试方法
DCOM在混合总线自动测试系统的应用
适合自己的才是最好的 德生(TECSUN) BT-50蓝牙耳机放大器
基于AVR单片机的RS485工业总线开发设计
基于MATLAB语言的物理实验数据处理探讨