基于STM32F7的多通道通用数据采集器的设计与试验
2022-01-18徐鹏飞马国林兰光泽员玉良
徐鹏飞,马国林,兰光泽,员玉良
(青岛农业大学机电工程学院,山东 青岛 266109)
0 引言
多通道数据采集通常采用较为成熟的数据采集卡[1-2]来实现。然而,数据采集卡价格高昂,中小型企业难以承受。而且,该方法需要上位机的联机支持,灵活性较差,捷带不便,不适用于复杂的实际工程环境。因此,目前已经开始采用单片机作为主控器[3-4],配合外部模拟数字转换器(analog to digital converter,ADC)进行数据采集。其中,外部ADC器件的接口有并口方式[5]和串口方式[6]。并口方式可提高数据的读取效率,但需要占用较多的处理器接口。串口方式可节省处理器的接口资源,但数据读取的耗时较长。常见串口方式有串行外设接口(serial peripheral interface,SPI)、集成电路总线(inter-integrated circuit,I2C)、通用异步收发器接口(universal asynchronous receiver/transmitter,UART)等。
本文设计了一种基于STM32F7的多通道通用数据采集器,充分利用STM32F7微处理器的资源,采用片内ADC及多种协议接口,转换结果通过直接存储器访问(direct memory access,DMA)[7-9]数据流方式存储至外设静态随机存取存储器(static random access memory,SRAM),有效解决了接口资源占用与转换数据读取效率之间的矛盾。DMA控制器可在外设寄存器与存储器之间,以及在存储器与存储器之间提供高速数据传输,在数据传输过程中无需处理器操作控制,能在实现数据高速传输的同时节省片内资源,提升了处理器的执行效率。
1 系统总体设计
多通道通用数据采集器最大的特点是实时性与普适性,可同时实时采集、传输、显示不同协议下的通道数据。多通道通用数据采集器由微处理器、SD卡存储模块、显示模块、4G通信模块和云端服务器等部分构成。多通道通用数据采集器结构如图1所示。
图1 多通道通用数据采集器结构图
微处理器采用STM32F767ZIT6芯片。微处理器首先采集ADC通道、CAN、SPI、I2C等通信协议数据,然后将采集到的数据通过DMA传输缓存至SRAM,进行编码后利用文件分配表(file allocation table,FAT)文件系统存入SD卡,并定时将SD卡的数据通过4G模块发送到云端服务器。云端服务器对接收到的编码信息进行解析显示,同时将解析完的各通道数据导出为文本文档。微处理器通过USART1连接4G通信模块,通过USART2连接显示模块,与SD卡通信采用安全数字输入输出(secure digital input and output,SDIO)协议。
2 采集器硬件设计
2.1 微处理器
微处理器STM32F767ZIT6主频可达216 MHz,片内集成多路ADC、I2C、通用同步异步收发器(universal synchronous/asynchronous receiver/transmitter,USART)等常见外设,内置两个DMA控制器。丰富的内部资源可充分满足系统设计需要。DMA支持外设到存储器模式和存储器到外设模式。采集通道数据选择外设到存储器模式。存储数据和发送数据选择存储器到外设模式。DMA原理如图2所示。
图2 DMA原理图
2.2 4G通信模块
4G通信采用稳恒科技的WH_LTE_7S4模块[10]。该模块属于二次开发模块,内部集成了4G通信芯片,支持高速接入移动、联通、电信4G。本设计中,将工作模式设置为网络透传模式,微处理器与4G模块之间采用串口通信。模块支持两路Socket连接,只有发送数据时才会和服务器建立连接。如果在一定时间内停止数据传输,则会因超时而断开连接。
2.3 存储模块设计
存储模块电路如图3所示。
图3 存储模块电路
为了防止因网络连接不稳定而引起数据丢失或错乱,系统定时向SD卡中写入数据,并实时将SD卡中的数据发送到上位机,对采集到的数据进行双重保护。本设计选取容量为8 GB的SD卡。该卡采用SDIO4 bit接口模式读写,文件读取速度最高可达20 Mbit/s。
图3中,SDI0_D0、SDIO_D1、SDIO_D2、SDIO_D3是四位并行双向数据线,SDIO_CK为SD卡的时钟线,SDIO_CMD为指令线。微处理器向SD卡储存数据:通过指令线向SD卡发送一个指令,SD卡随即返回一个应答信号; 下一个时钟周期开始由数据线进行数据传输,直到数据传输结束;微处理器发送一个结束指令,即完成一次操作。
2.4 电源电路
采集器提供三种电压源,分别为+3.3 V、+5 V和+12 V。通过AC-DC将220 V交流电转换为+12 V直流电,给4G通信模块、风速传感器和光照度传感器供电。同时,+12 V电压通过LM2596S-ADI调节至+5 V,给茎秆直径传感器、土壤湿度传感器和SD存储模块供电。+5 V电压通过AMS1117调节至+3.3 V,给微处理器和温湿度模块供电。同时,采用不间断电源模块,可实现市电和锂电池应急切换,保证系统的稳定、可靠运行。
3 采集器的软件设计
采集器主程序使用STM32CubeMX工具和Keil μVision5集成开发环境进行程序开发调试。初始化子程序包括片内ADC、DMA、4G通信模块和SD卡的初始化。
上电后,首先进行系统初始化,判断是否到达数据的采集时间。如果没有,则直接进入睡眠状态;反之,则启动各数据通道,采集相关数据,并读取采样时刻。数据采集完毕后,关闭采集通道,使其进入空闲状态,直至下次采集时再打开通道。启动DMA将数据发送至外部SRAM缓冲区,并通过FAT文件系统存入SD卡。如果检测到网络已连接,则还需将SD卡中的数据通过4G通信模块发送给远程服务器。
主程序流程如图4所示。
图4 主程序流程图
4 试验分析
4.1 试验设计
2020年11月在青岛城阳区(120°39′64′E,36°31′95′N)进行试验。试验对象为随机选取的两株茄子样本,播种时间为2020年7月初。对两株茄子样本分别安装一套温室作物水分无创检测系统。
试验现场如图5所示。
图5 试验现场示意图
采集器所用传感器配置如下:温湿度传感器采用单总线协议;大气压强传感器采用I2C协议;光照度传感器为RS-485输出;风速、茎秆直径微变[11]、土壤湿度传感器为模拟0~5 V输出。
传感器参数如表1所示。
表1 传感器参数
4.2 数据分析
根据11月8~18日在试验现场测得的数据绘制微环境因子变化曲线,如图6所示。由图6可知:温室内的光合有效辐射量与饱和水汽压差每天都会发生周期性变化。
图6 微环境因子变化曲线
茄子样本主要参数变化曲线如图7所示。
图7 茄子样本主要参数变化曲线
11月10日上午10点对样本进行了浇灌,浇水量为1 L。由图7(a)可以看出,土壤相对湿度明显变高。
浇水前,天气状况良好,土壤相对湿度小于20%。此时,茄子样本已经不能从土壤中获得足够的水分来维持正常的蒸腾作用,出现了一定的干旱现象,造成茎秆出现大幅收缩。浇水后,茎秆得到了有效的水分补充。茎秆直径变化基本稳定,并略有增长。
由图7(b)可知,每天早上8点,光合有效辐射量开始增大,样本茎秆开始收缩。至中午前后,光合有效辐射量达到最大值,茎秆直径达到最小值。之后,茎秆逐渐膨胀变粗,一直持续到次日凌晨,达到最大值。如此反复,茄子样本的茎秆直径每日呈周期性变化,同时茄子样本的茎秆直径每天还有小幅度增长。11月8~17日,茎秆直径大约增长了1.5 mm。
11月13日,茄子样本的茎秆直径与光合有效辐射量变化曲线如图8所示。
图8 11月13日茄子样本的茎秆直径与光合有效辐射量变化曲线
由图8可知,光合有效辐射量在上午10点和下午1点前后出现波动。其原因是温室结构支柱遮挡了太阳。
通过连续长时间的测量验证,多通道通用数据采集器能够高速、准确地测量出作物茎杆直径、温度、湿度、光照度和土壤湿度等信息,具有较高的可靠性与普适性。
5 结论
本文基于STM32F7的多通道通用数据采集器,实现了多通道、多协议的高速数据采集。将其应用于温室作物无创水分检测系统中,可实现对作物茎杆直径、温度、湿度、光照度和土壤湿度等信息进行远程监控。试验结果表明,该采集器具有性能高、功耗小等优点,在保证高速采集多路数据的同时,极大地降低了硬件成本。该采集器运行稳定、可靠,实用性强,具有较高的推广应用价值。