硬件組成與連接
2、BH1790GLC傳感器
3、ArduinoNANO電路板。
連接關(guān)系如上圖所示
程序解讀
ROHM官方提供的BH1790GLC_HeartRate例程是基于arduino寫的,文件結(jié)構(gòu)如下圖:
這樣的程序目錄,顯然很不合適使用arduino IDE去查閱,這里推薦大家使用Source Insight的軟件去查看代碼。需要注意的是,Source Insight不支持.ino文件,為了方便,將HeartRate.ino另存為一個(gè).c的文件,方便Source Insight查看。
將程序燒錄到硬件中運(yùn)行如下:
當(dāng)前心率為70,反復(fù)測試幾次,數(shù)值都在70-75,看來一致性還是不錯(cuò)。
廢話不多說,先看看ROHM怎么寫的,下面開始直接上代碼:
在setup()函數(shù)中,有兩個(gè)比較關(guān)鍵的函數(shù)hr_bh1790_Init()和hr_bh1790_StartMeasure()函數(shù)
其中hr_bh1790_Init()并沒有對bh1790硬件進(jìn)行初始化,只是簡單的讀取了傳感器的兩個(gè)ID寄存器,驗(yàn)證了一下傳感器的身份,同時(shí)讓硬件進(jìn)行復(fù)位。
其主要的工作還是去初始化程序定義的結(jié)構(gòu)體,給這些結(jié)構(gòu)體賦上初值。
其中pwCalc_Init(void)函數(shù)也很重要,程序中定義了兩個(gè)IIR數(shù)字濾波器,這個(gè)函數(shù)是將這個(gè)數(shù)字濾波器進(jìn)行初始化。
兩個(gè)IIR數(shù)字濾波器是3.5HZ的高通濾波器和0.5HZ的低通濾波器。
小知識:
在律規(guī)則的情況下,心率和脈搏是一致的。如果有心律不齊的人,會測到心率和脈率不一致,脈率少于心率。正常人心率在60—100次/分鐘,在此范圍有波動(dòng)都是正常的
所以將兩個(gè)數(shù)字濾波器設(shè)置在這個(gè)這個(gè)范圍是合適的。
接下來就是在setup()函數(shù)中的另外一個(gè)函數(shù)hr_bh1790_StartMeasure (void)
在這個(gè)函數(shù)中程序?qū)EAS_CTRL1、MEAS_CTRL2、MEAS_START寄存器進(jìn)行了操作
接下來就是最關(guān)鍵的loop()函數(shù),看看ROHM官方是怎么將波形數(shù)據(jù)進(jìn)行處理的。
在loop函數(shù)中,timer_flg是一個(gè)32HZ的計(jì)時(shí)標(biāo)志,每隔31.25MS,就讀一次傳感器的數(shù)據(jù),并進(jìn)行計(jì)算。
其中hr_bh1790_Calc(s_cnt_freq)是本次分析的關(guān)鍵函數(shù),在這個(gè)函數(shù)中,程序?qū)鞲衅鲾?shù)據(jù)進(jìn)行讀取,濾波,判斷,最后計(jì)算出心率值;而hr_bh1790_GetData()僅僅是將心率結(jié)果數(shù)據(jù)和判斷讀出來,方便串口打印而已。
直接查看hr_bh1790_Calc()函數(shù):
在這個(gè)函數(shù)中,程序通過pw_GetMeasureData(&s_pwData);將寄存器DATAOUT_LEDOFF和DATAOUT_LEDON的數(shù)據(jù)讀出來保存到s_pwData結(jié)構(gòu)體中。
pwCalc(&s_pwData,&pw);及將s_pwData數(shù)據(jù)傳入到IIR濾波器中,經(jīng)過高通和低通濾波器之后,得到的數(shù)據(jù)保存到PW變量中。
ma_AverageF()滑動(dòng)求平均,
iir_Filter()即數(shù)字濾波器,先后經(jīng)過s_iirPrm_hpf高通數(shù)字濾波器和s_iirPrm_lpf低通數(shù)字濾波器。
我在BH1790GLC_HeartRate例程上插入自己的代碼,將s_pwData(紅色DATAOUT_LEDON,藍(lán)色DATAOUT_LEDOFF)以及經(jīng)過IIR濾波之后的數(shù)據(jù) pw(綠色)繪制出來。
將綠色圖形放大:
可以看到,經(jīng)過IIR濾波之后,pw幾乎呈現(xiàn)很規(guī)律的正弦波。
并且,這個(gè)波形與s_pwData的幅值大小沒太大的關(guān)系。所以,最這樣的波形進(jìn)行統(tǒng)計(jì)和判斷是就比之前要容易很多了。
-
傳感器
+關(guān)注
關(guān)注
2551文章
51177瀏覽量
754275 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
39文章
6131瀏覽量
113727
發(fā)布評論請先 登錄
相關(guān)推薦
評論