最近买了一个心率传感器,MAX30100但是这个传感器读出来的是原始数据,需要大量的处理,所以就网上找资料,找到很多资料;
先说说这个测量心跳和血氧的原理,大概就是,使用特定红光发射一定波长的光,然后使用接收管接收,接收都是16位原始数据;
因为血液含氧量对发的红光比较敏感,所以就可以靠,接收反射光的强弱来判定血氧含量;
最终的接收数据就是一个几乎直流的信号加上一个很小的脉冲信号,那个脉冲信号就是心率信号了,所以面对的问题就是怎么把脉冲信号提取出来;
重点就在这里;
网上很多人使用STM单片机做这个,使用FFT,还有很多阶滤波算法,我想是用51单片机来弄,但是就一个1024阶FFT就让这个单片机望而却步了,占用内存都19K怎么都跑不动啊 ,
;
最后就是用了一阶RC滤波就搞定了,
不过在写RC滤波的时候出现一个插曲,就是网上找的资料10个9个都是错的,
这个是最后使用RC滤波,然后再减去自身得到的心跳数据,所以为什么那些人要FFT那么麻烦呢 ;
这个是最终的效果图;