

The MAX30100, manufactured by Maxim Integrated, is a low-power, integrated pulse oximeter and heart-rate monitor sensor. It utilizes photoplethysmography (PPG) technology to measure blood oxygen saturation (SpO2) and heart rate by emitting light through the skin and detecting the amount of light absorbed by the blood. This compact sensor is ideal for wearable devices and health monitoring systems.








| Parameter | Value |
|---|---|
| Operating Voltage | 1.8V (core) and 3.3V (I/O) |
| Operating Current | 0.7mA (typical) |
| Standby Current | 0.7µA |
| Measurement Method | Photoplethysmography (PPG) |
| SpO2 Measurement Range | 0% to 100% |
| Heart Rate Measurement Range | 30 bpm to 240 bpm |
| Communication Interface | I2C |
| Operating Temperature Range | -40°C to +85°C |
| Package Type | 14-pin optical module |
| Pin Number | Pin Name | Description |
|---|---|---|
| 1 | SDA | I2C Data Line |
| 2 | SCL | I2C Clock Line |
| 3 | INT | Interrupt Output (active low) |
| 4 | GND | Ground |
| 5 | VIN | Power Supply Input (1.8V to 3.3V) |
| 6 | IR_DRV | Infrared LED Driver Output |
| 7 | RED_DRV | Red LED Driver Output |
| 8-14 | NC | Not Connected |
Below is an example code snippet to interface the MAX30100 with an Arduino UNO using the I2C protocol:
#include <Wire.h>
#include "MAX30100.h" // Include the MAX30100 library
MAX30100 sensor; // Create an instance of the MAX30100 class
void setup() {
Serial.begin(9600); // Initialize serial communication
Wire.begin(); // Initialize I2C communication
// Initialize the MAX30100 sensor
if (sensor.begin() == false) {
Serial.println("MAX30100 initialization failed!");
while (1); // Halt execution if initialization fails
}
Serial.println("MAX30100 initialized successfully!");
}
void loop() {
float heartRate, spo2;
// Read heart rate and SpO2 values
if (sensor.readSensor(&heartRate, &spo2)) {
Serial.print("Heart Rate: ");
Serial.print(heartRate);
Serial.print(" bpm, SpO2: ");
Serial.print(spo2);
Serial.println(" %");
} else {
Serial.println("Failed to read data from MAX30100.");
}
delay(1000); // Wait for 1 second before the next reading
}
Note: Ensure you have installed the appropriate MAX30100 library for Arduino before running the code.
No Data Output:
Inaccurate Readings:
Initialization Fails:
Q1: Can the MAX30100 measure SpO2 and heart rate simultaneously?
Yes, the MAX30100 is designed to measure both SpO2 and heart rate simultaneously using its dual LED system.
Q2: What is the maximum I2C clock speed supported by the MAX30100?
The MAX30100 supports I2C clock speeds up to 400kHz (Fast Mode).
Q3: Can the MAX30100 be used with a 5V microcontroller?
Yes, but you must use a level shifter to step down the I2C signals to 3.3V, as the MAX30100 operates at 3.3V logic levels.
Q4: How do I improve measurement accuracy?
Ensure proper placement of the sensor, minimize motion artifacts, and use a well-designed enclosure to block ambient light.
This documentation provides a comprehensive guide to understanding, using, and troubleshooting the MAX30100 sensor.