基于STM32和Modbus协议的公路隧道照明多路数据采集器设计外文翻译资料

 2022-08-11 10:52:11

英语原文共 17 页,剩余内容已隐藏,支付完成后下载完整资料


基于STM32和Modbus协议的公路隧道照明多路数据采集器设计

Liang Zhaoa, Shaocheng Qua,*, Weigang Zhangb

摘要:本文提出了一种基于STM32和Modbus协议的公路隧道照明系统多路数据采集器。硬件方面,采用STM32单片机作为主控制器,选用BH1750传感器和DHT11传感器分别测量照度和温湿度。在软件方面,分别用I~C和单总线读取测量的照度和温湿度。基于Modbus协议的RTU工作模式,STM32成功地将采集到的数据传输到上位机,实现了公路隧道环境参数的实时采集和上传。此外,该数据采集器已在隧道照明节能系统中稳定运行近两年。实验结果表明,该多路数据采集器能够准确地感知隧道环境,并与上位机进行可靠的通信,具有良好的工程应用价值。

关键词:公路隧道照明、数据采集器、STM32、Modbus协议、物联网技术。

一.介绍

近年来,公路建设蓬勃发展,引起了人们的广泛关注,极大地促进了人们的交通和生活[1,2]。隧道是高速公路的重要路段,因为隧道内部和外部存在亮度差异[3,4]。公路隧道一般分为7个区,即:入口区1、入口区2、过渡区1、过渡区2、内部区、出口区1和出口区2,如图1所示。为了创造良好的视觉环境,避免交通事故的发生,传统的公路隧道照明系统通常连续工作(每天24小时,每年365天)[5]。然而,在这些照明系统中,能源浪费是相当严重的,因为所有的隧道照明设备都是在不考虑交通量和日光变化的情况下始终打开的[6]。为了合理监控隧道照明系统,降低能耗,应准确测量并稳定传输隧道环境信息,为隧道照明节能控制提供有力可靠的数据支持。

针对这一问题,对公路隧道照明测量系统的设计进行了大量的研究。程[7]设计了一套长公路隧道照度检测系统,实现了宽测量范围(2000-3000lx)和快速采集速度(10次/s)。但该系统是车载的,主要用于一次性现场试验,不能支持隧道的长期监测。Han等人。[8] 采用模糊亮度法和L20法对隧道入口区的适应亮度进行了测量和分析。Jang等人。[9] 研制了一种测量公路隧道内外亮度的成像亮度计。测试结果表明,所研制的仪表在现场运行良好,但没有给出详细的硬件结构设计。文献[10]基于中视觉发光效率模型,研究了高压钠灯(HPS)和白光led的发射光谱分布,得到了更精确的公路隧道照明值。然而,这种方法的有效性需要在实际工程应用中得到验证。Ezzedine和Zrelli[11]提出了一种基于光纤Bragg光栅传感器(FBGS)的无线结构健康监测系统的体系结构,该系统能有效地测量隧道、桥梁和矿山等民用结构的应变、温度和湿度的变化。Kwong和Li[12]讨论了隧道照明项目的设计(计算)和现场测量亮度之间的差异。他们发现,在隧道内使用实际的道路和地表反射率测量,以获得隧道修复项目有意义的计算机计算是至关重要的。Cattini和Rovati[13]提出了一种基于摄像机的公路隧道照明测量仪。他们提出的系统的目的是估计模糊亮度,因为接近隧道的司机会察觉到它,从而可以估计隧道入口的最佳亮度水平,提高司机的安全性。本文设计了一个基于STM32和Modbus协议的公路隧道照明多路数据采集器,它是我们前期工作的一个子系统[14]。硬件方面,STM32作为主控制器,分别采用BH1750传感器和DHT11传感器测量照度和温湿度。在软件方面,分别用I~C和单总线读取测量的照度和温湿度。基于Modbus协议,将采集到的数据成功地传输到上位机,实现了隧道环境参数的精确测量和实时上传。本文的其余部分安排如下。第二章和第三章分别介绍了系统的硬件和软件设计。第四节对实验结果进行了分析。最后,第五节对论文进行了总结。

二.系统硬件设计

多信道数据采集器的结构如图2所示。结果表明,STM32通过I~C总线与BH1750传感器进行实时光照度通信,通过单总线与DHT11传感器进行实时温湿度通信。然后,将采集到的数据写入STM32的Flash中。最后,基于Modbus协议,上位机PC和ARM板通过RS-485接口向STM32发送请求,读取Flash寄存器中存储的数据。请注意,由于每个区域都需要一个单独的数据收集器,因此在隧道中总共应该部署七个数据收集器。为了区分它们,应为安装在不同区域的数据采集器提供不同的地址代码。

2.1电源模块

拟采用的数据采集器主要工作在室外环境,分布在隧道内外,应能承受复杂自然环境的影响。因此,为保证整个系统的正常运行,必须提供稳定的电源。据调查,该数据采集器的电源来自中国交通部提供的电压源,包括5V和12V直流电。然而,STM32所需的电源为3.3v,其它芯片所需的电源为5v,因此,我们设计了两个直流电压转换电路:1)12v~5v稳压电路和2)5v~3.3v稳压电路。

如图3所示,采用低功耗LM2596S-5V芯片设计12v~5V稳压电路。凭借出色的线路和负载调节,LM2596具有高达40 V的输入电压范围和5 V的固定输出电压。LM2596集成了一个频率补偿器和一个固定频率振荡器,使其待机电流仅降低到80mu;A,功率转换效率达到80%。在图3所示的DC-DC降压电路中,LM2596是一个降压开关稳压器,L1是一个能量存储导体,D3是一个自由转动二极管(FWD)。在开关接通状态下,电流正常流动,而在开关断开状态下,L1和D3形成回路以保持电路持续供电。图3。12伏至5伏稳压电路。

如图4所示,采用固定式低压差线性稳压器AMS1117设计5V~3.3V稳压电路。AMS1117具有限流、热保护和0.2%的典型负载调节功能,支持固定的3.3V输出电压,最大误差小于1%。在图4中,C16和C17是电源的输入滤波电容器,它们防止电源故障后电压倒转。C15和C18为输出滤波电容,抑制自激振荡,防止输出波形振荡。

2.2STM32最小系统

如图5所示的STM32F103C8T6微控制器被视为所提议的数据采集器的CPU。作为STM32F103xx中密度性能线系列的一员,STM32F103C8T6采用了基于ARM的高性能CortexM3 32位RISC内核,工作频率为72 MHz,高速嵌入式存储器(64 KB闪存和20 KB SRAM),内部8 MHz工厂微调RC振荡器,以及连接到两条APB总线的各种增强I/O和外围设备。此外,STM32F103C8T6提供48针、两个12位ADC、一个7通道DMA控制器、七个定时器以及九个通信接口(包括两个I2C和SPI、三个USART、一个USB和一个CAN)。在图5中,BOOT0(引脚44)和BOOT1(引脚20)接地,这意味着在正常启动模式下,STM32从Flash启动其嵌入式操作系统。D1和D2分别为STM32和电源的LED指示灯。电源滤波电路由C3,C4,hellip;,C9组成。Y1是带有两个20pf电容的无源晶体振荡器,而X1是频率为8mhz的有源晶体振荡器。

2.3照度传感器模块

照度的准确采集是该数据采集系统的关键,对公路隧道照明系统的行车安全和节能具有重要意义。如图6所示,使用数字环境光传感器BH1750FVI设计照度采集电路。由于具有以下优点:1)高分辨率和宽探测范围(1-65535lx);2)人眼状光谱、3)光源依赖性小、4)红外影响小等优点,使用BH1750FVI通过I2C总线接口(图6中的引脚4、6)方便地获取数字16位照度数据。

2.4温湿度传感器模块

除照度外,还应对隧道内外温湿度传感器模块进行测量和分析。因此,我们使用一种流行的温湿度传感器DHT11来设计温湿度采集电路,如图7所示。DHT11具有成本低、稳定性高、响应快、抗干扰能力强、测量精度高(温度plusmn;0.2℃、湿度plusmn;2%RH)等优点,适合于环境监测应用。在图7中,温度和湿度数据首先由DHT11收集,然后通过单总线从管脚2传输到STM32。

2.5接口转换模块

数据采集器与上位机通信采用Modbus协议,主要依靠RS-485接口。不幸的是,它不属于STM32提供的9个通信接口。因此,必须设计接口转换电路。如图8所示,我们利用称为ADM2483的隔离RS-485收发器来实现UART到RS-485接口转换电路。ADM2483重新提供500 kbps的数据速率,并允许总线上最多256个收发器,这使得它适合多点数据传输系统(隧道中的每个区域都可以视为数据收集和传输点)。但由于RS-485总线需要连接多个数据采集器,且通信电缆跨越长隧道敷设,容易受到雷电等外部干扰。因此,有必要在STM32和ADM2483之间进行隔离,以减少信号失真和误差。幸运的是,ADM2483集成了3通道隔离器,大大降低了电路设计的复杂性。在图8中,ADM2483的引脚3和6分别连接到UART的RXD和TXD引脚。引脚4和引脚5分别为接收器和驱动器使能输入,用于控制RS-485的数据传输方向。例如,如果RS485_-CON输入一个高电平信号,DE(驱动器)将被启用,但(接收器)将被禁用,即ADM2483处于数据传输模式。此外,采用f055s-1W芯片将该模块的电源与STM32等组件的电源隔离,避免了不同模块之间的相互干扰。FB1和FB2是磁珠,用于抑制RS-485信号线上的高频噪声和峰值干扰,并具有吸收静电脉冲的能力。

2.6 JTAG调试模块

为了便于对系统进行调试,我们设计了J-Link模拟器的接口电路,如图9所示。基于此电路,STM32开发环境(如IAR和Keil5)可以使用J-Link下载方法实现单步调试、断点设置、程序分析等。

三.系统软件设计

该多路数据采集器的软件设计主要包括:1)数据采集程序和Flash读写程序的设计;2)freembus协议的移植;3)主控程序的设计。

3.1数据采集程序和Flash读写程序的设计

本节设计了照度采集程序、温湿度采集程序和Flash读写程序。

3.1.1照度采集程序设计

基于I2C总线和BH1750FVI传感器,设计了照度采集的软件流程图,如图10所示。首先对STM32的I2C模块进行初始化,包括I2C GPIO配置(确定I2C使用的GPIO端口)和I2C模式配置(确定时钟线占空比、寻址模式、通信速率等相关参数)。然后,STM32发送通电指令“0x01”来激励BH1750FVI。为了提高测量的精度和连续性,STM32向BH1750FVI发送“0x11”测量指令,实现高分辨率的照度连续测量。在等待120ms测量时间后,可以读取16位照度值。最后,将这个16位数据转换为十进制数,然后除以1.2,得到分辨率为0.5 lx的准确照度。

3.1.2温湿度采集程序设计

在本小节中,STM32使用I/O端口通过单总线与DHT11传感器通信,以获取温度和湿度。图11示出了温湿度采集的软件流程图。根据DHT11数据表,初始化GPIO后,STM32将总线低驱动20 ms以请求DHT11,然后高驱动30mu;s以等待DHT11的响应。如果DHT11响应请求,STM32将继续读取DHT11的数据包,直到传输完成。一个完整的温湿度包应该是一个40位数据报文,由湿度数据的8位整数部分、湿度数据的8位小数部分、温度数据的8位整数部分、温度数据的8位小数部分和8位校验和组成。在接收到这个40位数据包后,STM32驱动总线进入空闲状态,这意味着一次温湿度采集已经完成。最后,将分组的前四个8位数据相加,以检查其是否等于最后一个8位校验和。如果相等,则收集的数据是正确的并将被保存。否则,它将被丢弃。

3.1.3 Flash读写程序设计

为了区分部署在不同区域的数据采集器,设备信息(如Modbus地址或波特率)必须存储在其Flash中。因此,我们在本小节中设计了Flash读写程序。正如我们在第2.2节中提到的,该数据采集器的CPU是一个STM32F103C8T6微控制器,其闪存大小为64千字节,由64个1千字节的页面组成,如表1所示。图12是Flash读写程序的软件流程图。从图12可以看出,如果是读取操作,则选择表1中的基址并读取相应的页。例如,如果选择基址“0x0800 04000x0800 07FF”,则将读取第1页。但是,如果是写操作,则应首先解锁闪存控制器。然后,清除标志并删除所选页面。随后,新的数据被写入相应的基址。最后,Flash控制器被锁定,以确保Flash中存储的数据不会被错误地更改。

3.2 FreeModbus协议的移植

3.2.1 Modbus协议

Modbus是一种应用层消息传递协议,是工业通信领域的事实标准,自1979年以来被广泛应用于各种工业应用中[15]。通常,Modbus协议有三种变体:1)Modbus-ASCII(美国信息交换标准码),2)Modbus-TCP(传输控制协议)和3)Modbus-RTU(远程终端单元)。Modbus-ASCIIi主要用于传输少量的文本格式数据,modbuscp主要用于基于以太网的数据传输。与之相比,ModbusRTU更适合于现场传输大量的二元工业数据。因此,采用Modbus-RTU实现隧道环境参数的实时采集和上传。

如图13所示,Modbus RTU建立包含四个字段的单一消息结构:地址、功能代码、数据和CRC(循环冗余检查)[16]。前三个字段包含Modbus事务的必要信息,而第四个字段对应于16位CRC计算,该计算旨在检测错误。

3.2.2 freembus协议栈的移植为了使该数据采集器成为与其他工业和商业Modbus仪器兼容的标准Modbus设备,我们将通用freembus协议移植到我们提出的数据采集器中。主要移植步骤如下:

步骤1:从[17]下载freembus-v1.6.zip。

步骤2:将“demo/BARE

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[237527],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。