Tải bản đầy đủ (.doc) (29 trang)

mạch đo nhịp tim (có code)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (551.18 KB, 29 trang )

MẠCH ĐO NHỊPTIM

ii


MỤC LỤC
DANH MỤC CÁC HÌNH VẼ...............................................................................................IV
DANH MỤC CÁC BẢNG BIỂU...........................................................................................V
DANH MỤC CÁC TỪ VIẾT TẮT......................................................................................VI
GIỚI THIỆU CHUNG VỀ ĐỀ TÀI.......................................................................................1
GIỚI THIỆU LINH KIỆN......................................................................................................3
THIẾT KẾ MẠCH.................................................................................................................13
NHẬN XÉT VÀ KẾT LUẬN................................................................................................17
TÀI LIỆU THAM KHẢO.....................................................................................................18
PHỤ LỤC................................................................................................................................19

iii


DANH MỤC CÁC HÌNH VẼ
HÌNH 2-1: ARDUINO UNO [1].............................................................................................3
HÌNH 2-2: I2C [2]....................................................................................................................6
HÌNH 2-3: KẾT NỐI THIẾT BỊ VÀO BUS I2C Ở CHẾ ĐỘ CHUẨN (STANDARD
MODE) VÀ CHẾ ĐỘ NHANH (FAST MODE) [3]............................................................7
HÌNH 2-6: LCD 16X2 [2]........................................................................................................8
HÌNH 2-7: SƠ ĐỒ CHÂN LCD [2].......................................................................................8
HÌNH 2-8: CẢM BIẾN NHỊP TIM [3]................................................................................10
HÌNH 2-9: NGUYÊN LÝ HOẠT ĐỘNG CỦA CẢM BIẾN NHỊP TIM [3]..................11
HÌNH 2-10: MODULE SIM900A [3]..................................................................................12
HÌNH 3-1: SƠ ĐỒ KHỐI TOÀN MẠCH...........................................................................13
HÌNH 3-2: SƠ ĐỒ MẠCH MÔ PHỎNG TRÊN PROTEUS...........................................14


HÌNH 3-3: SƠ ĐỒ GIẢI THUẬT........................................................................................15
HÌNH 3-4: KẾT NỐI SENSOR VÀO ARDUINO.............................................................16
HÌNH 3-5: KẾT NỐI MODULE SIM900A VÀO ARDUINO.........................................16

iv


DANH MỤC CÁC BẢNG BIỂU
BẢNG 2-1: THÔNG SỐ KĨ THUẬT CỦA ARDUINO UNO............................................4
.....................................................................................................................................................4
BẢNG 2-1: SƠ ĐỒ CHÂN VÀ MÔ TẢ CHI TIẾT CỦA LCD.........................................8
BẢNG 2-3: CẤU TẠO CẢM BIẾN NHỊP TIM.................................................................10

v


DANH MỤC CÁC TỪ VIẾT TẮT
EEPROM
I2C
PIC
SRAM
WHO

Electrically Erasable Programmable Read Only Memory
Inter - Integrated Circuit
Programmable Intelligent Computer
Static Random Access Memory
World Health Organization

vi



Trang 1/24

GIỚI THIỆU CHUNG VỀ ĐỀ TÀI
1.1 Giới thiệu
-

Ngày nay, khi công nghệ ngày càng hiện đại và phát triển việc áp dụng
những thành tựu khoa học và kĩ thuật vào đời sống của con người ngày càng
tăng cao và trên mọi lĩnh vực. Điều đó làm cho chúng ta có nhiều giải pháp
tốt hơn và đa dạng hơn trong việc xử lý tốt hơn những vấn đề tưởng chừng
rất phức tạp trong cuộc sống.

-

Cùng với sự phát triển chung và để hội nhập toàn cầu, nước ta cũng đang
mạnh mẽ tiến hành công cuộc công nghiệp hóa hiện đại hóa đất nước. Trong
đó, lĩnh vực Điện tử-Viễn thông ngày càng đóng vai trò quan trọng trong
việc nâng cao đời sống kinh tế con người nói chung và nâng tầm đất nước
nói riêng. Đặc thù riêng của ngành đã đóng góp không nhỏ trong rất nhiều
các lĩnh vực từ y tế, kinh tế, chính trị, quốc phòng, cho đến cuộc sống
thường ngày.

1.2 Giới thiệu đề tài:
-

Theo WHO, bệnh tim mạch đang là nguyên nhân tử vong hàng đầu ở người
trên toàn thế giới và chiếm nhiều nhất ở các nước đang phát triển. Mỗi năm,
người chết do bệnh tim và đột quỵ nhiều hơn cả ung thư, lao, sốt rét và HIV

cộng lại. Còn tại Việt Nam, thống kê của Hội tim mạch học cho thấy, cứ 3
người Việt Nam trưởng thành có 1 người có nguy cơ mắc bệnh tim mạch,
chủ yếu là bệnh mạch vành.

-

Chỉ tính riêng bệnh tim mạch đã cướp đi sinh mạng của hơn 100.000 người
mỗi năm, nếu tính cả tai biến mạch máu não và các bệnh tim khác, con số
này lên tới 200.000 người, chiếm hơn 1/4 tổng số người tử vong tại Việt
Nam mỗi năm.

Mạch đo nhịp tim


Trang 2/24

-

Để chủ động phòng ngừa và ngăn chặn nhịp tim thay đổi bất thường nhằm
tránh các trường hợp đáng tiếc xảy ra, mà không cần phải đến các trung tâm
y tế thì máy đo nhịp tim tại nhà với cách đo đơn giản mà vẫn chính xác là
một giải pháp tuyệt vời.

Mạch đo nhịp tim


Trang 3/24

GIỚI THIỆU LINH KIỆN
1.3 Arduino Uno R3

-

Khoa học công nghệ càng ngày càng phát triển, vi điều khiển AVR và PIC
ngày càng hoàn thiện hơn, nhưng có thể nói sự ra đời của Arduino tai Italia
vào năm 2005 đã mở ra một hướng đi mới cho vi điều khiển. Sự xuất hiện
của Arduino đã hỗ trợ cho con người rất nhiều về lập trình và thiết kế nhất là
đối với những người mới bắt đầu tìm hiểu về thiết kế điện tử và chưa có
nhiều kinh phí đầu tư. Phần cứng của thiết bị đã được tích hợp nhiều chức
năng cơ bản và là mã nguồn mở. Ngôn ngữ lập trình trên nền Java vô cùng
dễ sử dụng và tương thích với ngôn ngữ C, hơn nữa, thiết bị có hệ thư viện
phong phú được chia sẻ miễn phí. Chính vì những lý do trên, mà Arduino
hiện đang ngày một hoàn thiện và phổ biến rộng rãi trên toàn thế giới.

Hình 2-1: Arduino UNO [1]

1.3.1 Thông số kĩ thuật

Mạch đo nhịp tim


Trang 4/24

Bảng 2-1: Thông số kĩ thuật của Arduino UNO

1.3.2 Vi điều khiển
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8,
ATmega168, ATmega328. Trong mạch đo nhịp tim đang thực hiện sử dụng vi điều
khiển Atmega328.
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:



32 KB bộ nhớ Flash: những đoạn lệnh lập trình sẽ được lưu trữ trong bộ
nhớ Flash của vi điều khiển



2 KB cho SRAM: giá trị các biến khai báo khi lập trình. Khi mất điện, dữ
liệu trên SRAM sẽ bị mất.

Mạch đo nhịp tim


Trang 5/24



1 KB cho EEPROM: nới đọc và ghi dữ liệu. Khi mất điện, dữ liệu trên
EEPROM không bị mất.

1.3.3 Năng lượng:
-

Arduino Uno có thể cấp nguồn 5 Vdc thông qua cổng USB hoặc cấp nguồn
ngoài thông qua Achaptor với điện áp khuyên dùng là 7-12 Vdc và giới hạn
là 6-20 Vdc. Nên cấp nguồn 9 Vdc để mạch có thể đạt hiệu quả sử dụng ổn
định nhất.



GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi dùng

các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải
được nối với nhau.



5 V: cấp điện áp 5 V đầu ra. Dòng tối đa cho phép là 500 mA.



3.3 V: cấp điện áp 3.3 V đầu ra. Dòng tối đa cho phép là 50 mA.



Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, nối cực dương
của nguồn với chân này và cực âm của nguồn với chân GND.



IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được
đo ở chân này, nó luôn là 5 Vdc. Nhưng không được lấy nguồn 5 Vdc từ chân
này để sử dụng bởi chức năng của nó không phải là cấp nguồn.



RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương
với việc chân RESET được nối với GND qua 1 điện trở 10 KΩ.

1.4 Giao tiếp I2C
1.4.1 Giới thiệu:
-


Đầu năm 1980 Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây được
gọi là I2C. I2C là tên viết tắt của cụm từ Inter-Integrated Circuit. Đây là
đường Bus giao tiếp giữa các IC với nhau. Bus I2C được sử dụng làm bus
giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại vi điều khiển
8051, PIC, AVR, ARM... chip nhớ như: RAM tĩnh (Static Ram), EEPROM,

Mạch đo nhịp tim


Trang 6/24

bộ chuyển đổi tương tự số (ADC), số tương tự (DAC), IC điểu khiển LCD,
LED... [4]

Hình 2-2: I2C [2]

1.4.2 Đặc điểm giao tiếp
-

Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL).
SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng
hồ để đồng bộ và chỉ theo một hướng. Khi một thiết bị ngoại vi kết nối vào
đường bus I2C thì chân SDA của nó sẽ nối với dây SDA của bus, chân SCL
sẽ nối với dây SCL.

Mạch đo nhịp tim


Trang 7/24


Hình 2-3: Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế

độ nhanh (Fast mode) [3]
1.5 LCD 16x2
1.5.1 Giới thiệu
-

Thiết bị hiển thị LCD (Liquid Crystal Display), được sử dụng rất rộng rãi và
phổ biến trong ứng dụng của vi điều khiển. LCD có rất nhiều ưu điểm so
với các dạng hiển thị khác: nó có khả năng hiển thị kí tự đa dạng, trực quan
(chữ, số và kí tự đồ họa), dễ dàng đưa vào mạch ứng dụng theo nhiều giao
thức giao tiếp khác nhau, tốn rất ít tài nguyên hệ thống và giá thành rẻ …

-

Có rất nhiều loại LCD với hình dáng và kích thước khác nhau, trong mạch
sử dụng một dạng rất phổ biến là loại 16x2.

Mạch đo nhịp tim


Trang 8/24

Hình 2-6: LCD 16x2 [2]

1.5.2 Thông số kĩ thuật:
-

Khi sản xuất LCD, nhà sản xuất đã tích hợp chíp điều khiển (HD44780) bên

trong lớp vỏ và chỉ đưa các chân giao tiếp cần thiết. Các chân này được đánh
số thứ tự và đặt tên như hình:

Hình 2-7: Sơ đồ chân LCD [2]

-

Sơ đồ chân:
Bảng 2-1: Sơ đồ chân và mô tả chi tiết của LCD

Chân

Kí hiệu

1

VSS

2

VDD

3

VEE

4

RS


Mạch đo nhịp tim

Mô tả
Chân nối đất cho LCD, khi thiết kế mạch ta nối chân
này với GND.
Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân
này với VCC=5 V.
Điều khiển độ tương phản cho LCD
Chân chọn thanh ghi (Register select). Nối chân RS với


Trang 9/24

logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh
ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh
IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ
đếm địa chỉ của LCD (ở chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu
DR bên trong LCD.
Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W
với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối
với logic “1” để LCD ở chế độ đọc. Tám đường của bus
dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế
5

RW

độ sử dụng 8 đường bus này :
+ Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường,

với bit MSB là bit DB7.
+ Chế độ 4 bit: Dữ liệu được truyền trên 4 đường từ
DB4 tới DB7, bit MSB là DB7
Chân cho phép (Enable). Sau khi các tín hiệu được đặt
lên bus DB0-DB7, các lệnh chỉ được chấp nhận khi có

6

E

1 xung cho phép của chân E.
+ Ở chế độ ghi
+ Ở chế độ đọc

7-14

DB0-

Tám đường của bus dữ liệu dùng để trao đổi thông tin

DB7

với MPU. Có 2 chế độ sử dụng 8 đường bus này:
+ Chế độ 8 bit: Dữ liệu được truyền trên cả 8 đường,
với bit MSB là bit DB7.

Mạch đo nhịp tim


Trang 10/24


+ Chế độ 4 bit: Dữ liệu được truyền trên 4 đường từ
DB4 tới DB7, bit MSB là DB7.
15

Nguồn dương

16

Nguồn âm

1.6 Cảm biến nhịp tim
1.6.1 Cấu tạo cảm biến đo nhịp tim:

Hình 2-8: Cảm biến nhịp tim [3]

Gồm hai thành phần là một đầu phát quang là bóng hồng ngoại và một quang
trở nhạy với bước sóng ánh sáng mà đầu phát ra.

Bảng 2-3: Cấu tạo cảm biến nhịp tim

Nguồn sử dụng

3–5V

Dòng tiêu thụ

4 mA

Ngõ ra


Analog

Đường kính cảm biến

1.6 cm.

Mạch đo nhịp tim


Trang 11/24

1.6.2

Ngyên lí hoạt động:

Hình 2-9: Nguyên lý hoạt động của cảm biến nhịp tim [3]

Khi áp chặt mặt cảm biến vào da, nơi có mạch máu chảy đầu phát sẽ
phát sẽ phát ra ánh sáng đi vào trong da. Dòng ánh sáng đó sẽ bị khếch tán ra
xung quanh, và một phần đi tới quang trở đặt đầu gần đó. Do bị ép vào nên
lượng máu ở phần cảm biến thay đổi, cụ thể khi không có áp lực do tim đập,
máu sẽ dồn ra xung quanh lượng máu ở phần cảm biến sẽ về đầu thu nhiều
hơn với khi tim đập, máu chảy qua nơi có cảm biến áp vào. Cường độ ánh
sáng sẽ thay đổi theo xung tương ứng, nó được phản xạ trở lại với những
thay đổi cảm biến trong mỗi xung.
Tín hiệu đầu ra là tín hiệu analog, dao động theo các mạch đập của tim.
1.7 Module Sim900A
1.7.1 Giới thiệu tổng quan về Module Sim900A
-


Một modem GMS là một modem wireless, nó làm việc cùng với một mạng
wireless GMS. Một modem wireless gửi nhận dữ liệu qua sóng, nó yêu cầu
một thẻ sim và một mạng wireless để hoạt động.

-

Module Sim 900A được thiết kế như một wireless GMS.

-

Mạch GSM GPRS Sim900A Mini được thiết kế nhỏ gọn với chi phí thấp
nhưng vẫn đảm bảo được khả năng hoạt động tốt. Mạch được thiết kế ra các
chân cơ bản của Sim900A, tích hợp khe sim kích cỡ thông thường và Anten.

Mạch đo nhịp tim


Trang 12/24

Mạch Sim900A được thiết kế để có khả năng cấp nguồn trực tiếp 5 V và
nguồn không cần phải có dòng lớn (nhờ có diode và tụ bù), có thể cấp trực
tiếp từ 5 V của Arduino hoặc từ cổng usb máy tính.

Hình 2-10: Module Sim900A [3]

-

Mạch đo nhịp tim



Trang 13/24

THIẾT KẾ MẠCH
1.8 Sơ đồ khối

Hình 3-1: Sơ đồ khối toàn mạch

-

Khối nguồn: Cung cấp điện cho toàn mạch. Có thể sử dụng mạch trực tiếp
từ cổng USV 5 Vdc hoặc dùng Adaptor 9Vdc nếu mạch đã được nạp sẵn,
nguồn điện cần liên tục và ổn định.

-

Cảm biến: Cảm biến nhịp tim (Heart pulse sensor) sẽ tiếp xúc trực tiếp với
đầu ngón tay hoặc nơi có thể nhận rõ mạch máu như: cổ tay, cổ, dái tai… Nó
có thể nhận biết được dao động của mạch máu và chuyển sang tín hiệu điện,
gửi về cho MCU.

-

MCU ( Arduino Uno R3): bộ điều khiển trung tâm sẽ nhận tín hiệu từ cảm
biến. Thông qua chương trình vi điều khiển, tín hiệu kỹ thuật số được xử lý,
tốc độ xung (BPM) phải được tính toán sau đó gửi đến các cổng đầu ra của

Mạch đo nhịp tim



Trang 14/24

vi điều khiển. Các tín hiệu đầu ra cần phải tương thích với yêu cầu đầu vào
của một đơn vị hiển thị ( ở đây dùng LCD 16x2).
-

Khối hiển thị: qua cổng giao tiếp I2C nối trực tiếp với MCU, LCD hiển thị
ra kết quả nhịp tim đo được.

-

Module Sim900A: sử dụng MCU xử lý tín hiệu, truyền thông tin cảnh báo
nhịp tim khi bất ổn định qua Sim người sử dụng hoặc người có nhu cầu quản
lý thông tin.

1.9 Sơ đồ mạch:

Hình 3-2: Sơ đồ mạch mô phỏng trên Proteus

Mạch đo nhịp tim


Trang 15/24

1.10

Sơ đồ giải thuật:

Hình 3-3: Sơ đồ giải thuật


-

Khi có tín hiệu ở cảm biến nhịp tim, đèn ở chân số 13 sẽ chớp tắt theo nhịp
đập. Khi phát hiện được xung nhịp này, bộ xử lý sẽ phân tích dữ liệu và cập
nhật mỗi 2ms. Sau 10 xung nhịp thì tính toán số lần đập trên một phút, sau
đó gửi tín hiệu đã phân tích hiển thị ra LCD. Nếu tín hiệu nhận được nằm
trong khoảng ổn định, tức từ 65 tới 85 BPM, sẽ gửi tin nhắn bằng module
sim900A tới số điện thoại định sẵn với nội dung “Nhịp tim ổn định”. Ngược
lại, gửi tin nhắn với nội dung “Nhịp tim không ổn định”.

-

Khi không phát hiện ra xung nhịp, bộ xử lý sẽ tăng hoặc giảm 50% giá trị
xung mẫu và xuất ra LCD.

Mạch đo nhịp tim


Trang 16/24

1.11

Thực thi phần cứng

Hình 3-4: Kết nối sensor vào Arduino

Hình 3-5: Kết nối module sim900A vào Arduino

Mạch đo nhịp tim



Trang 17/24

NHẬN XÉT VÀ KẾT LUẬN
1.12
-

Nhận xét:
Mạch chạy tương đối ổn định với sai số 12,6% sau 20 lần đo dựa trên kết
quả đo của App “Đo nhịp tim” trên điện thoại Asus zenphone 5.

1.12.1 Ưu điểm:
-

Mạch chạy, hiển thị nhịp tim lên LCD. Khi nhịp tim trong vùng ổn định
hoặc không ổn định thì gửi tin nhắn thông báo vào số điện thoại đã định
trước.

-

Mạch nhỏ gọn với ít linh kiện nên dễ thiết kế, thi công.

-

Dễ dàng lắp đặt, sửa chữa.

1.12.2 Khuyết điểm:
-

Mạch còn sơ sài và mang tính chất mô phỏng.


-

Mạch chạy chỉ ở mức tương đối ổn định.

-

Chưa hiển thị được cụ thể nhịp tim qua tin nhắn.

1.13
-

Hướng phát triển:
Đồ án 2 với đề tài “Mạch đo nhịp tim” giúp sinh viên vận dụng kiến thức đã
học một cách cụ thể hóa. Tạo môi trường cho sinh viên quen với việc tự học
tập, nghiên cứu, năng động sáng tạo hơn trong môi trường đại học.

-

Mạch có thể sử dụng trong thực tế một cách rộng rãi, có thể mở rộng và phát
triển bằng cách có tín hiệu báo động tức thời (chớp đèn, hú loa)... Khi nhịp
tim không ổn định.

Mạch đo nhịp tim


Trang 18/24

TÀI LIỆU THAM KHẢO
Tiếng Anh:

Michael McRoberts (2011), “Beginning Arduino”.
Internet:

/> /> />
Mạch đo nhịp tim


Trang 19/24

PHỤ LỤC
Chương trình chính:
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
#include "call.h";
#include <LiquidCrystal_I2C.h>
#include <Wire.h>

CallGSM call_classname;
SMSGSM sms;
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3,POSITIVE);
int pulsePin = A0;
int blinkPin = 13;
int fadePin = 5;
int fadeRate = 0;
int no_sample = 50;

volatile int BPM;
volatile int Signal;
volatile int IBI = 600;

volatile boolean Pulse = false;
volatile boolean QS = false;
static boolean serialVisual = true;
Mạch đo nhịp tim


Trang 20/24

void setup(){
if (gsm.begin(2400))
Serial.println("\nstatus=READY");
else {Serial.println("\nstatus=IDLE");}
pinMode(blinkPin,OUTPUT);
pinMode(fadePin,OUTPUT);
Serial.begin(115200);
lcd.begin(16,2);
lcd.clear();
TCCR2A = 0x02;
TCCR2B = 0x06;
OCR2A = 0X7C;
TIMSK2 = 0x02;
sei();
}
// Where the Magic Happens
void loop(){
if (QS == true){
fadeRate = 255;
serialOutputWhenBeatHappens();
QS = false;
}

ledFadeToBeat();
delay(20);
}
void ledFadeToBeat(){
fadeRate -= 15;
fadeRate = constrain(fadeRate,0,255);
analogWrite(fadePin,fadeRate);

Mạch đo nhịp tim


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×