Use a PPG/ECG Combo Wearable Biosensor Module for FDA-Certifiable Cardio Measurements

By Stephen Evanczuk

Contributed By Digi-Key's North American Editors

Consumers demand more accurate fitness and cardiac health data from smartwatches, health bands, and other battery-powered mobile devices. To meet these expectations, developers have had to wrestle with complex and costly multi-component solutions. These can eventually deliver high accuracy, but at the cost of higher power consumption, greater footprint, and longer development times. A simpler, more elegant solution is required.

This article will introduce a path to such a solution based on a highly integrated module from Maxim Integrated. It will start by briefly discussing the difficulties surrounding accurate cardiac performance monitoring. It will then show how developers can use the module to perform FDA-certifiable heart rate monitoring during activity, as well as electrocardiogram (ECG) measurements at rest.

Cardiac performance measurement

Health providers routinely rely on ECGs (also called EKGs) to provide the most detailed data possible on cardiac health, short of invasive procedures. ECG equipment captures waveforms generated by cardiac muscle depolarization and repolarization during the cardiac cycle (Figure 1). The process requires the placement of 10 electrodes in strategic locations around the body. These are then combined in 12 pairs, or leads, designed to align with different axes of waveforms generated across the volume of cardiac tissue.

Image of electrocardiogram (EKG) compared to photoplethysmogram (PPG)

Figure 1: Although an electrocardiogram (ECG or EKG) provides more detail, the simpler photoplethysmogram (PPG) can provide useful information such as occurrences of premature ventricular contraction (PVC) shown here. (Image source: Wikipedia)

For example, an electrode placed on the patient’s leg can be paired with another electrode to provide a lead capable of capturing details of the ventricle depolarization waveform descending downward through heart tissue. Medical-grade 12-lead ECG instruments use this approach, combining data from different electrode pairs to measure waveforms along the optimal axis associated with each phase of the cardiac cycle.

In contrast, ECG measurements performed by consumer fitness devices typically use only one electrode pair, leading to the term one-lead ECG for this class of devices. Although one-lead ECGs might lack detail required for diagnosis by a cardiologist, they do provide enough information about cardiac performance to alert health providers to possible pathologies that might require use of 12-lead ECGs to diagnose accurately.

In practice, the use of one-lead ECG measurements in a fitness device can be particularly problematic since the measurements can easily be corrupted by any pronounced movement by the individual. Any muscle movement results in corresponding electrical waveforms from muscle fiber depolarization that travel through the conductive mass of tissue. Movement by a major muscle group can generate biopotentials that can easily swamp signals emanating from a more deeply buried signal source like cardiac muscle. As a result, accurate ECG measurements require the subject to remain still, whether lying in a health facility or during a workout.

Indeed, attempts to perform one-lead ECGs on a person during exercise will most likely fail. For this reason, personal fitness devices that provide heart rate data during exercise typically rely on photoplethysmography (PPG) methods.

The most basic form of PPG uses optical sensors to measure the relative difference in light reflectance (or absorption) as each pulse of blood changes the volume of blood vessels. Although the earliest consumer heart rate monitors used this basic approach, fitness products today typically use a more advanced form of PPG that measures peripheral oxygen saturation (SpO2) level. This provides users with a deeper understanding of their physiological response to exercise.

SpO2 measurements take advantage of the different absorption spectra exhibited by oxygenated versus deoxygenated blood when illuminated by red and infrared LEDs with emission spectra centered on the two respective states of hemoglobin (see, “Adding Heart-Rate Monitoring Functionality to Fitness Gear”). Although SpO2 focuses on the ratio between the two states, basic heart rate measurement can be extracted from the same data by measuring the peak-to-peak cycle time of the measured optical signals. Consumer pulse oximeters use this approach to provide a more reliable measurement of heart rate despite physical movement, individual user variation, or other factors.

Although optical PPG-based methods have been used for years in fitness devices, one-lead ECG has emerged more recently in consumer products such as the Apple Watch and others. Driven by competitive pressure, manufacturers of fitness wristbands, smartwatches, and other personal electronic devices face increasing demand for inclusion of both PPG and one-lead ECG capabilities in their products.

For developers, however, implementation of just one of those capabilities has presented multiple difficulties. Dual-LED PPG designs require the ability to optimally drive red and IR LEDs, capture the reflected or absorbed light, synchronize the results, and finally compute heart rate and optionally SpO2. One-lead ECG design requires extensive expertise in building analog signal paths able to handle the noisy signals associated with any measurement of active biopotential phenomena.

Perhaps more fundamentally, the power requirements, design size, and parts count required to implement both types of design and synchronize their results can be prohibitive for most battery-powered mobile products. To address these issues, the Maxim Integrated MAX86150 biosensor module provides a nearly drop-in solution for adding both PPG and ECG capability to any power-constrained design.

Biosensor module

Designed specifically for portable systems, the MAX86150 module combines subsystems for both dual-LED PPG and ECG in a single device measuring 3.3 x 6.6 x 1.3 mm. For optical measurements, the MAX86150 combines complete input/output optical signal paths with a red LED, IR LED, and photodiode positioned behind a glass lid built into the package (Figure 2).

Diagram of Maxim MAX86150 PPG subsystem

Figure 2: The MAX86150 PPG subsystem provides optical-based fitness measurements by integrating all required components including signal paths for LED output and photodiode input. Also, the red LED, infrared LED, and photodiode devices are positioned behind a glass lid. (Image source: Maxim Integrated)

For the PPG signal path, the module integrates ambient light cancellation (ALC) circuitry, a 19-bit continuous-time oversampling delta-sigma (ΔΣ) analog-to-digital converter (ADC), and a discrete time filter for further noise reduction. Within the ALC, a digital-to-analog converter (DAC) helps boost input dynamic range by cancelling ambient light. To help developers balance power consumption and performance, the device’s integrated LED drivers can be programmed to provide current from 0 milliamps (mA) to 100 mA, and current pulse widths ranging from 50 microseconds (μs) to 400 μs.

For further power savings, developers can enable a proximity function that allows the device to remain in a lower power state between measurements. In this state, the device drives the IR LED at a minimal power level programmed by the developer. When the photodiode detects a useful signal, which signals the approach of the user’s finger or other skin surface, an interrupt is generated, and the device returns to its normal operating state to continue sampling.

For ECG measurements, the MAX86150 integrates a complete differential signal path that requires only two dry electrodes and a few additional components to implement a one-lead ECG (Figure 3). As with any small-signal application, measurement accuracy is continually challenged by any number of noise sources present in the environment. In a fitness application, the cardiac waveforms of interest are not only affected by the biopotentials associated with muscle movement and other physiological processes, but can often be swamped by interference from external RF sources, line frequency, and electrical noise.

The MAX86150 ECG subsystem accounts for signal noise in ECG measurements with a sophisticated signal chain designed to reject common-mode signals.

Diagram of Maxim MAX86150 module includes a complete one-lead ECG subsystem

Figure 3: Along with the PPG subsystem, the MAX86150 module includes a complete one-lead ECG subsystem that requires only a pair of dry electrodes and minimal additional components to provide ECG measurement data to a microcontroller. (Image source: Maxim Integrated)

The device’s integrated ECG analog front end comprises a chopper amplifier, filter, and programmable gain amplifier (PGA) designed to maximize the signal-to-noise ratio of cardiac waveforms. Following this signal chain, an 18-bit ΔΣ ADC converts each sample and pushes each result to the device’s shared 32 sample FIFO, reducing the need for continuous data polling by a host microcontroller.

To further reduce power and limit data access requirements, developers can adjust the sample rate of both ECG and PPG subsystems from the maximum 3200 samples per second (sps) down to 200 sps for ECG and 10 sps for PPG. Nevertheless, developers can use the device in sophisticated applications that require simultaneous ECG and PPG/SpO2 sampling and synchronization of the results. If developers need to apply this approach using the different minimum sampling rates of the two subsystems, the device simply loads the FIFO with the last PPG sample, providing new PPG data at that subsystem’s next sampling cycle.

Design implementation

Because it integrates the core functionality required for ECG and PPG measurements, the MAX86150 hardware interface can be completed with only a pair of dry electrodes as mentioned earlier, along with a few additional components for decoupling and buffering. As a result, developers can combine a microcontroller with the MAX86150 and its minimal complement of external components to implement a sophisticated biopotential measurement system (Figure 4). Developers can even skip that hardware design step by using the Maxim Integrated MAX86150EVSYS evaluation system to rapidly begin exploring ECG/PPG applications.

Diagram of Maxim Integrated MAX86150 (click to enlarge)

Figure 4: Developers can combine the Maxim Integrated MAX86150 with a host microcontroller and only a few additional components to implement advanced cardiac performance measurement in a mobile fitness product. (Image source: Maxim Integrated)

Serving as both an immediate application platform and reference design, the MAX86150EVSYS evaluation system includes a MAX86150 board, a MAX32630FTHR board, and a 500 milliamp hour (mAh) lithium polymer battery (Figure 5). Along with the MAX86150, the MAX86150 board provides two stainless steel dry electrodes and additional components mentioned earlier.

Connected through headers, the MAX32630FTHR board provides a complete Bluetooth-enabled system built around the Maxim Integrated MAX32630 microcontroller, and also handles charging and power management for the included battery pack.

Image of Maxim Integrated MAX86150EVSYS evaluation system

Figure 5: Developers can quickly begin evaluating cardiac measurement methods with the Maxim Integrated MAX86150EVSYS evaluation system which provides a MAX86150 board (left side) complete with dry electrodes, a MAX32630-based MAX32630FTHR development board, and battery pack. (Image source: Maxim Integrated)

Out of the box, the evaluation system comes with the MAX32630FTHR board preloaded with firmware for a basic MAX86150 application, allowing developers to immediately begin exploring ECG and PPG measurement. Developers simply connect the board set to a Windows PC system via Bluetooth and launch Maxim Integrated’s Windows-based graphical user interface evaluation kit software for the MAX86150EVSYS kit. This GUI package displays ECG and PPG data from the MAX86150, and enables developers to easily modify device settings to examine the effect on performance (Figure 6).

Image of Maxim Integrated MAX86150EVSYS evaluation system's related software application (click to enlarge)

Figure 6: Connected to the Maxim Integrated MAX86150EVSYS evaluation system, the company’s related software application lets developers easily examine ECG and PPG measurements performed by the MAX86150. (Image source: Maxim Integrated)

For developers ready to build custom applications, the Maxim Integrated MAX86150 driver package provides source code for core device functionality. Among its functional capabilities, the driver package demonstrates an approach for working with the device’s FIFO to minimize power consumption by reducing the length of time the host processor needs to remain in its active state. At the heart of this approach, the software relies on a pair of interrupt handlers to respond to device events and then take action when data samples are available.

The interrupt-driven approach starts with the initialization routine. This registers a device interrupt request (IRQ) handler, max86xxx_irq_handler(). When an interrupt event occurs, this handler checks for available device data, calls a separate FIFO handler (max86xxx_fifo_irq_handler()) if needed, and performs important housekeeping functions including checking device die temperature and VDD level (Listing 1).

int max86xxx_irq_handler(void* cbdata)
    struct max86xxx_dev *sd = max86xxx_get_device_data();
    int ret;
    union int_status status;
    status.val[0] = MAX86XXX_REG_INT_STATUS1;
    ret = max86xxx_read_reg(status.val, 2);
    if (ret < 0) {
        printf("I2C Communication error. err: %d. %s:%d\n",
            ret, __func__, __LINE__);
        return -EIO;
    if (status.a_full || status.ppg_rdy
        || status.ecg_imp_rdy || status.prox_int) {
    if (status.die_temp_rdy)
    if (status.vdd_oor) {
        printf("VDD Out of range cnt: %d\n", sd->vdd_oor_cnt);
    return 0;

Listing 1: This snippet from the Maxim Integrated MAX86150 driver package shows how a device IRQ handler can minimize processing by invoking a separate FIFO handler only when samples are available or when an event such as a proximity interrupt occurs. (Code source: Maxim Integrated)

When it is invoked by the device IRQ handler, the FIFO handler performs the low-level operations required to reassemble sensor readings stored by the 86150 in its FIFO buffer. Here, this handler loops through available samples in the FIFO buffer, reassembling the three bytes used to store data from the ECG channel’s 18-bit ADC and PPG channel’s 19-bit ADC (Listing 2).

void max86xxx_fifo_irq_handler(struct max86xxx_dev *sd)
   . . .
    num_samples = max86xxx_get_num_samples_in_fifo(sd);
   . . .
    num_channel = max86xxx_get_fifo_settings(sd, &fd_settings);
   . . .
    num_bytes = num_channel * num_samples * NUM_BYTES_PER_SAMPLE;
    fifo_buf[0] = MAX86XXX_REG_FIFO_DATA;
    ret = max86xxx_read_reg(fifo_buf, num_bytes);
   . . .
    fifo_mode = max86xxx_get_sensor_mode(sd, fd_settings, num_channel);
   . . .
    sensor = get_sensor_ptr(sd, fifo_mode);
    for (i = 0; i < num_samples; i++) {
        offset1 = i * NUM_BYTES_PER_SAMPLE * num_channel;
        offset2 = 0;
        for (j = 0; j < MAX_FIFO_SLOT_NUM; j++) {
            tmp_fd = (fd_settings >> (4 * j)) & 0x000F;
            if (tmp_fd) {
                index = offset1 + offset2;
                tmp = ((int)fifo_buf[index + 0] << 16)
                        | ((int)fifo_buf[index + 1] << 8)
                        | ((int)fifo_buf[index + 2]);
                samples[tmp_fd] = tmp;
                max86xxx_preprocess_data(&samples[tmp_fd], 1);
                offset2 += NUM_BYTES_PER_SAMPLE;
   . . .
            sensor->report(sensor, samples);
   . . .
    if (sensor->update)
   . . .

Listing 2: This snippet from the Maxim Integrated MAX86150 driver package shows the use of a FIFO handler to extract sampled data from the MAX86150 FIFO, where each sample is stored in a three byte format. (Code source: Maxim Integrated)


Along with PPG-based heart rate measurement, one-lead ECG functionality has emerged as an increasing requirement for smartwatches, fitness bands, and other mobile devices. Still, practical, accurate, low-power implementations of both PPG and ECG for such wearable devices has proven difficult to achieve.

With its integrated PPG and ECG subsystems, the Maxim Integrated 86150 biopotential sensor module provides an effective solution. Combined with an MCU, the 86150 module lets developers rapidly implement mobile health and fitness products able to provide detailed data on cardiac performance.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

About this author

Stephen Evanczuk

Stephen Evanczuk has more than 20 years of experience writing for and about the electronics industry on a wide range of topics including hardware, software, systems, and applications including the IoT. He received his Ph.D. in neuroscience on neuronal networks and worked in the aerospace industry on massively distributed secure systems and algorithm acceleration methods. Currently, when he's not writing articles on technology and engineering, he's working on applications of deep learning to recognition and recommendation systems.

About this publisher

Digi-Key's North American Editors