最近買了一個心率傳感器,MAX30100但是這個傳感器讀出來的是原始數據,需要大量的處理,所以就網上找資料,找到很多資料;
先說說這個測量心跳和血氧的原理,大概就是,使用特定紅光發射一定波長的光,然后使用接收管接收,接收都是16位原始數據;
因為血液含氧量對發的紅光比較敏感,所以就可以靠,接收反射光的強弱來判定血氧含量;
最終的接收數據就是一個幾乎直流的信號加上一個很小的脈沖信號,那個脈沖信號就是心率信號了,所以面對的問題就是怎么把脈沖信號提取出來;
重點就在這里;
網上很多人使用STM單片機做這個,使用FFT,還有很多階濾波算法,我想是用51單片機來弄,但是就一個1024階FFT就讓這個單片機望而卻步了,占用內存都19K怎么都跑不動啊 ,
;
最后就是用了一階RC濾波就搞定了,
不過在寫RC濾波的時候出現一個插曲,就是網上找的資料10個9個都是錯的,
這個是最后使用RC濾波,然后再減去自身得到的心跳數據,所以為什么那些人要FFT那么麻煩呢 ;
這個是最終的效果圖;