谭一柳,刘安华,王轩
(1.江西省水务集团有限公司,江西南昌,330000; 2.维沃移动通信有限公司,广东东莞,523000; 3.靖安绿地申飞置业有限公司,江西宜春,336000)
本设计主要采用STM32F103C8T6单片机控制心率模块、计步模块和温度模块进行数据采集,再控制显示模块对采集的数据进行显示,可实现以下功能:采用LCD1602液晶屏显示当前的步数、温度值、心率值和报警值;采用光电传感器ST188实现心率测量;采用DS18B20温度传感器对温度进行检测;当所测量的心率、体温参数超过上、下限报警值时实现声光报警;采用3轴加速度传感器模块ADXL345实现计步功能,系统结构框图如图1所示:
图1 系统结构框图
STM32F103C8T6单片机(如图2所示)具有低功耗性能和处理速度快的特点,同时其在嵌入式的硬件开发上也有优秀的仿真性能,可以实现很好的集成化效果。本设计在系统开发上需要使用到较多的模块器件,所以在单片机的选择上STM32F103系列单片机优势明显,在存储空间和引脚等方面的应用上都具有很好的适配性,并且在与外部设备连接以及软件的应用开发上兼容性极高,所以本次设计选择STM32F103C8T6单片机作为控制芯片。
图2 STM32F103C8T6管脚图
本设计在数据显示方面采用了LCD1602液晶显示模块来对温度、心率、计步等数据进行显示。字符式液晶模块,是一款专门设计用来显示字母、数码、音符等点阵形式的液晶显示模块,其工艺设计原理主要是由许多个点阵字符组成,在本设计显示字符上具有很高的适用性,如图3所示。
图3 LCD1602液晶显示电路原理图
本设计使用的ADXL345加速度传感器为数据采集模块的核心元器件,ADXL345是一种小而薄的超低效率三轴加速度仪,分辨率设置较高(13位),测试幅度达±16g,信息输出数据为十六位二进制补码形式,可透过SPI(3线或4线)或I2C信号数据端口进行。ADXL345传感器模块(如图4所示)主要通过检测物体的倾斜角度和动态加速度变化来计算出相应人体运动的步数以及距离等方面的运动状况,其在本设计中起到很好的计步作用。
图4 ADXL345模块原理图
该模块电路可以通过比较x、y或z轴中任意一轴上的加速度变化值和提前设定的阈值来检测有没有运动性动作的发生,然后把人们走路的动作转化为ADXL345传感器中的电压信号变化。在VCC脚接5V电源进行供电,而SDA引脚和SCL引脚则与处理器的PB1和PB0引脚进行相连,对模块进行驱动。
2.4.1 ST88光电传感器及信号采集电路
ST88光电传感器主要由紫外线感光二极管和紫外线信号接收三极管所构成。使用GaAs红外发光二极管作照明源时,能控制因呼气运动而引起的脉搏心率波曲线的漂移。红外线接收三极管在红外线的辐射下也可形成电能,它的主要特点就是把光信息转化为电信号。图5为模块的心率信息采集电路,U1为红外光发送和接收装置,因为红外发光二极管中的电流密度愈大,辐射角就愈小,所形成的辐射强度也愈大,所以对R1阻值的选择要求比较高。而R1选择47Ω,同样就是根据红外接收三极管探测红外光敏感度确定的。若R3不足,即由于红外辐射二极管的出口电流偏小,则红外接收三极管就无法区分有脉搏心率与无脉搏心率信息。反之,如果R3过小,由于使用的电压偏大,因此红外接收三极管也就没法正确地识别有脉搏心率和无脉搏心率时的讯号,当手指离开感应器并监测到比较强烈的干扰光线时,输入端的直流电压也会发生较大改变,为使其不会因泄漏电流至LM358输入端口而引起的错误指示,因此可用C1型耦合电容器将其隔离,再由R4、C2滤波在去除了高频扰动之后,加在线性的放大输入端,如图5所示。
图5 ST88光电传感器信号采集电路
2.4.2 放大电路和波形整形电路
按人体心率在运动后跳跃次数达200次/分钟的计算方式来设计低通放大器,结果如图6所示。R5、C3构成了低通滤波器以继续消除剩余的影响,截止频率由R5、C3决定,运放LM358对信号进行放大,放大倍率按R6与R10之间的比例确定。
图6 放大电路与整形电路图
LM358也是一种电压比较器。当有输入信息时,LM358在比较器注入信息的每一个后沿出现时产生最低电平,由感光二极管D1进行脉搏心率的状态指示,在脉搏心率计算时每跳过一个感光二极管就亮一个。同样,将该脉动电平送入单片机/INTO脚,就完成了平均心率的状态运算与显示,如图6所示。
DS18B20模块具有单线接口达到双线传输数据的功能,在和单片机之间只要进行单线接口连接即可使用;其与单片机之间是以9到12位的串行数字传输,并且测试范围很广,在应用于嵌入式硬件电路设计时都不需要和其他的元器件组合使用,单独接线单片机就可以正常工作,使用时接上3到5V的电源即可。其中GND插针直接接地,DQ插针与处理器的PB5信号引脚连接起来,而VDD插针则与电源连接起来,最终实现温度检测的功能,如图7所示。
图7 DS18B20温度传感器原理图
心率检测是测量一分钟内心脏跳动的次数,心率也会分为平均心率和瞬时心率两种测量,本设计通过ST188光电传感器对心率进行实时的监测采集,主要通过模块对手指端脉搏的跳动产生不同的透光率来获取模拟信号量的变化,再设定一个固定的阈值点计算得出实时的心率数据值。
定时器中断服务程序主要由1分钟定时、按键时间测量、有无测试信息判断等部分构成。在定时器暂停服务时,先对分钟进行定时,在1秒计时到后测量下1秒,然后等到60秒时间到了再暂停,并存储测量的脉搏心率次数。并且还能够通过按键控制进行测试,而且只要恢复了测试值就能够再次进行测量。主要完成1分钟的计时功能,以及保存测得者的脉搏心率次数。外部中断服务程序完成对外部信息的检测与计算。
设计采用ADXL345作为系统计步模块来实时测量步数和距离。距离主要通过加速度状态下跨出每步的距离长度和步数值计算得到。用ADXL345检测到的x、y和z上的加速度作为参数分析跑步或步行的特征,选择具有相对较大的周期性加速度变化的那个轴来计算步数,对变化不明显的可以忽略不计。系统对加速度进行了连续采样,取标准差与最小值的平均数为动态阈值并不断改变,以此来判断是否有步行或跑步动作发生。此外,因为在某些是非步行的跑步运动中也会被ADXL345监测到加速度变化,因此必须剔除这种无用脚步,在这里我们可以通过“时间窗口”来剔除被检测到的非步伐的加速度变化,利用“计数规则”来判断速度变化是不是作为节奏系统的重要组成部分,进而清除无用脚步,提高精确度。
本设计采用DS18B20温度数据采集模块来实时监测温度变化,主要通过采集手指端表面皮肤的实时温度来反映人体温度是否处于正常范围。
首先对系统时钟进行初始化工作,初始化IO口以及定时器和串口。定时读取温度以及偏移角度是否到达,如果是则进行温度及步数的采集,否则跳过直接进行下一步,判断单位时间心率数据是否采集完成,若心率采集完成则进行心率采集计算,如果没有则跳过心率计算,所检测的情况通过液晶显示屏进行显示,如此循环进行心率体温计步的检测工作,如图8所示。
图8 系统运行流程图
系统电路板通过检测和调试,确认所设计的基于单片机的计步器健康系统可以实现计步、心率、温度检测功能。通过几个独立按键可以对计步器进行功能设置,液晶显示屏显示计步器系统的数据信息,如图9所示。
图9 实物图