Cảm Biến Nhịp Tim và Oxy Trong Máu MAX30100

Từ ChipFC Wiki
Phiên bản vào lúc 18:26, ngày 10 tháng 10 năm 2017 của BS135 (Thảo luận | đóng góp) (Sử dụng ví dụ mẫu)
Bước tới: chuyển hướng, tìm kiếm
Mô-đun Chipi Button

Giới thiệu

Module Cảm Biến Nhịp Tim và Oxy Trong Máu MAX30100 trên trang chủ

Module tích hợp Cảm biến MAX30100 của hãng Maxim, có khả năng đo được nồng độ Oxy trong máu và nhịp tim. Đó là một cảm biến quang học, nó phát ra hai bước sóng ánh sáng từ hai đèn LED - một LED đỏ và một LED hồng ngoại - sau đó đo sự hấp thụ của xung huyết (pulsing blood) bằng cách thu tín hiệu thông qua một bộ cảm biến ánh sáng (photodetector). Sự kết hợp màu LED đặc biệt này được tối ưu hóa để đọc dữ liệu ở đầu ngón tay.

Cảm biến nhịp tim và Oxy trong máu MAX30100 được ứng dụng nhiều trong lĩnh vực y sinh, cảm biến sử dụng phương pháp đo quang phổ biến hiện nay, với thiết kế và chất liệu mắt đo từ chính hãng Maxim cho độ chính xác và độ bền cao, độ nhiễu thấp. Ngoài ra, cảm biến sử dụng giao tiếp I2C rất dễ tiếp cận với Arduino.

Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-top.jpg Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-bot.jpg

Đặc điểm chính

  • Tích hợp IC MAX30100 của Maxim, đây chính là bộ cảm biến quang học gồm hai LED thu & phát, được tối ưu và giảm nhiễu.
  • Sử dụng nguyên lý đo sự hấp thụ quang học của máu.
  • Tốc độ lấy mẫu và trạng thái LED có thể lập trình được phục vụ cho mục đích tiết kiệm năng lượng.
  • Giao tiếp thông qua kết nối I2C.
  • Siêu tiết kiệm năng lượng, giúp tăng tuổi thọ pin cho các ứng dụng đeo tay.
  • Giải pháp tích hợp đo nhịp tim và oxy trong máu trong cùng một thiết bị.

Thông số kỹ thuật

  • IC: MAX30100
  • Điện áp hoạt động: 1.8 - 5.5 VDC (khuyên dùng 5V)
  • Giao tiếp I2C, mức TTL
  • Kích thước: 19 x 14 x 3 (mm)
  • Khối lượng: 5g

Mô tả các chân kết nối

Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-pinout.png

Thứ tự chân Ký hiệu Loại Mô tả
1 VIN Power Nguồn cấp 1.8V - 5.5V (khuyên dùng 5V)
2 SCL Input I2C SCL
3 SDA I/O I2C SDA
4 INT Output Chân INT của MAX30100
5 IRD Chân IR_DRV của MAX30100
6 RD Chân R_DRV của MAX30100
7 GND Power Điện áp đất 0V

Sử dụng với Arduino

Kết nối module với Arduino

Kết nối cơ bản giữa module MAX30100 và Arduino như hình bên dưới. Chú ý là cần mắc 2 điện trở 4.7KΩ kéo lên cho hai đường SCL và SDA của I2C.

Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-connect-arduino.png

Tải thư viện

Dùng thư viện Arduino-MAX30100 library được phát triển bởi oxullo

Nếu bạn chưa biết cách sử dụng một thư viện Arduino có thể xem hướng dẫn tại Thư viện Arduino

Sử dụng ví dụ mẫu

Sau khi cài đặt thành công thư viện Arduino-MAX30100, Arduino IDE sẽ xuất hiện mục MAX30100lib.

Hãy bắt đầu thử với example MAX30100_Debug.

Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-library-1.png

Nội dung code mẫu

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

#define REPORTING_PERIOD_MS     1000

// PulseOximeter is the higher level interface to the sensor
// it offers:
//  * beat detection reporting
//  * heart rate calculation
//  * SpO2 (oxidation level) calculation
PulseOximeter pox;

uint32_t tsLastReport = 0;

// Callback (registered below) fired when a pulse is detected
void onBeatDetected()
{
    Serial.println("B:1");
}

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

    // Initialize the PulseOximeter instance and register a beat-detected callback
    // The parameter passed to the begin() method changes the samples flow that
    // the library spews to the serial.
    // Options:
    //  * PULSEOXIMETER_DEBUGGINGMODE_PULSEDETECT : filtered samples and beat detection threshold
    //  * PULSEOXIMETER_DEBUGGINGMODE_RAW_VALUES : sampled values coming from the sensor, with no processing
    //  * PULSEOXIMETER_DEBUGGINGMODE_AC_VALUES : sampled values after the DC removal filter

    // Initialize the PulseOximeter instance
    // Failures are generally due to an improper I2C wiring, missing power supply
    // or wrong target chip
    if (!pox.begin(PULSEOXIMETER_DEBUGGINGMODE_PULSEDETECT)) {
        Serial.println("ERROR: Failed to initialize pulse oximeter");
        for(;;);
    }

    pox.setOnBeatDetectedCallback(onBeatDetected);
}

void loop()
{
    // Make sure to call update as fast as possible
    pox.update();

    // Asynchronously dump heart rate and oxidation levels to the serial
    // For both, a value of 0 means "invalid"
    if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
        Serial.print("H:");
        Serial.println(pox.getHeartRate());

        Serial.print("O:");
        Serial.println(pox.getSpO2());

        tsLastReport = millis();
    }
}

Sau khi Upload thành công lên Arduino, hãy thử mở Serial MonitorSerial Plotter (menu Tools) để xem kết quả.

  • Serial Monitor

Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-library-4.png

  • Serial Monitor

Module-cam-bien-nhip-tim-va-oxy-trong-mau-max30100-library-6.png

Chú ý

  • Cảm biến được tối ưu để đo chính xác nhất ở đầu ngón tay. Đặt đầu ngón tay lên cảm biến (che 2 LED trên cảm biến) khi đo.
  • Khi cảm biến hoạt động, sẽ có một trong 2 LED trên cảm biến sáng màu đỏ.

Tham khảo