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
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
Hotline: 0979 466 469