issues with the HRM

Posted on
  • Hallo people, I got my bangles on the mail this weekend and I'm enjoying a lot playing with it. But, I can't get any meaningful HR signal, it's always saturated. Could it be that my unit has some issue or its normal?

    I'm adding a representative image of the kind of signal that I get. The raw data is always either 100 or -2.

    I'm using the 2.08.189 FW but even before updating to that it wasn't getting anything too different.

    Any help is appreciated!

    Mucha suerte!


    1 Attachment

    • 20210301_190814.jpg
  • Hi, That's a tricky one - it definitely looks broken. However I just checked on a Bangle here and that HRM app does now seem to have some issue with graphing the data. I'll look into it and will get that fixed - maybe when it's sorted you'll be able to see slightly better data.

    You mention the raw data - you actually looked at the data from the HRM event and you're sure that the only stuff in there is -2 or 100? It seems pretty odd - and it'd be hard to imagine a hardware failure that caused those readings so it could just be software.

  • Many thanks for the reply! The raw values where from some of the HRM monitor apps, not me reading them from the event.

    I'm attaching a 1 min file that I just recorded with the HRM Data Exporter app, while my arm was resting on a table and trying to keep it as calm as possible. It's not -2, 100, has a bit more values, but still saturated data that doesn't look quite appropriate.

    Importantly, I'm almost totally sure that I'm still alive and that I have a pulse, will ask around just to be sure.

    Do you have any ideas about what could be happening?


    1 Attachment

  • Ok, thanks for that dump - yes, that does look wrong to me.

    Normally the heart rate monitor takes a few seconds (maybe 20?) to adjust itself and start getting correct readings, but it definitely looks like in your case it's not managing to do that.

    Where do you live? What I usually say when there's some problem like this is if you could take the straps off the watch (instructions here) and then just post it back to us, untracked, in a Jiffy bag (shipping is cheap that way), I'll get a new watch body in the post to you.

  • But, what's the procedure, wait for my unit to arrive and then sent the other?
    This is going to take a little longer than expected. I'm currently living in Lisbon, and from UK to here it took some 2 weeks and then customs, I guess if it's no tracked it could take less, but I can't assure you that it'll reach you soon.
    Unfortunate amount of messines, but thanks for the amazing response and availability!

  • Ok, no problem. As long as I know you're going to send it back I can get one out to you now, then you can swap over when it arrives. I'll drop you an email now

  • Already replied,

    Many thanks, I hope to be posting here soon enough with some code and more,

    Mucha Suerte!

  • Hope your new watch works ok when you get it, FYI on the HRM data exporter app specifically, the -2 doesn't relate to your heartrate directly but the signal from the sensor so it should oscillate somewhere between I think -4 and 4 in normal situations, so your log does look bad but only because it doesn't fluctuate much rather than there being low numbers. Sometimes with mine I do have to adjust the position etc to get good readings at times and it can be sensitive to movement.

  • Took me long enough to report back!

    After some emails with Gordon, I got a replacement watch that is working. I'm able to see a signal that looks quite like a pulsating heart!

    Many thanks for the help and prompt solution,

    Suerte!

  • I had big hopes being a javascripter and having an HRM on my wrist I could program. So I participated to the Kickstarter campaign.

    However the values given by the HRM didn't make any sense. And I dropped it for a few months. But after reading some posts here about HRM.
    I just updated it to the latest firmware.
    But the readings didn't improve.

    Here's a video of both values taken, by the bangle and a chest strap linked to my bike computer.
    I verified counting my heart beats for 15" and they match the chest strap.

    Is this the sensor that has an issue ?
    If it is a software issue, would you mind to tell me where on github I can find the source and try things ?


    1 Attachment

  • Hi - is this with the 2v13 firmware, and all the apps are up to date? And the Bangle is seated nicely against your skin? I forget now but I think some of the KickStarter watches had a protective foil on the back, so worth checking for that.

    Maybe you could have a look at the HRM-raw values using the Web IDE. Run:

    var h;
    Bangle.setHRMPower(1);
    Bangle.on('HRM-raw', function(hrm) { h=hrm });
    

    I'd be really interested to see what kind of range the vcPPG values are in.

    This is the kind of thing I see on the one I have here - which is obviously a lot different, and you can see the values seem a lot more 'analog' out of it:


    1 Attachment

    • heartrate.png
  • Thanks for the fast reply !
    It is 2v13.
    The HRM app is... now up to date.
    The strap is tight, and there is no foil on the sensor.

    Most of the time, values are still off.
    For instance now when I'm typing this message, it gets wild.
    Vibrations issues maybe as I read on another post.

    But after about 30", sometimes more, of being idle, the values match as in the attached video.
    Then, even idle, values goes off, and come back oscillating.

    I had this when values were off:
    { vcPPG: 2925, vcPPGoffs: 0, isWearing: true, adjusted: false,
    vcCurrent: 41, vcPre: 868, vcPS: 1062, vcEnv: 0, vcIRQ: 23,
    vcRaw: new Uint8Array([23, 109, 11, 21, 0, 100, 3, 38, 4, 0, 0, 0]).buffer,
    raw: 2925, filt: 4548, avg: 645, isBeat: false, bpm: 164.5,
    confidence: 0 }

    And this when the value were in sync:
    { vcPPG: 1177, vcPPGoffs: 0, isWearing: true, adjusted: false,
    vcCurrent: 40, vcPre: 886, vcPS: 1085, vcEnv: 0, vcIRQ: 23,
    vcRaw: new Uint8Array([23, 153, 4, 20, 0, 118, 3, 61, 4, 0, 0, 0]).buffer,
    raw: 1177, filt: 4759, avg: -101, isBeat: false, bpm: 63.5,
    confidence: 40 }

    I saw confidence 100 sometimes too.


    1 Attachment

  • Ok, thanks! So with the app up to date that's looking a lot more reasonable, and it seems when confidence=100% the heart rate reading is matching the chest strap?

    The picture above was what I get after a minute of not moving my arm.

    And yes, movement will knock the HRM sensor off. There's a whole other thread on this which I think you'd probably have seen, but basically every watch sensor has this problem, and making it work better is a software issue.

    • On modern sensors they look at the data from the accelerometer as well as HRM, and use this to try and discount false positives.
    • The heart rate algorithm provided by the manufacturer for this sensor (which can use the accelerometer) is in a binary blob, with no source. Some people have been very against using this, so right now we have an open algorithm I came up with, but it doesn't use the accelerometer.

    The code itself is at https://github.com/espruino/Espruino/blo­b/master/libs/misc/hrm_vc31.c (for the low lever sensor) and https://github.com/espruino/Espruino/blo­b/master/libs/misc/heartrate.c for the algorithm, so any improvements would be great.

    BUT: We've been through this with the step counting. If someone makes changes that they believe improve things for them, it usually breaks things for other people. What we need is a more scientific approach - there's a thread here (sorry - don't have time to find it right now) where there's a discussion on this. Basically there's an app where you can download the raw HRM and accelerometer data and info from a bluetooth heart rate monitor - then we can get a bunch of data and everyone can test the algorithm offline and come up with improvements that work for everyone

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

issues with the HRM

Posted by Avatar for mauro.toro @mauro.toro

Actions