當前位置: 首頁 > 物聯網百科 > 産品百科 > 查看詳情
智能心率檢測儀方案
來源:聚龙棋牌作者:日期:2020-08-21 11:03:49點擊:236次

 

  前言:心率是指人體心髒每分鍾搏動的次數。它是反映心髒是否正常工作的一個重要參數,同時心率值也是衡量體力勞動強度和腦力勞動強度的重要指標。因此心率的測量是一種評價病人生理狀況很好的方法。

  心率计是用于测量心率值的的医疗设备,它的应用在心血管疾病的研究和诊断方面也发挥出显著的作用,它们所记录的心脏活动时的生物电信号,已成为临床诊断的重要依据。随着现代医学的不断发展和进步, 人们对各种测量仪器的要求必然越来越高,因此在前人研究的基础上我们开发并设计了一款性价比较高的电子心率计, 它有利于解决了传统测量方法的不准确性和随机性, 而且能够准确的测量出人体的心率, 并随时以数字的方式显示测量结果。这样可以使人体心率值直观化

  第一章 方案设计

  光电容积法的基本原理是利用人体组织在血管搏动时造成的透光率不同来进行脉搏测量的,其使用的传感器由光源和光电变感器两部分组成,通过绑带或者夹子固定在病人的手指或者耳垂上。光源一般采用对动脉血中氧和血红蛋白有选择性的一定波长(500nm~700nm) 的发光二极管。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这光束的透光率发生变化,此时由广电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出,由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也周期性变化,因此光电变化器的电信号变化周期就是脉搏率。

  整個心率傳感器的結構如下:
心率傳感器结构

  第二章 硬件电路的简单概述

  心率計設計的原理

  根據設計要求,該設計采用stm32f103zet6作爲控制CPU,外圍器件包括數字溫度傳感器DS18820,光電對管,語音模塊,譯碼器,鎖存器,放大器等等。本作品采用總線控制方式,顯示采用三位靜態數碼顯示.

  3.2 Pulse Sensor 心率傳感器的原理

  PulseSensor 是一款用于心率测量的光电反射式模拟传感器,将其佩戴在手指或者耳垂等处,通过导线连接可将采集到的模拟信号传输给stm32f103zet6单片机用来转换为数字信号,再通过stm32的简单计算后就可以得到心率数值,此外还可以将脉搏波形通过串口传输到电脑显示波形。

  原理圖如下:


心率傳感器原理

  由于脈搏的信號極弱,振動幅度非常有限,不易進行采集和獲取,會給收集脈搏信號者帶來不小的麻煩。在脈搏信號本身極弱的同時,它還很容易受到信號的幹擾,對于每一個生物體來說,其各個部分的生理信號都是相互幹擾相互影響的。再者,每個生物體的情緒的不同,喜怒哀樂的變化,也會造成生理信號的變化。在這種情況下,脈搏信號就會受到噪聲的幹擾,只要選擇一個恰當的脈搏測量傳感器才能夠獲得准確、高效、可靠的脈搏信號。脈搏信號的頻率是很低的,一分鍾的次數大致如下,且對不同個體也是有差別的:男性的是60到100次,女性的是70到90次,小孩大概是90次。

  引腳功能如下:

  S ——— 脉搏信号输出(接单片机AD接口)

  ——— 5v(或)电源输入

  ———- GND地

  3.3 ISD1820语音模块

  應用原理圖如下:



心率傳感器芯片

  引腳功能介紹

  電源(VCC):芯片內部的模擬和數字電路使用的不同電源總線在此引腳彙合,這樣使得噪聲最小。去耦合電容應盡量靠近芯片。

  地線(VSSA,VSSD):芯片內部的模擬和數字電路的不同地線彙合在這個引腳。

  錄音(REC):高電平有效,只要REC變高(不管芯片處在節電狀態還是正在放音),芯片即開始錄音。錄音期間,REC必須保持爲高。REC變低或內存錄滿後,錄音周期結束,芯片自動寫入一個信息結束標志(EOM),使以後的重放操作可以及時停止。然後芯片自動進入節電狀態。

  邊沿觸發放音(PLAYE):此端出現上升沿時,芯片開始放音。放音持續到EOM標志或內存結束,芯片自動進入節電狀態。放音後,可以釋放PLAYE.

  電平觸發放音(PLAYL):此端從低變高時,芯片開始放音。持續至此端回到低電平或遇到EOM標志,或內存結束。放音結束後自動進入節電狀態。

  錄音指示(/RECLED):處于錄音狀態時,此端爲低,可驅動LED.此外,放音遇到EOM標志時,此端輸出一個低電平脈沖。此脈沖可用來觸發PLAYE,實現循環放音。

  話筒輸入(MIC):此端連至片內前置放大器。片內自動增益控制電路(AGC)控制前置放大器的增益。外接話筒應通過串聯電容耦合到此端。耦合電容值和此端的10KΩ輸入阻抗決定了芯片頻帶的低頻截止點。

  话筒参考(MIC REF):此端是前置放大器的反向输入。当以差分形式连接话筒时,可减小噪声,提高共模抑制比。

  喇叭輸出(SP+,SP-):輸出端可直接驅動8Ω以上的喇叭。單端使用必須在輸出端和喇叭之間接耦合電容,而雙端輸出既不用電容又能將功率提高至4倍。SP+和SP-之間通過內部的50KΩ的電阻連接,不放音時爲懸空狀態。

  振蕩電阻(ROSC):此端接振蕩電阻至VSS,由振蕩電阻的阻值決定錄放音的時間。

  直通模式(FT):此端允許接在MIC輸入端的外部語音信號經過芯片內部的AGC電路、濾波器和喇叭驅動器而直接到達喇叭輸出端。平時FT端爲低,要實現直通功能,需將FT端接高電平,同時REC、PLAYE和PLAYL保持低。

  第三章 程序设计

  主程序設計

  程序的功能:可以通過對口的檢測其高低電平實現溫度數據和心電信號的采集,轉換和處理,最後用數碼管顯示心率值和溫度值;同時還可以調用語音播報子程序對溫度值和心率值進行語音播報。同時一旦心率不在設定範圍之內,可以通過報警模塊來提示,提醒用戶注意自己身體。

  主程序流程圖的設計是整個設計的關鍵一步,它是我們設計思路的具體體現。有了主程序流程圖,我們就可以根據把一個複雜的軟件設計分解爲若幹個功能模塊,然後逐一設計各個模塊的功能。

  在主程序設計中我們先初始化,包括顯示模塊初始化等,然後通過判斷是高電平還是低電平來實現是測量體溫還是測量人體的心率值。

  .1 主程序流程图

  /@@***************************************************************************

  下位機編程軟件:keil

  程序實現功能:

  1、 单片机采集脉搏信号,AD转换并计算心率值;

  2、 将脉搏波形数据和心率值通过串口传送到上位机;

  3、 使用LED模拟心脏跳动;

  4、 使用数码管和ISD1820模块实现数字显示和语音播报

  5、 使用蜂鸣器模块对心率不正常时进行报警

  **************************************************************************/

  其主程序如下:

  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主要有三個功能:錄音、電平控制放音和脈沖觸發放音。

  錄音子程序

  控制录音主要有两个数据:1 、录音的开始地址;2 、录音的时间。把这两个数据都控制了就可以控制录音时把声音录到哪几段里头。注意:REC 信号将被延迟50ms 防止开关抖动引起重复触发。在调用录音子程序时只要给出录音的开始地址和需要录音的时间就可以了。

  電平控制放音子程序

  電平控制放音中,開始地址和播放時間也是必不可少的,只要控制了這兩個參數就可以確定播出內容。不過需要注意的是播放的時候總是從一段的開頭開始播放的。當需要分段播放控制時,錄音時每一個內容的開頭必須從一個段的開頭開始。在調用電平控制放音子程序時只要給出放音的開始地址和放音的時間就可以了

  脈沖觸發放音子程序

  脉冲触发放音与电平控制放音有些不同 ,脉冲触发放音不能够由单片机来控制放音的时间,只能够控制放音的开始地址。脉冲触发放音开始后就一直播放到遇到结束符或语音芯片的尽头,所以一般在分段语音控制里头不常用脉冲触发。 在调用脉冲触发放音子程序时只要给出放音的开始地址就可以了。

  心率測量的程序設計

  .1 心率测量程序设计

  心率測量程序設計由兩部分構成,前半段實現初始化,包括定時器/計數器的初始化、設置堆棧指針以及開中斷等。程序的後半段則是啓動兩個定時器/計數器以及調用顯示子程序和語音播報子程序來完成心率值的顯示和語音播報以及報警模塊。

  .2 中断服务子程序设计

  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);

  }