APP下载

基于CAN总线的PM2.5检测系统

2016-12-22邵文学张凤登

软件导刊 2016年11期
关键词:液晶总线调试

邵文学++张凤登

摘 要:随着人们对空气中PM2.5等污染元素的日益关注,空气质量的好坏已经成为人们生活质量的衡量标准。为了满足用户对PM2.5检测的功能需求,提出了一种基于STM32和CAN总线协议的PM2.5检测系统,该系统通过CAN总线实现数据在各系统中的实时高效传输。对整个系统精度进行试验验证,将PM2.5测量结果与现有测量产品进行对比,实验结果表明,该系统精度高、性能稳定,能快速高效地让用户知晓空气质量,可以应用于家居和工厂等领域。

关键词关键词:PM2.5;STM32;CAN总线

DOIDOI:10.11907/rjdk.162065

中图分类号:TP319

文献标识码:A 文章编号文章编号:16727800(2016)011011803

0 引言

近几年,空气质量问题越来越受到人们的关注。基于STM32的空气检测仪具有高效、便捷、实时检测等优点,能够实时对环境质量进行监控并报警PM2.5的值,将CAN总线应用于智能家居或者工厂能够有效地体现出这些优势。

本文设计了基于STM32和CAN总线的PM2.5检测系统,通过液晶显示屏来显示监测到的PM2.5值,可以高效地反映实时空气质量[3]。

1 系统总体设计

PM2.5监测系统主要由PM2.5浓度测量模块、液晶显示模块、CAN通信模块组成,其主控电路由STM32F103C8T8和其外围电路组成。PM2.5测量模块采用夏普一代PM2.5检测传感器,它将采集到的模拟信号传输给主控芯片,主控芯片经过AD转换获得PM2.5的值,再经过主控芯片相关处理后通过CAN通信模块传输至CAN网络,与此同时,若未接收来自CAN网络的PM2.5信号,则通过液晶显示模块显示接收到的来自CAN网络的值,反之,则显示其自身PM2.5传感器检测到的PM2.5值。系统整体结构如图1所示[5]。

2 硬件设计

2.1 STM32F103C8T8微处理器

STM32F103C8T8是一个32位的微处理器,采用ARMv7的Cortex-M3内核,其时钟频率高达72MHz,使用3.3V供电,具有丰富的外设,内置有CAN控制器,本次设计的PM2.5监测系统需要设计一个CAN节点,CAN控制器内置,只需要外接一个CAN收发器即可,简化了系统实现过程[5]。

BxCAN(Basic Extended CAN)是STM32内置的CAN控制器,它支持CAN协议2.0A和2.0B,bxCAN接口,可以自动地接收和发送CAN报文,支持标准标识符和扩展标识符[1]。具有3个发送邮箱,发送报文的优先级可以使用软件配置,可以记录发送的时间。有两个3级深度的接收FIFO,可以使用过滤发送只接收或不接收某些ID的报文[2]。

2.2 PM2.5传感器

本系统采用夏普的GP2Y1010AU0F。PM2.5传感器的原理:PM2.5传感器中存在一个发光二极管,当灰尘通过传感器时二极管射出的光就会折射回来,通过检测折射的光线来检测PM2.5的浓度[7]。

GP2Y1010AU0F优点是体积较小、功耗低而且可以检测非常细小的颗粒,同时该传感器检测时间较短,尘埃被检测到只需一个脉冲的时间,且还能区分烟和尘埃的区别[4]。

2.3 液晶显示器

液晶显示屏选用的是Nokia5110,该屏具有易于使用、功耗低、价格便宜等优点。

2.4 CAN外围收发器电路

TJA1050是Philips公司推出的总线收发器,应用在通信速率为60kbps~1Mbps的高速自动化系统中。TJA1050是CAN控制器和物理总线之间的接口,可以为CAN控制器提供不同的发送/接收功能,输入电平与3.3V以及5V的器件兼容,至少可以连接110个节点。它有两种工作模式,当STB接地时,TJA1050进入高速模式,如果接的是高电平,则进入待机模式,发送器被关闭,其电路原理如图2所示。

其中,TXD端口和 RXD端口与STM32F103C8T8的PA12口和PA11口相连接。CANH 端口与CANH端口与物理总线相连接,之间接一个120Ω的终端电阻,从而组成一个CAN通信模块。

3 软件设计

系统软件设计主要包括:初始化、PM2.5值的读取、PM2.5值的显示和CAN通信程序。其主体流程如图3所示。

3.1 系统初始化

对整个系统进行初始化配置,它包括系统时钟、串口、AD、GP2Y1010AU0F、液晶初始化和CAN等的初始化配置[10]。其中在CAN模式的配置中需要配置工作时的波特率,在设计中只需配置采样点的位置即可,Tq=1,TBS1=5,TBS2=3,分频器BRP=8。在APB1频率为36MHz的条件下CAN通信的波特率=36 000/[(1+5+3)*8]=500Kbit/s。

3.2 数据采集与打包发送

首先,判断GP2Y1010AU0F采集数据后经过AD转换后的值是否读取成功,若读取数据成功,则调用用户函数CAN_SetMsg()将采集到的数据打包成报文,再调用库函数CAN_Transmit()将该报文广播到CAN网络上。

3.3 PM2.5值采集、数据处理与实时显示

PM2.5检测部分的软件设计:除了各部分的初始化外,最重要的就是单片机对于采集后的数据进行处理,为了能够有效并实时地检测PM2.5的值,单片机必须要能够实时对PM2.5传感器测得值进行采集、处理、显示[6]。起初调试时将数据处理和数据显示都放到了程序的主函数中,虽然在电脑的串口显示程序中AD所采集的数据能够实时上传,但是在屏上显示的数据变化太快肉眼无法看清,加上延时函数后,显示问题虽然解决,却影响了数据采集,因此将数据采集和显示放在了中断函数中,这样可解决这个问题。

程序采用定时中断采集的方法,定时时间为10ms左右,根据调试时单片机所测得的数据,观察可知10ms定时所采集的数据较为合适。

采集的数据需要进行处理,发现PM2.5传感器输出的电压值,在一个周期中有一个最大值,与其余的较大值有很大差值。当有烟雾时,变化巨大的只有那个最大值,所以只有对其最大值进行数据分析才能够准确地知道PM2.5的浓度。在中断程序设计中,首先对PM2.5输出的模拟量进行采集,对采集的电压值进行大小排序,保存每组40个数据中的最大值一共保存5组,对这5组数据进行平均滤波,将处理后的数据跟无尘时的数据进行比较,保存大于无尘时的数据,然后再通过液晶显示。这种数据处理方式不仅增加了整个系统的稳定性,而且对于空气质量的检测也较为精准。

显示时首先判断是否接收到CAN网络里的数据,采用中断接收方式。若接收成功,则轮询标志变量flag变为0,表示成功接收到了数据,液晶实时显示接收到的数据;反之,则液晶实时显示自身PM2.5传感器采集到的数据。

4 调试与仿真

本次设计使用了Keil μVision4进行软件调试,使用Altium Designer画出系统原理图的pcb线路板,进行打样;将元器件焊好,用JTAG将程序烧录好进行实物调试[8],使用Vector公司所生产的CANoe进行节点调试,如图4所示。

测试结果表明,该节点能够实现数据的接收和发送,最后进行有烟和无烟的实物调试,其调试结果如图5所示,左边实现的是无烟时,显示PM2.5值,右边实现的是有烟时[9]。

5 结语

本文进行了基于STM32和CAN总线协议的PM2.5检测系统设计,经过软件和硬件调试,能够很好地实现设计要求。实验表明,该系统精度高、性能稳定、实时性好,在智能家居或者工厂中具有很好的应用前景。

参考文献:

[1] 饶运涛.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2003.

[2] 初秀荣.基于CAN现场总线测控网络系统研究[D].青岛:青岛大学,2007.

[3] 王寅,王卉.PM2.5现状及其检测技术[J].资源节约与环保,2014(12):138139.

[4] 王昊,孔令荣.PM2.5浓度无线检测系统设计[J].电子科技,2015,28(7):133136.

[5] 周航慈.单片机应用程序设计技术[M].北京:北京航空航天出版社, 2005:2532.

[6] 张旭,亓学广,李世光,等.基于STM32电力数据采集系统的设计[J].电子测量技术,2010,33(11):9093.

[7] 程军.传感器及实用检测技术[M].西安:西安电子科技大学出版社,2005:3645.

[8] 何希才.传感器及其应用实例[M].北京:机械工业出版社,2005:8998.

[9] 杨世兴.监测监控系统原理与实用设计[M].北京:中国电力出版社,2004:4556.

[10] 格列波夫.气体净化设备的监测和自动控制[M].北京:中国科学技术出版社,2006:96102.

(责任编辑:孙 娟)

猜你喜欢

液晶总线调试
不可压液晶方程组的Serrin解
《液晶与显示》征稿简则
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
基于航拍无人机的设计与调试
FOCAS功能在机床调试中的开发与应用
无线通信中频线路窄带临界调试法及其应用
调压柜的调试与试运行探讨
液晶与显示2015年第30卷第1期 目录
多通道ARINC429总线检查仪