基于ARM 的粉尘浓度监测仪的研究与实现

时间:2022-09-02 06:06:06

基于ARM 的粉尘浓度监测仪的研究与实现

摘要:灰尘浓度监测仪采用三星公司的S3C2410作为主控制器,DSM501传感器作为粉尘浓度检测元件,实现对空气中粉尘浓度的动态监测。构建了嵌入式Linux开发环境,编写了DSM501驱动程序及采集粉尘浓度的应用程序,并利用Qt/Embedded构建了监测仪图形界面,实验结果表明检测达到了预期目标。

关键词:嵌入式Linux;DSM501;粉尘;Qt/Embedded

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)34-0193-03

Abstract: Dust concentration monitor using the S3C2410 as the main controller of the Samsung Corp, DSM501 sensor as the dust concentration detection components, to achieve the dynamic monitoring of dust concentration in the air. The embedded Linux development environment is constructed, the DSM501 driver and the application program are written. The Qt/Embedded is used to construct the monitor graphic interface. The experimental results show that the detection achieves the expected goal.

Key words: embedded Linux; DSM501;dust; Qt/Embedded

由于现代工业化进程的加快,工业排放的危害越来越严重,其中当属粉尘对环境的危害最大,粉尘在大气成分中的占比越大,越会对人体的呼吸系统健康造成破坏,同时除了对人体呼吸系统的危害外,还有一些粉尘具有可燃性及爆炸性,通过对大气中的粉尘浓度进行实时监测,可以有效地防止粉尘爆炸。针对这一需求,设计开发了一种基于ARM的粉尘浓度监测系统。以S3C2410为硬件平台,以嵌入式Linux操作系统为软件开发环境,并设计相应的驱动程序。同时采用Qt/Embedded设计粉尘浓度监测系统的图形用户界面,实现对空气中粉尘浓度的实时监测。

1 硬件电路设计

1.1 硬件电路总体设计

硬件平台采用基于ARM920T内核的S3C2410芯片[1],ARM9TDMI、系统存储管理单元(MMU)以及高速缓存这三部分构成了ARM920T内核,内核的工作主频最高可达200MHz,内核在集成了64M字节同步动态随机存储器,内部采用非线性宏单元模式的64M字节闪存器,一对五线式的异步串行口,一个传输带宽为10M的网络接口及用户扩展口等,芯片内核提供了丰富的资源接口。本设计采用系统自带的GPIO扩展资源,实现中央控制器对DSM501传感器的数据采集及控制。并根据检测的粉尘浓度不同级别,采用LED灯报警,同时在LCD屏上显示精确的浓度数值。系统硬件总体结构如图1所示。

1.2 粉尘传感器模块

粉尘浓度传感器DSM501可识别直径在1微米以上的粉尘粒子[2],传感器集成了可自动吸入空气的内置

加热器,以PWM脉宽调制输出检测结果。当空气中有粉尘粒子时,Vout2脚输出0.7V(最大1.0V)的低电平;当空气洁净时,Vout2脚输出4.5V(最小4.0V)的高电平。因此,根据单位时间内低电平的比率即可测出空气中粉尘浓度。DSM501最多能检测出283ml中15000个粉尘粒子,最小粒子检出能力为1um。DSM501引脚结构图见图1传感器DSM501模块。

传感器检测浓度方式分为两种:一种是通过控制灵敏度的输出方式,利用芯片上的Control引脚作为控制单元,通过Vout 1引脚输出数据;另一种是通过预先设定灵敏度方式,通过从Vout2引脚输出数据。本次设计应用后一种方式,利用ARM开发板具有输入功能的I/O口采集Vout2脚输出的数据,并送入S3C2410中处理。得到粉尘浓度值后,即可根据DSM501特性曲线计算相应的粉尘粒子数。粉尘浓度及粒子数特性曲线如图2所示,包括极大值和极小值两条曲线。

1.3 LED显示电路

LED显示电路主要实现对于不同粉尘浓度的报警。S3C2410处理器具有117个多功能通用I/O端口管脚,本系统选用GPF4-GPF7端口,并将其配置为输出模式,用于控制开发板上对应的发光二极管D12、D11、D10和D9,根据测量结果的粉尘浓度级别,点亮相应的LED灯,实现粉尘浓度的发光报警。

2 系统软件设计

粉尘浓度监测仪的软件设计工作由以下几个步骤组成:开发环境的建立,主控芯片与传感器之间的数据采集,采集数据的处理,结果的GUI显示及LED灯报警等。

2.1 开发环境建立

⑴系统开发机采用Redhat9操作系统,并构建了NFS文件系统以方便软件开发调试,目标机采用linux2.6.8内核及QT2.3.7共享库,并预装了Qtopia桌面系统。 Linux是一个功能强大而稳定的开源操作系统,已成功运行于数百种硬件平台,对DSM501驱动程序及Qt/Embedded程序有很好的支持,可方便进行系统的移植与开发。

⑵交叉编译环境的建立[3]。驱动程序及系统应用程序编译时,需要建立交叉编译环境。本系统选用cross-3.3.2交叉编译工具,并配置相应的环境变量。

⑶Qt/Embedded开发环境的建立[3]。Qt/Embedded是Trolltech公司开发的面向嵌入式系统的Qt版本。建立Qt/Embedded开发环境首先需要下载Qt/Embedded和tmake源码包,然后将源码包解压并配置相关环境变量,并利用交叉编译器编译Qt/Embedded库。

2.2 系统驱动模块

DSM501模块不需要指令控制,一旦连接电源,模块自动检测空气中的粒子浓度,并以PWM脉宽调制形式输出。本系统使用开发板上的GPH9与DSM501进行通信,根据浓度值分级别点亮GPF4-GPF7所对应的LED灯。

设备驱动程序是操作系统内核与机器硬件之间的接口,它为应用程序屏蔽了硬件细节[4]。编写GPIO驱动程序就是构造一系列可供应用程序调用的函数,如open、release、read和write等。本系统主要函数描述如下:

⑴int gpio_open(struct inode *inode,struct file *filp),配置GPH9端口为输入端口,GPF4-GPF7为输出端口。

⑵ssize_t gpio_read(struct file *file,char _user *buff,size_t count,loff_t *offp),读取DSM501模块输出的数据。

⑶static int gpio_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg),主要控制4个LED的点亮与熄灭。

⑷static int gpio_release(struct inode *node, struct file *file),关闭GPH9,熄灭所有LED。

2.3 数据采集模块

驱动文件成功加载后,需要在Qt环境下编写一个数据采集的程序。

空气中粉尘浓度可以通过低脉冲率计算,低脉冲率:RT=LT/UT×100%,30s为一个周期。该模块主要通过编程定时30s即一个周期,在该周期内,CPU读取GPH9端口的高低电平,并分别计数,该周期结束时计算出低脉冲率,即空气中粉尘浓度。

根据粉尘浓度及粒子数特性曲线及每次测量得到的粉尘浓度,可列出最大粒子数与最小粒子数方程:

最大粒子数 = 浓度 / 2.0;

最小粒子数 = (浓度 -0.83) / 1.17;

将最大粒子数与最小粒子数取平均值可得空气中单位空间的粒子数。

系统把浓度报警分为几个不同的级别,通过点亮不同数量的LED,更加直观地监测粉尘浓度:

⑴粉尘浓度低于10%,为洁净,不点亮任何灯。

⑵粉尘浓度介于10%-20%之间,为污染,点亮D9。

⑶粉尘浓度介于20%-30%之间,为中度污染,点亮D9和D10。

⑷粉尘浓度介于30%-40%之间,为重度污染,点亮D9、D10和D11。

⑸粉尘浓度大于40%,为危险,点亮四盏灯。

软件流程图如图3所示。

2.4 其他模块

本系统为了更加直观方便地观察空气中的粉尘浓度及相应的粒子数,选用Qt/Embedded2.3.7+Qtopia1.7.0集成环境,开发了相应的图形用户界面。图形界面的主要功能有:开始监测,动态显示数据,重置数据,退出等。

粉尘浓度监测仪驱动程序与应用程序开发完成后,用交叉编译器交叉编译生成ARM下的可执行文件,将该文件烧写到开发板的根文件系统内,并配置相应Qtopia桌面系统的环境参数,即可开机独立运行。

3 粉尘浓度监测仪测量结果

采用设计好的粉尘浓度监测仪对室内粉尘浓度进行测量,表1给出了粉尘浓度监测仪对不同实验环境的测量结果,该结果与H-BD5 SPM4110手持式烟尘烟气测试仪测量结果相比较,误差不超过5%。

4 结束语

本系统在ARM-Linux平台上,利用粉尘浓度传感器DSM501实现了基于嵌入式Linux的粉尘浓度监测仪。通过测试,实验结果满足设计的基本要求,到达了系统最初的设计目标。具有体积小、成本低、易操作等特点。随着嵌入式技术的不断发展,相信在不久的将来,会有更多的嵌入式产品出现在我们的生活中。

参考文献:

[1] 申俊泽. 基于FPGA的基础生理参数移动监护研究与实现[D].大庆:北东北石油大学,2013.

[2] 粉尘浓度传感器DSM501用户手册.深圳:深圳新世联科技,2007.

[3] 汪明虎,欧文盛.ARM嵌入式Linux应用开发入门[M].北京:中国电力出版社,2008.

[4] 李亚峰.ARM嵌入式Linux设备驱动实例开发[M].北京:中国电力出版社,2008.

[5] 张春艳.基于QT的嵌入式图形用户界面研究与实现[M].大连:大连海事大学,2008.

上一篇:基于微信的学生资助信息平台研究 下一篇:计算机安全保护策略研究