Mạch đọc tín hiệu điện tim sẽ khuếch đại, lọc nhiễu từ tín hiệu của các điện cực trên cơ thể, ngõ ra sẽ là tín hiệu analog từ 0 - 3.3V, đây cũng là tín hiệu ECG. Tín hiệu này được đưa vào khối xử lý trung tâm, qua bộ chuyển đổi ADC1 và sử dụng thuật toán xác định đỉnh sóng để đo được thời gian các đỉnh sóng liên tiếp từ đó tính được số nhịp trên mỗi phút, đồng thời dựa vào dữ liệu sau chuyển đổi ADC để vẽ nên đồ thị dạng sóng ECG. Tín hiệu của cảm biến MAX30100 thì lại là dạng số đã được chuyển đổi và lưu vào Rom tích hợp trên cảm biến. Các kết quả trên bao gồm đồ thị dạng sóng ECG và số nhịp tim trên phút, nồng độ SpO2 được chuyển tới mạch giao tiếp Wifi qua chuẩn giao tiếp UART ở các chân PA2,PA3 để thực hiện các chức năng tương ứng là đưa kết quả lên Web server và hiển thị ra LCD qua bộ FSMC.
3.5. LƯU ĐỒ GIẢI THUẬT VÀ PHẦN MỀM LẬP TRÌNH Lưu đồ giải thuật Lưu đồ giải thuật
Hình 3. 15. Lưu đồ của tồn bộ hệ thống
Giải thích lưu đồ chương trình: Khởi tạo các giá trị câu hình cho các ngoại vi
cần sử dụng trên vi điều khiển như I2C, UART, FSMC, … cấu hình giao diện ban đầu cho LCD, sau đó đọc các tín hiệu của khối ngõ vào từ bộ ADC, I2C. Trong quá trình đọc kiểm tra kết nối giữ vi điều khiển với các bộ ngoại vi I2C, ADC nếu khơng
có kết nối sẽ hiển thị ra kết quả là 0 cho nhịp tim và nồng độ SpO2, nếu có kết nối tiến hành xử lý và và tính tốn nhịp tim, SpO2 và vẽ dạng sóng ECG, tiếp tục hiển thị lên LCD và gửi dữ liệu lên web server.
.
Giải thích lưu đồ chương trình con tính tốn nhịp tim: Lấy mẫu tín ADC hiệu
tại một mốc đặt trước trên sườn lên của tín hiệu sau đó dùng timer xác định mốc thời gian t1, tiếp tục xác định mẫu từ ADC tại mốc đặt trước đó ở sườn lên tiếp theo, sau đó dùng timer xác định mốc thời gian t2, chu kì của sóng: t = t2 – t1
Phần mềm lập trình
Để lập trình cho MCU STM32 nhóm đã sử dụng trình biên dịch Keil C v5 chuyên dùng để hổ trợ cho các MCU ARM để phát triển và debug chương trình bằng ngơn ngữ C/C++ - một ngơn ngữ hàng đầu cho lập trình nhúng vì sự gắn kết chặt chẽ giữa ngơn ngữ lập trình và nền tảng phần cứng.
Hình 3. 17. Giao diện chính của Keil C V5. Các công cụ Build Các công cụ Build
chương trình
Cửa sổ quản lý thư viện
Các cơng cụ debug chương trình
Cửa sổ soạn thảo chương trình
Cửa sổ hiển thị thơng báo lỗi của chương trình
Hướng dẫn sử dụng phần mêm lập trình.
Bước 1: Thêm tất cả các thư viện mong muốn vào cửa sổ (2)
Hình 3. 18. Cửa sổ chứ các thư viện cho project.
Bước 2: Code lập trình C được soạn thảo ở cửa sổ (3)
Hình 3. 19. Cửa sổ soạn thảo của chương trình Cửa sổ (2) quản lý thư viện Cửa sổ (2) quản lý thư viện
Bước 3: Sau khi lập trình xong sử dụng cơng cụ biên dịch chương trình (1), sau
đó sử dụng kiểm tra kết quả build ở cửa số (4), cửa sổ này cho phép chúng ta biết được số lỗi, lỗi như thế nào trong quá trình lập trình:
Hình 3. 20. Cơng cụ biên dịch và kết quả sau biên dịch
Bước 4: Kiểm tra kết quả nếu khơng có lỗi thì hãy nạp chương trình vào vi điều khiển bằng cơng cụ (5) như hình dưới:
Cơng cụ (1) biên dịch
Cửa sổ (4) thơng tin lỗi của code
Hình 3. 21. Cơng cụ nạp chương trình vào vi điều khiển. Cơng cụ (5) biên dịch Công cụ (5) biên dịch
CHƯƠNG 4: THI CÔNG HỆ THỐNG
4.1 GIỚI THIỆU
Sau khi hồn thành việc tính tốn các thơng số hồn chỉnh cho mạch, chúng ta bắt đầu thi công vẽ PCB lắp ráp mạch, chạy thực tế và cân chỉnh thệ thống.
4.2 THI CƠNG HỆ THỐNG:
Thi cơng bo mạch:
Trước khi vẽ mạch nguyên lý và mạch in PCB, chúng ta cần liệt kê danh sách tất cả linh kiện sử dụng. Dưới đây là bảng tóm tắt tất cả linh kiện sử dụng trong việc thi công board xử lý trung tâm.
Bảng 4.1: Danh sách linh kiện
STT Tên linh kiện Giá trị Số lượng Đóng gói
1 VDK STM32F407 1 SMD 100- LQFP
2 Hàng Rào Cái Đôi 2.54mm
40 Chân 2 Hàng Cao 8.5mm 1 Chấn cắm xuyên lỗ
2 LED Xanh Dương Trong
Suốt 1 0805 SMD
3 Thạch Anh 2 Chân 8Mhz 1 SMD
4 Thạch Anh 2x6mm 32.768kHz 1 Chân cắm xuyên lỗ
5 Tụ Gốm 100nF
(0.1uF) 50V 1 0805 SMD
6 Tụ Gốm 10uF 16V 3 0805 SMD
7 Tụ Gốm 2.2uF 50V 5 0805 SMD
8 Điện Trở 620 Ohm
5% 1 0805 SMD
9 Điện Trở 10 kOhm
5% 6 0805 SMD
10 Đầu Nối Nguồn DC 2.1mm 1 Chân cắm xuyên lỗ
11 Nút Nhấn 3.5x6mm Cao
Dựa và mạch nguyên lý đã trình bày ở chương 3, nhóm tiến hành vẽ mạch PCB:
Hình 4. 1. PCB của board xử lý trung tâm.
Hình 4. 3. Hình ảnh thực tế board mạch mặt sau.
Lắp ráp và kiểm tra
a. Lắp ráp module nguồn
Tiến hành lắp ráp và hàn các linh kiện của module nguồn. Tiến hành đo và kiểm tra nguồn vào và ra xem đúng sai, cân chỉnh cho đúng đầu vào 5VDC sau mạch giảm áp còn 3.3V DC.
b. Tiến hành thực hiện hàn chip dán STM32F4, các linh kiện khác:
Sau khi đã hoàn thành hàn linh kiện lên board. Kiểm tra mạch xem board có bị đứt hay chập mạch khơng. Nếu có, nhẹ thì có thể chỉnh sửa lại, nặng thì phải làm lại board khác.
4.2.2. Đóng gói và thi cơng mơ hình:
Dùng phần mềm SketchUp để vẽ các chi tiết tạo thành đầu dị cảm biến SpO2
Hình 4. 5. Ảnh 3D bản vẽ đầu dò gắn cảm biến SpO2.
Hộp của thiết bị được vẽ từ CorelDraw với kích thước 21cm x 14cm x 7cm
4.2.3. Thi cơng hộp mơ hình:
Sau khi vẽ bằng CorelDraw, xuất ra file dxf cho vào máy cắt mica để gia công các mặt của hộp.
Hình 4. 7. Mơ hình hệ thống hồn chỉnh khi lắp tất cả linh kiện vào trong hộp.
4.3. LẬP TRÌNH CHO HỆ THỐNG a. Phần mềm lập trình ESP8266 a. Phần mềm lập trình ESP8266
Trong đề tài này người thực hiện sử dụng trình biên dịch Arduino IDE vì nó tiện lợi và hỗ trợ tốt hơn cho người sử dụng.
Hướng dẫn sử dụng Arduino IDE:
- Bước 1: Mở chương trình Arduino IDE có giao diện như hình 4.8
- Bước 2: Tiến hành biên soạn chương trình như hình 4.9:
Hình 4. 9. Giao diện trình biên dịch Aduino IDE.
- Bước 3: Lưu chương trình như hình 4.10, khi bạn nhấn Save trình biên dịch Arduino IDE sẽ tự tạo thư mục để lưu code.
- Bước 4: Tiến hành tổng hợp code (1) và nạp cho board ESP8266 Node MCU (2).
Hình 4. 10. Tiến hành tổng hợp và nạp chương trình. (1) biên dịch (1) biên dịch
b. Phần mềm lập trình STM32CubeMX và Keil C V5
Hình 4. 11. Giao diện khởi động chương trình STM32CubeMX. Tại giao diện này các bạn có thể: Tại giao diện này các bạn có thể:
• Tạo 1 Project mới: File ➔ New Project hoặc nhấn vào ACCESS TO MCU
SELECTOR nếu bạn lập trình 1 MCU STM32 bất kỳ, hoặc nhấn vào ACCESS TO BOARD SELECTOR nếu bạn lập trình trên 1 board phát triển của hãng STM32.
• Mở project gần đây: Tại mục Recent Opened Project nhấn vào tên project bạn đã mở gần đây.
• Mở 1 project bất kỳ: Tại mục Other Project, bấm vào biểu tượng duyệt thư mục
hoặc File ➔ Load Project.
Sau khi nhấn vào File ➔ New Project thì giao diện chọn vi điều khiển STM32 sẽ hiện ra:
▪ Chọn vi điều khiển: Tại mục Part Number Search các bạn nhập vào tên vi điều
khiển mà mình muốn cấu hình (ví dụ vi điều khiển STM32F103).
Hình 4. 12. Tạo 1 Project mới.
Tiếp theo sau khi tạo project chương trình sẽ dẫn chúng ta đến giao diện cấu hình chip.
Hình 4. 13. Giao diện cấu hình vi điều khiển. Tại mục Pinout & Configuration: Tại mục Pinout & Configuration:
• Cấu hình nạp code: Các bạn chọn System Core ➔ SYS ➔ Debug: Serial Wire
• Cấu hình các ngoại vi: Việc cấu hình các ngoại vi như INPUT, INPUT, External
Interrupt, ADC, TIMER, UART… có thể được thực hiện bằng cách chuột phải để chọn chân trực tiếp và kích chuột trái vào chân mà mình muốn cài đặt.
• Ngồi ra, các bạn cũng có thể cấu hình các ngoại vi khác tại các mục: System Core, Analog, Timers, Connectivity…
Tại mục Clock Configuration: Các bạn cấu hình lựa chọn nguồn tạo dao động và tần số hoạt động cho vi điều khiển (Bộ xử lý trung tâm – CPU và Peripherals – các ngoại vi) thơng qua Clock tree. (Kết hợp với cấu hình RCC tại System Core).
Hình 4. 14. Cấu hình xung clock cho mạch.
Tại Project Manager các bạn đặt tên Project, nơi lưu trữ (lưu ý không sử dụng Tiếng Việt có dấu), và chọn Toolchain /IDE là MDK-ARM V5 nếu các bạn sử dụng Keil C IDE để code và debug. Sau khi cấu hình xong, các bạn bấm vào GENERATE CODE để sinh code. Sau khi đã sinh code thì sẽ có thơng báo các bạn Open Project. Lúc này Project sẽ được mở lên ở phần mềm Keil C với đầy đủ các cấu hình mà bạn đã thực hiện.
Hình 4. 15. Lưu thơng tin project và sinh code.
Sau khi cấu hình, sinh code từ phần mềm STM32CubeMX và mở Project Keil C, các bạn mở file main.c tại mục Application/User.
Các bạn nhấn vào biểu tượng Option for Target hoặc Project ➔ Option for Target để thực hiện 1 số cấu hình:
Tại cửa sổ Option for Target, các bạn chọn thẻ Debug và tick chọn Use ST-Link Debugger, để nạp chương trình xuống kit (nếu chọn Use Simulator thì sẽ ở chế độ mơ phỏng).
Nhấn vào Settings tại Use: ST-Link Debugger, cửa sổ Cortex-M Target Driver Setup, các bạn chọn thẻ Flash Download, tại đây nếu tick chọn Reset and Run thì ngay sau khi nạp, chương trình sẽ chạy ngay. Nếu khơng tick chọn thì các bạn nạp code xong, nhấn vào nút reset trên board mạch thì chương trình mới chạy.
Hình 4. 17. Cấu hình cho mạch reset.
Cuối cùng có các biểu tượng Build (F7) để compile chương trình và Load (F8) để nạp chương trình.
Hình 4. 18. Tiến hành compile và nạp chương trình..
4.4. VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG
Bước 1: Cấm dây nguồn 5v từ nguồn Pin vào hệ thống. Lưu ý: Không được sử
dụng nguồn xung để cấp nguồn cho hệ thống, nguồn sẽ gây nhiễu cho mạch ECG và không thể đo ra kết quả chính xác.
Bước 2: Quan sát màn hình khởi động lên giao diện chính của hệ thống, đợi
cho cảm biến sáng lên tức là khi đó khởi động xong.
Bước 3: Gắn các điện cực lên cơ thể theo đạo trình mong muốn, đeo đầu dị
SpO2 vào đầu ngón tay trỏ.
Bước 4: Quan sát kết quả đo trên LCD và đồng thời có thể vào trang web có
CHƯƠNG 5: KẾT QUẢ THỰC TẾ
5.1. KẾT QUẢ ĐẠT ĐƯỢC TRONG QUÁ TRÌNH THỰC HIỆN
Nhờ các kiến thức đã tiếp thu được trong quá trình học tập tại trường cùng các kiến thức mà nhóm em tự mày mị, nghiên cứu từ các tài liệu chuyên ngành bằng tiếng Anh dưới sự hướng dẫn của thầy Võ Đức Dũng. Nhóm chúng em đã hoàn thành được đồ án tốt nghiệp với đề tài “THIẾT KẾ VÀ THI CÔNG MÁY ĐO ĐIỆN
TÂM ĐỒ ECG”. Sau quá trình thực hiện đề tài đồ án, nhóm chúng em đã nghiên
cứu và tích lũy được một số kiến thức mới như sau:
- Tìm hiểu được sâu về dịng vi điều khiển 32bit STM32F4, biết sử dụng các trình biên dịch, soạn thảo và các cơng cụ nạp chương trình thích hợp cho dịng vi điều khiển này.
- Nghiên cứu, tìm hiểu và nắm bắt được nguyên lý, hoạt động của bộ ngoại vi FSMC có trên dịng Vi điều khiển STM32F4, rất thích hợp để sử dụng cho các ứng dụng cần mở dụng bộ nhớ RAM cho Vi điều khiển và tiện dụng cho việc điều khiển LCD ở tốc độ cao.
- Nghiên cứu, tìm hiểu và nắm bắt được nguyên lý đo nhịp tim, SpO2 bằng phương pháp quang học và đo điện tâm đồ bằng cách đo lường, vẽ lại đồ thị về sự thay đổi điện áp ở các vị trí xác định trên cơ thể.
- Nghiên cứu, nắm rõ được nguyên lý của các dòng LCD, cấu tạo chung và phương thức điều khiển cho hầu hết các loại LCD kích thước lớn, độ phân giải cao. Nắm bắt được phương pháp lập trình để vẽ nên các đối tượng hình học cơ bản cho LCD từ đó phát triển đồ họa lên mức cao.
- Nghiên cứu và biết cách tạo ra một web server trên ESP8266, các kiến thức cơ bản về HTML, CSS, ...
- Nghiên cứu và biết sử dụng các công cụ vẽ 2D, 3D ở mức độ cơ bản bằng CorelDraw, SketUp.
Hình 5. 1. Hệ thống lắp đặt hồn chỉnh.
Tất cả các phần cứng module được kết nối lên board điều khiển trung tâm (Board xanh lá).
➢ Tiến hành đo:
Module nguồn LM317 Module nguồn AMS117
Module ECG AD8232
Board điều khiển LCD sử dụng driver RA8875 Board xử lý trung tâm
Module Esp8266 nodeMCU v1.0
- Đặt tay vào đầu dò cảm biến để tiến hành đo SpO2:
Hình 5. 2. Đầu dị cảm biến đo SpO2.
Chú thích:
o Khi đo SpO2, cơ thể nên giữ yên không hoạt động, đi lại, quơ tay, lắc cổ,.. vì các hành động của cơ thể sẽ thay đổi huyết áp, tuy rất nhỏ nhưng cũng đủ làm nhiễu đến tín hiệu mà cảm biến đọc được.
o Đặt tay ngay thẳng vào đầu dò, xoay mặt da ở đầu ngón tay vào cảm biến - Dán các điện cự lên đạo trình mong muốn đo
Hình 5. 3. Điện cực được dán lên cơ thể ở đạo trình Lead II (RA, LA, RL).
Đầu dị tín hiệu SpO2 Tay người Điện cực Cơ thể người
Chú thích:
o Khi dán các điện cực, cần đảm bảo độ dính và tiếp xúc của các điện cực lên cơ thể.
o Cách ly cơ thể với các nguồn điện xung quanh có thể gây nhiễu bằng các khơng cầm nắm, sờ vào bất kì dụng cụ, thiết bị điện, điện tử nào đặc biệt là các thiết bị có xử dụng nguồn xung và tốt nhất là nằm trên giường khi đo đạt.
- Tiến hành theo dõi kết quả đo đạt được trên LCD:
Hình 5. 4. Kết quả đo ecg Lead II, nhị tim và SpO2 trên màn hình LCD. Tín hiệu Tín hiệu ECG Nhịp tim đo được Nồng độ SpO2 đo được Đồ thị hấp thụ quang
- Theo dõi kết quả từ xa thông qua web server được đặt trên Esp8266:
Hình 5. 5. Kết quả đo đạt trên web server.
Kết quả hiển thị số nhịp tim trên phút và SpO2 đo đạt được trên webserver, tốc độ làm tươi kết quả trên web là rất nhanh hoàn toàn đáp ứng được yêu cầu về tốc độ
5.2. KẾT QUẢ ĐO TRÊN THIẾT BỊ CHUẨN Y KHOA
- Dạng sóng ECG từ thiết bị chuẩn:
Hình 5. 6. Dạng sóng ecg Lead II đo được từ máy chuẩn y khoa. Dạng sóng ECG của
đạo trình Lead I
Dạng sóng ECG của đạo trình Lead II
Dạng sóng ECG của đạo trình Lead III
Nhận xét: So sánh với dạng sóng ECG từ hệ thống của nhóm tự thiết kế và thiết
bị chuẩn tương đối giống nhau về tỉ lệ đỉnh các đỉnh sóng, tỉ về về thời gian các phức