This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于msp430f1611设计心率检测仪的问题

Other Parts Discussed in Thread: MSP430F1611

本人所使用的MCU为msp430f1611,探头为TSL235,通过交替驱动660nm和940nm波长的双LED发光二极管来进行心率和血氧饱和度的检测。目前整体框架已基本完成,但是出现许多的问题:

1.在利用TimerA的capture模式来捕捉TSL235的频率信号,同时采用TimerA的模块1(TA0)来设置1ms中断时出现问题。其中时钟源采用8M的SMCLK,定时器采用增计数模式,程序希望在每次计满回零时(TA0)进入1ms定时器中断,同时不被优先级(TA1)的捕捉中断所打断。附上初始化程序及主程序段供以参考。

2.在后续的数字信号处理时发现所得频率信号总是掺杂10Hz左右的低频干扰,且一直存在,基本排除环境干扰影响,所以请问是否有可能是TSL235探头本身的精度问题?如果是,有没有其它可供选择的高精度探头?

以上问题,作为初学者,困惑本人已久,望耐心解答,不甚感激。

  • 楼主,

      你好,能不能描述一下定时器问题具体的表现是什么?无法进入中断还是定时不准?

    关于10Hz左右的干扰,楼主如何排除环境干扰的?10Hz的干扰楼主应该可以加陷波消除的吧

  • 1.具体表现为程序跑不动,死在主程序的一个地方,因为对编译软件用的不熟,所以不知道如何去用调试功能,只会在板子上跑看现象。详见我所上传的程序。我个人考虑过是否可能为主循环内的判断条件设置不合适所致,但修改测试后发现,只要我把初始化条件改为连续计数模式,程序就可以跑通,定时器在记满65536个数后进入溢出中断,且定时器时钟源为1Mhz,而设置为增计数模式自主设定溢出值则会出错。

    2.对于干扰,本人是在不同光照情况下用matlab进行数据分析,但是无论是自然光还是测量人体的心率时均会出现,只有完全遮光后才会消失。我也考虑过是否有可能是在数据采集后换算成频率时计算的问题,但实在想不通了。对于陷波,因为所采集的是心率信号,大概在2hz以内,这么小的过度带做数字滤波器会有难度,所以还没有考虑过。

  • 你好,

      关于问题1,建议参考下面的程序,不过看来楼主的代码之后感觉应该没什么问题,所以建议楼主一块一块的来调试,先将定时器部分调通之后再加入其它部分功能:

    #include <msp430.h>

    int main(void)
    {
    WDTCTL = WDTPW + WDTHOLD; // Stop WDT
    P1DIR |= 0x01; // P1.0 output
    CCTL0 = CCIE; // CCR0 interrupt enabled
    CCR0 = 20000;
    TACTL = TASSEL_2 + MC_1; // SMCLK, upmode

    _BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
    }

    // Timer A0 interrupt service routine
    #pragma vector=TIMERA0_VECTOR
    __interrupt void Timer_A (void)
    {
    P1OUT ^= 0x01; // Toggle P1.0
    }

    关于问题二,楼主使用的原理是不是红外发射/接收测量脉搏?按照楼主的描述,遮光之后消失,有没有可能10Hz的干扰来自于光源本身?

  • 你好,

    1.之前我也调试过很久,也有把定时器单独拿出来调试,但是一旦涉及到同时使用TA的两个寄存器(CCR0和CCR1)后总是有许多问题,如今我也只好用软件延时的方法来替代定时器控制程序的循环时间。请问在这方面有什么是应该多注意的?

    2.我并没有考虑到红外光源的问题,一直怀疑是外界光源的干扰,只是排除了外界光源影响,所以并没有测试过发光管。这有可能吗?此外不知道是否有比较好的双波长(我采用的是660nm和940nm双波长的)红外二极管推荐呢?

  • 楼主你好,

         建议下载430ware,里面会有包括timer在内的外设使用的demo code,相信会对你有帮助。关于光源的干扰我也不能确定,可能是光源,可能是光源的驱动电路,这个可能需要楼主自己来排查。

  • 陷波不是针对50HZ工频来说的吗?如果用直流电好像不用考虑陷波吧??

  • 请问楼主,TLS235把光转换为频率时,你怎么做到一次捕获得到红光或者红外光的交流,直流信号的啊?我做过模拟血氧,但现在做数字血氧感觉用频率来代替电压后不知道交直流分量怎么经过一次捕获就得到了,望帮忙解答一下,谢谢!

  • 请问把红光红外光强度转换为频率后直流分量就是频率最低的量吗?然后模拟血氧是时间t与电压U的曲线,数字血氧是时间t与频率f的曲线,能不能直接将频率当成电压处理,就像模拟血氧处理那样?本人做过模拟血氧,数字血氧不是很清楚,望帮忙解答,谢谢!

  • 请问TSL235输出的频率信号与电压之间的关系?我们一般是处理电压信号,现在换成频率信号,不知道怎么处理啊?还望解答,谢谢!

  • 请问你是怎么处理频率信号的啊?我们一般都是处理电压信号啊,现在是频率信号了,不知道怎么处理,望帮忙解答解答,急急急,谢谢!

  • 就像你之前所说,原本是电压信号与时间轴所画出的心率信号图,现在只是把纵轴从电压信号变成了频率信号,至于频率与强度之间的关系图,需要具体查阅相关技术手册,我记得当时我所用的TSL235在860nm光源下和强度成线性关系(记不清了,好像是这样),你可以把采集到的信号放到电脑上用matlab分析,之后就是数字信号的处理过程了

  • 我之前做过模拟血氧,是产品级别的,现在想把它移植到数字血氧上面,因为模拟血氧里面有很多参数是根据电压值设置的,那个参数调了接近一年的时间才做好,所以我现在想搞清楚模拟数字细节各方面的差异后直接移植原来的算法,换成频率后很不适应啊!