Cảm biến nhịp tim và kết nối với Arduino

Cảm biến nhịp tim chỉ thường xuất hiện trên các thiết bị đắt tiền như : máy chạy bộ, máy đo trong bệnh viện, smartphone...

Giới thiệu

  • Nhịp đập của tim là thông số rất quan trọng trong việc xây dựng 1 bài tập thể dục khoa học. Cảm biến nhịp tim chỉ thường xuất hiện trên các thiết bị đắt tiền như : máy chạy bộ, máy đo trong bệnh viện, smartphone... Giờ đây đã xuất hiện 1 loại cảm biến đo nhịp tim mà chúng ta dễ dàng kết nối với các bo mạch điện tử như Arduino, Raspberry Pi và các MCU khác.
  • Cảm biến hoạt động dựa trên 1 sensor quang đo nhịp tim cùng với bộ khuếch đại tín hiệu và lọc nhiễu.

Nt.jpg

Đặc điểm

  • Nguồn : 3 - 5V
  • Dòng tiêu thụ : < 4mA
  • Ngõ ra : Analog.
  • Độ dài dây : 61cm ( 24 inch).
  • Đường kính cảm biến : 1.6 cm ( 0.625 inch).

Nguyên lý hoạt động

  • Gồm 2 thành phần là một đầu phát quang là bóng hồng ngoại (bước sóng 609nm), và một quang trở nhạy với bước sóng ánh sáng mà đầu phát phát ra.
  • Khi áp chặt mặt cảm biến vào da, nơi có mạch máu chảy( thường là áp vào tai, đầu ngón tay,... để dễ kẹp) đầu phát sẽ phát ra ánh sáng đi vào trong da. Dòng ánh sáng đó sẽ bị khuếch tán ra xung quanh, và một phần đi tới quang trở đặt gần đầu phát. Do bị ép vào nên lượng máu ở phần cảm biến sẽ thay đổi, cụ thể khi không có áp lực do tim đập, máu sẽ dồn ra xung quanh, lượng ánh sáng từ đầu phát sẽ về đầu thu nhiều hơn so với khi tim đập, máu chảy qua nơi có cảm biến áp vào.
  • Sự thay đổi là rất nhỏ, nên phần cảm nhận ánh sáng (quang trở) thường có mạch IC đề khuếch đại tín hiệu thay đổi này, đưa về các mạch lọc, đếm hoặc các mạch ADC để tính toán ra nhịp tim.
  • Tín hiệu đầu ra là tín hiệu analog, dao động theo các mạch đập của tim.

Sơ đồ chân

Thứ tự chân Tên gọi Mô tả
1 + nguồn
2 - mass
3 S tín hiệu đầu ra

Nt4.png

Sử dụng

Sơ đồ kết nối

Kết nối chân tới Arduino

Thứ tự chân Tên gọi Mô tả
1 + 5V
2 - GND
3 S A0

Source code mẫu:

  • Code sử dụng Serial monitor hiển thị số liệu

Nt2.png

int PulseSensorPurplePin = 0;  
      
int LED13 = 13;   

int Signal;               

int Threshold = 550;           

void setup() {
  pinMode(LED13,OUTPUT);         
   Serial.begin(9600);      
}

void loop() {
  Signal = analogRead(PulseSensorPurplePin);  
  Serial.println(Signal);                    
  
  if(Signal > Threshold){                         
     digitalWrite(LED13,HIGH);          
   } else {
     digitalWrite(LED13,LOW);               
   }
  delay(10);  

}
  • Code sử dụng Serial plotter hiển thị đồ thị nhịp tim: tại đây

Nt1.png