Đồ án thiết bị đo nhịp tim sử dụng 8051

Đồ án thiết bị đo nhịp tim sử dụng 8051, giúp người sử dụng theo dõi nhịp đập trung bình của tim/phút

THEO DÕI NHỊP TIM SỬ DỤNG 8051

   Bài viết này là về một máy đo nhịp tim đơn giản sử dụng vi điều khiển 8051. AT89S51 sẽ là vi điều khiển được sử dụng trong đồ án này. Thiết bị cảm biến  sẽ cảm nhận nhịp tim từ đầu ngón tay bằng phương pháp phản xạ hồng ngoại và hiển thị thông số nhịp tim trên màn hình lcd . Mạch có độ chính xác 4 nhịp mỗi phút và nó rất dễ sử dụng. Theo thuật ngữ y học, kỹ thuật được sử dụng ở đây để cảm nhận nhịp tim được gọi là kỹ thuật chụp quang tuyến.

Chụp quang tuyến (Photoplethysmography)

  Photoplethysmography là quá trình ước tính quang học đo lường thể tích của một cơ quan. Theo dõi tim mạch, phát hiện hô hấp, theo dõi nhịp tim, v.v … là một vài ứng dụng phổ biến của chụp ảnh quang tuyến. Chúng ta cùng tìm hiểu sơ lược ứng dụng của chụp ảnh quang tuyến trong theo dõi nhịp tim từ đầu ngón tay. Khi tim mở rộng (tâm trương), thể tích máu bên trong đầu ngón tay tăng lên và khi tim co bóp (tâm thu) thì thể tích máu bên trong đầu ngón tay giảm. Kết quả thể tích máu bên trong đầu ngón tay tỷ lệ thuận với nhịp tim và nếu bạn có thể đếm số nhịp trong một phút thông qua thể tích máu tăng giảm trên đầu ngón tay thì bạn hoàn toàn có thể theo dõi nhịp tim của mình. Để thực hiện điều này, một cặp máy phát / thu hồng ngoại được đặt tiếp xúc gần với đầu ngón tay. Khi tim đập, thể tích tế bào máu dưới cảm biến tăng lên và điều này phản xạ nhiều sóng hồng ngoại hơn đến cảm biến và khi không có nhịp thì cường độ của chùm tia phản xạ giảm. Phản xạ xung được chuyển đổi thành một dòng điện hoặc xung điện áp phù hợp bằng cảm biến. Đầu ra cảm biến được xử lý bởi các mạch điện tử phù hợp để thu được thông tin rõ ràng (thông tin hiển thị ra màn hình kỹ thuật số là chữ số hoặc đồ thị).

Sơ đồ mạch theo dõi nhịp tim

  LTH1550-01 là một cảm biến chụp quang tuyến với một diode hồng ngoại kết hợp với một transistor NPN. Mặt trước của diode hồng ngoại và transistor lại được cách ly tốt. Khi đầu ngón tay được đặt trên cảm biến, tia hồng ngoại từ diode chiếu vào đầu ngón tay và phản xạ lại vào transistor, thể tích máu bên trong đầu ngón tay sẽ thay đổi (dao động) do tim đập bơm máu đến đầu ngón tay, điều này sẽ là thay đổi cường độ phản xạ của tia hồng ngoại đến transistor và làm thay đổi khả năng dần điện của transistor.

  Khi nhiều ánh sáng chiếu vào transistor, nó dẫn điện mạnh hơn, dòng cực C (collector) của nó tăng lên và do đó điện áp cực C của nó giảm. Khi có ít ánh sáng chiếu vào transistor, nó dẫn ít hơn, dòng cực C của nó giảm và do đó điện áp collector của nó tăng. Sự thay đổi điện áp collector này sẽ tỷ lệ thuận với nhịp tim. Thế nhưng sự thay đổi điện áp này khá yếu và rất khó để vi điều khiển nhận dạng được, vậy nên những mức thay đổi điện áp này cần được khuếch đại đủ lớn để vi điều khiển phân biệt được.

  Phần tiếp theo của mạch bao gồm hai bộ lọc thông thấp hoạt động sử dụng opamp LM324. LM324 là một IC tích hợp 4 opamp riêng lẻ có thể được vận hành từ một nguồn cung cấp duy nhất. Điện trở R12, R13 và tụ điện C12 đặt tần số khuếch đại và tần số cắt của bộ lọc đầu tiên. Với các giá trị thành phần nhất định, mức khuếch đại sẽ là 11 và tần số cắt sẽ là 2,5Hz. Tụ C15 được sử dụng để vượt qua nhiễu nếu có thể gây ra kích hoạt sai bởi bộ so sánh (điều không mong muốn).

  Bộ lọc thông thấp thứ hai cũng có cùng mức tăng và cắt tần số. Hai bộ lọc thông thấp tạo thành một phần rất quan trọng của mạch vì bất kỳ tín hiệu nhiễu nào truyền vào vi điều khiển sẽ đưa ra kết quả theo dõi nhịp tim bị sai lệch. Đầu ra của tầng lọc (chứa 2 Opamp đầu tiên) sẽ là đưa ra các mức điện áp dao động trong khoảng từ 0 đến 0,35 volt và dao động này được chuyển đổi thành dao động điện áp với biên độ từu 0 đến 5V nhờ bộ so sánh là opamp thứ ba (U4c). Điện áp tham chiếu (điện áp đưa vào đầu +) của bộ so sánh (op-amp thứ 3) được đặt là 0,3V. Khi điện áp đầu ra của tầng lọc vượt quá 0,3V, đầu ra của bộ so sánh sẽ về 0 và bất cứ khi nào điện áp đầu ra của tầng lọc xuống dưới 0,3V, đầu ra của bộ so sánh sẽ chuyển sang bão hòa dương. Kết quả sẽ là một xung gọn gàng dao động trong khoảng từ 0 đến 5V với tốc độ bằng với nhịp tim. Xung này được đưa đến vi điều khiển để đếm.

Lập trình cho 8051

ORG 000H                   // khởi tạo

MOV DPTR,#LUT              // di chuyển địa chỉ của thanh ghi LUT đến thanh ghi DPTR

MOV P1,#00000000B          // đặt P1 là chân xuất tín hiệu ngõ ra

MOV P0,#00000000B          // đặt P0 là chân xuất tín hiệu ngõ ra

MAIN: MOV R6,#230D         // gán thanh ghi R6 với giá trị 230D

      SETB P3.5            // đặt P3.5 là port ngõ vào tín hiệu

      MOV TMOD,#01100001B  // Đặt Timer1 ở trạng thái bộ đếm Mode2  & Timer0 ở trạng thái bộ định thời Mode1

      MOV TL1,#00000000B   // Gán TL1 với giá trị khởi đầu

      MOV TH1,#00000000B   // Gán TH1 với giá trị khởi đầu

      SETB TR1             // khởi động bộ định thời (bộ đếm) 1

BACK: MOV TH0,#00000000B   // Gán TH0 với giá trị khởi đầu

      MOV TL0,#00000000B   // Gán TL0 với giá trị khởi đầu

      SETB TR0             // khởi động bộ định thời (bộ đếm) 0

HERE: JNB TF0,HERE         // kiểm tra Timer 0 đã đếm tới giá trị giới hạn của nó chưa

      CLR TR0              // dừng Timer0

      CLR TF0              // xoá Timer Flag 0

      DJNZ R6,BACK

      CLR TR1              // dừng Timer(counter)1

      CLR TF0              // xoá Timer Flag 0

      CLR TF1              // xoá Timer Flag 1

      ACALL DLOOP          // Gọi vòng lặp DLOOP để hiển thị giá trị đếm

      SJMP MAIN            // quay về chương trình chính

DLOOP: MOV R5,#252D

BACK1: MOV A,TL1           // tải giá trị đếm hiện tại to the accumulator

       MOV B,#4D           // Gán thanh ghi B giá trị 4D

       MUL AB              // Nhân giá trị đếm cải TL1 với 4

       MOV B,#100D         // Gán thanh ghi B giá trị 100D

       DIV AB              // Cách ly ký tự đầu tiên của giá trị đếm

       SETB P1.0           // display driver transistor Q1 ON

       ACALL DISPLAY       // lệnh đưa ký tự đầu tiên ra lcd

Quảng cáo đặt hàng nhập

       MOV P0,A            // port 0 là port hiển thị giá trị kỹ thuật số của giá trị này

       ACALL DELAY

       ACALL DELAY

       MOV A,B

       MOV B,#10D

       DIV AB              // cách ly ký tự thứ 2 của giá trị đếm

       ACALL DISPLAY       // hiển thị giá trị của ký tự thứ 2 ra lcd

       MOV P0,A

       ACALL DELAY

       ACALL DELAY

       MOV A,B             // đưa ký tự cuối cùng của giá trị đếm vào bộ nhớ tạm

       CLR P1.1           

       SETB P1.2          

       ACALL DISPLAY       // hiển thị ký tự đếm thứ 3 (cũng là ký tự cuối cùng)

       MOV P0,A            // đưa mã của ký tự ra port 0

       ACALL DELAY         // gọi 1ms delay

       ACALL DELAY

       CLR P1.2

       DJNZ R5,BACK1       // lặp lại vòng lặp DLOOP 100 lần

       MOV P0,#11111111B

       RET

 

DELAY: MOV R7,#250D        // 1ms delay

 DEL1: DJNZ R7,DEL1

       RET

 

DISPLAY: MOVC A,@A+DPTR    // hiển thị giá trị biến A

         CPL A

         RET

LUT: DB 3FH                // địa chỉ bắt đầu của thanh ghi LUT

     DB 06H

     DB 5BH

     DB 4FH

     DB 66H

     DB 6DH

     DB 7DH

     DB 07H

     DB 7FH

     DB 6FH

END // kết thúc chương trình

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *