嵌入式小型多点温度测量系统设计
扫描二维码
随时随地手机看文章
引言
温度的测量与控制在工业生产与安全中起着关键性作用[1]。现今市场上温度控制成型的产品大部分以单片机为核心控制器,但是单片机的运算速度和系统处理能力十分有限,并且产品性能也无法继续提高,更重要的是其ROM和RAM空间小,不能运行较大的程序,而基于多任务的操作系统需要的任务堆栈很多,需要的RAM空间很大,故在发展上有很大限制[2]。因此,研究一种嵌入式小型多点温度测量系统十分必要。
目前嵌入式小型温度测量系统的研究有:张兴红等[3]为了能够更加精准确定超声波传播结束的终点时刻,保证温度的精准测量,提出了一种优化阈值比较法,设计了一种针对液体介质的超声波测温系统,该系统相较传统温度计响应更加迅速,具有更高的灵敏度,时间测量分辨率可达10—12 s,温度测量分辨率可达0.001℃;杜光月等[4]针对热物理学中对空间内温度梯度多点检测用传感器阵列数据采集同步性较差的问题,基于DS18B20设计了分布式数据采集方法,该方法较传统方法采集温度可缩短82.2 s,大大提高了检测的实时性和同步性;汪钦臣等[5]为了提高pC主站与智能从站采用常规Modbus通信的实时性,设计了一种基于Modbus UDp的实时通信系统,该系统以STM32为核心,以pC为主站,以FreeRTOS开发的控制器作为从站,经优化测试可提高系统Modbus UDp通信的可靠性和实时性;许子颖等[6]通过对测量系统输出值的调控,调节铂电阻的激励电流,从而抵消铂电阻的非线性误差,提出了一种基于压控电流源的铂电阻测温非线性校正设计方法,可有效改善输出信号的线性度,提高测温精度。
本文嵌入式小型多点温度测量系统基于Nanopi NEO嵌入式开发板进行设计,采用RS485总线,构成分布式多点传输数据采集系统,以满足民用领域、工业领域等对多点温度测量和数据存储的需求。本文以单片机作为下位机,用Nanopi NEO嵌入式开发板作为上位机,搭建嵌入式Linux系统桌面开发环境[7],搭建基于64位操作系统的ARM—Linux交叉编译环境,并采用RS485总线作为数据传输的载体,以Nanopi NEO开发板为核心搭建了温度测量硬件电路。
1硬件设计方案
1.1温度传感器选型
嵌入式小型多点温度测量系统设计测温范围为—50~120℃,该小型测温系统可以测量单点或多点温度,同时可以提供多传感器接口。温度传感器成本要求低,性价比高,综合分析,该系统的温度传感器将选用数字式温度传感器。表1是几种型号的数字式温度传感器的对比。
LM74温度传感器转换时间太长,且温度准确度较差,不予选用;MAX6575和AD7418测温准确度较差[8],不能满足需求;而DS18B20是一个单总线器件,采用单一接口方式对数据进行传输,当进行多点温度采集的时候,这是它同其他数字温度传感器相比的一个优势,DS18B20单总线器件与51单片机的通信协议比较简单,占用单片机硬件I/O接口资源少,降低了系统成本,而且该器件传输距离很远[9]。综上,采用DS18B20作为温度传感器。
1.2 Nanopi NE0
本设计基于Nanopi NEO嵌入式开发板,Nanopi NEO体积小、价格低,是一款高性能、低功耗的小体积嵌入式产品,拥有丰富的GpIO扩展接口,包括UART、SpI、I2C多种常见通信接口,同时还拥有各种各样的扩展器件,扩展性高,完全可以替代高端的STM32产品系列,同时还兼具上位机的处理能力,实用性强[10]。
嵌入式小型多点温度测量系统由主机Nanopi NEO模块、从机、温度测量系统和RS485总线组成,硬件主从模块电路组成框图如图1所示。
2软件设计方案
嵌入式小型多点温度测量系统主程序执行流程的系统结构框图如图2所示。
首先作为上位机的Nanopi NEO在开机时执行SELECT语句,在SQLitE数据库中查询主键sn列最大值,记录该值,在之后的存储过程中从此值开始插入数据,此举的目的在于满足SQLitE数据库的唯一性约束。上位机Nanopi NEO基于Modbus协议发送一帧报文到RS485总线,这一帧报文中指定下位机,并令该下位机执行指定指令。当上位机Nanopi发送一帧报文到下位机之后,上位机会进入监听状态,被指定的下位机会执行所接收到的发送数据的指令,发送一帧包含传感器数据的报文到RS485总线中,上位机会接收该数据,并将该数据中的有效参数存储到SQLitE数据库文件的相应表格中。通过循环语句,上位机Nanopi NEO会循环读取每一个下位机的数据,并存储在相应的数据库表格中。
软件设计分为两个部分,第一个部分是下位机模块,第二个部分是上位机模块。
下位机模块:本系统使用51单片机作为下位机,51单片机会利用循环语句不断采集DS18B20的温度数据,当串口中断触发的时候,判定接收到的数据,并据此判断是否输出温度数据,如果判定为发送,则将从DS18B20采集到的数据通过串口传输给485转TTL模块。
上位机模块:为了满足嵌入式数据库SQLitE的唯一性约束,上位机Nanopi NEO在开机以后会使用SELECT语句查询数据库中的主键(sn列)数据,之后数据将会从sn最大值开始使用INSERT语句插入。上位机Nanopi NEO通过串口1发送一帧报文到485转TTL模块(该模块会对RS485总线信号和串口信号进行互相转换),之后将会处于监听模式,在监听模式下,Nanopi NEO得到从下位机传输过来的数据之后,会将该数据存入嵌入式数据库SQLitE相应的表格中。将数据使用数据库保存是目前常用的一种方法,该方法存储快速'面对输入量具有良好的反应时间。
3系统环境搭建
系统环境搭建'包括Nanopi板上系统环境搭建、Linux 64位操作系统环境搭建、SQLite数据库使用环境搭建、QT Creator交叉编译环境搭建。
3.1 Nanopi NE0板载系统环境的搭建
准备Nanopi嵌入式开发板向TF卡中烧写系统'打开烧写工具'选择相应的固件和TF卡'选择write。烧写成功之后将TF卡插入Nanopi'使用uSB转串口模块连接Nanopi和电脑'接口选择GpIO管脚图中左下角的GND、5V、TX、RX。打开电脑上的串口调试工具'在界面上选择相应的COM端(Linux系统中为ttyuSB)'一栏波特率选择115 200(Nanopi默认)'然后点击界面下方的“打开”按钮'此时串口调试助手处于监听模式'对Nanopi进行关机操作'然后开机即可。串口调试第一次时间比较长'此时系统会初始化'并对TF卡进行分区'串口调试成功后的界面如图3所示。
3.2 64位操作系统ubuntu的搭建
NanopiNEO的Cpu为Allwinner H3 FriendlyCore'如图4所示'应使用4.8.6版本的QT和ubuntu 16.04 64位版本操作系统'否则QT Creator在进行交叉编译时将会出现错误。
3.3 SQLite数据库使用环境的搭建
进入官网下载预编译的二进制文件'并下载qlite—tools压缩文件'在系统盘目录下创建一个叫作sqlite的文件夹'解压压缩包到此文件夹'这时将会得到sqlite3.def、sqlite3.dll、sqlite3.exe文件。添加文件夹到pATH环境变量'就可以在命令行中使用SQLite。
Linux系统几乎全部附带着SQLite数据库'创建数据库文件和表格如图5所示。
3.4 QT Creator交叉编译环境的搭建
在Nanopi NEO的wikipedia网站下载完相应的工具包后'首先添加QtEmbedded'然后添加C语言交叉编译器与C++语言交叉编译器'最后是构建套件(kit)'如图6、图7、图8所示。
4系统的实验测试
本系统设计过程中,大部分模块是对温度进行测量和控制的,资源数据和操作数据两大部分组成了系统数据库的主要部分。资源数据主要指主机收集的温度数据,操作数据主要指的是系统在运行过程中不断变化产生出来的数据,其添加、修改和删除操作由相对应的操作模块来完成。
烧录入程序并运行软件,主机收集的所测得的温度数据如图9所示,将温度数据存储到SQLite数据库文件相应的表格中,图10为单片机作为下位机进行测温并与主机通信的照片。
5结束语
本设计以Nanopi NEO嵌入式开发板为核心,对多点温度进行测量,实现了对温度的实时检测;该系统利用了DS18B20,使得硬件结构简单、成本低廉、工作稳定。系统对于需要实时监测温度的环境具有良好的应用前景,可以较好地发挥其作用。