基于STM32的手持式测氧仪设计*

2016-06-13 08:43柯沪琦胡燕海
传感器与微系统 2016年3期

魏 威, 柯沪琦, 胡燕海

(1.宁波大学 机械工程与力学学院,浙江 宁波 315211;2.宁波戴维医疗器械股份有限公司,浙江 宁波 315712)



基于STM32的手持式测氧仪设计*

魏威1, 柯沪琦2, 胡燕海1

(1.宁波大学 机械工程与力学学院,浙江 宁波 315211;2.宁波戴维医疗器械股份有限公司,浙江 宁波 315712)

摘要:针对国内传统手持式测氧仪精度低、功耗高的问题,提出了采用嵌入式微控制器STM32F103RBT6作为控制芯片的手持式测氧仪。该仪器通过控制元器件的开断来降低待机功耗,根据所测浓度人工切换系统放大倍数,通过键盘设置时间和报警值等相关参数。算法上采用中位值平均滤波算法进行软件滤波,结合传统两点标定法和多点标定法的优缺点,采用多点标定法进行氧浓度标定,采用分段斜率拟合算法计算氧浓度值。经实验测试证明设计的手持测氧仪具有高精度和高稳定性。

关键词:手持式测氧仪; 中位值平均滤波; 多点标定; 分段斜率拟合

0引言

人类的生存离不开氧气,正常状况下大气中的氧气含量大概在21 %左右,当氧气含量下降到18 %左右,人体呼吸则会加快,与此同时肢体的动作协调性则会变差。当氧气含量降到10 %左右时,人类就会出现头晕恶心的症状并且很快丧失意识陷入昏迷。更严重的是,当它的浓度小于6 %,人就会很快停止呼吸[1]。可见,方便准确实时地检测出环境中氧浓度有非常重要的意义。

国产多为便携式氧浓度检测仪8位单片机控制,为此,本文设计了一种采用STM32F103RBT6和相关元器件构成的手持式测氧仪,该仪器具有低功耗、高精度和高稳定性的特点。

1总体方案设计

考虑到设备的便携性和对测试精度的高要求,设计采用嵌入式系统ARM微控制器STM32F103RBT6作为主控芯片。外部氧浓度传感器所检测的数据信号经过放大滤波电路输送到STM32内部的A/D转换,通过按键和液晶显示屏来实现氧浓度和时间等参数的显示和存储,通过蜂鸣器来实现超限报警和电池低电量报警的功能[2]。系统结构框图如图1所示。

2硬件电路设计

2.1单片机最小系统

本文设计采用的是低成本、低功耗和高性能的嵌入式控制器STM32F103RBT6。它采用的是ARM32位Cortex—M3微处理器,内部有128 kB的FLASH程序存储器和20 kB的RAM,内置RTC可实现时钟的功能,54个I/O端口,其含有丰富的外设,包含8个定时器,3个USART接口,2个IC接口,2个SPI接口,1个CAN接口,1个USB2.0全速接口,2个16通道12位A/D转换器(1 μs转换时间)等。它在性能上比传统的51单片机要更加优秀,功耗则更加低,相比于同类型的高性能控制芯片也具有一定的优势,是市场上性价比非常高的32位单片机[3]。

图1 系统结构框图Fig 1 Block diagram of system structure

2.2氧传感器及其信号处理电路

目前市面上用于检测氧气体浓度的传感器主要是电化学氧传感器和氧化锆氧传感器。前者利用电化学原理来测定氧浓度的大小,其内部是由阴极和阳极以及氯化钾(KCI)或氢氧化钾(KOH)电解液以及氧扩散膜组成,氧气通过膜扩散进入电解液与阴极和阳极构成测量回路,通过氧气与内部的电解质在阴阳极发生氧化还原反应,使阳极金属离子化,释放出电子。因电流的大小与氧气的量成正比,从而输出不同的电流。当电流经过固定电阻时,转换成电压信号[4]。后者则是利用高温下氧化锆是氧离子(O2-)的良好导体的特性,在氧化锆管内外涂上铂金(Pt)形成两个电极,一个电极对着空气,一个则对着被测气体,当温度达到650 ℃时,O2-则会在管上运动从而形成电压差,这个电压差与空气和被测气体之间的氧气差相关[5]。然而后者对温度的要求比较严格,且不满足便携和实时的要求,因此,本文设计采用了电化学氧传感器。

设计使用的传感器内置热敏电阻进行温度补偿,在正常条件下输出的电压范围仅为13~16 mV,因此,需要对该信号进行放大滤波处理,信号处理电路如图2所示。

图2 信号处理电路Fig 2 Signal processing circuit

传感器信号进入放大电路之前先经过模拟选择开关CD4053,STM32通过模拟开关的使能管脚来控制通断电。通过模拟开关的选择来实现运算放大器的通电和断电切换、接氧传感器和接地的切换以及检测仪放大倍数的切换[6]。本文设计选用的是具有低失调电压漂移、高输入阻抗、高转换速率和低噪声的TLC277精密双运算放大器,其功耗低,低压单电源工作非常适合电池供电,而且通过模拟开关选择作用可实现它的断电,从而来降低设备待机时的功耗。最后传感器信号经过TLC277的2次放大之后送入单片机内置的A/D转换器。

3软件设计

设计中采用C语言来编写相应的主程序和子程序。软件程序包括STM32初始化程序、设备初始化程序、实时时钟显示程序、各级菜单显示程序、LCD显示程序、报警程序等。系统开机初始化后就直接进入了氧浓度的测量显示界面,一旦检测到有按键按下,则根据相应的程序进入到对应的菜单界面或者进行参数的设定。设计中采用中位值平均滤波算法来处理A/D转换值,然后根据标定值采用分段斜率拟合的方法来算出对应的氧浓度值。

3.1中位值平均滤波

为了更好地去除测量过程中产生的脉冲等干扰,本文设计采用中位值平均滤波算法来进行软件滤波,从而来减小系统的随机误差。中位值平均滤波充分结合了中位滤波和算术平均滤波的优点,这种算法将采集到的数值进行从小到大或者从大到小的排序,然后去除掉最大值和最小值,对剩下的数取平均值。

外部氧传感器所测数据经过STM32内置A/D转换器转换之后,被STM32采样,取其中10个数据,对它们按照从小到大排序,舍去当中的最大值和最小值,最后对剩余的8个数据求平均值,这样就可以更好地去除干扰,保证数据的准确度。

3.2传感器的多点标定

为了保证氧浓度测量的准确性,设计中采用多点标定的方法来进行传感器的标定。气体传感器系统的标定方法有两种,一是两点标定,另一种是多点标定。两点标定就是只需要取测量量程的两个端点作为标准值,但是这种方法在量程的两端的误差比较低,中间位置则比较高。为了减小输入量程中点的误差,出现了最小误差量原则的标定法,该原则使得标定点的输入和理论计算的输入之间的误差在整个量程范围内最小[7]。这种方法所选定的两个标定点是关于量程的中位值对称的,这样一来就可以大大提高量程中点的精确度,但是这也会导致两端点的误差变大。

多点标定则是选取多个点作为标准值,然后根据最小二乘法来拟合出输入输出特性方程,把所得AD值代入该方程,从而得到相应的气体浓度值。这个方法虽然精度比较高但是计算复杂,不利于在现场进行实时标定。

综合这两种标定方法的优缺点,为了保证系统测量数据的精确性和系统标定的方便实时性,这里采取0 %,10 %,21 %,30 %这四个点作为标定点,然后根据这几个点把输入输出曲线分成3段,对每一段采取两点标定的计算方法来进行输入输出方程拟合。

3.3氧浓度的分段斜率拟合算法

根据传感器标定所得的4个点,以及它们所对应的A/D转换值,便可以计算出对应每段的斜率。具体过程如下:当单片机输出控制信号,使得模拟开关接地,此时内置A/D转换器所得值便是0 %氧浓度所对应的A/D转换值;相反,则可通过单片机控制模拟开关接氧传感器,然后分别通10 %,21 %,30 %的标准氧气便可得相应浓度所对应的AD值。把它们看成4个坐标A(x0,0),B(x10,10),C(x21,21)和D(x30,30),然后计算AB,BC以及CD三段的斜率从而拟合出各段所对应的输入输出特性方程为

(1)

只要在程序中判断测得AD值属于哪段范围,代入对应的特性方程便可得到最终的氧浓度值。这种算法可以使得用户能够在现场方便地进行0 %和21 %两点的实时标定,条件允许的情况下,还可自己进行其它两点的标定。

4测试结果

本文针对氧浓度检测仪的精度和稳定性两方面进行实验,并与国家标准进行对比分析,其测量数据如图3和图4所示。

图3 室温10 %氧气测量数据曲线图Fig 3 Measurement data curve diagram of 10 % oxygen atroom temperature

图4 室温空气测量数据曲线图Fig 4 Measurement data curve diagram of airat room temperature

从图3中可以看出,测量较低浓度时,提高放大倍数,可使仪器测量误差更低,数据结果更稳定。从图中还可看出,本文设计的测氧仪所测数据最大误差为0.2 %,小于0.7 %的国家标准,达到了高精度测量的要求。同时可以看出,在1h内其测量数据的波动范围最大为0.3 %,也小于0.7 %的国家标准,达到了高稳定性的要求[8]。

5结论

本文主要介绍了一种基于32位单片机的便携手持式测氧仪,可实现氧浓度实时测量。通过采用四点标定来进行输入输出曲线的分段斜率拟合,使得该仪器测量误差和波动范围远远小于国家标准,具有高精度和高稳定性的特点。在氧浓度值比较低的情况下,可通过模拟开关的选择作用,切换不同的放大倍数,提高测量的精度值。通过多个菜单的设计显示,很好地实现了人机交互功能,待机功耗低体积小便于携带,可广泛用于温室和培养箱等简单环境中氧浓度含量的检测。

参考文献:

[1]黄河.氧气对健康的影响[EB/OL].(2013—01—12).http:∥www.docin.com/p—579793764.html.

[2]闻明,张策.便携式二氧化碳检测仪的设计[J].传感器与微系统,2011,30(7):95-99.

[3]刘梦星,叶树明,许志.便携式医疗电子仪器设计中的MCU选型分析[J].中国医疗器械杂志,2014,38(3):202-206.

[4]王伟,董爱华.基于单片机的多功能测氧仪设计[J].仪表技术,2010(10):14-16.

[5]黄睿.智能氧化锆测氧仪的研究与设计[D].武汉:武汉科技大学,2006.

[6]史运涛,高金山,杨春勇.基于MSP430的手持式氧浓度测量技术[C]∥第二十四届中国、网络、信息技术、电子、仪器仪表创新学术会议,2010'IT,天津,2010:7-11.

[7]余学锋,于杰.传感器系统的二点标定新方法及其分析[J].电子测量技术,2008,31(4):134-137.

[8]HG23007—92.氧气检测报警技术条件及检验方法[S].1992.

Design of handheld oxygen analyzer based on STM32*

WEI Wei1, KE Hu-qi2, HU Yan-hai1

(1.College of Mechanical Engineering and Mechanics,Ningbo University,Ningbo 315211,China;2.Ningbo David Medical Device Co Ltd,Ningbo 315712,China)

Abstract:Aiming at problem of low precision and high power consumption of domestic traditional handheld oxygen analyzer,an oxygen analyzer that adopts embedded microcontroller STM32F103RBT6 as control chip is put forward.Standby power consumption can be reduced by controlling opening and breaking of components,system magnification can be manually switched according to measured concentration,time and alarm value and other related parameters are set through keyboard.The median average filtering algorithm is used to carry out software filtering in algorithm,combined with advantages and disadvantages of traditional two-point calibration method and multi-point calibration method,use multi-point calibration method to realize calibration of oxygen concentration,oxygen concentration value is calculated by using piecewise slope fitting algorithm.Experimental test proves high precision and high stability of this design.

Key words:handheld oxygen analyzer; median average filtering; multi-point calibration; piecewise slope fitting

DOI:10.13873/J.1000—9787(2016)03—0074—03

收稿日期:2016—01—22

*基金项目:宁波市重大科技专项项目(2015C110033)

中图分类号:TM 930

文献标识码:A

文章编号:1000—9787(2016)03—0074—03

作者简介:

魏威(1993-),男,浙江宁波人,硕士研究生,主要从事机械电子产品的研究。