一种便携式多参数环境监测仪的设计
每次执行完中断服务子程序返回,在主程序中又重置LPM0低功耗模式,并等待下一个中断事件的到来,如此往复,可使系统多数时间处于低功耗运行。
本设计另一特点是利用MSP430F437的高效查表功能,编制了气体浓度测量的非线性校正和湿度补偿表格,极大地提高了程序运行速度和采集精度。表格的生成是在有限个数据基础上,通过拉格朗日插值进行曲线拟合[3]获得。具体步骤如下:
(1)在湿度5%RH情况下,测量典型气敏传感器在不同气体浓度点C时,ADC12转换存储寄存器中对应的数字量结果Nc。测试中,在10~300ppm范围内等距离取10个浓度点;
(2)使用曲线拟合的方法,并结合关系式(3),拟合出5%RH时数字量Nc与气体浓度C间的连续曲线,将曲线按1ppm的间隔离散化后,存入段25中;
(3)分别在20%RH、35%RH、50%RH、65%RH、80%RH、95%RH的湿度下,重复上述测量与数据处理过程,形成6条不同湿度下的Nc-C的非线性曲线,存在段26~31中。
需要注意:正常时采样得到数字量Nc和当前湿度值后,先查该湿度所在范围对应的上下两条曲线,即根据Nc并使用线性插值得到上下两个气体浓度值,再根据当前湿度并使用线性插值得到湿度补偿后的最终气体浓度值。
3.2 软件流程举例
本检测仪的程序众多。限于篇幅,仅介绍有特色的Flash数据保存于程序以及较为关键的ADC12子程序。
MSP430F437可通过JTAG接口或片内BOOT ROM下载调试修改程序,甚至允许用户程序在运行中将采集处理的数据快速安全地保存到Flash存储器中,而无须任何外接器件。数据保存要用快速的段写入方法和写字节序列模式,写入电流小(3mA),写入速度快(≤25ms/512字节,远超过串行EEPROM的页写速度5ms/16字节),10万写入次数,100年数据保存。每次采集处理完毕,即将16字节/批数据“批号-时间-环境参数”存入段32~63。图3为16字节数据存入的程序框图,其中Lock、Busy、SEG WRT、WRT、Wait是Flash控制寄存器内涉及编程的各控制位或状态位。
ADC12子程序用于环境参数测量。当按下测量键或采样时间到,定时器A的OUT1启动序列通道单次转换,ADC12自行按A0~A3的采样顺序循环采集各环境参数,并将转换结果保存到存储寄存器ADC12MEM0~ADC12MEM11中。序列转换完成后,将置位ADC12中断请求标志ADCIFG。
单片机响应中断进入ADC12子程序后,先关闭测量电源以降低功耗,再读取存储寄存器ADC12MEM0~ADC12MEM11中的转换结果,并使用中值滤波得到各环境参数对应的测量数字值。结合关系式(1)(2)(4)依次计算温度、湿度、光照度的最终结果;对于气体浓度,则使用上述查表格的过程得到结果。各环境参数的测量结果缓存至RAM区,查显示字型表得显示代码并存入LCD存储器,最后判定各环境参数是否超限并刷新LCD存储器中告警部分。
《一种便携式多参数环境监测仪的设计(第4页)》