1 系统硬件设计
甲醛检测仪硬件主要由单片机主控系统、甲醛传感器接口、液晶显示(LCD)、功能键盘、数据存储、打印和报警输出等功能模块构成。系统硬件结构框图(见图1)。
图1: 系统功能框图
该系统采用32 位EFM32TG840F16 单片机作为主控核心,内嵌16KB Flash 程序存储器和4KB RAM、多达160 段LCD 驱动器(最大8COM 驱动、支持动画、闪烁等各种特效)、8 通道/12 位 ADC(支持硬件过采样)、2 个USART(支持SPI\UART\I2S)、1 个LEUART、1 个LESENSE(支持阻、感、容性信号检测)、3 个运放、硬件加解密AES、2 个12 位DAC 及大量的I/O 端口等,完全满足本甲醛检测仪的各项功能需求。该芯片主要特点是:低电压(1.85 ~ 3.8V)、低功耗( EM2 模式下仅有0.9uA)、 32 位指令、高性能(基于Cortex-M3 内核),具有极低的运行功耗、快速的唤醒时间、功能强大、高抗扰(未用引脚都是和MCU 内部断开的)、外设可以自主工作(主要得益于DMA 和PRS 外设反射系统)以及超节能(ADC:12bit,1Msps,仅需350uA;Analog Comparator:仅需100nA;LCD:本位功耗0.55uA;LEUART:9600 波特率下仅需150nA;AES:128/256bit 加/解密仅需54/75 个周期)、便于智能化和便携式等优点。而且齐全的配套开发工具比如开发板具有电流实时监控功能,可以定位代码位置,便于工程师及时优化代码以节能!
1.1 甲醛传感器接口模块
传感器接口模块由CH20/S-10 甲醛传感器、I/ V 转换器RCV420 等组成。甲醛传感器由甲醛探头和CH20 传感器构成。当室内甲醛气体被内部采样系统吸收后,产生与甲醛浓度成正比的电流值,由于单片机A/D 采样的是电压值,而被检测的是微量的电流值;因而需要将电流值放大并转换为相应的电压值。采用集成I/V 转换器RCV420,将电流值转换为对应的0 ~ 3.6V 电压, 送至EFM32TG840F16的A/D 转换接口ADC,实现对浓度信号的检测。单片机进行运算和处理,将处理结果及范围进行查表和分段线性化,完成传感器信号与浓度高低对应。系统中RCV420 具有精密运放和电阻网络功能,能将4 ~ 20mA 环路电流转换为 0 ~ 3.6V 电压, 在无外部调整的情况下,可用获得 86dB 的共模抑制比, 具有高性能及抗干扰能力。
1.2 数据存储与打印模块
在EFM32TG840F16 外扩展2KB 的E2PROM(也可用片内flash 模拟EEPROM),通过I2C 总线与EFM32TG840F16 数据口相连,用于存储采样来的甲醛浓度数据,以备打印机打印。打印机接口电路通过RS-232 串行口直接和微处理器相连,通过采用软件设定的方式打印出甲醛浓度值。
1.3 键盘与显示模块
系统外接键盘和LCD 显示设备,实现人机对话功能。键盘设置为3×3 阵列键盘,设有功能选择键、OK 键、报警确认及打印键,完成浓度显示、数据查询、打印及开关机功能。微处理器EFM32TG840F16 内含LCD 驱动电路,可驱动160 段的LCD,且超低功耗,特别适合便携式仪器仪表中使用。用户通过LCD 显示,读取检测浓度值、打印和设置相关功能等信息。
1.4 其它模块
本系统的供电电压为3V,采用两节电池供电,也可外接3V 直流电源。系统的时钟是外置晶振提供。为满足个性化需要,还增加蜂鸣器报警电路。
2 系统软件设计
在软件设计中采用模块化设计方法,使用嵌入式C 语言编写,在IAR 编译环境中进行。这不仅给程序的调试、修改提供很大方便,而且为今后功能的进一步扩展创造有利条件。
2.1 主程序设计
主程序是系统软件的核心,它通过调用各子程序便可实现系统功能。系统主程序结构框图(见图 2)。
图 2:主程序结构框图
系统上电后,进行初始化和中断处理操作,主要完成系统自检和复位。初始化完成后,开始采样浓度值,并判断是否有按键按下。如果有按键按下,则进行相应数据处理,并执行功能指令,然后在液晶显示屏上显示相应信息。如果没有按键按下,则显示当前实测浓度值,等待用户进行下一步操作,系统转入定时计时阶段。
2.2 低功耗中断子程序
为减小系统功耗,延长电池的使用时间,设计时考虑设备在较长时间段内处于待机状态时,应尽量降低功耗。系统设计低功耗中断子程序(见图3)
图3:低功耗中断子程序结构框图
这里采用一个定时器。当定时器大于0 时,系统处于开机状态;当定时器倒数到0 时,系统自动进入低功耗模式,并关闭LCD 模块和A/D 模块。其中定时器是通过软件对控制寄存器进行设置实现的。具体操作是这样:开机时,对定时器初始化一个大于0 的值,比如60,并且在每按一次有效键时,系统重新初始化这个值。因此,当没有按任何有效键时,60s 后就会自动进入休眠状态,从而实现降耗目的。在休眠期间,若有按键按下,微处理器响应中断,系统退出休眠状态,返回到正常工作状态。
2.3 采样数据处理子程序
为提高检测精度,采样数据处理软件设计是关键。系统采用采样数据排队与中值滤波法。数据排队就是在给定的数据暂存区内不断地用最新数据取代最早数据的过程;利用软件进行数据排队具有通用性和灵活性。原理(见图4)。
图4:采样数据更新排队的双倍暂存区扩展法
由图4 可见, 将暂存区的空间扩大为需要保存数据空间的2 倍, 并将暂存区等分为前后相连的2 个区, 每个区的长度与需保存数据长度相等。当前采样得到的一组新数据同时存入2 个区的对应位置,这样2 组相同采样数据之间刚好间隔1 个区的长度, 间隔内的全部数据连同最后1 个最新数据即为当前排队结果。以后每组新采样数据依次向后存入暂存区, 存满后再从头开始。每次采样周期中完成相应的排队更新任务后记下当前队列的首(或末)地址作为指针并保存,供处理程序取数时使用,这样一来就满足实时排序的要求。
对排队后的数据采取中位值滤波算法。算法的具体实现过程:取N 个连续采样数据,并按照递增或递减顺序排列,取中间值作为本次采样值。中位值滤波算法能有效地克服因偶然因素引起的干扰或波动而产生的误差。即提高系统的检测精度。
3 结束语
本甲醛检测仪采用EFM32TG840F16 单片机作为核心控制单元,电路结构简单、外设功能模块丰富,功耗低,待机时间长,支持IAP 功能,软件升级方便,另外该MCU 性能强劲,可升级空间极大。