TỔNG QUAN
ĐẶT VẤN ĐỀ
Ngày nay, vấn đề sức khỏe tim mạch ngày càng gia tăng do thực phẩm và lối sống không lành mạnh Nhiều tai nạn đáng tiếc xảy ra do không phát hiện và theo dõi kịp thời tình trạng tim mạch của bệnh nhân Việc áp dụng khoa học và kỹ thuật trong theo dõi bệnh lý tim mạch là cần thiết để giảm thiểu tối đa các sự cố xảy ra.
Công nghệ và kỹ thuật khoa học hiện nay phát triển mạnh mẽ, đặc biệt trong lĩnh vực y sinh, dẫn đến sự ra đời của nhiều thiết bị y sinh phục vụ cho việc phát hiện và điều trị bệnh Trong số đó, các thiết bị đo lường tim mạch được ưu tiên hàng đầu Tuy nhiên, việc phát triển sản phẩm đảm bảo cả độ chính xác và tính kinh tế vẫn là một thách thức lớn cho các nhà nghiên cứu.
Lĩnh vực điện tử y sinh hiện nay còn mới mẻ với sinh viên, chủ yếu tập trung vào việc đo nhịp tim thông qua sự thay đổi ánh sáng khi chiếu qua mô và da Tuy nhiên, phương pháp này có nhiều hạn chế và độ chính xác không cao, không đủ hiệu quả để phát hiện và theo dõi các bệnh lý tim mạch.
Dựa trên các yếu tố và kiến thức đã trang bị, nhóm quyết định thực hiện đề tài "Thiết kế và thi công máy đo điện tâm đồ (ECG)", với mục tiêu phát triển thiết bị có khả năng ghi lại dạng sóng ECG, nhằm theo dõi tình trạng tim mạch một cách chi tiết và chính xác.
MỤC TIÊU
Thiết kế và thi công máy đo điện tâm đồ ECG yêu cầu kiến thức về mạch khuếch đại thuật toán, mạch lọc thông thấp và thông cao, cùng với lập trình cho vi điều khiển STM32F407VET6 Hệ thống còn bao gồm việc thiết kế webserver trên ESP8266 để lưu trữ và nhận dữ liệu từ vi điều khiển, đồng thời hiển thị thông tin trên giao diện web.
NỘI DUNG NGHIÊN CỨU
Trong quá trình thực hiện Đồ án tốt nghiệp về thiết kế và thi công máy đo điện tâm đồ ECG, nhóm chúng em đã tập trung vào việc giải quyết và hoàn thành những nội dung quan trọng liên quan đến dự án này.
- NỘI DUNG 1: Thiết kế schematic khối mạch đo lường tín hiệu ECG từ cơ thể sinh học bằng các mạch lọc, mạch khuếch đại cần thiết
- NỘI DUNG 2: Kiểm tra kết quả đo được bằng Oscilloscope, đánh giá và hiệu chỉnh lại các mạch lọc, khuếch đại nếu cần thiết
- NỘI DUNG 3: Thiết kế schematic khối mạch xử lý và hiển thị
- NỘI DUNG 4: Nghiên cứu lập trình, xuất tín hiệu từ Vi điều khiển ra khổi hiển thị
- NỘI DUNG 5: Thiết kế PCB cho toàn hệ thống bao gồm khối đo lường, khối xử lý, khối hiển thị và khối nguồn
- NỘI DUNG 6: Thi công phần cứng toàn hệ thống
- NỘI DUNG 7: Nguyên cứu lập trình để hiển thị kết quả sóng ECG ra khối hiện thị, chạy thử nghiệm và hiệu chỉnh hệ thống
- NỘI DUNG 8: Viết báo cáo thực hiện
- NỘI DUNG 9: Bảo vệ luận văn.
GIỚI HẠN
Các thông số giới hạn của đề tài bao gồm:
- Sử dụng LCD 7 inch 800x480 pixels, kích thước thiết bị 24cm x 11cm x 7cm
- Hệ thống chỉ đo 3 điện cực
- Hiển thị nhịp tim, nồng độ oxy trong máu, dạng sóng ECG
- Giao tiếp điện thoại với hệ thống qua Wifi, hiển thị kết quả đo trên web server bao gồm nhịp tim và nồng độ oxy trong máu
- Chất lượng đo nồng độ oxy trong máu phụ thuộc vào chất lượng của cảm biến MAX30100.
BỐ CỤC
Trong chương này, nhóm sẽ trình bày tổng quan về tình hình nghiên cứu và các thông tin liên quan đến đề tài trước đây Bên cạnh đó, chúng tôi cũng sẽ làm rõ mục tiêu, đối tượng và phạm vi nghiên cứu của đề tài này.
• Chương 2: Cơ sở lý thuyết
Bài viết giới thiệu về cấu trúc cơ bản của tim, tín hiệu nhịp tim và đồ thị điện tim Nó cũng đề cập đến phương pháp đo điện tim bằng công nghệ hấp thụ quang học, cùng với các chuẩn giao tiếp như I2C, UART, UDP và nhiều chuẩn giao tiếp khác liên quan đến đề tài.
• Chương 3: Tính toán và thiết kế
Trong chương này, nhóm tiến hành thiết kế sơ đồ khối cho đề tài, bao gồm việc giới thiệu các chức năng, lựa chọn linh kiện và thông số kỹ thuật của chúng Đồng thời, nhóm cũng thực hiện thiết kế sơ đồ nguyên lý và giải thích chi tiết sơ đồ nguyên lý cho từng khối.
• Chương 4: Thi công hệ thống
Tiến hành thi công mô hình
Chương 5 trình bày kết quả và đánh giá của nhóm, bao gồm số liệu và hình ảnh của hệ thống sau khi thi công Bài viết so sánh những ưu điểm và cải tiến của dự án hiện tại với các đề tài trước đó, cũng như với các máy đo thực tế đang có mặt trên thị trường.
• Chương 6: Kết luận và hướng phát triển Đưa ra kết luận và hướng phát triển của đề tài.
CƠ SỞ LÝ THUYẾT
LÝ THUYẾT VỀ NHỊP TIM VÀ PHƯƠNG PHÁP ĐO ĐIỆN TIM
2.1.1 Khái niệm về ECG Điện tâm đồ (tiếng Anh: Electrocardiogram hay thường gọi tắt là ECG) là đồ thị ghi những thay đổi của dòng điện trong tim Quả tim co bóp theo nhịp được điều khiển của một hệ thống dẫn truyền trong cơ tim Những dòng điện tuy rất nhỏ, khoảng một phần nghìn volt, nhưng có thể dò thấy được từ các cực điện đặt trên tay, chân và ngực bệnh nhân và chuyển đến máy ghi Máy ghi điện khuếch đại lên và ghi lại trên điện tâm đồ Điện tâm đồ được sử dụng trong y học để phát hiện các bệnh về tim như rối loạn nhịp tim, suy tim, nhồi máu cơ tim v.v
2.1.2 Sơ lược về hệ thống điện tim
Tim có bốn buồng chứa và bơm máu, gồm hai tâm nhĩ ở trên và hai tâm thất ở dưới Máu từ cơ thể trở về tâm nhĩ phải qua tĩnh mạch, trong khi máu từ phổi trở về tâm nhĩ trái Tâm nhĩ trái bơm máu vào tâm thất trái, và tâm nhĩ phải bơm máu vào tâm thất phải Sau đó, tâm thất phải bơm máu lên phổi qua động mạch, còn tâm thất trái bơm máu xuống cơ thể Sự hoạt động đều đặn và có trật tự của tim được điều khiển bởi một hệ thống tế bào dẫn điện đặc biệt trong cơ tim.
Trong tâm nhĩ bên phải có nút xoang nhĩ (sinoatrial node) gồm các tế bào có khả năng tự tạo xung điện (electric impulse)
Xung điện được truyền ra từ các cơ quanh tim, gây co bóp hai tâm nhĩ và tạo ra sóng P trên điện tâm đồ Sau đó, dòng điện tiếp tục di chuyển qua một chuỗi tế bào đặc biệt đến nút nhĩ thất, nằm gần vách liên thất, rồi theo chuỗi tế bào sợi Purkinje chạy dọc vách liên thất và lan tỏa đến các cơ xung quanh.
Hình 2 1 Dạng sóng mẫu ECG
(loạt sóng QRS) làm hai thất này co bóp Sau đó xung điện giảm đi, tâm thất giãn ra (tạo nên sóng T)
2.1.3 Quá trình điện học của tim.
Tim là một cơ rỗng, nơi mà sự co bóp tuần tự tạo ra áp lực để đẩy máu đến các bộ phận khác nhau trong cơ thể Mỗi nhịp tim được kích thích bởi xung điện từ các tế bào nút xoang tại tâm nhĩ, và các xung điện này sau đó được truyền đến các bộ phận khác của tim, khiến tim co bóp Việc ghi lại tín hiệu điện tim, hay còn gọi là tín hiệu ECG, là quá trình ghi nhận các tín hiệu điện này.
Năng lượng chuyển hóa tạo ra môi trường giàu Kali và ít Natri, dẫn đến sự không cân bằng điện thế tĩnh trên màng tế bào, với giá trị khoảng 90 mV giữa bên trong và bên ngoài Khi tế bào bị kích thích, thế ngang màng tạm thời tăng lên, làm thay đổi các tính chất của màng Trong pha đầu tiên, màng có độ thấm cao đối với Natri, cho phép dòng Natri lớn chảy vào bên trong nhờ gradient khuếch tán và điện.
Hình 2 2 Quá trình điện học của tim
Trong quá trình di chuyển, tế bào hoạt động như một nguồn lưỡng điện, với dòng Natri chuyển tiếp đóng vai trò quan trọng trong dòng điện nội tại Hoạt động này dẫn đến sự lan truyền tín hiệu đến các tế bào lân cận Khi màng phục hồi trở lại trạng thái nghỉ, điện thế tác động của tế bào kết thúc và có khả năng tái kích thích Tóm lại, khi có dòng Natri và Kali chảy qua màng tim, điện thế được sinh ra Điện tâm đồ được áp dụng trong nhiều trường hợp y học khác nhau.
Chẩn đoán nhồi máu cơ tim xảy ra khi cơ tim bị thiếu máu và dưỡng khí, dẫn đến tổn thương hoặc hoại tử Sự thay đổi trong khả năng dẫn truyền điện của cơ tim có thể được ghi nhận thông qua điện tâm đồ, điều này làm nổi bật giá trị quan trọng của phương pháp cận lâm sàng này trong việc chẩn đoán bệnh.
- Chẩn đoán thiếu máu cơ tim: cơ tim bị thiếu máu sẽ cho thấy hình ảnh sóng T trên điện tâm đồ dẹt, âm
Chẩn đoán và theo dõi rối loạn nhịp tim bất thường tại các vị trí phát nhịp như nút xoang, nút nhĩ nhất và cơ tim, cùng với việc dẫn truyền một chiều của tim, sẽ giúp phát hiện hình ảnh nhịp tim bất thường qua điện tâm đồ.
Chẩn đoán và theo dõi rối loạn dẫn truyền nhịp tim là rất quan trọng, vì hệ thống dẫn truyền khoa học có thể bị tổn thương hoặc mất mạch lạc Những bất thường này thường được phát hiện qua điện tâm đồ, như Block AV và Block nhánh tim.
Chẩn đoán các chứng tim lớn khi cơ tim dày hoặc dãn thường dựa vào sự thay đổi trong quá trình khử cực và tái cực của các thành phần trong cơ tim Mặc dù ECG có thể cung cấp một số gợi ý về tình trạng lớn buồng tim, nhưng giá trị của nó không ưu thế do sự thay đổi theo chủng tộc, nhiều yếu tố gây nhiễu và độ nhạy kém Hiện nay, y học đã phát triển nhiều công cụ chẩn đoán tim to hiệu quả hơn.
Chẩn đoán các thay đổi sinh hóa máu qua điện tâm đồ liên quan đến sự di chuyển của các ion như natri, kali và canxi Khi nồng độ của những chất này biến đổi lớn, điện tâm đồ có thể bị ảnh hưởng, dẫn đến những thay đổi đáng kể trong kết quả.
- Chẩn đoán một số ngộ độc thuốc Digoxin làm thay đổi đoạn ST của mọi cực Thuốc chống trầm cảm 3 vòng làm dài đoạn QT
2.1.4 Nguyên lý đọc tín hiệu điện tim
Xung điện từ từ các tế bào nút xoang tâm nhĩ truyền đến các bộ phận khác của tim tạo ra tín hiệu cần đo đạt, với hình dạng tín hiệu phản ánh nhiều ý nghĩa sinh học Mỗi xung điện từ đến các vị trí khác nhau trên tim sẽ cho ra một dạng sóng ECG khác nhau, thể hiện hoạt động điện của tim.
Sử dụng mạch khuếch đại đo lường giúp khuếch đại tín hiệu điện áp từ các điện cực trên cơ thể, đồng thời lọc bỏ các tín hiệu nhiễu không mong muốn, từ đó thu được tín hiệu ECG chính xác.
Hình 2 3 Vị trí các điện cực trên cơ thể
Tín hiệu ECG có thể được xác định thông qua hệ thống điện cực đặt trên bề mặt cơ thể Các điện cực được đặt ở những vị trí thuận lợi nhất để phản ánh chính xác tín hiệu ECG, bao gồm tổng cộng 10 điện cực trên cơ thể.
- 4 điện cực chi: tay trái (LA), tay phải (LR), chân trái (RL), chân phải (LL)
- 6 điện cực trước ngực: V1 , V2 , V3 , V4 , V5 , V6 Đường đi của xung điện từ qua các điểm cực tương ứng gọi là chuyển đạo Điện tâm đồ gồm 12 chuyển đạo riêng biệt gồm:
- 6 chuyển đạo chi: DI, DII, DIII, aVR, aVF
2.1.5 Ý nghĩa các sóng điện tâm đồ
- D1, D2, V3, V4, V5, V6, aVF: bao giờ cũng dương
- D3, aVL, V1, V2: đa số dương, có thể âm nhẹ, 2 pha
- aVR: bao giờ cũng âm
Sóng P, có thể là dương, âm hoặc 2 pha, thường có biên độ cao nhất ở D2 và được hình thành từ quá trình khử cực tâm nhĩ Biên độ sóng P bình thường dưới 2mm (0.2 mmV) và thời gian từ 0.08-1 giây Nếu biên độ sóng P tăng hoặc thời gian kéo dài, có thể cho thấy bệnh nhân đang gặp tình trạng lớn tâm nhĩ Cụ thể, tăng biên độ có thể chỉ ra lớn nhĩ phải, trong khi thời gian khử cực kéo dài có thể cho thấy lớn nhĩ trái.
GIỚI THIỆU PHẦN CỨNG
2.2.1 Khối cảm biến ngõ vào
Mạch khuếch đại đo lường là thiết bị quan trọng để khuếch đại điện áp rất nhỏ, chỉ khoảng vài milivolt, từ cơ thể thành dải điện áp phù hợp cho vi điều khiển Điện áp đo được chứa nhiều tín hiệu phức tạp, do đó cần phải có hệ thống khuếch đại hiệu quả để xử lý chính xác các tín hiệu này.
Tần số chung của các thành phần quan trọng trên ECG:
- Nhịp tim: 0,67 - 5 Hz (tức là 40 - 300 bpm)
- Điện thế tần số cao: 100 - 500 Hz
Các tần số phổ biến của tạo ra nhiễu trên trên ECG:
- Hô hấp: 0,12 - 0,5 Hz (ví dụ 8 - 30 bpm)
- Điện ngoài: 50 hoặc 60 Hz (tần số điện lưới AC)
- Điện khác: thường > 10 Hz (kích thích cơ, từ trường mạnh, máy tạo nhịp có theo dõi trở kháng)
Các mạch lọc thông thấp và thông cao thường được thiết lập trong khoảng từ 0.5Hz đến 150Hz Để loại bỏ tần số 50Hz của điện lưới AC, việc sử dụng mạch lọc notch 50Hz là cần thiết.
❖ Khối cảm biến SpO2 Để đo được SpO2 nhóm em sẽ sử dụng module MAX30100 có sẵn trên thị trường
- Cảm biến nhịp tim và oxy trong máu MAX30100
- Đo được nhịp tim và nồng độ Oxy trong máu
- Điện áp sử dụng: 1.8~5.5VDC
- Nhỏ gọn, siêu tiết kiệm năng lượng, thích hợp cho các thiết bị đo nhỏ gọn, Wearable Devices
- Giao tiếp: I2C, mức tín hiệu TTL
- Kích thước: 1.9 cm x 1.4 cm x 0.3 cm
Hình 2 8 Cảm biến nhịp tim và oxy trong máu MAX30100
2.2.2 Khối vi xử lý trung tâm
• Giới thiệu vi xử lý ARM
Cấu trúc ARM (Acorn RISC Machine) là vi xử lý 32bit kiểu RISC phổ biến trong thiết kế nhúng Với đặc điểm tiết kiệm năng lượng, CPU ARM trở thành lựa chọn ưu việt cho các sản phẩm điện tử di động, nơi tiêu tán công suất thấp là mục tiêu thiết kế hàng đầu.
• Một số ưu điểm nổi bật của vi điều khiển lõi ARM
Sức mạnh xử lý của lõi 32bit vượt trội hơn so với kiến trúc 8bit thông thường, cho phép nhân hai số 10 chữ số chỉ trong một chu kỳ xung nhịp Điều này mang lại hiệu suất nhanh hơn gấp 8 lần ở cùng tốc độ xung nhịp, đồng thời cải thiện hiệu quả năng lượng, với mức tiêu thụ năng lượng tăng tuyến tính theo tốc độ xung nhịp.
Tốc độ đáp ứng là yếu tố quan trọng với các lõi và thiết bị ngoại vi tốc độ cao, có thể đạt xung nhịp tối đa trên 50 MHz, thậm chí hàng trăm MHz, giúp phản ứng cực nhanh Điều này đặc biệt quan trọng trong các ứng dụng thời gian thực như triển khai máy chủ/máy khách, web và ứng dụng Internet of Things, nơi mà sự nhanh nhạy tạo ra sự khác biệt rõ rệt.
Mặc dù ARM có vẻ đắt tiền ban đầu, nhưng chúng thực sự được thiết kế cho các ứng dụng giá rẻ Chip ARM thường tích hợp hầu hết các thành phần cần thiết cho các ứng dụng thông thường, bao gồm bộ định thời, ADC và DAC Các giao diện như UART, I2C, SPI, SDIO, JTAG, USB, CAN, và I2S đều được tích hợp dưới dạng thiết bị ngoại vi, với thường hơn 6-8 giao diện khác nhau trên mỗi chip ARM.
- Bộ nhớ tăng : Đừng bao giờ mong đợi nhìn thấy dung lượng bộ nhớ flash là 16
Bộ nhớ flash trong các thiết bị ARM thường có dung lượng từ 512kB đến 1MB, cho phép mã hóa trình phát MP3 đầy đủ tính năng chỉ với 400kB Tập lệnh lai tạo giúp mật độ mã máy cao, kết hợp với bộ đệm và cơ chế đường ống, giúp tăng tốc độ truy cập flash, thực thi một lệnh cho mỗi chu kỳ xung clock Nếu lập trình đúng cách, bộ xử lý ARM gần như không có trạng thái chờ RAM được kết nối trực tiếp với bus hệ thống nội bộ (AHB) với tốc độ cao, thường cung cấp từ 16-23kB RAM trên chip ARM7 Khi sử dụng các thiết bị ARM có flash và RAM ngoài, dung lượng bộ nhớ có thể đạt tới 64 hoặc 128MB.
Cấu hình đầy đủ là một trong những tính năng nổi bật của chip ARM, với khả năng cung cấp thông tin chi tiết cho từng thiết bị ngoại vi, từ những đặc điểm nhỏ nhất đến những thông số kỹ thuật chính.
Trên phần cứng giao diện nối tiếp, bạn có thể tùy chỉnh thời gian cao và thấp cho tín hiệu xung Với UART, tốc độ baud chính xác và hỗ trợ phần cứng kiểm tra tính chẵn lẻ cùng nhiều tính năng khác, giúp ứng dụng của bạn trở nên hấp dẫn và chuyên nghiệp hơn.
- Bộ nhớ Flash lên tới 1 Mbyte
- 192 + 4 Kbyte SRAM bao gồm RAM dữ liệu 64-Kbyte CCM (bộ nhớ kết hợp lõi)
- Bộ điều khiển bộ nhớ tĩnh linh hoạt hỗ trợ các bộ nhớ Compact Flash,SRAM, PSRAM, NOR và NAND
- Hỗ trợ truyền dữ liệu song song với LCD
- Nguồn cung cấp từ 1.8V đến 3.6V
- Bộ tạo dao động tinh thể 4 đến 26 MHz
- Dao động 32 kHz cho RTC với hiệu chuẩn RC 32 kHz bên trong có hiệu chuẩn
- Chế độ ngủ, dừng và chờ
- Cung cấp cho RTC, các thanh ghi dự phòng 20 × 32 bit + SRAM sao lưu 4 KB tùy chọn
- Bộ chuyển đổi A/D 3 × 12 bit, 2.4 MSPS: tối đa 24 kênh và 7.2 MSPS
- Bộ chuyển đổi D/A 2 × 12 bit DMA đa năng
- DMA 16 luồng với hỗ trợ FIFO và hỗ trợ cụm
- Lên đến 17 bộ định thời: tối đa 12 bộ định thời 16 bit và 2 bộ định thời
- 32 bit lên đến 168 MHz, mỗi bộ có tối đa 4 IC / OC / PWM hoặc bộ đếm xung
- 140 cổng I/O với khả năng ngắt
- Giao diện lên tới 3 × I 2 C (SMBus / PMBus)
- 4 USART / UART (10,5 Mbit / s, giao diện ISO 7816, LIN, IrDA, điều khiển modem)
Bài viết đề cập đến việc sử dụng 3 SPI với tốc độ 42 Mbits/giây và 2 I2S song công hoàn chỉnh, nhằm đạt được độ chính xác cao cho lớp âm thanh Điều này được thực hiện thông qua PLL âm thanh bên trong hoặc đồng hồ bên ngoài.
- Giao diện 2 × CAN (Hoạt động 2.0B)
- Giao diện camera song song 8 đến 14 bit lên tới 54 Mbyte/s
- Trình tạo số ngẫu nhiên thực
- Đơn vị tính CRC ID duy nhất 96 bit
- RTC: độ chính xác cao
Hình 2 9 Hình ảnh chip STM32F407VET6 kiểu đóng gói LQF1000
Kit RF phát Wifi ESP8266 NodeMCU Lua có hai phiên bản sử dụng chip nạp CP2102, tự động nhận driver trên mọi hệ điều hành Windows và Linux Đây là phiên bản nâng cấp từ các phiên bản trước sử dụng IC nạp giá rẻ CH340.
Kit RF thu phát Wifi ESP8266 NodeMCU Lua là một giải pháp phát triển dựa trên chip Wifi SoC ESP8266, với thiết kế thân thiện và dễ sử dụng Nó cho phép lập trình và nạp code trực tiếp thông qua trình biên dịch của Arduino, giúp đơn giản hóa quá trình phát triển ứng dụng Kit này rất phù hợp cho các ứng dụng yêu cầu kết nối, thu thập dữ liệu và điều khiển qua sóng Wifi, đặc biệt là trong lĩnh vực Internet of Things (IoT).
- NodeMCU có cổng USB-TTL với IC CP2102 hoạt động ổn định với chuẩn công nghiệp
- Điện áp giao tiếp: 3.3 VDC,
- Loại ăngten: ăng ten PCB tích hợp trên mạch
- WiFi 2.4GHz, hỗ trợ chế độ bảo mật WPA / WPA2
- Hỗ trợ 3 chế độ hoạt động STA / AP / STA + AP
- Tích hợp giao thức TCP / IP để hỗ trợ nhiều kết nối TCP Client (5 MAX)
- D0 ~ D8, SD1 ~ SD3: sử dụng như GPIO, PWM, IIC, vv, dòng điều khiển 15mA
- Nguồn vào: 4.5V ~ 9V (10VMAX), nguồn từ cổng USB
- Dòng tải: truyền liên tục: ≈70mA (200mA MAX), chế độ chờ: Rg = 1 kOhm Mạch lọc thông giải cho tín hiệu sau khếch đại:
Để thu được tín hiệu ECG chính xác, các mạch lọc thông thấp và thông cao được sử dụng với dải tần giải thông từ 0.5 Hz đến 100 Hz.
Lọc thông thấp (Low pass):
(Ta chọn linh kiện giá trị sát với giá trị linh kiện có trên thị trường)
Ta tính được giá trị C2 = 100 nF
Lọc thông cao (High pass):
(Ta chọn linh kiện giá trị sát với giá trị linh kiện có trên thị trường)
Ta tính được giá trị C2 = 11 uF
Hệ thống sinh học của con người sẽ bị ảnh hưởng bởi điện lưới xoay chiều 50Hz từ các thiết bị xung quanh Do đó, cần thiết phải sử dụng mạch lọc Notch để ngăn chặn tần số này tại FnPhz.
Chọn R = 15k Ohm , ta tính được C= 100nF
(Ta chọn linh kiện giá trị sát với giá trị linh kiện có trên thị trường)
❖ Sơ đồ nguyên lý của mạch tiền xử lý ECG:
Hình 3 5 Sơ đồ nguyên lý mạch tiền xử lý ECG
Giải thích sơ đồ nguyên lý:
- Các tín hiểu ở 2 điện cực LA, RA được đưa vào các op-amp U1A, U1B để khuếch đại đệm
Sau khi khuếch đại đệm, hai tín hiệu được đưa vào ngõ vào (2) và (3) của op-amp INA114, một bộ khuếch đại đo lường Tại đây, tín hiệu sẽ được khuếch đại với hệ số 51 lần như đã tính toán trước đó.
Tín hiệu đầu ra của INA114 được xử lý qua các mạch lọc thông thấp và thông cao bậc 2, với hệ số khuếch đại 1 Tần số cắt của mạch lọc thông thấp là 0.5 Hz và mạch lọc thông cao là 100 Hz, nhằm đáp ứng yêu cầu tần số cho tín hiệu ECG.
- Để loại bỏ các nhiễu do mạng lưới điện 50hz gây ra, cho tín hiệu đi qua mạch lọc chặn Notch
- Tín hiệu cuối cùng của ngõ ra được khuếch đại đệm 1 lần nữa ở op-amp U12A để tránh méo tín hiệu
Trong quá trình thiết kế và tìm kiếm linh kiện cho mạch, nhóm em đã nghiên cứu module AD8232, một giải pháp tương đương với mạch ECG, bao gồm các khối cấu tạo cơ bản của mạch ECG Nhóm em quyết định sử dụng module AD8232 có sẵn trên thị trường để đảm bảo tính linh hoạt trong quá trình thực hiện toàn bộ hệ thống và dễ dàng thay thế khi gặp sự cố trong thời gian dài.
Hình 3 6 Sơ đồ nguyên lý và hình ảnh thực tế của module trên thị trường
➢ Mạch cảm biến đo SpO2 sử dụng MAX30100
Hình 3 7 Sơ đồ nguyên lý mạch cảm biến MAX30100
➢ Giải thích sơ đồ nguyên lý
Nguồn cung cấp cho cảm biến từ 1.8 V– 5.5 V Tuy nhiên nguồn 3.3 V được khuyến khích sử dụng để cảm biến hoạt động tốt nhất
- Tụ điện C1, C2, C4, C5, C6, C7 mục đích để lọc nguồn trước khi đi vào các khối chức năng
- Khối U1 bộ điều khiển cảm biến led hồng ngoại chính của MAX30100
- Khối U2 là khối IC ổn áp nguồn
- Điện trở R1, R2 điện trở 4.7 K kéo lên của chuẩn giao tiếp I2C
Kết quả SpO2 cuối cùng được tính theo công thức sau:
= log 𝐼 𝑎𝑐 × 𝑏ướ𝑐 𝑠ó𝑛𝑔 á𝑛𝑔 𝑠á𝑛𝑔 đỏ log 𝐼 𝑑𝑐 × 𝑏ướ𝑐 𝑠ó𝑛𝑔 á𝑛𝑔 ℎồ𝑛𝑔 𝑛𝑔𝑜ạ𝑖 b Tính toán và thiết kế khối mạch điều khiển trung tâm và khối Wifi
VDK STM32F407 là một vi điều khiển lõi ARM với hiệu suất xử lý cao, sở hữu bộ ADC có độ phân giải lớn và tốc độ lấy mẫu nhanh Nó còn được trang bị nhiều bộ nhớ RAM tích hợp, rất phù hợp cho việc điều khiển các màn hình LCD kích thước lớn Do đó, nhóm em quyết định chọn vi điều khiển này làm khối xử lý trung tâm cho dự án.
Vi điều khiển STM32F407VET6, giống như các vi điều khiển khác, cần có mạch reset và mạch tạo xung clock để hoạt động tối thiểu.
Hình 3 8 Sơ đồ nguyên lý của mạch VDK STM32F4VET6
Hình 3 9 Mạch Reset vi điều khiển mức thấp và mạch tạo dao động
Giải thích sơ đồ nguyên lý
Sơ đồ nguyên lý của khối xử lý trung tâm được giải thích theo bảng sau :
Bảng 3.1: Sơ đồ kết nối chân vi điều khiển
FSMC 1 bộ giao tiếp màn hình LCD
( 16 chân dữ liệu, 4 chân điều khiển,3 chân điều khiển cảm ứng và 2 chân nguồn )
Chuẩn truyền thông sử dụng
1 UART giao tiếp ESP8266 Node MCU (PA2,PA3)
1 I2C giao tiếp màn hình cảm ứng (PB6,PB7)
Oscillator ( tạo dao động) Thạch anh 8Mhz (PC14,PC15) Điện áp hoạt động 3.3V được cấp từ mạch giảm áp
Bộ tạo tạo thời thực Thạch Anh 32.768kHz ( PH0,PH1)
Mach nạp ST-Link v2 SW_DIO,SW_CLK ( PA13,PA14)
Nút Nhấn Loại thường mở, tạo tín hiệu reset cho vi điều khiển
Hình 3 10 Sơ đồ nguyên lý module ESP8266-nodeMCU
Hình 3 11 Sơ đồ nguyên lý kết nối giữa ESP8266 và MCU
Sau khi chuyển đổi tín hiệu ngõ ra từ khối đọc tín hiệu điện tim sang dạng số, kết quả sẽ được xử lý và tính toán để xác định số nhịp tim mỗi phút Tiếp theo, vi điều khiển (MCU) sẽ gửi dữ liệu này đi.
- Tụ C17 giúp ổn định nguồn cho
Chân TX và RX thuộc chuẩn giao tiếp UART được kết nối chéo với chân TX và RX ở PA2, PA3 của STM32F407 Dữ liệu truyền đi bao gồm giá trị sau chuyển đổi ADC và số nhịp tim trên phút đến ESP8266.
2 chân TX, RX của giao tiếp UART) Esp8266 sẽ sử dụng kết quả sau chuyển đổi
ADC và số nhịp tim trên phút để hiển thị thông tin số nhịp và sóng ECG lên webserver c Tính toán và thiết kế khối mạch nguồn
Bảng 3.2: Dòng điện tiêu thụ của các mạch sử dụng
Tên linh kiện Điện áp định mức Dòng điện định mức
Để đảm bảo cung cấp đủ điện năng cho toàn bộ hệ thống, chúng ta cần chọn nguồn điện có dòng ra tối đa từ 1A trở lên, bao gồm cả sự tiêu thụ không đáng kể của khối ngõ vào Để duy trì độ chính xác trong việc đo lường tín hiệu, việc tránh xa các mạch nguồn xung gây nhiễu là rất quan trọng Do đó, nhóm đã quyết định sử dụng mạch nguồn IC LM317 để đáp ứng tất cả các yêu cầu này.
Hình 3 12 Mạch nguồn IC LM317
Các tụ C1 và C2 đóng vai trò quan trọng trong việc ổn định nguồn ra và vào của hệ thống Điện trở R1 và R2 sẽ xác định giá trị Vout, trong đó nhóm có thể thay thế biến trở ở vị trí R2 để linh hoạt điều chỉnh hệ thống sau khi thi công Ngoài ra, việc tính toán và thiết kế khối hiển thị LCD cũng cần được chú trọng.
Hình 3 13 Sơ đồ kết nối LCD với vi điều khiển STM32F407
➢ Giải thích sơ đồ nguyên lý
• Chân 25, 33: Cấp nguồn 3.3V từ mạch giảm áp LM2596
• Tụ điện C1 10uF: lọc nhiễu 50Hz công nghiệp
• Chân 3,…,18: chân lấy dữ liệu truyền song song từ chân vi điều khiển
• Chân 19: tín hiệu cho phép LCD hoạt động thường là mức thấp
• Chân 20: Chọn ghi dữ liệu hay đọc dữ liệu trong thanh ghi
• Chân 21: Chân ghi dữ liệu
• Chân 22: Chân đọc dữ liệu
Để lập trình cho LCD sử dụng Driver RA8875, cần hiểu rõ cấu trúc thanh ghi bên trong của nó RA8875 bao gồm các thanh ghi cấu hình và chức năng tương tự như các Driver LCD khác Bài viết sẽ tập trung vào việc hiển thị một điểm ảnh bằng cách ghi vào một ô bộ nhớ của bộ nhớ đệm được ánh xạ cho LCD Để thực hiện điều này, chúng ta sẽ làm việc với các thanh ghi 0x46, 0x47, 0x48, 0x49 và sử dụng lệnh ghi dữ liệu 0x02.
Dưới đây là Function mô tả việc ghi 1 ô dữ liệu trên bộ nhớ đệm của RA8875 cũng tức là xuất ra 1 điểm ảnh trên LCD void gotoXY(uint16_t x,uint16_t y)
LCD_CmdWrite(0x46); // Chọn thanh ghi 8bit cao của vị trí hàng ngang
LCD_DataWrite(x); // Ghi giá trị 8bit cao của vị trí hàng ngang LCD_CmdWrite(0x47); // Chọn thanh ghi 8bit thấp của vị trí hàng ngang
LCD_DataWrite(x>>8); // Ghi giá trị 8bit thấp của vị trí hàng ngang
Để điều khiển màn hình LCD, đầu tiên sử dụng lệnh `LCD_CmdWrite(0x48)` để chọn thanh ghi 8bit cao của vị trí hàng dọc Tiếp theo, ghi giá trị 8bit cao vào vị trí hàng dọc bằng lệnh `LCD_DataWrite(y)` Cuối cùng, chọn thanh ghi 8bit thấp của vị trí hàng dọc bằng lệnh `LCD_CmdWrite(0x49)`.
LCD_DataWrite(y>>8); // Ghi giá trị 8bit thấp của vị trí hàng dọc } void drawPixel(uint16_t x,uint16_t y,uint16_t color)
{ gotoXY(x,y); // gọi lại function trên để xác định tạo độ x,y trên màn hình cũng chính là vị trí ô nhớ ta chuẩn bị ghi giá trị vào
LCD_CmdWrite(0x02); // lệnh ghi vào bộ nhớ đệm
LCD_DataWrite(color); // ghi giá trị vào bộ nhớ đệm, giá trị này là 16bit màu theo format 565
SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH
Hình 3 14 Sơ đồ nguyên lý board xử lý trung tâm, module wifi và LCD hiển thị
➢ Giải thích sơ đồ nguyên lý
Mạch đọc tín hiệu điện tim khuếch đại và lọc nhiễu từ các điện cực trên cơ thể, tạo ra tín hiệu ECG analog từ 0 - 3.3V Tín hiệu này được gửi đến 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 thời gian các đỉnh sóng, từ đó tính số nhịp tim mỗi phút và vẽ đồ thị sóng ECG Trong khi đó, tín hiệu từ cảm biến MAX30100 đã được chuyển đổi thành dạng số và lưu vào ROM tích hợp Kết quả bao gồm đồ thị sóng ECG, số nhịp tim trên phút và nồng độ SpO2 được truyền tới mạch giao tiếp Wifi qua chuẩn UART tại các chân PA2, PA3, để đưa kết quả lên Web server và hiển thị trên LCD qua bộ FSMC.
LƯU ĐỒ GIẢI THUẬT VÀ PHẦN MỀM LẬP TRÌNH
Hình 3 15 Lưu đồ của toàn bộ hệ thống
Lưu đồ chương trình bắt đầu bằng việc khởi tạo các giá trị cấu hình cho các ngoại vi như I2C, UART, FSMC và thiết lập giao diện ban đầu cho LCD Sau đó, chương trình đọc tín hiệu từ bộ ADC và I2C Trong quá trình này, việc kiểm tra kết nối giữa vi điều khiển và các bộ ngoại vi được thực hiện; nếu không có kết nối, kết quả hiển thị nhịp tim và nồng độ SpO2 sẽ là 0 Ngược lại, nếu có kết nối, chương trình sẽ xử lý và tính toán nhịp tim, SpO2, 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.
Hình 3 16 Lưu đồ của hàm tính giá trị nhịp tim từ tín hiệu ECG rời rạc
Lưu đồ chương trình con tính toán nhịp tim bắt đầu bằng việc lấy mẫu tín hiệu ADC tại một mốc thời gian đã xác định trên sườn lên của tín hiệu Sau đó, sử dụng timer để xác định thời gian t1 Tiếp theo, mẫu từ ADC được lấy tại mốc thời gian đã đặt trên sườn lên tiếp theo, và timer lại được sử dụng để xác định thời gian t2 Cuối cùng, chu kỳ của sóng được tính bằng công thức t = t2 – t1.
Để lập trình cho MCU STM32, nhóm đã sử dụng trình biên dịch Keil C v5, chuyên hỗ trợ cho các MCU ARM Phần mềm này giúp 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 trong lập trình nhúng nhờ vào sự kết nối 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 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
Sau khi hoàn thành lập trình, bước tiếp theo là sử dụng công cụ biên dịch để kiểm tra chương trình Cửa sổ kiểm tra kết quả build sẽ hiển thị số lượng lỗi và loại lỗi gặp phải trong quá trình lập trình, giúp người lập trình nắm bắt và khắc phục kịp thời.
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ử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
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Sau khi hoàn tất việc tính toán các thông số cần thiết cho mạch, chúng ta tiến hành thiết kế PCB, lắp ráp mạch và thực hiện chạy thử để điều chỉnh hệ thống.
THI CÔNG HỆ THỐNG
Trước khi bắt đầu vẽ mạch nguyên lý và mạch in PCB, việc lập danh sách tất cả linh kiện cần thiết là rất quan trọng Dưới đây là bảng tổng hợp các linh kiện sử dụng trong quá trình 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
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ỗ
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ỗ
10 Đầu Nối Nguồn DC 2.1mm 1 Chân cắm xuyên lỗ
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 2 Hình ảnh 3D của board trên phần mềm thiết kế Alltium
Hình 4 3 Hình ảnh thực tế board mạch mặt sau
Hình 4 4 Hình ảnh thực tế của board mạch mặt tước
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, sau đó kiểm tra nguồn vào và ra để đảm bảo chính xác Cần điều chỉnh đầu vào đạt 5VDC và đầu ra sau mạch giảm áp xuống còn 3.3VDC Cuối cùng, thực hiện hàn chip dán STM32F4 cùng với các linh kiện khác.
Sau khi hoàn tất việc hàn linh kiện lên bo mạch, cần kiểm tra mạch để xác định xem có bị đứt hoặc chập mạch hay không Nếu phát hiện sự cố nhẹ, có thể tiến hành sửa chữa, nhưng nếu lỗi nghiêm trọng, cần phải làm lại bo mạch mới.
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ình 4 6 Ảnh thực tế của đầu dò 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 hoàn chỉnh khi lắp tất cả linh kiện vào trong hộp.
LẬP TRÌNH CHO HỆ THỐNG
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
Hình 4 8 Giao diện Aduino IDE mới khởi động
- 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
Hình 4 10 Tiến hành tổng hợp và nạp chương trình
(2) Nạp chương trình 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ể:
To create a new project, navigate to File ➔ New Project, or click on ACCESS TO MCU SELECTOR if you are programming any STM32 MCU Alternatively, select ACCESS TO BOARD SELECTOR if you are working with an STM32 development board.
• 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)
▪ Bắt đầu Project: Nhấn vào Start Project
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
• Cấu hình nạp code: Các bạn chọn System Core ➔ SYS ➔ Debug: Serial Wire để vi điều khiển được cấu hình nạp code thông qua mạch nạp ST-Link V2
• 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
• Ngoà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 Cấu hình Đồng hồ, bạn có thể thiết lập nguồn dao động và tần số hoạt động cho vi điều khiển, bao gồm Bộ xử lý trung tâm (CPU) và các ngoại vi, thông qua cây đồng hồ Điều này cần được kết hợp với cấu hình RCC trong phần lõi hệ thống.
Hình 4 14 Cấu hình xung clock cho mạch
Tại Project Manager, bạn cần đặt tên cho Project và chọn nơi lưu trữ (lưu ý không sử dụng Tiếng Việt có dấu) Hãy chọn Toolchain/IDE là MDK-ARM V5 nếu bạn sử dụng Keil C IDE để lập trình và gỡ lỗi Sau khi hoàn tất cấu hình, nhấn vào GENERATE CODE để sinh mã Khi mã đã được sinh, bạn sẽ nhận được thông báo để mở Project, và lúc này Project sẽ được mở trong 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:
Hình 4 16 Cấu hình cho mạch nạp
In the Target Options window, select the Debug tab and check the Use ST-Link Debugger option to upload the program to the kit; choosing Use Simulator will enable simulation mode instead.
Để cấu hình ST-Link Debugger, hãy vào phần Settings và mở cửa sổ Cortex-M Target Driver Setup Tại thẻ Flash Download, nếu bạn chọn tick vào Reset and Run, chương trình sẽ tự động chạy ngay sau khi nạp Ngược lại, nếu không tick chọn, bạn cần nhấn nút reset trên board mạch sau khi nạp code để chương trình bắt đầu 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
VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG
Để đảm bảo hệ thống hoạt động chính xác, bước đầu tiên là cấm dây nguồn 5V từ pin vào hệ thống Lưu ý rằng không nên sử dụng nguồn xung để cấp điện cho hệ thống, vì nguồn này có thể gây nhiễu cho mạch ECG, dẫn đến kết quả đo không 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ó địa chỉ là IP của Esp8266 để theo dõi từ xa.