鄭海鵬 王立友 馮川放
摘要:隨著人們物質(zhì)生活質(zhì)量的不斷提高,越來越多的人開始關(guān)注自身身心健康狀況,在鍛煉身體的過程中,希望可以借助一些便攜式醫(yī)學(xué)儀器來檢測(cè)自身的身體狀況,例如使用心率測(cè)試儀來測(cè)量心率,通過心律的測(cè)試,來確定適合于自己的運(yùn)動(dòng)強(qiáng)度,防止運(yùn)動(dòng)量不達(dá)標(biāo)或運(yùn)動(dòng)過量,無論您是運(yùn)動(dòng)達(dá)人還是視運(yùn)動(dòng)為娛樂的人,心率測(cè)試儀都是一款必備的運(yùn)動(dòng)工具.它能讓你能更好地掌握運(yùn)動(dòng)過程中運(yùn)動(dòng)強(qiáng)度.本文作者將利用單片機(jī)與紅外傳感器和精確定時(shí)/計(jì)數(shù)等技術(shù)融合嵌入式開發(fā)語言(C語言)為您設(shè)計(jì)一款能顯示每分鐘心跳次數(shù)的心率測(cè)試儀.
關(guān)鍵詞:嵌入式系統(tǒng)開發(fā);IAP15F2K61S2微控制器;紅外線傳感器St188;C語言
中圖分類號(hào):TH72 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1673-260X(2019)03-0068-03
1 緒論
隨著現(xiàn)代醫(yī)學(xué)技術(shù)的不斷發(fā)展和進(jìn)步,人們工作之余開始注重自身身心健康,許多便攜式醫(yī)學(xué)儀器得到了廣泛的應(yīng)用,越來越多的人體醫(yī)學(xué)信號(hào)測(cè)試儀被受眾人群使用,通過醫(yī)學(xué)儀器對(duì)人體體內(nèi)相關(guān)的生理信號(hào)的監(jiān)測(cè),來識(shí)別人體的生命健康狀態(tài)和特征.
該系統(tǒng)基于STC的IAP15F2K61S2微控制器,外圍由運(yùn)算放大器,濾波電路、整形電路以及LCD12864液晶屏,反射紅外傳感器ST188等組成.電路設(shè)計(jì)部分主要采取仿真電路的設(shè)計(jì)形式,使用Keil C軟件將對(duì)應(yīng)C語言程序生成HEX文件,并使用stc-isp編程燒錄軟件將對(duì)應(yīng)的HEX控制程序嵌入在IAP15F2K61S2微控制器系統(tǒng)中,以便于實(shí)現(xiàn)人體的心率測(cè)試.使用時(shí),手指需要壓迫在ST188紅外傳感器上,使其感知人體的生理信號(hào).可以通過IAP15F2K61S2微控制器對(duì)改變的信號(hào)進(jìn)行濾波,放大等處理來統(tǒng)計(jì)心跳次數(shù),以便于計(jì)算一分鐘內(nèi)的心跳次數(shù)即心率.
2 心率測(cè)試儀的仿真電路設(shè)計(jì)
本系統(tǒng)設(shè)計(jì)使用STC公司的IAP15F2K61S2單片機(jī)作為核心部件,在Keil C調(diào)試環(huán)境下,完成軟件調(diào)試與設(shè)計(jì).使用Proteus仿真軟件完成仿真電路的設(shè)計(jì).電路仿真系統(tǒng)主要有:檢測(cè)電路、放大濾波電路、單穩(wěn)態(tài)電路和顯示電路組成[1].其中系統(tǒng)檢測(cè)部分主要由反射紅外傳感器ST188完成.電路設(shè)計(jì)如圖1所示:
2.1 檢測(cè)電路
2.1.1 使用數(shù)字萬用表測(cè)量二極管
首先,使用數(shù)字萬用表的二極管齒輪測(cè)試控制端子發(fā)射(淺藍(lán)色)正極和負(fù)極,并將紅色和黑色測(cè)試引線連接到發(fā)射管的兩個(gè)引腳.對(duì)于每次測(cè)量,儀表一次顯示“1.0 V”,一旦顯示溢出“1”,表明1.0 V是正確的.紅筆連接到正極,黑筆連接到負(fù)極.如果“1”顯示兩次,則表示發(fā)射管內(nèi)部打開,如果顯示兩次均為“0”則表示發(fā)射管中短路.然后判斷接收管的c和e極,數(shù)字萬用表的2M齒輪以及紅色和黑色測(cè)試引線的短路.判斷接收管的c和e極,數(shù)字萬用表電阻2M檔,紅色和黑色電表筆連接到e極;如果標(biāo)題顯示“1”,則黑色筆連接到c極,紅色筆連接到e極.
2.1.2 檢測(cè)電路工作原理
首先,我們了解一下人體心跳的過程,心臟在機(jī)械收縮之前,先發(fā)生電激動(dòng)而產(chǎn)生微小電流,這一電流可以經(jīng)人體組織傳到體表,竇房結(jié)產(chǎn)生的動(dòng)作電位,經(jīng)結(jié)內(nèi)的過渡細(xì)胞傳至心房內(nèi)的結(jié)間束、房間束和心房肌[2].這時(shí)心房肌會(huì)跳動(dòng).然后動(dòng)作電位下傳至房室結(jié)(心房心室交界區(qū))短暫的時(shí)間差之后下傳至結(jié)希區(qū)、房室束.心室肌接收興奮,產(chǎn)生搏動(dòng),也就是人體的心跳.
由于血容量本身是跟隨心臟的跳動(dòng)而顯示其心率波形的變化的,而光電信號(hào)對(duì)于人體的其余組織的感應(yīng)是不隨時(shí)間的變化而變化的,所以反射式紅外線傳感器ST188接收到的波形信號(hào)可以用來表示心率的變化特征.
心率本身的波動(dòng)信號(hào)隸屬于低頻率的電信號(hào),頻率在0.5~10Hz之間[3],使用放大器、濾波器以便于提取有效信號(hào),避免外圍信號(hào)的干擾,提高低頻率信號(hào)的上下限.反射紅外傳感器ST188通過電容耦合器將血液中的波分量分析到放大器的輸入端.
2.2 放大、整形、濾波電路
該電路的主要功能是放大整形和濾波傳感器檢測(cè)到的微弱的信號(hào),并且由光電耦合器檢測(cè)血液濃度自身發(fā)生的變化,把微弱信號(hào)變化為電信號(hào).經(jīng)整形電路整形(優(yōu)化液晶屏心率的顯示效果),形成所需脈沖,經(jīng)LM358芯片對(duì)信號(hào)進(jìn)行放大,驅(qū)動(dòng)發(fā)光管按照脈搏頻率工作,以模擬心臟跳動(dòng)的動(dòng)作.最后輸出反映心跳頻率的電壓.
2.3 比較電路與單態(tài)穩(wěn)電路
比較電路使用LM358芯片,放大電路的輸出信號(hào)通過比較輸出方波.
在單穩(wěn)態(tài)電路中,比較器輸出的矩形波輸入到74HC123觸發(fā)器的B引腳,因此不同頻率(不同心率)的輸入信號(hào)輸出具有不同占空比的方波.通過濾波電路進(jìn)行濾波后,輸出電壓不同.
3 心率測(cè)試儀系統(tǒng)硬件組成
3.1 紅外反射式傳感器ST188
3.1.1 ST188紅外反射式傳感器簡介
由一個(gè)光敏三極管和一個(gè)發(fā)光二極管組成,其中發(fā)光二極管作為傳感器的反射模塊,光敏三極管作為傳感器的接收模塊[4](二者在電路中均正接,但需要串聯(lián)相關(guān)阻值的定值電阻),ST188系列傳感器有諸多優(yōu)點(diǎn):比如體積很小,價(jià)格便宜[5],使用起來非常劃算,具有很高的性價(jià)比.ST188紅外傳感器位于A、K之間是發(fā)光二極管,位于C、E之間是光敏三極管.
3.1.2 工作原理
通過用手指按壓紅外反射傳感器ST188,并顯示在1602液晶屏上來測(cè)量心率.系統(tǒng)以IAP15 F2K61S2微控制器為核心,紅外反射傳感器ST188用作檢測(cè)元件.時(shí)間的計(jì)算由IAP15F2K61S2系統(tǒng)的內(nèi)部定時(shí)器完成.在系統(tǒng)操作期間可以顯示心臟跳動(dòng)次數(shù)和時(shí)間.
3.1.3 信號(hào)采集
紅外反射傳感器A、K分別接入高電平和低電平,電位器連在R4旁邊用于調(diào)節(jié)傳感器靈敏度[5].信號(hào)采集過程中,紅外反射傳感器ST188與手指接觸,被手指按壓.脈沖信號(hào)由紅外反射傳感器ST188感知.IAP15F2K61S2微控制器系統(tǒng)負(fù)責(zé)統(tǒng)計(jì)心臟跳動(dòng)次數(shù)和時(shí)間.
3.1.4 信號(hào)放大
本文采用LM358芯片用于放大電路的設(shè)計(jì).由于人的心跳產(chǎn)生的信號(hào)非常弱,導(dǎo)致紅外反射傳感器ST188輸出的信號(hào)同樣很微弱,較易受到周邊環(huán)境的影響,因此需要對(duì)當(dāng)前得到的微弱信號(hào)進(jìn)行放大處理,放大電路使用兩級(jí)反向放大將信號(hào)放大到約2-5V的幅度值.輸出波形相對(duì)于比較輸入波形而言為同相并被放大的波形.放大后的波形是一個(gè)交流信號(hào).在電源旁邊連接一個(gè)電容器,以濾除干擾信號(hào)和抗電磁干擾.整流后的電壓波形(D2二極管)是正弦半波.放大電路的輸出信號(hào)由比較器輸出為方波(2個(gè)引腳的比較電壓根據(jù)3個(gè)引腳的實(shí)際輸出電壓設(shè)定,通常大致是0.8V).
3.2 IAP15F2K61S2單片機(jī)
IAP15F2K61S2單片機(jī)是STC公司推出的新一代支持在應(yīng)用編程的單片機(jī).具有2KB RAM空間,61K Flash空間,IO具備4種工作模式,8路ADC通道.帶仿真接口,可以在Keil C51中調(diào)試程序,適合于嵌入式開發(fā).
3.3 LCD12864液晶屏
一種點(diǎn)陣圖形液晶顯示模塊,具有2線或3線串行,4位/8位并行接口模式,以及簡化的漢字庫; 它可以形成一個(gè)完整的中文人機(jī)交互圖形界面.它可以顯示8×4行16×16點(diǎn)陣漢字.
4 心率測(cè)試儀系統(tǒng)軟件的實(shí)現(xiàn)
4.1 系統(tǒng)軟件介紹
4.1.1 keil C51軟件簡介
Keil C51軟件系統(tǒng)的特點(diǎn)是兼容單芯片C語言軟件開發(fā).鑒于C語言擁有出色的移植性,可以在各種體系結(jié)構(gòu)的軟硬件平臺(tái)上運(yùn)行;語法機(jī)制靈活,可直接訪問硬件;運(yùn)行效率高,運(yùn)行速度較快.在可讀性,功能,結(jié)構(gòu)等方面優(yōu)勢(shì)明顯.Keil提供完整的開發(fā)解決方案,包括C編譯器,宏匯編,鏈接器,庫管理以及強(qiáng)大的仿真器調(diào)試.通過集成開發(fā)環(huán)境將它們統(tǒng)一組合起來.因此,運(yùn)行C語言編程, Keil C51幾乎是不二之選.
本文中Keil C51軟件的主要功能是負(fù)責(zé)將C語言編譯成可重定位的目標(biāo)HEX文件,實(shí)現(xiàn)C語言程序?qū)纹瑱C(jī)的控制.
4.1.2 Proteus電路仿真軟件
Proteus是由英國Labcenter Electronics開發(fā)的多功能EDA軟件.是一款可以提供電路仿真、PCB設(shè)計(jì)和虛擬模型仿真的設(shè)計(jì)平臺(tái).本文中PROTEUS軟件的主要功能是提供心率測(cè)試儀的仿真電路.
4.2 心率測(cè)試儀C語言程序?qū)崿F(xiàn)
4.2.1 心率測(cè)試儀計(jì)數(shù)代碼
#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; //液晶復(fù)位端口
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[] = {” 心率計(jì) ”};
uchar code DIS2[] = {” 次 /每分”};
uchar code DIS3[] = {” 你的心率正\xfd常 ”};
uchar code DIS4[] = {” ”};
uchar code DIS5[] = {” 保持平穩(wěn)的心情”};
4.2.2 系統(tǒng)延時(shí)代碼
void delay(intms)
{while(ms--)
{uchari; for(i=0; i[150; i++)
{_nop_(); _nop_(); _nop_(); _nop_();
}}}
4.2.3 檢查LCD忙狀態(tài)代碼
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 寫指令數(shù)據(jù)到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 寫顯示數(shù)據(jù)到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; //液晶復(fù)位
delay(12);
LCD_RST = 1;
delay(12);
lcd_wcmd(0x34); //打開擴(kuò)展功能,繪圖顯示關(guān)
delay(22);
lcd_wcmd(0x30); //回到基本指令集
delay(23);
lcd_wcmd(0x0C); //退出睡眠模式
delay(23);
lcd_wcmd(0x01); //進(jìn)入待命模式
delay(23);
}
5 小結(jié)
上述程序由Keil C51軟件在最小系統(tǒng)板上成功調(diào)試,可以實(shí)現(xiàn)人體的心率測(cè)試.IAP15F2K61S2微控制器的P32用于連接LED陰極在檢測(cè)到信號(hào)時(shí)顯示帶有LED的心跳.讓被測(cè)人很直觀的感受心跳.系統(tǒng)通過IAP15F2K61S2微控制器的INT0中斷處理ST188傳感器的信號(hào),并用T0中斷時(shí)序.在時(shí)間轉(zhuǎn)為心率數(shù)據(jù)的處理上,采用5次取平均值的方法,增加了數(shù)據(jù)的精確度.最終由LCD12864液晶進(jìn)行顯示,顯示結(jié)果為:系統(tǒng)名稱、心率、健康指數(shù).
參考文獻(xiàn):
〔1〕錢浩宇,汪鵬君,等.基于單穩(wěn)態(tài)定時(shí)偏差的高識(shí)別性PUF電路設(shè)計(jì)[J].浙江大學(xué)學(xué)報(bào)(理學(xué)版),2017(1):64-69.
〔2〕王紅衛(wèi),張穎,等.包公藤甲素衍生物(S)-OTS?HCl的心臟電生理效應(yīng)[J]上海交通大學(xué)學(xué)報(bào)(醫(yī)學(xué)版),2017(2):177-183.
〔3〕武靈芝.基于安卓和藍(lán)牙通信的智能生理監(jiān)護(hù)儀的設(shè)計(jì)[J].北京生物醫(yī)學(xué)工程,2017(4):415-419.
〔4〕郭金建、雷鳴意.風(fēng)光互補(bǔ)發(fā)電的節(jié)能LED燈控制系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015(1):46-48.
〔5〕蘭羽.基才紅外傳感器ST188的自動(dòng)循跡小車設(shè)計(jì)[J].電子設(shè)計(jì)工程,2013(3):64-66.
〔6〕馮祺婷,彭保進(jìn).一種簡易光譜實(shí)驗(yàn)儀的設(shè)計(jì)與實(shí)現(xiàn)[J].光學(xué)儀器,2013(5):80-84.
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2019年3期