玩的就是心跳 —— 使用 PulseSensor 脈搏傳感器測量心率

內容簡介

對於 arduino 來說,網上有大量關於 PulseSensor 脈搏傳感器的資料,而其他單片機上的實例較少。本文使用 STM32F407 系列芯片的 ADC 模塊,從硬件配置、簡易心率算法編寫到官方 Processing 上位機的使用,帶你全方位玩轉 PulseSensor,玩的,就是心跳!

PulseSensor 脈搏傳感器介紹

基本參數

供電電壓:3.3~5V

檢測信號類型:光反射信號(PPG)

輸出信號類型:模擬信號

輸出信號大小:0~VCC

電流大小:~4ma(5v 下)

功能原理

PulseSensor 是一款用於脈搏心率測量的光電反射式模擬傳感器。將其佩戴於手指、耳垂等處,利用人體組織在血管搏動時造成透光率不同來進行脈搏測量。傳感器對光電信號進行濾波、放大,最終輸出模擬電壓值。單片機通過將采集到的模擬信號值轉換為數字信號,再通過簡單計算就可以得到心率數值。

58592659f73823c97c1dd34ec2d938b0

PulseSensor 是一款開源硬件,目前國外官網上已有其對應的開源 arduino 程序和上位機 Processing 程序,其適用於心率方面的科學研究和教學演示,也非常適合用於二次開發。 網上關於傳感器的 arduino 資料已經十分豐富(畢竟同為開源硬件),本文采用 STM32F407系列芯片 的 ADC 模塊讀取並處理傳感器數據,實現心率測量。

引腳定義

傳感器隻有三個引腳,分別為信號輸出 S 腳 、電源正極 VCC 以及電源負極 GND,供電電壓為 3.3V - 5V,可通過杜邦線與開發板連接。上電後, 傳感器會不斷從 S 腳輸出采集到的電壓模擬值。需要註意的是,印有心形的一面才是與手指接觸面,在測量時要避免接觸佈滿元件的另一面,否則會影響信號準確性。

讀取傳感器電壓值 —— STM32 ADC 功能配置

硬件配置

開發板使用的是公司的 M4 板子,傳感器 3.3V 供電,信號采集選用 ADC1 的 通道 2,硬件連接如下:

開發板傳感器PA2S3V3+GND-

把 PA2 用作模擬功能,配置 ADC 為 12 位分辨率,單次轉換,並設置轉換序列長度為 1,首次轉換通道 2。為確保數據準確性,選擇APB2 時鐘 6 分頻作為 ADC 時鐘(即 84M / 6 = 14M),采樣時間 480 個周期(使得采樣時間更加充分),最後使能 ADC。初始化函數如下:

/******************** ADC通道2初始化函數 ************************/
void ADC_AN2_Init(void)
{
/* 設置ADC功能對應的GPIO端口 */
RCC->AHB1ENR |= 1 << 0;
GPIOA->MODER &= ~(3 << (2 * 2));
GPIOA->MODER |= 3 << (2 * 2);

/* 配置ADC采樣模式 */
RCC->APB2ENR |= 1 << 8; //使能ADC模塊時鐘
ADC1->CR1 &= ~(3 << 24); //12位分辨率
ADC1->CR1 &= ~(1 << 8); //非掃描模式
ADC1->CR2 &= ~(3 << 28); //禁止外部觸發
ADC1->CR2 &= ~(1 << 11); //右對齊
ADC1->CR2 &= ~(1 << 1); //單次轉換
ADC->CCR &= ~(3 << 16);
ADC->CCR |= 2 << 16; //6分頻
ADC1->SMPR2 &= ~(0x07 << 6);
ADC1->SMPR2 |= 0x07 << 6; //480采樣周期
ADC1->SQR1 &= ~(0x0f << 20); //1次轉換
ADC1->SQR3 &= ~(0x1f << 0);
ADC1->SQR3 |= 0x02 << 0; //轉換的通道為通道2

/* 使能ADC */
ADC1->CR2 |= 1 << 0; //開啟ADC
}

发表回复

相关推荐

纬地用地图模板标注;手改用地线软件快速标注

关于任意点用地图绘制过程中相关模板及CAD命令的使用经验分享

· 1分钟前

苹果手机不开机的三种解决办法

苹果手机如果出现了不开机,一般有三种原因会导致:1、系统死机,苹果手机如果长时间不关机,手机偶尔可能会出现死机的情况 ...

· 2分钟前

山东省为什么简称鲁,而不是齐?

不久前,国历君曾给大家讲了《中国省份的简称都是怎么来的?》,篇幅有限,我们没有将中国全部省份简称的由来说个遍,所以很 ...

· 4分钟前

日本食品價格到底有多貴,我們在日本超市拍瞭50種商品

本文同步更新於微信公眾號阿佈旅行手記,ID:abyjapan。繼續我們的名古屋系列(具體點擊:和日本人搶五一假期),除瞭泡溫泉...

· 6分钟前

天津教师待遇(工资、公积金)汇总

以上数据系结合历年各区上岸考生反馈,具有相当高的可信度,但同区内个别学校间会有细微差异,每年也会有细微浮动,具体工资 ...

· 6分钟前