blog

MAX30100 / MAX30102 Pulse Oximeter and Heart Rate Sensor Module

Article cover image

Compare the ​MAX30100 price​ and ​MAX30102 price​ to begin! Use the efficient ​MAX30100 sensor​ for basic tracking, or the advanced ​MAX30102 sensor​ for richer data.

Product main image

What is MAX30100 and MAX30102?

The MAX30100/MAX30102 is an integrated module for pulse oximetry and heart rate monitoring biosensors. It integrates a red LED and an infrared LED, a photodetector, optical components, and low-noise electronic circuits with ambient light suppression.

The MAX30102 operates with a 1.8V power supply and an independent 5.0V power supply for the internal LED, and is applied to wearable devices for heart rate and blood oxygen collection and detection, worn on fingers, earlobes, wrists, etc. It features a standard I2C-compatible communication interface to transfer the collected values to microcontrollers such as Arduino and KL25z for heart rate and blood oxygen calculation. Additionally, the module can be software-shutdown, with the standby current approaching zero, maintaining a constant power supply state. Due to its excellent performance, this chip has been widely used in Samsung Galaxy S7 mobile phones.

Compared with the previous model MAX30100, MAX30102 integrates a glass cover, which can effectively eliminate external and internal light interference and has the most reliable performance.

This heart rate and blood oxygen sensor module is a bio-sensor module designed based on the power requirements of MAX30100-MAX30102. Its 12C communication interface voltage is compatible with 1.8V/5V and can communicate normally with conventional microcontroller development boards such as Arduino.KL25Z.Stm32, etc. In addition, it provides corresponding heart rate and blood oxygen programs, which can be easily mastered and used in conjunction with various development boards to complete heart rate and blood oxygen concentration monitoring. It is suitable for scientific research and teaching demonstrations in the field of heart rate and blood oxygen, and is also very suitable for secondary development.

MAX30100

MAX30100

MAX30100 Working Principle

By shining infrared LED lights, the ADC value of the heart rate can be obtained. The heart rate can be calculated by processing the corresponding AD values through algorithms.

MAX30100 System Block Diagram

The timing diagram of SDA and SCL

The timing diagram of SDA and SCL

Collection process: RED and IR irradiation followed by data acquisition using ADC. The acquired AD values pass through a digital filter and then enter the data register. Subsequently, data acquisition is performed using IIC. During the conversion of AD values, temperature values can also be acquired.

The internal structure of MAX30100 is shown in the figure below:

MAX30100 Function Diagram

Register :

The registers of MAX30100 include five types: status register, FIFO, configured register, temperature register (the temperature register is used to read the temperature value of the chip to correct the deviation caused by temperature), and ID register (the ID register is used to read the ID number of the chip).

Register Maps and Descriptions

FIFO register

The data is stored in the FIFO_DATA register. We mainly need to read it. The other three items are the overflow count and the read/write pointers. The data stored in DATA is the ADC value read each time. Each time, it reads four times, in sequence: the high and low data of IR, the high and low data of RED.

FIFO register

STATUS Register

There are two STATUS registers. One is the interrupt status register, and the other is the interrupt enable register. When the heart rate interrupt is enabled and when the heart rate conversion is completed, the corresponding status bit will be set to 1.

STATUS Register 1
STATUS Register 2

CONFIGURED register

In the Mode register, SHDN is the low-power control bit, RESET is the reset, TEMP_EN is the temperature detection enable, and MODE is the mode selection. The SPO2 configured register is mainly used to set the parameters related to blood oxygen concentration and the power of LED_PW. The LED register is used to set the pulse time of the two lights.

CONFIGURED register

MAX30100 Feature

  • The complete pulse oximeter and heart rate sensor solution simplifies the design
  • Integrated with LEDs, light sensors and high-performance analog front-end
  • Ultra-low power consumption mode extends the battery life of wearable devices
  • Programmable sampling rate and LED current saves power
  • Ultra-low off-state current (0.7 µA, typical value)
  • Advanced functions enhance measurement performance
  • High SNR can reliably eliminate the influence of motion interference
  • Integrated environmental light compensation
  • High sampling rate
  • Fast data output

MAX30100 Arduino

MAX30100 Pinout

VCC    —    5 V

GND    —    Arduino GND

SDA     —    A4

SCL      —    A5

MAX30100 Arduino Code

				
					#include <Wire.h>
#include "MAX30100_PulseOximeter.h"

#define REPORTING_PERIOD_MS 1000

// Create a PulseOximeter object
PulseOximeter pox;

// Time at which the last beat occurred
uint32_t tsLastReport = 0;

// Callback routine is executed when a pulse is detected
void onBeatDetected() {
  Serial.println("Beat!");
}

void setup() {
  Serial.begin(9600);

  Serial.print("Initializing pulse oximeter..");

  // Initialize sensor
  if (!pox.begin()) {
    Serial.println("FAILED");
    for (;;)
      ;
  } else {
    Serial.println("SUCCESS");
  }

  // Configure sensor to use 7.6mA for LED drive
  pox.setIRLedCurrent(MAX30100_LED_CURR_7_6MA);

  // Register a callback routine
  pox.setOnBeatDetectedCallback(onBeatDetected);
}

void loop() {
  // Read from the sensor
  pox.update();

  // Grab the updated heart rate and SpO2 levels
  if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
    Serial.print("Heart rate:");
    Serial.print(pox.getHeartRate());
    Serial.print("bpm / SpO2:");
    Serial.print(pox.getSpO2());
    Serial.println("%");

    tsLastReport = millis();
  }
}

				
			

MAX30100 Application

1、 Wearable Devices

2、 Fitness Assistant Devices

3、 Medical Monitoring Device

MAX30102

MAX30102

MAX30102 Working Principle

Optical volumetric method: This method measures pulse and blood oxygen saturation by using the different light transmittance caused by the pulsation of human tissues.

Light source: A specific wavelength light-emitting diode is used that selectively emits light for oxyhemoglobin (HbO2) and hemoglobin (Hb) in arterial blood.

Transformation of light transmittance to electrical signal: The change in the blood volume due to arterial pulsation causes a change in the light transmittance of this beam of light. At this time, the reflected light from the human tissue is received by photoelectric conversion, converted into an electrical signal and amplified and output.

formula
  1. Internal block diagram of the chip
MAX30102 Internal block diagram of the chip

From the block diagram, the chip can be divided into two parts. One part is the analog signal acquisition circuit, which emits light of specific wavelengths through the RED and IR lamps, collects the light reflected back by the human body, converts the light signal into an electrical signal through the PD tube, and finally converts it into a digital signal through an 18-bit ADC converter. The second part is the digital processing circuit, which filters the raw data converted by the ADC and stores it in the buffer area. The microcontroller reads and writes the internal registers of the chip through the IIC interface and reads out the corresponding data.

  1. MAX30102 Module Circuit
MAX30102 Schematic Diagram

The chip has an LED power supply of 3.3V – 5.0V and a logic power supply of 1.8V. Therefore, the module is equipped with two voltage stabilizing circuits, converting the 5V power supply into 3.3V and 1.8V respectively. Since the power supply range of the LED driver is 3.3V – 5.0V, the 3.3V voltage stabilizing circuit can be omitted.

Because the IIC communication level of the logic circuit of MAX30102 is 1.8V, which does not match the pin levels commonly used in 51 single-chip microcontrollers and STM32 single-chip microcontrollers.

Here is a solution. Since the SDA, SCL, and INT pins of MAX30102 are open-drain, the resistors R1, R2, and R3 on the module can be removed. For 51 single-chip microcontrollers, a 4.7-10k resistor should be added to each of the SDA, SCL, and INT pins to pull them up to 5V. For STM32 single-chip microcontrollers, only the corresponding control pins need to be configured in the pull-up mode.

MAX30102 Pin

The module only needs to be connected to a 5V power supply, and the SDA, SCL, and INT pins should be connected to the microcontroller. The IRD and RD pins generally do not need to be connected.

MAX30102 Parameter

Product

MAX30102 heart rate and oxygen level module

LED peak wavelength

660nm/880nm

LED supply voltage

3.3V~5V

Detect signal type

Light reflection signal (PPG)

Output signal interface

I2C Interface

Communication signal interface

1.8V~3.3V~5V(Optional)

Note: SCL and SDA need to be pulled up to the high level through resistors.

MAX30102 Feature

  1. In the LED reflection solution, there are heart rate monitors and pulse oximeters with biological sensors that are relatively small in size and feature 14-pin optical modules.
  2. With an integrated glass cover, reliable performance is achieved, enabling mobile devices to operate with relatively low power consumption.
  3. Programmable sampling rate and LED current, which save power consumption.
  4. Low-power heart rate monitor (<1mw).
  5. Ultra-low off-state current (0.7μA, typical value).
  6. Fast data output, high sampling rate.
  7. Reliable motion artifact suppression.
  8. Product applications: medical monitoring devices, fitness assistance devices, wearable devices.

MAX30102 Arduino

MAX30102 Pinout

VCC    —    5 V

GND    —   Arduino GND

SDA     —   A4

SCL     —   A5

MAX30102 Code

				
					#include <Wire.h>
#include "MAX30105.h"

MAX30105 particleSensor;

void setup() {
  Serial.begin(9600);

  // Initialize sensor
  if (particleSensor.begin() == false) {
    Serial.println("MAX30102 was not found. Please check wiring/power.");
    while (1)
      ;
  }

  particleSensor.setup();  //Configure sensor. Use 6.4mA for LED drive
}

void loop() {
  Serial.print(" R[");
  Serial.print(particleSensor.getRed());
  Serial.print("] IR[");
  Serial.print(particleSensor.getIR());
  Serial.println("]");
}

				
			

MAX30102 Application

This module is an upgraded version of MAX30100.

1、Wearable Devices

2、Fitness Assistant Devices

3、Smartphones

4、Tablets 

MAX30100 Sensor Pin Function and MAX30102 Sensor Pin Function

Pin

Definition

VIN

Power input: 1.8V – 5.5V

SCL

IIC-SCL

SDA

IIC-SDA

INT

MAX30100 INT

IRD

MAX30100 IR_DRV

RD

MAX30100 R_DRV

GND

Grounding

MAX30100 VS MAX30102

Feature

MAX30100

MAX30102

Maximum Current

1200 µA

1200 µA

Red LED Peak Wavelength

650 – 670 nm

650 – 670 nm

Infrared LED Peak Wavelength

870 – 900 nm

870 – 900 nm

Temperature Sensor Range

-40 to 85°C

-40 to 85°C

FIFO Depth

16 bits

32 bits

Relative Information

Purchase Link

FAQ

1、Does MAX30100 need external components?

With its integrated light-emitting diodes (LEDs), photo sensors, and high-performance analog front end, it eliminates the need for external components, making it easier to incorporate into devices.

 

2、Why is the data from my MAX30102 unstable?

Possible reasons:

① The sensor is not properly attached to the skin (a slight pressure is required to avoid interference from ambient light).

② Noise occurs due to movement or shaking (it is recommended to measure in a static state).

③ Insufficient power supply (make sure to have a stable 3.3V power source).

④ The LED current or sampling rate is not correctly configured (for example: in the heart rate mode, 50mA red light + 27mA infrared light is recommended).

Leave a Reply

Your email address will not be published. Required fields are marked *