摘要:提出了一种针对无线数据传输问题的解决方案,该方案基于nRF24L01来设计无线温度采集系统。该系统采用低功耗、高性能单片机STC12C5A08S2和温湿度传感器DHT11来构成多点、实时温湿度监测系统,最后在PC机上完成配置、显示和报警等功能。该系统使用方便,扩展十分容易,可广泛应用于各种工农业生产和养殖等场合。
0 引言
在当今的工农业生产中,需要进行温湿度采集的场合越来越多,准确方便地测量温度变得至关重要。传统的有线测温方式存在着布线复杂,线路容易老化,线路故障难以排查,设备重新布局要重新布线等问题。特别是在有线网络不通畅或由于现场环境因素的限制而不便架设线路的情况下,给温湿度的数据采集带来了很大的麻烦。要想监测到实时的温湿度数据,就必须采用无线传输的方式对数据进行采集、发送、接收并对无线采集来的数据通过上位机进行处理,以控制并监测设备的运行情况,减少不必要的线路设备开支。
1 系统组成框图
本文设计的多路无线温湿度检测系统将单片机检测控制系统和射频通信系统相结合,系统由主机和从机两部分构成,从机负责检测温湿度,并将采集到的数据通过射频系统发送给主机,主机接收从机发送过来的信号,并通过串口和PC机进行通信,记录数据。同时可通过PC机设定报警数据上下限。其系统组成框图如图1所示。
图1 系统组成框图
2 系统硬件电路
系统的温湿度数据采用数字式温湿度传感器DHT11进行数据采集,以51系列增强型单片机STC12C5A08S2为核心和无线射频nRF2401构成收发电路,从机使用液晶LCD1602显示,主机显示则使用LCD12864,整个显示系统可与PC上位机相连接。
2.1 温湿度采集电路设计
DHT11是一款含有已校准数字信号输出的温湿度复合传感器。该传感器应用专用的数字模块采集技术和温湿度传感技术,具有极高的可靠性与卓越的长期稳定性。图2所示为其温度采集电路。DHT11传感器包括一个电阻式感湿元件和一个NTC测温元件,可与高性能8位单片机相连接。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的过程中可调用这些校准系数。单线制串行接口可使系统集成变得简易而快捷,而且信号传输距离可达20m以上。当连接线长度短于20m时,应使用5kΩ上拉电阻,大于20m时,应根据情况使用合适的上拉电阻。
图2 温度采集电路
2.2 无线发射、接收电路设计
nRF24L01是NORDIC公司生产的一款无线通信芯片,采用FSK调制方式,内部集成有NORDIC自己的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度可以达到2 Mb/s.NORDIC无线发射、接收芯片nRF24L01的电路原理图如图3所示。
图3 无线发射、接收原理图
nRF24L01是单片射频收发芯片,工作于2.4~2.5 GHz的ISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。nRF24L01芯片的能耗非常低,以-5 dBm的功率发射时,工作电流只有10.5 mA,接收时的工作电流只有18 mA,它具有多种低功率工作模式,节能环保,设计方便。
nRF24L01无线收发模块的各管脚功能如表1所列,图4所示是nRF24L01与单片机连接时的电路图。
图4 无线模块与CPU连接电路图
本无线发射接收模块需要的电源为1.9~3.6 V,本系统中采用3.3 V直流电源来直接对无线发射接收模块供电,5 V电源经。ASM1117-3.3芯片转换后可得到稳定的直流电源,其电源转换电路如图5所示。
图5 无线模块电源转换电路
2.3 串行通信模块
主机单片机接收到nRF24L01的数据后,经MAX232电平转换可实现单片机程序下载与升级,同时可实现单片机与PC机(上位机)的通信,以便将显示数据信息通过此电路传送到PC机,并存PC机上显示,其串行通信电路如图6所示。
图6 MAX232CPE与PC的串口通信电路
3 软件设计
3.1 下位机软件
本系统使用C语言编程,应根据设计任务的要求确定系统程序的完整结构,尽可能采用模块化程序设计方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,系统的软件设计可以分为几个部分,首先是各个模块的底层驱动程序编写,而后是系统联机调试,最后再编写上位机的系统程序。
主程序是控制和管理的核心,系统上电后,首先进行初始化,系统开始正常运转后,再进行温、湿度的监测与处理等操作。
3.2 上位机软件设计
系统上位机能完成的功能有显示串口号,提示串口是否已被成功打开;同时,上位机能够与下位机同步显示温度,而且能够实时曲线显示温度;上位机能够设置下限温湿度和上限温湿度,当高于上限温湿度或低于下限温湿度时,还能够报警。将主机单片机的控制电路串行接口与电脑串口经过电平转换连接后,选择正确的通信协议,设置好波特率,即可进行通信。图7所示是上位机操作界面图。
图7 上位机操作界面
上位机软件可在PC机上通过VC6.0编写,主要是对MSComm控件及CserialPort类进行操作。
首先是串口设置。本系统利用的是CSERIALPORT类中的初始化函数InitPort (this,nport,nbtl,‘N’,8,1,m_dwCommEvents,512)。其巾nport为串口号,nbtl为波特率,可利用串口设置对话框中的串口号和波特率两个组合框分别得到初始化函数中的nport和nbtl.
其次是对温湿度上下限的设置。可利用CSERIALPORT类中的启动串口监测进程函数Start Monitoring、发送字符串函数WriteToPort以及关闭串口进程StopMonitoring来进行温度上下限的设置,其信息通过这些函数发送到串口,单片机从RS232上收到数据后,与自身的温度相比较,再进行相应的处理。
第三是曲线显示。动态曲线显示可利用CHistogram类中的SetRange(200,400),SetPos(temp)函数,SetRange设置上下极限值,SetPos是在图上显示相应的数据点,temp是从单片机传来的温湿度数据的处理结果,具体的移动曲线可由CHistogram类中函数实现。
4 结论
经测试,在发射接收模块没加天线的情况下,无线发射接收模块在大多数情况下的数据传输距离在200 m左右,发射头发射功率、接收头接收灵敏度等因素可能会影响传输距离,若外加天线,则会大大增加传输距离。另外,在调试过程中,振荡电阻必须匹配,否则接收距离会变短甚至无法接收。
本系统的数字信号由单片机采样,基于DHT11的数字温湿度传感器构成的实时监控系统具有精度高、抗干扰能力强、电路简单等诸多优点。然后利用单片机与PC机的通信可将数据送到PC机进行数据的存储、后期处理与显示。本系统数据处理功能强大、显示直观、界面友好、性价比高,可广泛应用于工业控制、仪器、仪表、农业养殖及智能家居等诸多领域。
二、基于FPGA的数字示波器设计
随着信息技术的发展,对信号的测量技术要求越来越高,示波器的使用越来越广泛。模拟示波器使用前需要进行校正,使用比较麻烦;而数字示波器,由于受核心控制芯片的影响,对输入信号的频率有严格的限制。基于FPGA的数字示波器,其核心芯片可达到50万门,配合高速外围电路,可以测量频率为1 MHz的信号,有效地克服了以往示波器的不足。
1 系统方案设计
设计的数字示波器系统主要使用了Xilinx系统的开发环境,并在此环境内部建立了AD采样控制模块、键盘控制模块、VGA显示模块等多个模块,从很大程度上减少了硬件电路的搭建,也因此提高了系统的稳定性和可靠性,系统框图如图1所示。
另外,设计使用XPS将32位的MicroBlaze微处理器嵌入到了FPGA中,实现了可编程片的嵌入以及在可编程片上的系统设计。MieroBlaze通过LBM总线访问片上的存储模块BlockRAM,然后通过OPB总线上挂接外设进行接口连接和驱动。
VGA显示部分采用双缓冲机制进行工作,在FPGA内部建立RAM,按照一定时序降RAM内的缓存数据映射到VGA显示屏上。
2 硬件设计
2.1 信号调理电路模块
信号调理电路模块,对输入的模拟信号进行处理,由于输入电压幅度为-2.5~+2.5 V之间,而后一级的AD模块采用了12位的高速A/D转换芯片ADS804,只能对0~2 V的电压进行模/数转换,故需要将输入电压先抬升为0~5 V,在应用运算放大器进行比例缩小,达到0~2 V的模数转换要求。
2.2 A/D转换电路
A/D转换模块采用存储采样数据的并行数据处理方法,这样可以使硬件电路得到最大程度的简化,同时也提高了系统的稳定性。AD部分的采样,选用实时采样技术。能够捕获到单个信号。采样速率为10 MHz,即在最高频率1 MHz时,实时采样可以在每周期采10个点以保证取到一个完整的信号波形。
2.3 触发电路模块
触发电路模块属于外触发,对模拟信号实现任意电平触发,该模块采用电压比较器来实现单次触发。
2.4 存储模块
存储模块包括内存储和外存储两部分,使用外部电路进行搭建的为外存储,内存储在软件部分进行说明。
外部非易失性存储器模块采用存储容量为16 KB的E2PROM芯片24C128,该芯片作为手动存储的存储介质,从而实现掉电不丢失的设计目的。
2.5 VGA显示模块
VGA显示模块是建于FPGA内的双缓冲机制,由嵌入的MicroBlaze软核进行控制,能够进行多个页面间的切换。另外,每个界面,可以实现中文信息、彩色通道和所测输入波形的显示,并可控制显示内容的显示颜色。
2.6 键盘模块
4×4矩阵键盘模块实现人机交互。
通过键盘,可以对示波器的数字通道、模拟通道、混合通道、存储、回放、波形左移、波形右移等功能进行选择。
3 基于FPGA的软件设计
FPGA的硬件主要包括:触发电路模块、数字信号发生模块、存储模块、键盘模块、VGA显示模块等5个部分,软件流程图如图2所示。
3.1 触发电路程序
AD采样启动后,将从AD进来的数据与触发字进行比较,当满足设定条件时,会产生触发信号,此信号送到RAM控制器端。通过对外部触发电路发出触发信号与内部的两路数字信号进行触发的选择后,RAM控制器得到触发后将采样数据写入到RAM中。当RAM在进行写数据过程中触发信号是被抑制的;当RAM达到预触发深度时,释放触发信号,等待下一次触发的到来。
3.2 数竽信号发生程序
利用DDS的原理,在FPGA内部生成一个信号发生器。主要包括频率控制寄存器、高速相位累加器和比较器3部分。具体做法为:使用一个表示信号平均值的数据与AD采样得来的数据进行比较得到同频同相的A路信号,再经由A信号触发计数器,经过合理设置计数脉冲,得到有45°延时,占空比25%的B路信号。最后对该相位值计算数字化正弦波幅度输出。
表示信号平均值的数据由MicroBlaze测量信号提供。
3.3 存储程序
存储模块分RAM存储和FLASH存储RAM存储使用一个双口RAM,写和读分开,波形数据满足触发条件时送进RAM,存储了1 024个点,其中前560组送住VGA显示。
FLASH存储完成掉电不丢失的存储目的。20世纪使用开发板上的一块型号为AM29LV160DB的FLASH存储器,当按下存储健后,FLASH把RAM中的数据写到FLASH中,根据资料中的读写时序图,使用状态机实现这个过程,当按下回显的按键时将FLASH中的数据读回图像显示RAM,再显示出来。
3.4 键盘程序
键盘采用4×4矩阵键盘,使用FPGA进行扫描控制,实现人机交互。
键盘子程序主要包括数字通道、模拟通道、混合通道、存储、回放、波形左移、波形右移、垂直灵敏度档位设置,扫描速度档位设置等功能与按键的对应。
3.4.1 显示分辨率分析
垂直方向划分为10 div,设置3档垂直灵敏度:1 000 mV/div,100 mV/div和10 V/div,即每div可代表1 000 mV,100 mV和10 mV。
A/D转换模块的模拟信号输入端的输入信号电压为0~2 V,当示波器满刻度显示时,被测信号的幅度将分别为:V11=1 V/div×10 div=10 V,V12=0.1 V/div×10 div=1 V,V13=10 mv/div×10 div=100 mV。A/D转换器的满刻度输入值为Vmax=2 V,程控放大器电路的增益AN=Vmax/VIn,其中N=1,2,3,对应于3档不同垂直灵敏度的增益分别为:A1=2/10=0.2;A2=2/1=2;A3=2/0.1=20。
A/D转换器的满刻度输入值为Vmax=5 V《10 V,将AD采样的值和数字信号的值据当前档位进行计数存储,即1μs/div时每10个点保存一个,1 ms,/div时每10 000个点保存一个,1 s/div时每采样10 000 000个点保存一个。
3.4.2 扫描速率分析
A/D的转换速率取决于被测信号的频率范围,或DSO对扫描速度的要求,设计扫描速度含1 ms/div,1μs,/div,1 s/div三档,通过FPGA内部建立分频电路实现了最高采样率16 MS/s,每10倍频步进,共六档,增加了该示波器的实用性。水平显示分辨率为64点/div,以保证显示波形清晰稳定。
3.5 VGA显示部分
VGA显示模块使用双缓冲机制,软核MicroBlaze通过读写显存来控制VGA显示。VGA显示可显示3种颜色,利用了SOPC的优势。GRAM位宽32b,大大提高了FPGA刷屏的速度。vga_dn与GRAM对内嵌的MCU设计成为BlackBox,MCU只需向相应地址发送合适数据即可显示想要的波形。本设计主要实现了的显示为:底色,汉字,示波器的显示框,波形数据。通过取字摸的方式,可在显示屏上显示中文信息。当部分的数据进行综合时,这几部分的数据各自有不同的优先级,当多部分重叠时,根据优先级显示出来。
4 总体效果
图3为同时显示2个数字通道和1个模拟通道的界面,通道1(CH1)为模拟通道,通道2(CH2)和通道3(CH3)为数字通道,输入信号为一正弦波,峰一峰值为1.2 V,通道2,设定输入信号信号电压大于0为高电平,反之为低电平,故通道2为占空比为50%的矩形波。通道3设定输入信号大于3.3 V为高电平,反之为低电平,故在本图上通道3为占空比约为25%的矩形波。由图可知观察值与计算值相符。
5 结语
设计实现了一款基于FPGA的VGA显示的多通道数字存储示波器。FPGA的高速性比其他控制芯片更适合于高速数据的采集和处理,另外FPGA内部存储模块在完成输入信号的量化存储速度上有着外接RAM无法比拟的优势。通过测试,设计系统比较好地完成了各项设计要求。
三、单片机与模糊控制的温控仪设计与实现
摘要:温度是科学技术中最基本的物理量之一,在工业生产和生活中,常常是表征对象和过程状态的重要参数,其控制具有非线性、时滞性和不确定性,用传统的控制达不到好的控制效果。设计一种以单片机MSP430F149为系统的核心部件,并将模糊控制算法应用到其中的温控仪上,温度控制范围为常温0~100℃,设定温度值与测量温度值实时显示,控制精度可达±0.5℃。该系统采用恒泷供电,电路较简单,成本低,温度控制精度高,可以广泛应用于需要进行恒温控制的生产和生活中。
0 引言
温度控制对于工业和日常生活等领域都具有广阔的应用前景,很多应用领域,需要精度较高的恒温控制,由于其控制具有非线性、时滞性和不确定性,用传统的控制达不到好的控制效果。模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作人员的控制经验或相关专家的知识,其鲁棒性强,干扰和参数变化对控制效果的影响被大大减弱,所以特别适合于0~100℃温度的精确控制。
MSP430系列单片机是一个16位的、具有精简指令集的、超低功耗的混合型单片机。MSP430F149单片机采用了精简指令(RISC),具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令,大量的寄存器以及片内数据存储器都可参加多种运算,还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125 ns。这些特点保证了可编制出高效率的源程序。MSP430F149单片机具有10位/12位ADC、16位Sigma-Delta A/D、直接寻址模块(DMA)、端口1~6、基本定时器(Basic Timer)等的一些外围模块的不同组合。其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D转换器。该系统采用MSP430F149单片机,可以省去A/D等硬件电路,使其成本降低,可靠性大大增强。
1 系统设计
系统以MSP430F149单片机为控制核心,温度测量由铂电阻恒流调理电路完成,调理电路的输出电压送入单片机,在单片机内部实现A/D转换,并对采样数据进行滤波及标度变换处理,温度值由3位数码管显示。输入的温度设定值由4位独立式键盘电路进行,设定值送入单片机后,由另一个3位数码管显示。系统设计框图如图1所示。
2 主要硬件电路设计
2.1 铂电阻测温调理电路
在本系统中,实际温度值由铂电阻恒流工作调理电路进行测量。为了克服铂电阻的非线性特点,在信号调理电路中加入负反馈非线性矫正网络。如图2所示,铂电阻选用标称值为100Ω的RT100作为温度传感器。A1,A2和A3采用低温漂运放OP07,由于有电流流经铂电阻传感器,所以当温度为0℃时,在铂电阻传感器上有压降,这个电压为铂电阻传感器的偏置电压,是运放A1输出电压的一部分,使恒流工作调理电路的输出实际不为0,所以需要对这个偏置电压调零,图中R3为调零电阻。图中运放A3及电阻R1,R4和R6构成负反馈非线性校正网络。R5用于调整运放A2的增益。
2.2 温度控制电路
系统加热丝与风扇均采用图3所示电路形式。电路采用了晶体管驱动的直流电磁继电器。当单片机的P5.4为低电平时,继电器RL1吸合,当P5.4为高电平时,继电器RL1释放。采用这种控制逻辑可以使继电器在上电复位或单片机受控复位时不吸合。继电器由晶体管2N222A驱动,可以提供所需的驱动电流。
3 模糊控制规则表及软件流程图
3.1 建立模糊控制规则表
采用温度误差E和温度误差变化率Ec作为模糊控制器的输入变量,温度控制量U作为模糊控制器的输出变量。系统中温度误差E、温度误差变化率Ec和温度控制量U(单位:℃)的基本域分别为[-5,+5],[-2,+2]和[0,1]。输入语言变量的语言值取7个,输出控制量用于控制继电器驱动电路。将占空比模糊控制量设定为0,1/4,1/2,3/4,1五个单点模糊量和1个控制风扇吹风的单点模糊量。输出语言变量的语言值取6个。当U=0时,单片机P3.5口置低电平,使风扇控制电路工作;当U=1时,加热丝控制电路工作,且继电器在1个周期内全关断;当U=2时,加热丝控制电路工作,且继电器在1/4个周期内接通,在3/4个周期内关断;当U=5时,加热丝控制电路工作,且继电器在1个周期内全接通。本控制系统选用三角函数、升半梯形函数与降半梯形函数作为输入量语言值的隶属函数,用脉冲函数作为输出量语言值的隶属函数。模糊控制规则如表1所示。
由模糊规则进行推理可以得出模糊控制器语言规则的输入输出关系,其关系是一个非线性的关系曲面。当偏差较大时,控制量的变化应尽力使偏差迅速减小;当偏差较小时,除了要消除偏差外,还要考虑系统的稳定性,防止系统出现过冲,甚至引起系统振荡。
3.2 软件流程图
主程序软件流程如图4所示。
温度采集和显示、键盘处理等在编程时作为相对独立的功能模块来实现,并自主程序运行中按照设定的流程来调用,完成相应的任务后再返回主程序即可。
4 仿真分析
在Proteus仿真软件中加入编译后的HEX文件,使用分析图表分析系统分析加热器控制信号与风扇控制信号输出端口的占空比。当输入电压为2.7 V时,系统的输出显示实际温度为54℃,系统的设定温度为55℃,此时P5.4输出占空比为2:1的加热器控制信号;而当系统的实际温度大于设定温度时,系统输出适当的风扇控制信号以恒定的功率散热,说明满足设计要求。
5 结语
本系统采用低功耗MSP430系列单片机作为控制核心,整个控制电路较简单,用模糊控制算法设计程序,设定温度值与测量温度值实时显示,控制精度可达±0.5℃,在实际生产和生活中具有广泛的实用性。
四、3轴加速度计全功能计步器参考设计
简介
计步器是一种颇受欢迎的日常锻炼进度监控器,可以激励人们挑战自己,增强体质,帮助瘦身。早期设计利用加重的机械开关检测步伐,并带有一个简单的计数器。晃动这些装置时,可以听到有一个金属球来回滑动,或者一个摆锤左右摆动敲击挡块。
如今,先进的计步器利用MEMS(微机电系统)惯性传感器和复杂的软件来精确检测真实的步伐。MEMS惯性传感器可以更准确地检测步伐,误检率更低。MEMS惯性传感器具有低成本、小尺寸和低功耗的特点,因此越来越多的便携式消费电子设备开始集成计步器功能,如音乐播放器和手机等。ADI公司的3轴加速度计ADXL335, ADXL345和 ADXL346小巧纤薄,功耗极低,非常适合这种应用。
本文以对步伐特征的研究为基础,描述一个采用3轴加速度计ADXL345的全功能计步器参考设计,它能辨别并计数步伐,测量距离、速度甚至所消耗的卡路里。
ADXL345专有的(正在申请专利)片内32级先进先出(FIFO)缓冲器可以存储数据,并执行计步器应用的相关操作,从而最大程度地减少主处理器干预,为便携式设备节省宝贵的系统功率。其13位分辨率(4 mg/LSB)甚至允许计步器以合理的精度测量超低速步行(每步加速度变化约55 mg)。
了解模型
在可用于分析跑步或步行的特征当中,我们选择“加速度”作为相关参数。个体(及其相关轴)的运动包括三个分量,分别是前向(“滚动”)、竖向(“偏航”)和侧向(“俯仰”),如图1所示。ADXL345检测其三个轴——x、y和z上的加速度。计步器处于未知方向,因此测量精度不应严重依赖于运动轴与加速度计测量轴之间的关系。
图1. 各轴的定义
让我们考虑步行的特性。图2描绘了一个步伐,我们将其定义为单位步行周期,图中显示了步行周期各阶段与竖向和前向加速度变化之间的关系。
图2. 步行阶段与加速度模式
图3显示了与一名跑步者的竖向、前向和侧向加速度相对应的x、y和z轴测量结果的典型图样。无论如何穿戴计步器,总有至少一个轴具有相对较大的周期性加速度变化,因此峰值检测和针对所有三个轴上的加速度的动态阈值决策算法对于检测单位步行或跑步周期至关重要。
图3. 从一名跑步者测得的x、y和z轴加速度的典型图样
算法
步伐参数
数字滤波器:首先,为使图3所示的信号波形变得平滑,需要一个数字滤波器。可以使用四个寄存器和一个求和单元,如图4所示。当然,可以使用更多寄存器以使加速度数据更加平滑,但响应时间会变慢。
图4. 数字滤波器
图5显示了来自一名步行者所戴计步器的最活跃轴的滤波数据。对于跑步者,峰峰值会更高。
图5. 最活跃轴的滤波数据
动态阈值和动态精度:系统持续更新3轴加速度的最大值和最小值,每采样50次更新一次。平均值(Max + Min)/2称为“动态阈值”。接下来的50次采样利用此阈值判断个体是否迈出步伐。由于此阈值每50次采样更新一次,因此它是动态的。这种选择具有自适应性,并且足够快。除动态阈值外,还利用动态精度来执行进一步滤波,如图6所示。
图6. 动态阈值和动态精度
利用一个线性移位寄存器和动态阈值判断个体是否有效地迈出一步。该线性移位寄存器含有2个寄存器:sample_new寄存器和sample_old寄存器。这些寄存器中的数据分别称为sample_new和sample_old。当新采样数据到来时,sample_new无条件移入sample_old寄存器。然而,sample_result是否移入sample_new寄存器取决于下述条件:如果加速度变化大于预定义精度,则最新的采样结果sample_result移入sample_new寄存器,否则sample_new寄存器保持不变。因此,移位寄存器组可以消除高频噪声,从而保证结果更加精确。
步伐迈出的条件定义为:当加速度曲线跨过动态阈值下方时,加速度曲线的斜率为负值(sample_new 《 sample_old)。 。
峰值检测:步伐计数器根据x、y、z三轴中加速度变化最大的一个轴计算步数。如果加速度变化太小,步伐计数器将忽略。
步伐计数器利用此算法可以很好地工作,但有时显得太敏感。当计步器因为步行或跑步之外的原因而非常迅速或非常缓慢地振动时,步伐计数器也会认为它是步伐。为了找到真正的有节奏的步伐,必须排除这种无效振动。利用“时间窗口”和“计数规则”可以解决这个问题。
“时间窗口”用于排除无效振动。假设人们最快的跑步速度为每秒5步,最慢的步行速度为每2秒1步。这样,两个有效步伐的时间间隔在时间窗口[0.2 s - 2.0 s]之内,时间间隔超出该时间窗口的所有步伐都应被排除。
ADXL345的用户可选输出数据速率特性有助于实现时间窗口。表1列出了TA = 25°C, VS = 2.5 V, and VDD I/O = 1.8 V时的可配置数据速率(以及功耗)。
表1. 数据速率和功耗
此算法使用50 Hz数据速率(20 ms)。采用interval的寄存器记录两步之间的数据更新次数。如果间隔值在10与100之间,则说明两步之间的时间在有效窗口之内;否则,时间间隔在时间窗口之外,步伐无效。
“计数规则” 用于确定步伐是否是一个节奏模式的一部分。步伐计数器有两个工作状态:搜索规则和确认规则。步伐计数器以搜索规则模式开始工作。假设经过四个连续有效步伐之后,发现存在某种规则(in regulation),那么步伐计数器就会刷新和显示结果,并进入“确认规则”工作模式。在这种模式下工作时,每经过一个有效步伐,步伐计数器就会更新一次。但是,如果发现哪怕一个无效步伐,步伐计数器就会返回搜索规则模式,重新搜索四个连续有效步伐。
图7显示了步伐参数的算法流程图。
图7. 步伐参数算法流程图
距离参数
根据上述算法计算步伐参数之后,我们可以使用公式1获得距离参数。
距离 = 步数 × 每步距离 (1)
每步距离取决于用户的速度和身高。如果用户身材较高或以较快速度跑步,步长就会较长。参考设计每2秒更新一次距离、速度和卡路里参数。因此,我们使用每2秒计数到的步数判断当前跨步长度。表2显示了用于判断当前跨步长度的实验数据。
表2. 跨步长度与速度(每2秒步数)和身高的关系
2秒的时间间隔可以利用采样数精确算出。以50 Hz数据速率为例,处理器可以每100次采样发送一次相应的指令。处理器利用一个名为m_nLastPedometer的变量记录每个2秒间隔开始时的步数,并利用一个名为m_nPedometerValue的变量记录每个2秒间隔结束时的步数。这样,每2秒步数等于m_nPedometerValue与m_nLastPedometer之差。
虽然数据速率为50 Hz,但ADXL345的片内FIFO使得处理器无需每20 ms读取一次数据,极大地减轻了主处理器的负担。该缓冲器支持四种工作模式:旁路、FIFO、流和触发。在FIFO模式下,x、y、z轴的测量数据存储在FIFO中。当FIFO中的采样数与FIFO_CTL寄存器采样数位规定的数量相等时,水印中断置1。如前所述,人们的跑步速度最快可达每秒5步,因此每0.2秒刷新一次结果即可保证实时显示,从而处理器只需每0.2秒通过水印中断唤醒一次并从ADXL345读取数据。FIFO的其它功能也都非常有用。利用触发模式,FIFO可以告诉我们中断之前发生了什么。由于所述解决方案没有使用FIFO的其它功能,因此笔者将不展开讨论。
速度参数
速度 = 距离/时间,而每2秒步数和跨步长度均可根据上述算法计算,因此可以使用公式2获得速度参数。
速度 = 每2秒步数 × 跨步/2 s(2)
卡路里参数
我们无法精确计算卡路里的消耗速率。决定其消耗速率的一些因素包括体重、健身强度、运动水平和新陈代谢。不过,我们可以使用常规近似法进行估计。表3显示了卡路里消耗与跑步速度的典型关系。
表3. 卡路里消耗与跑步速度的关系
由表3可以得到公式(3)。
卡路里(C/kg/h) = 1.25 × 跑步速度(km/h) (3)
以上所用的速度参数单位为m/s,将km/h转换为m/s可得公式4。
卡路里(C/kg/h) = 1.25 × 速度(m/s) × 3600/1000 (4)
卡路里参数随同距离和速度参数每2秒更新一次。为了考虑运动者的体重,我们可以将公式4转换为公式5。体重(kg)为用户输入量,一个小时等于1800个2秒间隔。
卡路里(C/2 s) = 4.5 × 速度 × 体重/1800(5)
如果用户在步行或跑步之后休息,则步数和距离将不变化,速度应为0,此时的卡路里消耗可以利用公式6计算(休息时的卡路里消耗约为1 C/kg/h)。
卡路里(C/2 s) = 1 × 体重/1800 (6)
最后,我们可以将所有2秒间隔的卡路里相加,获得总卡路里消耗量。
硬件连接
ADXL345易于连接到任何使用I2C®或SPI数字通信协议的处理器。图8给出了演示设备的原理示意图,它采用3V电池供电。ADXL345的/CS引脚连接到板上的VS,以选择I2C模式。利用一个低成本精密模拟微控制器ADuC7024从ADXL345读取数据,执行算法,并通过UART将结果发送至PC。SDA和SCL分别为I2C总线的数据和时钟引脚,从ADXL345连接到ADuC7024的对应引脚。ADXL345的两个中断引脚连接到ADuC7024的IRQ输入,以产生各种中断信号并唤醒处理器。
图8. 硬件系统的原理示意图
用户界面
用户界面显示测试数据,并对操作员的指令做出响应。用户界面(UI)运行之后,串行端口应打开,通信链路应启动,随后演示程序将持续运行。图9显示了用户佩戴计步器步行或跑步时的测试情况。用户可以输入其体重和身高数据,距离、速度和卡路里参数将根据这些数据进行计算。
图9. 用户佩戴计步器步行或跑步时的测试情况
结论
ADXL345是一款出色的加速度计,非常适合计步器应用。它具有小巧纤薄的特点,采用3 mm × 5 mm × 0.95 mm塑封封装,利用它开发的计步器已经出现在医疗仪器和高档消费电子设备中。它在测量模式下的功耗仅40 µA,待机模式下为0.1 µA,堪称电池供电产品的理想之选。嵌入式FIFO极大地减轻了主处理器的负荷,使功耗显著降低。此外,可以利用可选的输出数据速率进行定时,从而取代处理器中的定时器。13位分辨率可以检测非常小的峰峰值变化,为开发高精度计步器创造了条件。最后,它具有三轴输出功能,结合上述算法,用户可以将计步器戴在身上几乎任何部位。
几点建议:如果应用对成本极其敏感,或者模拟输出加速度计更适合,建议使用ADXL335,它是一款完整的小尺寸、薄型、低功耗、三轴加速度计,提供经过信号调理的电压输出。如果PCB尺寸至关重要,建议使用ADXL346,这款低功耗器件的内置功能甚至比ADXL345还多,采用小巧纤薄的3 mm × 3 mm × 0.95 mm塑封封装,电源电压范围为1.7 V至2.75 V。
评论
查看更多