

The MAX30003, manufactured by Protocentral, is a highly integrated, low-power biopotential measurement IC designed for precise ECG (electrocardiogram) and other medical applications. It features a low-noise instrumentation amplifier, a 24-bit analog-to-digital converter (ADC), and integrated lead-off detection. These features make it ideal for wearable health monitoring devices, portable ECG systems, and other medical-grade applications requiring accurate biopotential measurements.








| Parameter | Value | 
|---|---|
| Supply Voltage | 1.1V (core), 1.8V to 3.6V (I/O) | 
| Power Consumption | 85µW (typical, at 1.1V supply) | 
| Input Impedance | >500MΩ | 
| ADC Resolution | 24-bit | 
| Input Signal Range | ±300mV | 
| Common-Mode Rejection Ratio | 100dB | 
| Lead-Off Detection | Integrated | 
| Operating Temperature Range | -40°C to +85°C | 
| Package Type | 20-pin TQFN (5mm x 5mm) | 
The MAX30003 comes in a 20-pin TQFN package. Below is the pin configuration and description:
| Pin Number | Pin Name | Description | 
|---|---|---|
| 1 | VDDIO | Digital I/O supply voltage | 
| 2 | VCORE | Core supply voltage | 
| 3 | GND | Ground | 
| 4 | INP | Positive ECG input | 
| 5 | INN | Negative ECG input | 
| 6 | REF | Reference voltage output | 
| 7 | LOFF | Lead-off detection output | 
| 8 | CS | Chip select for SPI communication | 
| 9 | SCLK | SPI clock input | 
| 10 | MISO | SPI master-in-slave-out | 
| 11 | MOSI | SPI master-out-slave-in | 
| 12 | RST | Reset input (active low) | 
| 13-20 | NC | No connection | 
Below is an example of how to interface the MAX30003 with an Arduino UNO using SPI:
#include <SPI.h>
// Define MAX30003 SPI pins
#define MAX30003_CS 10  // Chip select pin for MAX30003
void setup() {
  // Initialize serial communication for debugging
  Serial.begin(9600);
  // Initialize SPI communication
  SPI.begin();
  pinMode(MAX30003_CS, OUTPUT);
  digitalWrite(MAX30003_CS, HIGH); // Set CS pin high (inactive)
  // Reset the MAX30003
  resetMAX30003();
}
void loop() {
  // Example: Read a register from MAX30003
  uint8_t regAddress = 0x01; // Replace with the desired register address
  uint32_t regValue = readRegister(regAddress);
  Serial.print("Register Value: 0x");
  Serial.println(regValue, HEX);
  delay(1000); // Wait for 1 second
}
// Function to reset the MAX30003
void resetMAX30003() {
  digitalWrite(MAX30003_CS, LOW); // Activate CS
  SPI.transfer(0x08); // Reset command (example)
  digitalWrite(MAX30003_CS, HIGH); // Deactivate CS
}
// Function to read a 24-bit register from MAX30003
uint32_t readRegister(uint8_t regAddress) {
  uint32_t value = 0;
  digitalWrite(MAX30003_CS, LOW); // Activate CS
  SPI.transfer(regAddress); // Send register address
  value |= SPI.transfer(0x00) << 16; // Read MSB
  value |= SPI.transfer(0x00) << 8;  // Read middle byte
  value |= SPI.transfer(0x00);       // Read LSB
  digitalWrite(MAX30003_CS, HIGH); // Deactivate CS
  return value;
}
No Output from the MAX30003:
High Noise in ECG Signal:
Lead-Off Detection Not Working:
SPI Communication Fails:
Can the MAX30003 be used for other biopotential measurements?
What is the maximum sampling rate of the ADC?
Is the MAX30003 suitable for battery-powered devices?
Can I use the MAX30003 with a 5V microcontroller?