一种基于嵌入式的心率测试仪的设计与实现

2022-05-16 12:00:05 | 浏览次数:

摘要:随着人们物质生活质量的不断提高,越来越多的人开始关注自身身心健康状况,在锻炼身体的过程中,希望可以借助一些便携式医学仪器来检测自身的身体状况,例如使用心率测试仪来测量心率,通过心律的测试,来确定适合于自己的运动强度,防止运动量不达标或运动过量,无论您是运动达人还是视运动为娱乐的人,心率测试仪都是一款必备的运动工具.它能让你能更好地掌握运动过程中运动强度.本文作者将利用单片机与红外传感器和精确定时/计数等技术融合嵌入式开发语言(C语言)为您设计一款能显示每分钟心跳次数的心率测试仪.

关键词:嵌入式系统开发;IAP15F2K61S2微控制器;红外线传感器St188;C语言

中图分类号:TH72 文献标识码:A 文章编号:1673-260X(2019)03-0068-03

1 绪论

随着现代医学技术的不断发展和进步,人们工作之余开始注重自身身心健康,许多便携式医学仪器得到了广泛的应用,越来越多的人体医学信号测试仪被受众人群使用,通过医学仪器对人体体内相关的生理信号的监测,来识别人体的生命健康状态和特征.

该系统基于STC的IAP15F2K61S2微控制器,外围由运算放大器,滤波电路、整形电路以及LCD12864液晶屏,反射红外传感器ST188等组成.电路设计部分主要采取仿真电路的设计形式,使用Keil C软件将对应C语言程序生成HEX文件,并使用stc-isp编程烧录软件将对应的HEX控制程序嵌入在IAP15F2K61S2微控制器系统中,以便于实现人体的心率测试.使用时,手指需要压迫在ST188红外传感器上,使其感知人体的生理信号.可以通过IAP15F2K61S2微控制器对改变的信号进行滤波,放大等处理来统计心跳次数,以便于计算一分钟内的心跳次数即心率.

2 心率测试仪的仿真电路设计

本系统设计使用STC公司的IAP15F2K61S2单片机作为核心部件,在Keil C调试环境下,完成软件调试与设计.使用Proteus仿真软件完成仿真电路的设计.电路仿真系统主要有:检测电路、放大滤波电路、单稳态电路和显示电路组成[1].其中系统检测部分主要由反射红外传感器ST188完成.电路设计如图1所示:

2.1 检测电路

2.1.1 使用数字万用表测量二极管

首先,使用数字万用表的二极管齿轮测试控制端子发射(浅蓝色)正极和负极,并将红色和黑色测试引线连接到发射管的两个引脚.对于每次测量,仪表一次显示“1.0 V”,一旦显示溢出“1”,表明1.0 V是正确的.红笔连接到正极,黑笔连接到负极.如果“1”显示两次,则表示发射管内部打开,如果显示两次均为“0”则表示发射管中短路.然后判断接收管的c和e极,数字万用表的2M齿轮以及红色和黑色测试引线的短路.判断接收管的c和e极,数字万用表电阻2M档,红色和黑色电表笔连接到e极;如果标题显示“1”,则黑色笔连接到c极,红色笔连接到e极.

2.1.2 检测电路工作原理

首先,我们了解一下人体心跳的过程,心脏在机械收缩之前,先发生电激动而产生微小电流,这一电流可以经人体组织传到体表,窦房结产生的动作电位,经结内的过渡细胞传至心房内的结间束、房间束和心房肌[2].这时心房肌会跳动.然后动作电位下传至房室结(心房心室交界区)短暂的时间差之后下传至结希区、房室束.心室肌接收兴奋,产生搏动,也就是人体的心跳.

由于血容量本身是跟随心脏的跳动而显示其心率波形的变化的,而光电信号对于人体的其余组织的感应是不随时间的变化而变化的,所以反射式红外线传感器ST188接收到的波形信号可以用来表示心率的变化特征.

心率本身的波动信号隶属于低频率的电信号,频率在0.5~10Hz之间[3],使用放大器、滤波器以便于提取有效信号,避免外围信号的干扰,提高低频率信号的上下限.反射红外传感器ST188通过电容耦合器将血液中的波分量分析到放大器的输入端.

2.2 放大、整形、滤波电路

该电路的主要功能是放大整形和滤波传感器检测到的微弱的信号,并且由光电耦合器检测血液浓度自身发生的变化,把微弱信号变化为电信号.经整形电路整形(优化液晶屏心率的显示效果),形成所需脉冲,经LM358芯片对信号进行放大,驱动发光管按照脉搏频率工作,以模拟心脏跳动的动作.最后输出反映心跳频率的电压.

2.3 比较电路与单态稳电路

比较电路使用LM358芯片,放大电路的输出信号通过比较输出方波.

在单稳态电路中,比较器输出的矩形波输入到74HC123触发器的B引脚,因此不同频率(不同心率)的输入信号输出具有不同占空比的方波.通過滤波电路进行滤波后,输出电压不同.

3 心率测试仪系统硬件组成

3.1 红外反射式传感器ST188

3.1.1 ST188红外反射式传感器简介

由一个光敏三极管和一个发光二极管组成,其中发光二极管作为传感器的反射模块,光敏三极管作为传感器的接收模块[4](二者在电路中均正接,但需要串联相关阻值的定值电阻),ST188系列传感器有诸多优点:比如体积很小,价格便宜[5],使用起来非常划算,具有很高的性价比.ST188红外传感器位于A、K之间是发光二极管,位于C、E之间是光敏三极管.

3.1.2 工作原理

通过用手指按压红外反射传感器ST188,并显示在1602液晶屏上来测量心率.系统以IAP15 F2K61S2微控制器为核心,红外反射传感器ST188用作检测元件.时间的计算由IAP15F2K61S2系统的内部定时器完成.在系统操作期间可以显示心脏跳动次数和时间.

3.1.3 信号采集

红外反射传感器A、K分别接入高电平和低电平,电位器连在R4旁边用于调节传感器灵敏度[5].信号采集过程中,红外反射传感器ST188与手指接触,被手指按压.脉冲信号由红外反射传感器ST188感知.IAP15F2K61S2微控制器系统负责统计心脏跳动次数和时间.

3.1.4 信号放大

本文采用LM358芯片用于放大电路的设计.由于人的心跳产生的信号非常弱,导致红外反射传感器ST188输出的信号同样很微弱,较易受到周边环境的影响,因此需要对当前得到的微弱信号进行放大处理,放大电路使用两级反向放大将信号放大到约2-5V的幅度值.输出波形相对于比较输入波形而言为同相并被放大的波形.放大后的波形是一个交流信号.在电源旁边连接一个电容器,以滤除干扰信号和抗电磁干扰.整流后的电压波形(D2二极管)是正弦半波.放大电路的输出信号由比较器输出为方波(2个引脚的比较电压根据3个引脚的实际输出电压设定,通常大致是0.8V).

3.2 IAP15F2K61S2单片机

IAP15F2K61S2单片机是STC公司推出的新一代支持在应用编程的单片机.具有2KB RAM空间,61K Flash空间,IO具备4种工作模式,8路ADC通道.带仿真接口,可以在Keil C51中调试程序,适合于嵌入式开发.

3.3 LCD12864液晶屏

一种点阵图形液晶显示模块,具有2线或3线串行,4位/8位并行接口模式,以及简化的汉字库; 它可以形成一个完整的中文人机交互图形界面.它可以显示8×4行16×16点阵汉字.

4 心率测试仪系统软件的实现

4.1 系统软件介绍

4.1.1 keil C51软件简介

Keil C51软件系统的特点是兼容单芯片C语言软件开发.鉴于C语言拥有出色的移植性,可以在各种体系结构的软硬件平台上运行;语法机制灵活,可直接访问硬件;运行效率高,运行速度较快.在可读性,功能,结构等方面优势明显.Keil提供完整的开发解决方案,包括C编译器,宏汇编,链接器,库管理以及强大的仿真器调试.通过集成开发环境将它们统一组合起来.因此,运行C语言编程, Keil C51几乎是不二之选.

本文中Keil C51软件的主要功能是负责将C语言编译成可重定位的目标HEX文件,实现C语言程序对单片机的控制.

4.1.2 Proteus电路仿真软件

Proteus是由英国Labcenter Electronics开发的多功能EDA软件.是一款可以提供电路仿真、PCB设计和虚拟模型仿真的设计平台.本文中PROTEUS软件的主要功能是提供心率测试仪的仿真电路.

4.2 心率测试仪C语言程序实现

4.2.1 心率测试仪计数代码

#include ”stc15.h”

#include [intrins.h]

#define uchar unsigned char

#define uint unsigned

sbit LCD_RS = P3^5; //寄存器选择输入

sbit LCD_RW = P3^6; //液晶读/写控制

sbit LCD_EN = P3^7; //液晶使能控制

sbit LCD_PSB = P0^2; //串/并方式控制

sbit LCD_RST = P0^0; //液晶复位端口

unsigned char i=0,timecount=0,displayOK=0,rate=0,aa=0;

unsignedint time[6]={0};

#define delayNOP(); {_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();_nop_(); _nop_(); _nop_(); }

uchar code DIS1[] = {” 心率计 ”};

uchar code DIS2[] = {” 次 /每分”};

uchar code DIS3[] = {” 你的心率正\xfd常 ”};

uchar code DIS4[] = {” ”};

uchar code DIS5[] = {” 保持平稳的心情”};

4.2.2 系统延时代码

void delay(intms)

{while(ms--)

{uchari; for(i=0; i[150; i++)

{_nop_(); _nop_(); _nop_(); _nop_();

}}}

4.2.3 检查LCD忙状态代码

bitlcd_busy()

{ bit result;

LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();

result = (bit)(P2 0x80); LCD_EN = 0; return(result);

}

4.2.4 写指令数据到LCD代码

voidlcd_wcmd(ucharcmd)

{ while(lcd_busy());

LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; delayNOP();

P2 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0;

}}

4.2.5 寫显示数据到LCD代码

voidlcd_wdat(uchardat)

{ while(lcd_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;

P2 = dat;delayNOP(); LCD_EN = 1;delayNOP(); LCD_EN = 0; }

4.2.6 LCD初始化代码

voidlcd_init()

{

LCD_PSB = 1; //并口方式

LCD_RST = 0; //液晶复位

delay(12);

LCD_RST = 1;

delay(12);

lcd_wcmd(0x34); //打开扩展功能,绘图显示关

delay(22);

lcd_wcmd(0x30); //回到基本指令集

delay(23);

lcd_wcmd(0x0C); //退出睡眠模式

delay(23);

lcd_wcmd(0x01); //进入待命模式

delay(23);

}

5 小结

上述程序由Keil C51软件在最小系统板上成功调试,可以实现人体的心率测试.IAP15F2K61S2微控制器的P32用于连接LED阴极在检测到信号时显示带有LED的心跳.让被测人很直观的感受心跳.系统通过IAP15F2K61S2微控制器的INT0中断处理ST188传感器的信号,并用T0中断时序.在时间转为心率数据的处理上,采用5次取平均值的方法,增加了数据的精确度.最终由LCD12864液晶进行显示,显示结果为:系统名称、心率、健康指数.

参考文献:

〔1〕钱浩宇,汪鹏君,等.基于单稳态定时偏差的高识别性PUF电路设计[J].浙江大学学报(理学版),2017(1):64-69.

〔2〕王红卫,张颖,等.包公藤甲素衍生物(S)-OTS?HCl的心脏电生理效应[J]上海交通大学学报(医学版),2017(2):177-183.

〔3〕武灵芝.基于安卓和蓝牙通信的智能生理监护仪的设计[J].北京生物医学工程,2017(4):415-419.

〔4〕郭金建、雷鸣意.风光互补发电的节能LED灯控制系统设计[J].单片机与嵌入式系统应用,2015(1):46-48.

〔5〕兰羽.基才红外传感器ST188的自动循迹小车设计[J].电子設计工程,2013(3):64-66.

〔6〕冯祺婷,彭保进.一种简易光谱实验仪的设计与实现[J].光学仪器,2013(5):80-84.

推荐访问: 心率 测试仪 嵌入式 设计