Great demo. I have little query. The heart rate values are still varying rapidly by applying constant pressure on sensors. How to stable the values ? As other products available in the market gives more stable heart rate results.
@maxim integrated It seems that in the datasheet for MAX30102, the order of LEDs is wrong, i.e. first LED is the IR one. In other words, only the IR LED becomes online in the heart rate mode. Consequently, the data read from the FIFO is in this order too. The code you're referring to is also based on the wrong info from the datasheet and as a result, the readings from IR and red LEDs are being used instead of each other which essentially means wrong results for SpO2 calculations. The MAX30102 chip I'm working returns Part ID: 0x15 and Revision ID: 0x03, so it is indeed a MAX30102 and not the MAX30100.
The MAX30102 is quite a nice package. We've experimented with it considerably. The data output suffers from the tiniest movement of the flesh, which MUST be pressed to the LED window. Otherwise, raw data is unusable. That's been our experience. Can you tell us how to make the system be forgiving in such real world circumstances?
Glad you like it! The reference board was not designed for motion compensation and the algorithm works in resting mode only. To use with movement, you probably need an accelerometer.
Thank you for the demo. I just start playing with a MAX30100 board and I've noticed that it's very difficult to have stable readings in other place but the finger, and noticed when you said that this sensors were only appropriated for extremities, ie fingers and ear lobe, so, I'd like to ask if you have a sensor (or adapter) that work better in a wrist/arm/chest/leg band. The finger sensor is not ok in a gymn environment it will get in the way when you are lifting or using the hands in any way and the ear lobe sensor will look to geek to most people. I'm not a professional developer, just trying do make a (cheap) sensor tailored for my needs. Thank you
The result of Heart Rate is unstable and floating in my test environment, although the values of SPO2 is correct. I am confused about that! Could you figure this problem out for me?
21:40 Okay is true with timing distance and Sampling frequency you can get the HR, how do you get that timing? that's my question because the sampling frequency is known in my application is defined by a PSoC HW programming in the blocks, but what about the timing distance? how do you get it? or how the algorithm gets it?
Great demo! It's very encouraging to see this board functioning. Over the past few hours I've been attempting to get this board to work - initially using the sample code on the Maxim site. Code failed to compile in the Arduino 1.6.4 IDE - even after changing pin/port assignments as described in the code comments (would not take references to SCL_PORT). I updated to the IDE to 1.8.1 and pulled the code from GitHub, as mentioned in the video. Still fails to compile, in a different way but still in the I2C library. Any ideas?
Thanks for the demo. I came here because I had unstable readings and I thought I was doing something wrong but this doesn't seem much better. Would you say it is normal for the HR to bounce between 63 and 115 bbm and for the SPO2 to be always 99-100?
Good day! Thank you very much for your video! I don't understand how did you calculate 25 samples per second? It depends on what? Which of the parameters of Arduino board influence on number of samples we are collecting?
Thanks for your interest. The sample rate is set in the the maxim_max20102_init() function. The following instructions set the raw sample rate to 100Hz, and 4 samples averaged per FIFO sample. So 100/4=25 samples per second. // SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (411uS) if(!maxim_max30102_write_reg(REG_SPO2_CONFIG,0x27)) return false; //sample avg = 4, fifo rollover=false, fifo almost full = 17 if(!maxim_max30102_write_reg(REG_FIFO_CONFIG,0x4f)) return false;
Hi Maxim Team, Thank you much for the great work. Also for sharing for free your algorithm for HRM. Just one thing to add, as mentioned on the latter part of the video, you have said that you cant vary led brightness using arduino Uno?, I just think you can. It has PWM pins. Regards, Charles
Hi Ali Ali, For the mobile app, we wrote some firmware to connect the MAXREFDES117 to a Flora board and a Flora Bluefruit LE board, and hence communicate with the tablet. You can download any BLE heart rate because BLE has a protocol for heart rate. The code is here on Github: github.com/MaximIntegratedRefDesTeam/RD117_FLORA_BLE It is open source, with all of the benefits and limitations. Of course, we want it to work for you. If you’re already done this, and you’re getting weird data, that’s another issue. Let us know. Best regards, Dave
im currently having an issue with the sample arduino code, i made sure all the pins were corrected but the serail monitor displays what seems to be random ascii caracters without anything legible.
Sorry to hear you are having issues! Please contact our Technical Support team. They will be more than happy to help you! maximintegratedsupport.force.com/support/s/technical-support
For the Arduino platform, sensors sample at 25sps. The algorithm takes a block of 100 samples to calculate the heart rate, and the calculated heart rate is updated every second.
Hi there, you may contact our Technical Support team. They will be more than happy to help you! maximintegratedsupport.force.com/support/s/technical-support
Great demo. I have little query. The heart rate values are still varying rapidly by applying constant pressure on sensors. How to stable the values ? As other products available in the market gives more stable heart rate results.
hello, did you find an answer?
@maxim integrated It seems that in the datasheet for MAX30102, the order of LEDs is wrong, i.e. first LED is the IR one. In other words, only the IR LED becomes online in the heart rate mode. Consequently, the data read from the FIFO is in this order too. The code you're referring to is also based on the wrong info from the datasheet and as a result, the readings from IR and red LEDs are being used instead of each other which essentially means wrong results for SpO2 calculations. The MAX30102 chip I'm working returns Part ID: 0x15 and Revision ID: 0x03, so it is indeed a MAX30102 and not the MAX30100.
In max30102 datasheet it is clearly mentioned that in Heart Rate mode only Red Led is used, so i think you are mistaken
Great demo! How is the performance for measuring about the forehead?
The MAX30102 is quite a nice package. We've experimented with it considerably. The data output suffers from the tiniest movement of the flesh, which MUST be pressed to the LED window. Otherwise, raw data is unusable. That's been our experience. Can you tell us how to make the system be forgiving in such real world circumstances?
Glad you like it! The reference board was not designed for motion compensation and the algorithm works in resting mode only. To use with movement, you probably need an accelerometer.
@@maximintegrated Accelerometer is then used to find resting slots or in some other way?
@UCOLIvHazkdRGs0RbrporeMg Thank you! I think with Kalman it will be more accurate measurements. Lets see if I have enough CPU for that 😄
Is it possible to use the device on the wrist?
Thank you for the demo. I just start playing with a MAX30100 board and I've noticed that it's very difficult to have stable readings in other place but the finger, and noticed when you said that this sensors were only appropriated for extremities, ie fingers and ear lobe, so, I'd like to ask if you have a sensor (or adapter) that work better in a wrist/arm/chest/leg band.
The finger sensor is not ok in a gymn environment it will get in the way when you are lifting or using the hands in any way and the ear lobe sensor will look to geek to most people.
I'm not a professional developer, just trying do make a (cheap) sensor tailored for my needs. Thank you
I would love to know too
The result of Heart Rate is unstable and floating in my test environment, although the values of SPO2 is correct. I am confused about that! Could you figure this problem out for me?
21:40 Okay is true with timing distance and Sampling frequency you can get the HR, how do you get that timing? that's my question because the sampling frequency is known in my application is defined by a PSoC HW programming in the blocks, but what about the timing distance? how do you get it? or how the algorithm gets it?
Hello Maxim Integrated. Thanks for the demo. How much percent of emitted LED light actually gets reflected back to the sensor ?
Is the device shown at the end of the video available for sale in India?
why does the heartrate jump around so much? I'm running one of these on an esp8266 and the heartrate is totally unstable.
Great demo! It's very encouraging to see this board functioning. Over the past few hours I've been attempting to get this board to work - initially using the sample code on the Maxim site. Code failed to compile in the Arduino 1.6.4 IDE - even after changing pin/port assignments as described in the code comments (would not take references to SCL_PORT). I updated to the IDE to 1.8.1 and pulled the code from GitHub, as mentioned in the video. Still fails to compile, in a different way but still in the I2C library. Any ideas?
Hi Tom, sorry to hear you're having issues. Try using IDE version V1.6.6--that should work.
Hi, it's not possible use the code to arduino version 1.8.1 ?
The I2C library has some compatibility issues with some Arduino IDE versions.
Would it be possible to diminish motion artifacts by putting on a stronger LED? In continuation, would it allow measurements from the wrist?
Thanks for the demo. I came here because I had unstable readings and I thought I was doing something wrong but this doesn't seem much better. Would you say it is normal for the HR to bounce between 63 and 115 bbm and for the SPO2 to be always 99-100?
Same
Does the Maxim work with arduino DUE?
hello,how are you, did you have this demostration full package, if you have i need it,
Good day! Thank you very much for your video!
I don't understand how did you calculate 25 samples per second? It depends on what? Which of the parameters of Arduino board influence on number of samples we are collecting?
Thanks for your interest. The sample rate is set in the the maxim_max20102_init() function. The following instructions set the raw sample rate to 100Hz, and 4 samples averaged per FIFO sample. So 100/4=25 samples per second.
//
SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (411uS)
if(!maxim_max30102_write_reg(REG_SPO2_CONFIG,0x27))
return false;
//sample
avg = 4, fifo rollover=false, fifo almost full = 17
if(!maxim_max30102_write_reg(REG_FIFO_CONFIG,0x4f))
return false;
Do is work with Arduino MEGA as well? cause I have tried to transfer the code from UNO to MEGA, but it seems ran into incurable problems.
Is this chip approved for medical device standards ? or its specifically for consumer electronics ?
Thanks for your interest; We are aware of end products using MAX30102 that have been FDA certified
when you take a big breath you increase the oxygen, so SO2 goes high
Hi Maxim Team,
Thank you much for the great work. Also for sharing for free your algorithm for HRM.
Just one thing to add, as mentioned on the latter part of the video, you have said that you cant vary led brightness using arduino Uno?,
I just think you can. It has PWM pins.
Regards,
Charles
How did you get the readings at the end of the video in mobile app
All I get is the same numbers in the video
Hi Ali Ali,
For the mobile app, we wrote some firmware to connect the MAXREFDES117 to a Flora board and a Flora Bluefruit LE board, and hence communicate with the tablet. You can download any BLE heart rate because BLE has a protocol for heart rate. The code is here on Github:
github.com/MaximIntegratedRefDesTeam/RD117_FLORA_BLE
It is open source, with all of the benefits and limitations. Of course, we want it to work for you.
If you’re already done this, and you’re getting weird data, that’s another issue. Let us know.
Best regards,
Dave
The value of HR (Heard Rate) is correct?
The HR of de person is 70 aproxiatly
Thanks for watching; if you have questions about the accuracy, our Tech Support team can help bit.ly/1amTLwV
hi guys does anyone know if this sensor is compatible with Arduino nano ble 33
i tried to use the sample code in Arduino nano but the code failed to compile because SCL port , i tried IDE 1.6.6 and IDE1.8.1, and still not working
Hello: For help with this query, please contact our technical services team: maximintegratedsupport.force.com/support/s/technical-support Thank you!
im currently having an issue with the sample arduino code, i made sure all the pins were corrected but the serail monitor displays what seems to be random ascii caracters without anything legible.
Sorry to hear you are having issues! Please contact our Technical Support team. They will be more than happy to help you! maximintegratedsupport.force.com/support/s/technical-support
Try to match the baud rates on the program with that on the Serial Monitor.
is it that every 4 second a reading of heart beat is taken ??
For the Arduino platform, sensors sample at 25sps. The algorithm takes a block of 100 samples to calculate the heart rate, and the calculated heart rate is updated every second.
@ Maxim Integrated so 4 seconds is the time taken to calculate the heart rate right ??
It takes 4 seconds to calculate the first 100 samples.
red=706, ir=932, HR=150, HRvalid=1, SPO2=-999, SPO2Valid=0
red=769, ir=925, HR=150, HRvalid=1, SPO2=-999, SPO2Valid=0
why is that spo2=-999
it is invalid like you have SPO2Valid=0, so the value is strange, you have to put the finger correctly
hi everyone ! can someone help me to find the arduino program of max30100
Hi there, you may contact our Technical Support team. They will be more than happy to help you! maximintegratedsupport.force.com/support/s/technical-support
merci
yeah ,
plz send me a aurdino code for measuring pulse rate using max30100 to get output to my mail plz
Hi, K.V.: Please submit your query to our technical experts at maximintegratedsupport.force.com/support/s/contactsupport