- 物聯(lián)網(wǎng)百科
- 產(chǎn)品百科
- 元器件百科
- 方案百科
前言:心率是指人體心臟每分鐘搏動(dòng)的次數(shù)。它是反映心臟是否正常工作的一個(gè)重要參數(shù),同時(shí)心率值也是衡量體力勞動(dòng)強(qiáng)度和腦力勞動(dòng)強(qiáng)度的重要指標(biāo)。因此心率的測量是一種評價(jià)病人生理狀況很好的方法。
心率計(jì)是用于測量心率值的的醫(yī)療設(shè)備,它的應(yīng)用在心血管疾病的研究和診斷方面也發(fā)揮出顯著的作用,它們所記錄的心臟活動(dòng)時(shí)的生物電信號,已成為臨床診斷的重要依據(jù)。隨著現(xiàn)代醫(yī)學(xué)的不斷發(fā)展和進(jìn)步, 人們對各種測量儀器的要求必然越來越高,因此在前人研究的基礎(chǔ)上我們開發(fā)并設(shè)計(jì)了一款性價(jià)比較高的電子心率計(jì), 它有利于解決了傳統(tǒng)測量方法的不準(zhǔn)確性和隨機(jī)性, 而且能夠準(zhǔn)確的測量出人體的心率, 并隨時(shí)以數(shù)字的方式顯示測量結(jié)果。這樣可以使人體心率值直觀化
第一章 方案設(shè)計(jì)
光電容積法的基本原理是利用人體組織在血管搏動(dòng)時(shí)造成的透光率不同來進(jìn)行脈搏測量的,其使用的傳感器由光源和光電變感器兩部分組成,通過綁帶或者夾子固定在病人的手指或者耳垂上。光源一般采用對動(dòng)脈血中氧和血紅蛋白有選擇性的一定波長(500nm~700nm) 的發(fā)光二極管。當(dāng)光束透過人體外周血管,由于動(dòng)脈搏動(dòng)充血容積變化導(dǎo)致這光束的透光率發(fā)生變化,此時(shí)由廣電變換器接收經(jīng)人體組織反射的光線,轉(zhuǎn)變?yōu)殡娦盘柌⑵浞糯蠛洼敵觯捎诿}搏是隨心臟的搏動(dòng)而周期性變化的信號,動(dòng)脈血管容積也周期性變化,因此光電變化器的電信號變化周期就是脈搏率。
整個(gè)心率傳感器的結(jié)構(gòu)如下:
第二章 硬件電路的簡單概述
心率計(jì)設(shè)計(jì)的原理
根據(jù)設(shè)計(jì)要求,該設(shè)計(jì)采用stm32f103zet6作為控制CPU,外圍器件包括數(shù)字溫度傳感器DS18820,光電對管,語音模塊,譯碼器,鎖存器,放大器等等。本作品采用總線控制方式,顯示采用三位靜態(tài)數(shù)碼顯示.
3.2 Pulse Sensor 心率傳感器的原理
PulseSensor 是一款用于心率測量的光電反射式模擬傳感器,將其佩戴在手指或者耳垂等處,通過導(dǎo)線連接可將采集到的模擬信號傳輸給stm32f103zet6單片機(jī)用來轉(zhuǎn)換為數(shù)字信號,再通過stm32的簡單計(jì)算后就可以得到心率數(shù)值,此外還可以將脈搏波形通過串口傳輸?shù)诫娔X顯示波形。
原理圖如下:
由于脈搏的信號極弱,振動(dòng)幅度非常有限,不易進(jìn)行采集和獲取,會給收集脈搏信號者帶來不小的麻煩。在脈搏信號本身極弱的同時(shí),它還很容易受到信號的干擾,對于每一個(gè)生物體來說,其各個(gè)部分的生理信號都是相互干擾相互影響的。再者,每個(gè)生物體的情緒的不同,喜怒哀樂的變化,也會造成生理信號的變化。在這種情況下,脈搏信號就會受到噪聲的干擾,只要選擇一個(gè)恰當(dāng)?shù)拿}搏測量傳感器才能夠獲得準(zhǔn)確、高效、可靠的脈搏信號。脈搏信號的頻率是很低的,一分鐘的次數(shù)大致如下,且對不同個(gè)體也是有差別的:男性的是60到100次,女性的是70到90次,小孩大概是90次。
引腳功能如下:
S ——— 脈搏信號輸出(接單片機(jī)AD接口)
——— 5v(或)電源輸入
———- GND地
3.3 ISD1820語音模塊
應(yīng)用原理圖如下:
引腳功能介紹
電源(VCC):芯片內(nèi)部的模擬和數(shù)字電路使用的不同電源總線在此引腳匯合,這樣使得噪聲最小。去耦合電容應(yīng)盡量靠近芯片。
地線(VSSA,VSSD):芯片內(nèi)部的模擬和數(shù)字電路的不同地線匯合在這個(gè)引腳。
錄音(REC):高電平有效,只要REC變高(不管芯片處在節(jié)電狀態(tài)還是正在放音),芯片即開始錄音。錄音期間,REC必須保持為高。REC變低或內(nèi)存錄滿后,錄音周期結(jié)束,芯片自動(dòng)寫入一個(gè)信息結(jié)束標(biāo)志(EOM),使以后的重放操作可以及時(shí)停止。然后芯片自動(dòng)進(jìn)入節(jié)電狀態(tài)。
邊沿觸發(fā)放音(PLAYE):此端出現(xiàn)上升沿時(shí),芯片開始放音。放音持續(xù)到EOM標(biāo)志或內(nèi)存結(jié)束,芯片自動(dòng)進(jìn)入節(jié)電狀態(tài)。放音后,可以釋放PLAYE.
電平觸發(fā)放音(PLAYL):此端從低變高時(shí),芯片開始放音。持續(xù)至此端回到低電平或遇到EOM標(biāo)志,或內(nèi)存結(jié)束。放音結(jié)束后自動(dòng)進(jìn)入節(jié)電狀態(tài)。
錄音指示(/RECLED):處于錄音狀態(tài)時(shí),此端為低,可驅(qū)動(dòng)LED.此外,放音遇到EOM標(biāo)志時(shí),此端輸出一個(gè)低電平脈沖。此脈沖可用來觸發(fā)PLAYE,實(shí)現(xiàn)循環(huán)放音。
話筒輸入(MIC):此端連至片內(nèi)前置放大器。片內(nèi)自動(dòng)增益控制電路(AGC)控制前置放大器的增益。外接話筒應(yīng)通過串聯(lián)電容耦合到此端。耦合電容值和此端的10KΩ輸入阻抗決定了芯片頻帶的低頻截止點(diǎn)。
話筒參考(MIC REF):此端是前置放大器的反向輸入。當(dāng)以差分形式連接話筒時(shí),可減小噪聲,提高共模抑制比。
喇叭輸出(SP+,SP-):輸出端可直接驅(qū)動(dòng)8Ω以上的喇叭。單端使用必須在輸出端和喇叭之間接耦合電容,而雙端輸出既不用電容又能將功率提高至4倍。SP+和SP-之間通過內(nèi)部的50KΩ的電阻連接,不放音時(shí)為懸空狀態(tài)。
振蕩電阻(ROSC):此端接振蕩電阻至VSS,由振蕩電阻的阻值決定錄放音的時(shí)間。
直通模式(FT):此端允許接在MIC輸入端的外部語音信號經(jīng)過芯片內(nèi)部的AGC電路、濾波器和喇叭驅(qū)動(dòng)器而直接到達(dá)喇叭輸出端。平時(shí)FT端為低,要實(shí)現(xiàn)直通功能,需將FT端接高電平,同時(shí)REC、PLAYE和PLAYL保持低。
第三章 程序設(shè)計(jì)
主程序設(shè)計(jì)
程序的功能:可以通過對口的檢測其高低電平實(shí)現(xiàn)溫度數(shù)據(jù)和心電信號的采集,轉(zhuǎn)換和處理,最后用數(shù)碼管顯示心率值和溫度值;同時(shí)還可以調(diào)用語音播報(bào)子程序?qū)囟戎岛托穆手颠M(jìn)行語音播報(bào)。同時(shí)一旦心率不在設(shè)定范圍之內(nèi),可以通過報(bào)警模塊來提示,提醒用戶注意自己身體。
主程序流程圖的設(shè)計(jì)是整個(gè)設(shè)計(jì)的關(guān)鍵一步,它是我們設(shè)計(jì)思路的具體體現(xiàn)。有了主程序流程圖,我們就可以根據(jù)把一個(gè)復(fù)雜的軟件設(shè)計(jì)分解為若干個(gè)功能模塊,然后逐一設(shè)計(jì)各個(gè)模塊的功能。
在主程序設(shè)計(jì)中我們先初始化,包括顯示模塊初始化等,然后通過判斷是高電平還是低電平來實(shí)現(xiàn)是測量體溫還是測量人體的心率值。
.1 主程序流程圖
/@@***************************************************************************
下位機(jī)編程軟件:keil
程序?qū)崿F(xiàn)功能:
1、 單片機(jī)采集脈搏信號,AD轉(zhuǎn)換并計(jì)算心率值;
2、 將脈搏波形數(shù)據(jù)和心率值通過串口傳送到上位機(jī);
3、 使用LED模擬心臟跳動(dòng);
4、 使用數(shù)碼管和ISD1820模塊實(shí)現(xiàn)數(shù)字顯示和語音播報(bào)
5、 使用蜂鳴器模塊對心率不正常時(shí)進(jìn)行報(bào)警
**************************************************************************/
其主程序如下:
int main(void)
{
HAL_Init();
/@@* Configure the system clock */
SystemClock_Config();
/@@* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
MX_TIM3_Init();
HAL_TIM_Base_Start_IT(&htim3);
while (1)
{
sendDataToProcessing('S', Signal); // send Processing the raw Pulse Sensor data
if (QS == true)
{
sendDataToProcessing('B',BPM); // send heart rate with a 'B' prefix
sendDataToProcessing('Q',IBI); // send time between beats with a 'Q' prefix
QS = false; // reset the Quantified Self flag for next time
}
HAL_Delay(20); //delay for 20ms
}
.2 語音模塊ISD1820功能簡介
ISD1820主要有三個(gè)功能:錄音、電平控制放音和脈沖觸發(fā)放音。
錄音子程序
控制錄音主要有兩個(gè)數(shù)據(jù):1 、錄音的開始地址;2 、錄音的時(shí)間。把這兩個(gè)數(shù)據(jù)都控制了就可以控制錄音時(shí)把聲音錄到哪幾段里頭。注意:REC 信號將被延遲50ms 防止開關(guān)抖動(dòng)引起重復(fù)觸發(fā)。在調(diào)用錄音子程序時(shí)只要給出錄音的開始地址和需要錄音的時(shí)間就可以了。
電平控制放音子程序
電平控制放音中,開始地址和播放時(shí)間也是必不可少的,只要控制了這兩個(gè)參數(shù)就可以確定播出內(nèi)容。不過需要注意的是播放的時(shí)候總是從一段的開頭開始播放的。當(dāng)需要分段播放控制時(shí),錄音時(shí)每一個(gè)內(nèi)容的開頭必須從一個(gè)段的開頭開始。在調(diào)用電平控制放音子程序時(shí)只要給出放音的開始地址和放音的時(shí)間就可以了
脈沖觸發(fā)放音子程序
脈沖觸發(fā)放音與電平控制放音有些不同 ,脈沖觸發(fā)放音不能夠由單片機(jī)來控制放音的時(shí)間,只能夠控制放音的開始地址。脈沖觸發(fā)放音開始后就一直播放到遇到結(jié)束符或語音芯片的盡頭,所以一般在分段語音控制里頭不常用脈沖觸發(fā)。 在調(diào)用脈沖觸發(fā)放音子程序時(shí)只要給出放音的開始地址就可以了。
心率測量的程序設(shè)計(jì)
.1 心率測量程序設(shè)計(jì)
心率測量程序設(shè)計(jì)由兩部分構(gòu)成,前半段實(shí)現(xiàn)初始化,包括定時(shí)器/計(jì)數(shù)器的初始化、設(shè)置堆棧指針以及開中斷等。程序的后半段則是啟動(dòng)兩個(gè)定時(shí)器/計(jì)數(shù)器以及調(diào)用顯示子程序和語音播報(bào)子程序來完成心率值的顯示和語音播報(bào)以及報(bào)警模塊。
.2 中斷服務(wù)子程序設(shè)計(jì)
void MX_TIM3_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim3.Instance = TIM3;
htim3.Init.Prescaler = 7;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 1999;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_Base_Init(&htim3);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig);
}