APP下载

基于STM32的便携式海量温湿度记录仪设计 *

2012-08-13易金聪

电子技术应用 2012年12期
关键词:海量结点低功耗

罗 超,景 林,易金聪

(福建农林大学 计算机与信息学院,福建 福州 350002)

温湿度信息在实验室、仓储、货运、建筑及农林医药等众多场合作为重要的参数,需要对其精确测量,并期望能记录相关数据供后期读取、分析及可追朔之用。

温湿度信息的采集常用的方法有两种。早期单片机完成数据采集,由上位机对数据进行记录、分析;市场主要产品把数据记录在EEPROM、Flash或U盘等存储介质中,利用计算机通过特定软件查看导入数据。前者完全依赖 PC,数据方便保存为 excel、txt、word的文件格式,数据处理方便、快捷,并有利于与其他监控系统结合,但不适用于没有或不方便接入PC机的应用场合[1];后者摆脱了计算机独立工作,具有便携等优点,但受存储容量的限制,记录最多几万条,无法满足常年或多年记录需求,同时需要特定读取软件,造成使用不方便。其中U盘作为存储介质的,需开发USB主机,实现复杂、成本高,且读/写U盘耗电量较大[1],不适合便携式。

鉴于温湿度记录仪发展现状,结合既有产品的优缺点,本文研究了一种以 STM32F103为核心,NTC、HS1101为温湿度传感器,TF卡为存储载体,LCD点阵等构成硬件;Fireware固件程序、FAT32文件系统及外设驱动构成软件系统,数据以txt文件存储的便携式海量温湿度记录仪方案。具有不依赖PC、海量存储、无需专门软件读取、低功耗、高精度、便携式、使用方便等特点。

1 硬件电路设计

硬件采用STM32F103微处理器,包括DC-DC电源管理、LCD、TF卡、键盘及HS1101和NTC温湿度传感器模块。系统总体结构框图如图1所示。为满足便携式和电池供电,器件选型、硬件电路、软件均考虑低功耗设计。

1.1 微处理器

微处理器 STM32F103[2]是 ARM CortexTM-M3内核的32位低功耗 MCU,工作电压 2.0~3.6 V,主频达 72 MHz,1.25 DMIPS/MHz。有睡眠、停机和待机三个低功耗模式。内括 12 bit的 ADC、DMA控制器;支持定时器、ADC、DAC、SPI、I2C、UART 等外设;提供欠压复位、ECC、MPU、侵入监测、双看门狗、32位CRC、I/O端口保护和JTAG熔断器等安全功能。综合各项参数,STM32F103RB是本方案最适合的微处理器之一。

图1 系统总体框图

1.2 电源电路设计

为考虑便携式设计,电源供给采用两节5号电池。电路中存在精密传感器,对电源恒压及干扰信号隔离有严格要求,结合MCU、LCD、TF等外围供电考虑,主电源定为3.3 V。因电池电压工作会变化及效率等因素,对多种电源方案实验比较,选用Analogic公司AAT1265-3.3[3]DC-DC,输入电压 0.8 V~3.3 V,提供电流达 250 mA,理想效率超过93%。

电路如图2所示,VDD1为输入的电池电压,可在0.8~3.3 V之间,输出为稳定3.3 V。实验测试发现,波动在±0.05 V范围以内,负载效率均在90%以上,是理想电源方案。

1.3 温度电路设计

温度传感器选用千分之一NTC M58模拟温度传感器,R值10 kΩ、B值 3 450。具有高性价比、高精度、测温范围广、线性好等优点。

电路如图3所示,标准电阻 R(10 kΩ,0.1%)与 Rt分压,得到与温度有关的电压送至 MCU的 ADC,0.1 μF去耦滤波。

1.4 HS1101湿敏电路设计及一致性调试

HS1101[4]是 Humirel公司的湿敏电容,测量范围 0%~100%RH(162~200 pF),曲线精度±2%RH(10%~90%),湿度系数 0.34 pF/℃,年漂移量 0.5%RH/年,工作温度-40~100℃,具有线性度好、稳定性高等特点。

通过555定时器将电容值变换为频率信号,电路如图3。其中R11、R4均选1%精密电阻,输出与湿度有关的频率信号送至MCU。

HS1101出厂前并没有进行一致性筛选,实际使用时,需要用精密LCR仪进行批次筛选以保证批量产品的一致性,设计中随意抽取一批湿敏电容,用LCR仪10 kHz档位在HUM-SA恒温恒湿箱25℃ 55%环境下测试的结果如表1。

表1 HS1101筛选结果(25℃,55%)

可见直接量产误差会很大,本设计的实验选用C1、C4、C7三个样本,即可达到±2%的一致性,可见测试结果分析。

1.5 LCD及其他外围电路

LCD为 128×64点阵,采用 ST7565R控制器,自带升电压,外围只要极少升压电容,工作电压3.3 V,SPI通信方式,电路如图4所示。

2 系统软件设计

综合MCU芯片资源、功能需求等,以ST官方STM32F的Fireware为基础,加上各种驱动程序、温湿度处理算法、fatfs、自编库函数、UI做为整体软件系统,软件逻辑层次与功能定义如图5所示。

2.1 Driver及LIbrary

最底层为硬件,Driver层参考STM32硬件寄存器及SPI、I2C等相关协议时序,设计所有硬件外设的驱动,通过驱动APIentry为上层软件系统和应用提供服务。官方 Fireware中已定义了 GPIO、DMA、A/D、I2C等标准协议,只需完成初始化即可调用,这些资源为软件设计带来了极大的便捷。

LCD、TF、时钟采用 SPI,为兼容处理,根据 SPI时序自编驱动。

ST固件中本身自带了DMA、ADC等库函数,参照此思想,本设计中加入 TF、FATFS、UI、温湿度算法的自定义函数库,这种架构设计,有利于较复杂的功能层次分明、模块化,为在单片机上实现复杂的文件系统等操作提供了可行的方案。

2.2 FATFS文件系统移植

FatFs是一个开源的FAT文件系统模块,遵循ANSI C,经过简单的修改即可移至多种嵌入式微处理器上,具有代码量小、不依赖于硬件平台等特点,国内有ZNFAT等模块。

FatFs层次分明,顶层为应用层,为用户提供了一系列 API函数,如 f_open、f_close、f_read、f_write 等,无需理解FAT即可用其API读写/文件。中间层FatFs Module完整地实现了FAT协议,无需任何变动。

最底层是用户在移植过程需要处理的接口,包括存储媒介读/写接口DiskIO和文件创建修改时间时所需的实时时钟。本设计只需将TF驱动接口函数、SPI通信函数、RTC时钟接口函数配置好即可完成移植。

2.3 温湿度处理

2.3.1 温度分段线性插值法

MCU自带12 bit ADC转换器将测得温敏电阻值转换为数字量,利用事先转换好的标定分度电阻与A/D值数据表,通过分段线性插值法[5]算出温度。由于温敏电阻曲线非绝对直线,为提高精度,采用多点标定得到一

其中,rad是转换后 A/D值,n为 12 bit,r是温度阻值,其值与温度对应,rv是标准电阻,∂为校正常数。

分段线性插值的原理是设已给出一系列离散结点x0<x1< …<xn上函数值 y0,y1,…,yn。 选取离插值点 x距离最近的插值结点xk来计算函数y值。 分段线性插值的公式为:个标定分度表,选1度作为标定分度。实验证明,这种方法简单、精度高,校正方便。

标定分度电阻与A/D值转换方程为:

具体的插值过程是:从小到大逐个取各结点与插值点比较,如插值点 x不超过 x1,则取 x1与 x0进行插值,并在公式(2)中令 i=1,计算 y值;否则再检查 x是否超过 x2,……如此逐个检查下去,一旦发现 x不超过某个结点 xk,则取与它前面的一个结点 xk-1进行插值,即在式(1)中令 i=k,计算 y值。如果发现x超过某个结点xn-1,则不管 x是否超过xn,插值结点均取 xn-1与 xn进行,即在公式(2)中令 i=n,计算 y值[6]。

2.3.2 湿度测量

MCU可采用中断或定时器边沿频率捕获的方式测出湿度频率信号,考虑稳定性和整体程序不被频繁中断扰乱,选择用定时器频率捕获的方式。

HS1101线性非常好,因此用表2的标定湿度与频率分度表做分段线性插值法即可,原理同上,只是需要加上温度补偿即可,影响值约为0.04 pF/℃。

表2 温、湿度测量结果

2.4 UI设计

开辟一段连续的内存空间n(n为总界面数),每一个内存空间存放一个界面函数的函数指针,界面函数调用只需切换该段内存空间的位置,就能实现界面切换。同时给界面函数传递的参数,也是以数据包指针的形式进行传递,包括要显示的数据,需要被界面设置的参数等[6]。定义如下指针函数:

改变指针值即可换界面,实现简单,UI效果良好。

3 测试及实验结果

产品研制后,经过半年多测试,功耗、精度、稳定性、海量记录等实验得到结果如下。

(1)功耗:待机电流 0.2 mA左右,工作电流 41 mA左右,据实测的情况,南孚电池工作60 h以上,符合便携式、低功耗设计要求。

(2)精度:温度通过多点标定及分段线性插值处理,平均误差小于±0.2℃,见表2。

湿度通过前期的一致性和温度补偿等处理,解决了人们遇到的HS1101线性好但一致性差的问题,随机样筛选后在恒湿机里测得的误差小于±2%。

(3)记录:整机以 6 s记录间隔测试 5个月,记录稳定,无任何出错,计算机、手机、IPAD查看记录均流畅。以4 GB TF卡为例,可存储记录约3 600万条(5千条记录占0.55 MB)。以1min间隔为例,可记录6年以上。实现海量记录,克服市场主要产品几万条记录的限制。

本设计通过设计开发、制作产品测试,实验结果表明该方案适合便携式,技术较前沿,具有海量存储、精度高、成本低、使用方便等优点。

[1]余善恩,郭淼,傅国定.基于SD卡存储的便携式温湿度记录仪[J].机电工程,2009,26(11):87-90.

[2]Stmicroelectronics Inc.STM32F103 Datasheet[EB/OL].[2011-05-19].http://www.st.com.

[3]Analogic Inc..AAT12565 3.3JS Dataheet[EB/OL].[2009-06-10].http://www.Analog.com.

[4]Sensirio Inc.Sh1101Datasheet[EB/OL].[2009-07-04].http://www.sensirion.com.

[5]沈国春,张爱花,李拥军.分段线性插值在超声成像测井数据处理中的应用[J].测井技术信息,2006,19(2):30-32.

[6]谭浩强.C语言程序设计(第三版)[M].北京:清华大学出版社,2007:11-36.

猜你喜欢

海量结点低功耗
一种傅里叶域海量数据高速谱聚类方法
基于八数码问题的搜索算法的研究
一种高速低功耗比较器设计
海量快递垃圾正在“围城”——“绿色快递”势在必行
一种用于6LoWPAN的低功耗路由协议
Ladyzhenskaya流体力学方程组的确定模与确定结点个数估计
一个图形所蕴含的“海量”巧题
ADI推出三款超低功耗多通道ADC
基于Raspberry PI为结点的天气云测量网络实现
IDT针对下一代无线通信推出低功耗IQ调制器