CƠ SỞ THỰC HIỆN ĐỀ TÀI
Phương pháp đo nước chiếm chỗ “water-displacement”
Máy đo phế dung kế, được phát triển từ thế kỷ 19, sử dụng phương pháp đo bằng cách bơm khí vào hoặc ra khỏi một chuông úp ngược qua hệ thống dẫn khí kín Phần đầu chuông được ngâm trong nước để thực hiện quá trình đo lường chính xác.
Khi thể tích khí trong buồng thay đổi, chuông sẽ di chuyển lên hoặc xuống, phản ánh thể tích khí được bơm vào hoặc rút ra Chuyển động này được kết nối với hệ thống ghi lại, có thể là bút vẽ hoặc hệ thống điện tử như chiết áp thông qua ròng rọc Hệ thống ghi lại có thể là bút gắn vào đối trọng, vẽ trực tiếp lên giấy quay theo trục thời gian, hoặc sử dụng nguyên lý tương tự với bút chiếu để ghi lại trên giấy quay.
Hình 2.5 Phế dung kế dịch chuyển nước sử dụng bút ghi
Cả hai hệ thống phế dung kế dịch chuyển nước đều ghi lại biểu đồ hơi thở của bệnh nhân để phục vụ cho việc phân tích bệnh Hệ thống phản hồi điện tử chiết áp hoạt động dựa trên một biến trở tuyến tính gắn vào đối trọng, tạo ra tín hiệu điện tương ứng với chuyển động của đối trọng.
Hình 2.6 Phế dung kế dịch chuyển nước sử dụng bút chiếu
Các hệ thống phế dung kế dựa trên cơ chế dịch chuyển nước có khả năng khắc phục nhiều hạn chế của phương pháp đo gián tiếp, nhưng vẫn tồn tại sai số do lực đẩy Archimedes và chuyển động chưa hiệu chuẩn của chuông Khi bơm khí vào hoặc ra, lực đẩy Archimedes làm cột nước trong chuông thay đổi, dẫn đến sự biến động áp suất khí bên trong, từ đó gây ra sai số trong kết quả đo Thêm vào đó, việc sử dụng bút ghi hoặc chiết áp phản ứng với chuyển động của chuông cũng góp phần tạo ra sai số do ma sát và quán tính Do đó, cần điều chỉnh và xử lý sai số để cải thiện độ chính xác trong việc đo thể tích khí Phương pháp đo thể tích nước vẫn là nền tảng quan trọng cho các giải pháp đề xuất trong tương lai.
Sai số của phương pháp đo thể tích nước chiếm chỗ
Trong phần này, các sai số của phép đo thể tích khí do lực đẩy Archimedes và áp suất khí thay đổi nêu trên sẽ được trình bày rõ
Hình 2.7 Cột nước dâng sau khi rút 450 ml khí ra khỏi chuông
Một thí nghiệm đơn giản được tiến hành với các dụng cụ như chuông, đối trọng, ròng rọc, hệ thống con lăn, xi-lanh và hệ thống dẫn khí kín Trong thí nghiệm này, chuông được đặt úp ngược và ngâm trong thùng nước có phẩm màu đỏ, giúp dễ dàng quan sát sự thay đổi của cột nước dâng lên.
Khi thể tích khí bên trong chuông thay đổi, chuông có thể di chuyển tự do cùng với đối trọng qua ròng rọc Học viên sử dụng xi-lanh để bơm khí vào hoặc ra thông qua hệ thống dẫn khí kín nhằm thay đổi thể tích khí trong chuông Kết quả sau khi bơm cho thấy thể tích khí 450 ml được bơm ra khỏi chuông, như minh họa trong Hình 2.7 Quá trình này được mô tả chi tiết trong Hình 2.8.
Hình 2.8 Hình ảnh minh họa cho kết quả sau khi rút khí ra khỏi chuông
Trong nghiên cứu về hiệu suất của chuông khí, h0 đại diện cho chiều cao cột khí ban đầu, trong khi h là chiều cao cột khí sau khi bơm ở áp suất phi khí quyển Sự dịch chuyển của chuông khi khí được bơm ra bởi xi-lanh được ký hiệu là Δh, và ΔH là chiều cao cột nước dâng lên Các nghiên cứu hiện nay sử dụng hệ thống bút ghi hoặc mạch điện tử chiết áp để đo thể tích cột nước dâng, với h c là chiều cao của thể tích khí bao gồm cả thể tích nước Tuy nhiên, giả định rằng áp suất trước và sau khi bơm không thay đổi có thể dẫn đến sai số trong việc tính toán thể tích thực bơm vào, gây ra hiệu chuẩn không chính xác Điều này đặc biệt nguy hiểm trong bối cảnh đại dịch COVID-19, khi nhu cầu sử dụng máy thở tăng cao, vì một sai sót nhỏ trong hiệu chuẩn có thể dẫn đến hậu quả nghiêm trọng cho bệnh nhân.
Thể tích khí ban đầu trong chuông và chiều cao h0 ảnh hưởng trực tiếp đến sai số trong phép đo Chiều cao cột khí sau khi bơm, h, có thể lớn hoặc nhỏ tùy thuộc vào thể tích khí ban đầu.
Sai số phần trăm của thể tích khí sau khi bơm trong các phương pháp hiện tại được xác định dựa trên 19 tích khí ban đầu.
Việc sử dụng công thức h PT 2.1 cho thấy rằng khi thể tích khí ban đầu lớn hơn, sai số phần trăm của thể tích khí sau khi bơm sẽ nhỏ hơn, và ngược lại Để hạn chế sai số này, có thể sử dụng thể tích khí ban đầu bằng không, tuy nhiên điều này sẽ khiến quá trình hiệu chuẩn không khả thi khi bơm khí ra ngoài.
Ngoài ra, sai số phần trăm của thể tích khí được bơm có thể được đưa ra bởi: w w
PT 2.2 Ở đây, S l là diện tích mặt cắt ngang của lòng chuông và S w là diện tích mặt cắt ngang của thành chuông Có nghĩa là với cùng một chuông được sử dụng, S w càng lớn và S l càng nhỏ thì sai số hệ thống càng lớn Vì vậy, muốn cải thiện sai số này, S w phải nhỏ và S l phải lớn Tuy nhiên, việc tạo ra các thiết bị như vậy là không khả thi Trong điều kiện hiện nay, cần phải thiết lập và sử dụng các thiết bị sẵn có và thuận tiện để hiệu chuẩn cho bất kỳ thiết bị nào và ở bất kỳ đâu
Lực đẩy Archimedes gây ra sai số đáng kể trong việc hiệu chuẩn thể tích khí, do đó, nghiên cứu này đề xuất xây dựng một hệ thống mới dựa trên các phương pháp đo thể tích nước hiện có Hệ thống này kết hợp với thuật toán bù sai số từ lực đẩy Archimedes, hứa hẹn mang lại độ chính xác rất cao Sai số của hệ thống mới được kỳ vọng sẽ tốt hơn nhiều so với các phương pháp hiện tại, vốn có sai số lên tới vài phần trăm.
ĐỀ XUẤT GIẢI PHÁP
Khái quát phương pháp đề xuất
Để giải quyết các vấn đề đã nêu ở Chương 2, học viên đề xuất một hệ thống đo phế dung dịch chuyển nước mới, sử dụng bộ mã hóa (Encoder) để đo chính xác khoảng cách dịch chuyển của chuông Khoảng cách này được truyền cho một thuật toán nâng cao độ chính xác, được nhúng vào bo mạch điện tử do giảng viên cung cấp Bo mạch sử dụng VĐK để xử lý hai sai số: một từ chuyển động của chuông và một từ cột nước, sau đó hiển thị thể tích khí đo được trên màn hình LCD Giá trị này được so sánh với thể tích thực của khí bơm vào chuông, ghi trên thang đo của xi-lanh sau mỗi lần bơm, nhằm đưa ra các đánh giá Các thử nghiệm cụ thể sẽ được trình bày ở chương sau.
Giải pháp đề xuất, thiết kế hệ thống, quá trình thực nghiệm, và kết quả nghiên cứu của luận văn sẽ được công bố trong [34].
Kiến trúc tổng quan của hệ thống
Sau quá trình nghiên cứu và thử nghiệm, một thiết bị giá thành thấp đã được đề xuất và thiết kế để hiệu chuẩn thể tích cho máy thở tự chế trong các đại dịch Hệ thống phần cứng đơn giản bao gồm các thành phần như chuông úp ngược, thùng chứa nước, đối trọng, ròng rọc, hệ thống dẫn khí kín và xi-lanh Bên cạnh đó, học viên còn sử dụng thêm một Encoder và bo mạch điện tử để đo chính xác khoảng cách dịch chuyển của ròng rọc Mạch điện tử này tích hợp cả vi điều khiển (VĐK) và màn hình hiển thị, tạo nên một hệ thống hoàn chỉnh và hiệu quả.
Hệ thống LCD với các thành phần giá thành thấp, dễ dàng tiếp cận và di động, cho phép xây dựng một cách đơn giản Điều này giúp hiệu chuẩn thể tích cho máy thở tự chế một cách phù hợp trong bối cảnh hiện nay.
Hình 3.1 Mô hình cấu trúc của hệ thống
Hình 3.2 Sơ đồ khối của hệ thống
Sơ đồ khối trong Hình 3.2 mô tả các chức năng chính của thiết bị đề xuất, nhằm mục tiêu cung cấp một giải pháp hiệu chuẩn thể tích cho máy thở tự chế với chi phí thấp và độ chính xác cao Các khối chức năng đã được thiết kế tích hợp để tối ưu hóa hiệu suất của thiết bị.
Khối nguồn là bộ phận cung cấp điện áp cho toàn bộ hệ thống, trong đó cả bo mạch điện tử và Encoder đều hoạt động với nguồn +5V DC Do đó, khối nguồn có nhiệm vụ chuyển đổi nguồn điện lưới 220V AC đầu vào thành điện áp +5V DC đầu ra.
Hệ thống chứa khí là một hệ thống kín, bao gồm chuông, bình chứa nước và đường dẫn khí, có nhiệm vụ dẫn toàn bộ thể tích khí từ xi-lanh hoặc thiết bị cần hiệu chuẩn vào chuông.
Encoder: thực hiện chuyển đổi tín hiệu cơ học từ chuyển động của chuông thành tín hiệu điện và đưa vào bo mạch điện tử để xử lý
Bo mạch điện tử tích hợp vi điều khiển (MCU) và màn hình LCD, thực hiện chuyển đổi tín hiệu từ encoder thành giá trị dịch chuyển của chuông Sau đó, mạch xử lý sai số và tính toán thể tích khí đã được đưa vào chuông, cuối cùng hiển thị giá trị thể tích lên màn hình LCD.
Bo mạch điện tử
Ba thành phần chính của bo mạch điện tử bao gồm vi điều khiển (VĐK), màn hình hiển thị LCD và mạch nạp mã nguồn cho VĐK Trong nghiên cứu này, học viên đã quyết định sử dụng VĐK AVR cho dự án của mình.
3.3.1.1 Tổng quan về VĐK AVR
VĐK AVR là một dòng chíp được phát triển bởi hãng Atmel vào năm 1996
Atmel là một trong những nhà sản xuất vi điều khiển (VĐK) đầu tiên trên thế giới sử dụng bộ nhớ Flash để lưu trữ chương trình, và trong những năm gần đây, họ đã trở thành tiên phong trong phát triển kỹ thuật bộ nhớ Flash VĐK AVR nổi bật với hiệu suất cao, tiêu thụ năng lượng thấp và cấu trúc RISC (Reduced Instruction Set Computer) tiên tiến, bao gồm 130 lệnh với chu kỳ thực hiện đơn xung lớn nhất Cốt lõi của VĐK AVR là sự kết hợp đa dạng các câu lệnh cùng với 32 thanh ghi đa mục đích, mang lại hiệu quả tối ưu cho các ứng dụng.
32 thanh ghi của VĐK AVR được kết nối trực tiếp với bộ logic số học (ALU), cho phép truy nhập 2 thanh ghi độc lập trong một chu kỳ xung nhịp Điều này giúp cấu trúc của VĐK AVR trở nên gọn nhẹ và hiệu quả hơn, đồng thời thời gian xử lý nhanh gấp hàng chục lần so với các VĐK CISC thông thường.
VĐK AVR hỗ trợ các bộ nhớ Flash, EEPROM (Electrically Erasable Programmable Read-Only Memory), và SRAM (Static Random Access Memory)
AVR tích hợp sẵn 23 chân với nhiều đường vào ra I/O, các thanh ghi đa mục đích và bộ ngoại vi phong phú, đáp ứng nhu cầu lập trình viên Hệ thống Timer/Counter linh hoạt cho phép định thì và đếm sự kiện, cùng với các bộ ngắt trong và ngoài AVR hỗ trợ ba chuẩn giao tiếp phổ biến cho vi điều khiển là UART, SPI và I2C Nó cũng có nhiều kênh ADC với độ phân giải 10-bit hoặc 8-bit để số hóa tín hiệu Thêm vào đó, AVR được trang bị bộ Watchdog Timer lập trình được với dao động nội chip để kiểm tra định kỳ và cảnh báo khi có vấn đề bất thường.
Chức năng I/O: trước khi thực hiện chức năng này, chúng ta cần phải cấu hình chân cho VĐK là nhận tín hiệu vào hay xuất tín hiệu ra ra
USART là một phương thức giao tiếp nối tiếp 2 dây qua cổng USB, được sử dụng phổ biến hiện nay để chuyển đổi giữa các giao tiếp nối tiếp.
I2C là một giao thức giao tiếp nối tiếp phổ biến, cho phép trao đổi dữ liệu giữa các IC Giao thức này hỗ trợ nhiều thiết bị trên cùng một đường truyền và có khả năng truy xuất đến từng ô nhớ của thiết bị hoặc IC.
SPI là giao thức giao tiếp giữa các chip được điều khiển bởi vi điều khiển (VĐK), cho phép truyền dữ liệu song công (full duplex) Điều này có nghĩa là quá trình truyền và nhận dữ liệu có thể diễn ra đồng thời, tối ưu hóa hiệu suất truyền thông.
Ngắt: VĐK AVR hỗ trợ ngắt gồm nhều chế độ ngắt khác nhau phục vụ cho các hoạt động khác nhau
Timer/Counter là thiết bị dùng để định thời và đếm sự kiện với khả năng 8bit hoặc 16bit (bao gồm 2 thanh ghi 8bit) Nó cho phép điều chỉnh độ rộng xung, phục vụ cho các ứng dụng điều khiển động cơ và tạo tần số.
ADC: Chuyển đổi tín hiệu tương tự sang tín hiệu số
VĐK AVR có nhiều dòng chip khác nhau:
Tiny AVR (AT tiny 13, AT tiny 22…): kích thước bộ nhớ nhỏ
Mega AVR – dòng vi điều khiển ATmega nổi bật với kích thước bộ nhớ lớn, từ vài KB đến hàng trăm KB, cùng với nhiều bộ ngoại vi đa dạng được tích hợp sẵn trên chip.
XMEGA – các dòng ATxmega: là dòng MCU mạnh mẽ nhất hiện nay
Dòng AVR32 là vi điều khiển 32 bit mạnh mẽ, được trang bị nhiều tính năng tiên tiến như tích hợp USB, bộ RTC (thời gian thực), công nghệ xử lý âm thanh AC97 và giao thức Ethernet.
3.3.2 Mạch nạp mã nguồn cho VĐK AVR
Hình 3.3 Mạch nạp USB ISP
Mạch nạp AVR USB ISP Programmer (Hình 3.3) là thiết bị phổ biến dùng để nạp chương trình tốc độ cao vào chip vi điều khiển AVR thông qua giao tiếp ISP, với các thông số kỹ thuật đáng chú ý.
Mạch nạp USB ISP chuyên sử dụng cho dòng Vi điều khiển AVR
Giao tiếp và có thể cấp nguồn qua cổng USB 5V DC
Cổng nạp chuẩn giao thức ISP 10 chân
Hỗ trợ set Fuse bit và Lock bit
Chế độ bảo vệ khi xảy ra hiện tượng quá dòng được tích hợp sẵn
Có thể lựa chọn mức logic mức cao 3.3V hay 5V nhờ thay đổi cầu kết nối (Jumper JP1) như trong Hình 3.4
Self program (firmware update) (JP2)
Có tích hợp đèn báo trạng thái nguồn và lập trình
Phần mềm này tương thích với các hệ điều hành như Windows 7, Windows 8 và các phiên bản mới hơn Ngoài ra, nó cũng có thể hoạt động trên nhiều nền tảng khác nhau, bao gồm Linux, Mac OS X và Windows.
Tốc độ nạp chương trình có thể lên tới 5 KB/giây
Hình 3.4 Sơ đồ bên trong của mạch nạp
3.3.2.2 Cách kết nối với VĐK
Mạch nạp này bao gồm một vi điều khiển ATmega8 cùng với các linh kiện đơn giản khác Khi sản phẩm được hoàn thiện, chúng ta chỉ cần chú ý đến các chân đã được cấu hình sẵn để thiết kế bo mạch điện tử, như được mô tả trong Hình 3.5.
Hình 3.5 Các chân cấu hình mạch nạp
Chân 1 – MOSI: Kết nối với chân 6 MOSI của VĐK
Chân 2 – VCC: Cấp nguồn 5V DC như VCC của VĐK
Chân 4 – GND: GND của VĐK
Chân 5 – RST: Kết nối với chân 9 RESET của VĐK
Chân 7 – SCK: Kết nối với chân 8 SCK của VĐK
Chân 9 – MISO: Kết nối với chân 7 MISO của VĐK
Chú ý: Phải có điện trở từ kéo lên dương nguồn ở các chân MOSI, MISO, và SCK
Encoder
Các vấn đề trong mục này được xây dựng dựa trên kiến thức sẵn có của học viên và tài liệu tham khảo từ website “Cộng đồng cơ điện Việt Nam”.
Hình 3.6 Encoder chuyển động thẳng
Hình 3.7 Encoder chuyển động tròn
Bộ mã hóa số vòng quay, hay còn gọi là encoder, là thiết bị cơ điện có khả năng chuyển đổi chuyển động tuyến tính hoặc chuyển động tròn thành tín hiệu số hoặc tín hiệu xung điện Khi vị trí trục quay thay đổi, encoder được sử dụng để kiểm tra góc lệch.
Encoder thu nhận tín hiệu đầu ra và được kiểm soát bởi bộ phận cảm biến để xác định vị trí và tốc độ chuyển động chính xác Điều này giúp ứng dụng thực tế trong việc đo khoảng dịch chuyển và góc quay, đặc biệt khi có sự thay đổi của trục đang làm việc.
Hình 3.8 Cấu tạo chung của Encoder
Cấu tạo chung của Encoder gồm ba phần như Hình 3.8:
Một nguồn sáng và một tế bào quang điện (cảm biến chuyển đổi ánh sáng thành tín hiệu điện) bố trí thẳng hàng
Một hệ thống lỗ (rãnh) được bố trí trên một đĩa tròn hoặc một thanh thẳng theo một quy tắc nào đó
Mạch khuếch đại tín hiệu từ tế bào quang điện
3.4.3 Nguyên tắc hoạt động của Encoder
Hình 3.9 Hệ thống thu phát hồng ngoại và đĩa quay
Hệ thống encoder bao gồm một hoặc nhiều bộ thu phát hồng ngoại cùng với một đĩa chia lỗ được lắp đặt giữa các bộ thu phát Đĩa này được gắn trên trục của động cơ hoặc trục chuyển động, và khi đĩa quay, nó sẽ làm thay đổi trạng thái của cảm biến quang, tạo ra chuỗi xung vuông tại đầu ra sau khi được khuếch đại Đây là thông số kỹ thuật quan trọng của encoder.
Số lỗ trên đĩa encoder ảnh hưởng trực tiếp đến số xung tạo ra trong mỗi vòng quay, với số lượng xung lớn hơn đồng nghĩa với khả năng điều khiển chính xác hơn Tuy nhiên, điều này cũng dẫn đến chi phí cao hơn cho các thiết bị Trong nghiên cứu này, học viên sẽ tập trung vào loại encoder phổ biến và đơn giản nhất, đó là loại sử dụng ánh sáng.
3.4.4 Nguyên lý hoạt động của Encoder, Led và lỗ
Nguyên lý cơ bản của encoder dựa trên một đĩa tròn xoay quanh trục, trên đó có các lỗ (rãnh) được chiếu sáng bằng đèn LED Khi đĩa quay, ánh sáng sẽ chỉ xuyên qua các lỗ, và một mắt thu sẽ ghi nhận tín hiệu ánh sáng này Nếu có một lỗ duy nhất trên đĩa, mỗi lần mắt thu nhận được tín hiệu từ đèn LED, điều này cho thấy đĩa đã quay một vòng Tuy nhiên, để xác định chính xác vị trí và chiều quay của đĩa, người ta thường kết hợp nhiều cặp thu phát hồng ngoại với nhiều vòng lỗ khác nhau Điều này giúp nâng cao độ chính xác trong việc xác định vị trí và hướng quay của đĩa.
Encoder thường được phân loại theo tín hiệu đầu ra của nó, gồm hai loại chính đó là Encoder tuyệt đối và Encoder tương đối
Encoder tuyệt đối là thiết bị cung cấp tín hiệu chính xác về vị trí mà không cần xử lý thêm Điều này được thực hiện nhờ vào việc sử dụng đĩa mã nhị phân hoặc mã Gray.
Encoder tuyệt đối bao gồm ba thành phần chính: bộ phát ánh sáng (LED), đĩa mã hóa chứa dải băng mang tín hiệu, và bộ thu ánh sáng nhạy Ưu điểm nổi bật của loại encoder này là khả năng duy trì giá trị tuyệt đối ngay cả khi mất nguồn, tuy nhiên, nhược điểm là chi phí cao do quy trình chế tạo phức tạp và việc đọc tín hiệu gặp nhiều khó khăn.
Encoder tương đối (incremental encoder) phát tín hiệu theo chu kỳ nhất định và cần thêm xử lý để xác định vị trí Độ chính xác của vị trí phụ thuộc vào độ phức tạp của thao tác xử lý Đĩa mã hóa được chia thành nhiều lỗ đều nhau, giúp tăng cường khả năng xác định vị trí chính xác cho Encoder này.
2 hoặc tối đa 3 vòng lỗ, và thường có thêm một lỗ định vị
Encoder tương đối có ưu điểm về giá thành rẻ và thiết kế đơn giản, đồng thời dễ dàng trong việc xử lý tín hiệu trả về Tuy nhiên, nhược điểm của nó là dễ bị sai lệch về xung trong quá trình hoạt động, dẫn đến việc tích lũy sai số theo thời gian.
Cách đọc tín hiệu từ Encoder
Tùy thuộc vào đại lượng cần phân tích như vị trí, vận tốc hay khoảng dịch chuyển, cùng với đặc điểm của Encoder (độ phân giải), có nhiều giải pháp khác nhau để đọc Encoder bằng vi điều khiển (VĐK) Dưới đây, học viên sẽ trình bày ba giải pháp hiệu quả để đọc Encoder sử dụng VĐK AVR.
Sử dụng ngắt ngoài là phương pháp đơn giản nhưng chính xác để đọc tín hiệu từ Encoder với VĐK AVR, và đây cũng là cách phổ biến nhất Ý tưởng thực hiện rất dễ dàng: kết nối kênh A của Encoder với một chân ngắt ngoài của VĐK và kênh B với một chân I/O bất kỳ Mỗi khi có một ngắt ngoài xảy ra, điều này đồng nghĩa với việc có một xung xuất hiện tại kênh.
Trình phục vụ ngắt tự động kiểm tra mức logic của kênh B (0 hoặc 1) Dựa vào mức logic này, chúng ta sẽ tăng hoặc giảm biến đếm xung, từ đó xác định chiều chuyển động của Encoder.
Bộ Timer/Counter trên AVR có chức năng Input Capture cho phép ghi lại giá trị thời gian của Timer mỗi khi có tín hiệu trên chân ICP (Input Capture Pin) Khi tín hiệu xuất hiện, giá trị thời gian sẽ được tự động lưu vào thanh ghi ICR (Input Capture Register) Bằng cách so sánh giá trị ICR trong hai lần liên tiếp, ta có thể xác định chu kỳ và từ đó tính toán tần số tín hiệu Việc kết nối một kênh tín hiệu của Encoder với chân ICP giúp đo lường tần số tín hiệu của kênh đó.
Để tính vận tốc của động cơ, chúng ta có thể sử dụng ngắt Input capture, cho phép đếm số xung khi có sự kiện xảy ra Qua đó, ta có thể xác định góc quay của Encoder dựa trên số xung trên một vòng quay Ngoài ra, chiều quay cũng có thể được xác định thông qua mức logic kênh B trong trình phục vụ ngắt Input capture Đây là một phương pháp hiệu quả nhưng có phần phức tạp.
3.5.3 Dùng chức năng Counter Đấu nối các kênh của encoder vào các chân đếm Counter (T0, T1…) của các bộ Timer/Counter trên VĐK, chúng ta có thể đếm được số xung của từng kênh Đây là một phương pháp sử dụng ít tài nguyên nhất (mất ít thời gian để xử lý tín hiệu Encoder) Nhưng nhược điểm lớn nhất của phương pháp này là không thể xác định được chiều quay, cũng như không ổn định khi vận tốc động cơ có sự thay đổi lớn
Chú ý: các ngõ ra trên hầu hết các Encoder có dạng cực góp hở (Open collector) Vì vậy muốn sử dụng cần mắc điện trở kéo lên VCC (5V DC).
Đề xuất thuật toán xử lý dữ liệu cho độ chính xác cao
Các kí hiệu được sử dụng trong mục này đồng nhất với các kí hiệu tại mục 2.3 như trong Hình 2.8:
Trong nghiên cứu này, các hằng số quan trọng bao gồm trọng lượng riêng của chất lỏng (γ) và áp suất khí quyển (p₀) Chi tiết về các hằng số này sẽ được trình bày rõ ràng trong bài viết.
g 9800 N/m 3 0.0098 N/cm 3 Ở đây, 1000 kg/m 3 (khối lượng riêng của nước) và g 9.81 m/s 2 (gia tốc trọng trường) p 0 101325 N/m 2 10.1325 N/cm 2
Biểu thức toán học giúp tính thể tích cho hình trụ chỉ ra rằng thể tích V c của một hình trụ được xác định bởi:
PT 3.1 Ở đây, H là chiều cao và d là đường kính trong của phần hình trụ được quan tâm
Lực đẩy Archimedes đóng vai trò quan trọng trong chuyển động của chuông, dẫn đến sự dâng lên của cột nước Sự thay đổi này tạo ra chênh lệch áp suất, ảnh hưởng đến hiệu suất hoạt động của chuông Để xác định chênh lệch áp suất khí trước và sau khi bơm trong chuông, có thể áp dụng công thức: Δp = w * l * p * h / S.
Khoảng dịch chuyển chuông h được xác định từ tín hiệu 2dfyc của bộ mã hóa, với đơn vị tính là "cm" Khi khí được bơm ra, giá trị h sẽ mang dấu âm, trong khi khi bơm vào sẽ có dấu dương Do đó, giá trị cột nước dâng H được biểu thị dựa trên những thay đổi này.
Thể tích khí tổng thể V t sau khi khí được bơm vào hoặc ra khỏi chuông ở áp suất phi khí quyển được xác định bằng công thức cụ thể.
V = V₀ + SΔ + ΔhH_PT 3.4, trong đó V₀ là thể tích khí ban đầu trong chuông ở trạng thái cân bằng và áp suất khí quyển, với khí không bị bơm vào hay ra Ngoài ra, với quá trình đẳng nhiệt, thể tích khí tổng thể sau khi khí được bơm vào hoặc ra ở áp suất khí quyển Vₐ có thể được tính toán theo công thức trên.
Cuối cùng, thể tích thực của khí được bơm vào hoặc ra khỏi chuông V được xác định sử dụng biểu thức:
Giá trị V có thể là dương hoặc âm Dấu dương thể hiện lượng khí khi bơm vào và dấu âm là khi bơm ra
Thuật toán đề xuất này xử lý dữ liệu nhằm nâng cao độ chính xác cho kết quả, với tham số đầu vào là khoảng dịch chuyển của chuông thu được từ Encoder và quá trình xử lý tín hiệu của VĐK Kết quả trả về là thể tích khí thực được bơm.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Phân tích và thiết kế hệ thống chứa khí và đối trọng
Hình 4.1 Chuông và đối trọng được sử dụng
Chuông được sử dụng là ống đong có dung tích 1000 ml, thường được bán trên thị trường như mô tả trong Hình 4.1 Ống đong này được chế tạo từ nhựa cứng, đảm bảo độ bền và độ chính xác trong việc đo lường.
Chuông có đường kính trong 6.64 cm và đường kính ngoài 6.97 cm, với diện tích tiết diện lòng chuông S l đạt 34,628 cm² và diện tích mặt cắt ngang của thành chuông S w là 3,5274 cm² Thành chuông được chia độ với vạch nhỏ nhất là 10 ml, và chiều cao của chuông là 42 cm Phần lề của đế chuông đã được gọt bỏ, đồng thời miếng gá được gắn cố định vào tâm để kết nối với đối trọng.
Khối lượng của đối trọng được xác định dựa trên thể tích khí ban đầu trong chuông, nhằm đạt được sự cân bằng áp suất giữa khí trong chuông và áp suất quyển Để đạt được sự cân bằng này, cột nước trong chuông cần phải trùng với mặt nước bên ngoài trong thùng chứa Một phương pháp đơn giản là sử dụng một hộp nhựa nhỏ hình trụ, trong đó khối lượng của đối trọng có thể được điều chỉnh bằng cách thay đổi lượng nước trong hộp nhựa (mực nước màu đỏ).
4.1.2 Thùng chứa và hệ thống dẫn khí kín
Hình 4.2 Bình nước Lavie sử dụng làm thùng chứa
Thùng chứa được làm từ bình nước Lavie 19l sau khi loại bỏ phần miệng, và được đổ gần đầy nước pha phẩm màu đỏ để dễ dàng quan sát cột nước dâng.
Hệ thống dẫn khí kín bao gồm ống dây điện bằng nhựa cứng và ống nhựa dẻo, như mô tả trong Hình 4.3 Các khớp nối được đổ đầy keo và tiện chặt để ngăn chặn hiện tượng thất thoát khí Vị trí 1 là khớp nối giữa xi-lanh và hệ thống đường dẫn khí.
Trong hệ thống ống thông nhau, vị trí 2 là đầu ống dẫn khí vào và ra khỏi chuông, trong khi vị trí 3 là đầu ống dẫn khí khác ra bên ngoài Mục đích của đầu ống ở vị trí 3 là tạo cân bằng áp suất với áp suất khí quyển mà không cần phụ thuộc vào khối lượng đối trọng Điều này cho phép lựa chọn đối trọng có khối lượng bất kỳ hợp lý Sau khi điều chỉnh để đầu ống số 3 hở cho đến khi áp suất trong chuông cân bằng với áp suất khí quyển, tức là mực nước trong chuông và trong thùng chứa bằng nhau, ta sẽ tiến hành đậy chặt đầu ống số 3 lại.
Hình 4.3 Hệ thống dẫn khí từ xi-lanh vào chuông
Hình 4.4 Xi-lanh dung tích 500 CC
Xi-lanh có dung tích 500 CC được sử dụng để tạo ra hệ thống kín cho việc hiệu chuẩn thiết bị Đầu xi-lanh được kết nối chặt chẽ với ống nhựa dẻo của đường dẫn khí, giúp mô phỏng thể tích khí cần thiết Để ngăn ngừa thất thoát khí khi bơm, học viên cần tráng một lớp dầu lên gioăng cao su, vừa giảm ma sát với thành xi-lanh, vừa lấp đầy khoảng không giữa gioăng và thành.
Encoder và hệ thống con lăn
Con lăn có đường kính 38 mm tương ứng với chu vi 11.938 cm khi Encoder quay một vòng Một con lăn di chuyển cùng chuông, trong khi con lăn còn lại gắn vào Encoder, vừa thực hiện chuyển động vừa cung cấp tín hiệu cho VĐK tính toán khoảng dịch chuyển của chuông Tín hiệu góc quay của Encoder kết hợp với chu vi con lăn cho phép tính toán khoảng dịch chuyển Trong nghiên cứu, học viên sử dụng Encoder 100 xung với hai kênh A và B để hỗ trợ quá trình này.
Hình 4.6 Encoder sử dụng để đo khoảng dịch chuyển
Hình 4.7 Hệ thống con lăn và Encoder sử dụng cho mục đích thử nghiệm
Trong nghiên cứu này, để thuận tiện cho việc thử nghiệm và giảm thiểu ma sát, học viên sử dụng hai Encoder, tuy nhiên chỉ một Encoder được kết nối vào bo mạch điện tử để truyền tín hiệu Encoder còn lại chỉ được sử dụng để lắp con lăn Hệ thống này được mô tả trong Hình 4.7, trong đó đầu dưới của chuông và đối trọng được nối với nhau bằng một đoạn dây mảnh dài.
Hệ thống kết nối này được vắt qua hai con lăn trên và có thể di chuyển hầu như không ma sát (ngoại trừ ma sát của trục Encoder).
Bo mạch điện tử
Bo mạch điện tử mà học viên sử dụng được cung cấp bởi giảng viên, với sơ đồ mạch thiết kế như Hình 4.8 Mạch điện này được tạo ra bằng phần mềm thiết kế điện tử “OrCAD”, bao gồm sơ đồ mạch in mặt trên (Top) được thể hiện trong Hình 4.9 và mặt dưới (Bottom) trong Hình 4.10.
Hình 4.8 Bo mạch điện tử được cung cấp
Hình 4.9 Sơ đồ mạch in lớp Top
Hình 4.10 Sơ đồ mạch in lớp Bot
Bo mạch điện tử hoạt động với nguồn đầu vào 24V DC hoặc 12V DC, sau đó ổn định điện áp xuống 5V DC và 3.3V DC cho toàn bộ mạch Nguồn cung cấp cho Encoder được lấy trực tiếp từ điện áp 5V.
DC tại khối nguồn của bo mạch rất quan trọng, vì vậy cần đảm bảo dòng điện cực đại trong quá trình hoạt động để tránh hiện tượng sụt áp Điều này có thể dẫn đến việc VĐK bị reset, hoạt động không ổn định hoặc thậm chí gây hỏng mạch.
Bo mạch điện tử sử dụng vi điều khiển ATmega128, với các chân I/O và bộ ngoại vi được cấu hình thành các chân cắm ra ngoài (Jumper), mang lại sự tiện lợi tối đa cho người dùng.
4.3.2 Sử dụng bo mạch cho kiểm tra thuật toán đề xuất
Để kiểm tra thuật toán đề xuất, bo mạch điện tử này bao gồm ba thành phần chính: vi điều khiển Atmel ATmega128 thuộc họ VĐK AVR, màn hình LCD và mạch nạp USB ISP Học viên đã chọn phương án sử dụng ngắt ngoài để đọc tín hiệu từ Encoder, với hai kênh A và B Có ba chế độ đo với độ chính xác khác nhau được mô tả trong Hình 4.11.
Hình 4.11 Các chế độ đếm xung cho Encoder
Chế độ đếm X1 cho phép chúng ta đếm xung sườn lên hoặc sườn xuống tại một chân tín hiệu, trong khi chân còn lại xác định chiều chuyển động Ngược lại, chế độ đếm X2 cũng đếm xung sườn lên và sườn xuống, giúp tăng gấp đôi số lượng xung được đếm.
Chế độ X1 cung cấp 40 số lượng xung trên mỗi vòng quay, mang lại độ chính xác cao Khi chuyển sang chế độ X4, chúng ta đếm đồng thời xung sườn lên và sườn xuống của cả hai kênh A và B, dẫn đến số lượng xung trên mỗi vòng quay tăng gấp bốn lần và độ chính xác cao hơn so với chế độ X2.
Mã nguồn cho VĐK được biên dịch bằng phần mềm AVR Studio 4 và nạp xuống VĐK bằng phần mềm PROGISP.
Môi trường soạn thảo và nạp mã nguồn
Học viên triển khai mã nguồn bằng ngôn ngữ lập trình C trên môi trường AVR Studio 4 (phiên bản 4.19 build 730, dung lượng 124 MB) kết hợp với WinAVR (phiên bản 20100110, dung lượng 27.5 MB) Phần mềm nạp mã máy được sử dụng là PROGISP (phiên bản 1.72, dung lượng khoảng 3-4 MB).
Ngôn ngữ lập trình C được xem là một ngôn ngữ bậc trung, kết hợp các tính năng của cả ngôn ngữ lập trình bậc thấp và bậc cao C gần gũi với ngôn ngữ ASM hơn so với nhiều ngôn ngữ bậc cao khác, và có khả năng chạy trên hầu hết các hệ điều hành Mặc dù C dễ học hơn so với các ngôn ngữ bậc thấp như ASM và Pascal, nhưng lại khó hơn so với các ngôn ngữ bậc cao như Java và Python Được coi là ngôn ngữ mẹ của các ngôn ngữ hiện đại, C là nền tảng cho nhiều trình biên dịch, JVMs và Kernals Nó cung cấp các khái niệm cơ bản như mảng, chức năng và xử lý tập tin, được áp dụng trong nhiều ngôn ngữ khác như C++, Java và C#.
4.4.1.1 Ưu điểm của ngôn ngữ C
Ngôn ngữ lập trình C nổi bật với hiệu suất cao nhờ khả năng tiết kiệm bộ nhớ, cho phép nó hoạt động mượt mà trên các hệ thống có dung lượng hạn chế Được phát triển vào thập niên 1960 với mục tiêu thay thế ngôn ngữ ASM, C đã trở thành lựa chọn lý tưởng cho những hệ thống yêu cầu quản lý bộ nhớ hiệu quả.
Cú pháp lập trình trong ngôn ngữ C rất gần gũi với tư duy logic, giúp cho việc viết mã trở nên đơn giản và nhanh chóng Điều quan trọng là khả năng tư duy logic của lập trình viên, ảnh hưởng lớn đến hiệu quả công việc.
C là ngôn ngữ lập trình linh hoạt, cho phép phát triển ứng dụng trên nhiều nền tảng từ VĐK 8bit đến hệ thống 64bit và siêu máy tính, chỉ cần có trình biên dịch phù hợp Ngôn ngữ này hỗ trợ nhiều kiểu dữ liệu và việc chuyển đổi giữa chúng rất dễ dàng Hơn nữa, C cung cấp thư viện chuẩn với nhiều hàm chức năng và công cụ toán học đa dạng.
4.4.1.2 Hạn chế của ngôn ngữ C
Không có một ngôn ngữ lập trình nào có thể tối ưu được 100% và ngôn ngữ
C cũng không ngoại lệ, có một số nhược điểm sau đây:
Kích thước của mảng phải cố định
Các byte vùng nhớ cấp phát cho mảng được sắp xếp liên tục
Việc chèn và xóa phần tử của mảng mất nhiều thời gian
AVR Studio là bộ phần mềm do ATmel phát triển, hỗ trợ soạn thảo và biên dịch chương trình cho các VĐK AVR bằng ngôn ngữ C và ASM Phiên bản AVR Studio 4 cung cấp môi trường phát triển tích hợp (IDE) và kết hợp với hai phần mềm hỗ trợ là AVR Toolchain và WinAVR, giúp lập trình viên dễ dàng viết mã ASM và C Để lập trình bằng ASM, cần cài đặt AVR Studio và AVR Toolchain, trong khi để lập trình bằng C, WinAVR là phần mềm cần thiết.
Hình 4.12 Giao diện chọn ngôn ngữ lập trình mong muốn
4.4.3 Phần mềm nạp mã nguồn
PROGISP là phần mềm quan trọng dùng để nạp mã nguồn và thiết lập Fuse bit cũng như Lock bit cho vi điều khiển (VĐK) Fuse bit quyết định chế độ hoạt động và giao diện nạp của VĐK, do đó việc thiết lập sai có thể dẫn đến tình trạng không thể khôi phục lại như ban đầu Để tránh rủi ro, nên hạn chế thay đổi các bit này Nếu cần thay đổi, cần thực hiện theo thứ tự: đọc giá trị Fuse bit hiện tại, chỉnh sửa các bit cần thiết, và cuối cùng là nạp giá trị mới Giao diện người dùng để thiết lập Fuse bit và Lock bit cho VĐK được thể hiện trong Hình 4.13.
Hình 4.13 Giao diện Fuse bit và Lock bit
Sau khi soạn thảo bằng trình biên dịch AVR Studio 4, mã nguồn được biên dịch ra file.hex và sử dụng phần mềm PROGISP để nạp cho VĐK.
Phần mềm điều khiển dựa trên các thuật toán đề xuất và công cụ được cung cấp
Phần mềm được đề xuất trong Hình 4.15 bao gồm ba chức năng chính: chuyển đổi tín hiệu từ Encoder thành khoảng dịch chuyển của chuông (Δh), xử lý sai số do lực đẩy Archimedes và áp suất thay đổi bằng thuật toán mới, và hiển thị thể tích khí trên màn hình LCD Tất cả các chức năng này được tích hợp trong mã nguồn và nạp vào vi điều khiển của bo mạch điện tử Sau khi định nghĩa các hằng số và thể tích khí bơm vào hoặc ra, giá trị Δh sẽ được sử dụng làm tham số cho thuật toán xử lý sai số Thuật toán này cho phép xác định thể tích khí bơm bởi xi-lanh sau khi loại bỏ hai nguyên nhân gây ra sai số Kết quả cuối cùng sẽ được hiển thị trên màn hình LCD, và chi tiết mã nguồn sẽ được trình bày trong phần Phụ lục.
Hình 4.14 Lưu đồ thuật toán của phần mềm
KIỂM THỬ HỆ THỐNG
Cài đặt hệ thống
Hệ thống được cài đặt bằng các vật liệu đã phân tích trong Chương 4 và được minh họa trong Hình 5.1 Tất cả các thử nghiệm được thực hiện ở nhiệt độ phòng 25°C và áp suất khí quyển.
Hình 5.1 Hệ thống thử nghiệm
Tiến hành thử nghiệm
Học viên tiến hành ba thử nghiệm để (1) kiểm tra độ chính xác tĩnh, (2) kiểm tra đáp ứng động, và (3) kiểm tra đáp ứng đột ngột
1) Kiểm tra độ chính xác tĩnh
Trong thử nghiệm này, học viên đánh giá sai số hệ thống của phương pháp đề xuất thông qua hai thao tác Đầu tiên, thể tích khí ban đầu được thiết lập là 0 ml do chuông được đặt úp ngược, sau đó khí được bơm vào chuông với tốc độ chậm.
10 ml/s Sau đó, học viên đặt thể tích ban đầu là 1000 ml và rút khí ra khỏi chuông với tốc độ tương đồng
2) Kiểm tra đáp ứng động
Trong thử nghiệm này, học viên đã kiểm tra phản ứng của hệ thống khi bơm khí với các tốc độ khác nhau Đầu tiên, thể tích khí ban đầu được đặt ở 0 ml và khí được bơm vào chuông với tốc độ khoảng 50 ml/s Sau đó, tốc độ bơm được tăng lên 100 ml/s và 200 ml/s Cuối cùng, các thao tác tương tự được thực hiện với trường hợp rút khí ra, bắt đầu với thể tích khí là 1000 ml.
3) Kiểm tra đáp ứng đột ngột
Trong thử nghiệm này, học viên đã kiểm tra phản ứng của hệ thống khi có sự thay đổi đột ngột về lượng khí trong chuông Ban đầu, thể tích khí được đặt ở mức 0 ml, sau đó 500 ml khí được bơm vào chuông với tốc độ nhanh chóng, gần như ngay lập tức Thao tác này cũng được lặp lại để rút khí ra khỏi chuông, tương tự như hai thử nghiệm trước đó.
Kết quả thử nghiệm
Trong thử nghiệm đầu tiên, sau mỗi lần bơm 50 ml khí vào hoặc ra khỏi chuông, kết quả hiển thị trên màn hình LCD được ghi lại và so sánh với giá trị thực tế ghi trên thành xi-lanh Kết quả cho thấy có sự khác biệt không đáng kể, với chênh lệch giữa kết quả hiển thị và giá trị thực không vượt quá 0.7%.
Bước thứ hai, sau mỗi thể tích khí được bơm là 100 ml với tốc độ 50 ml/s;
Khi bơm 200 ml với tốc độ 100 ml/s và 500 ml với tốc độ 200 ml/s, kết quả hiển thị trên màn hình LCD cùng với giá trị thực đã bơm được ghi lại Chênh lệch giữa kết quả hiển thị và giá trị thực trên xi-lanh tăng dần theo tốc độ bơm, nhưng không vượt quá 1% Ở bước cuối cùng, kết quả hiển thị trên màn hình LCD cho thấy trường hợp bơm vào là 493 ml và rút ra là 494 ml.
Bàn luận
Nhận thấy cả 3 quá trình thử nghiệm đều tồn tại sai số Sai số này một phần là do sai số hệ thống gây ra:
Các giá trị đường kính trong và đường kính ngoài của ống đong thường được đo thủ công, dẫn đến độ chính xác chưa cao Điều này có thể gây ra sai số khi tính toán diện tích mặt cắt ngang của ống.
Ống đong và xi-lanh có sự khác biệt về công nghệ chế tạo, dẫn đến việc các vạch chia độ và diện tích cắt ngang của chúng không đồng đều.
Có thể hoặc không thất thoát khí trên hệ thống dẫn khí tại các khớp nối nếu chưa kín hoàn toàn
5.4.1.2 Sai số trong quá trình thử nghiệm
Một phần khác là do sai số trong quá trình thử nghiệm:
Chuyển động của xi-lanh khi bơm với tốc độ không đồng đều sinh ra một ngẫu lực làm thất thoát khí tại xi-lanh
Do ma sát tại trục quay của Encoder
Sai số do giới hạn của độ phân giải của encoder
Khi bơm với tốc độ cao, hiện tượng dây trượt có thể xảy ra, dẫn đến việc dây trượt một phần nhỏ trên con lăn trong quá trình di chuyển.
5.4.1.3 Sai số khác nhau giữa các lần thử nghiệm
Kết quả thử nghiệm cho thấy mối quan hệ nghịch giữa tốc độ bơm và sai số, với tốc độ bơm càng nhanh thì sai số càng tăng Cụ thể, trong thử nghiệm số 3, khi bơm 500 ml với tốc độ rất nhanh, sai số đạt mức cao nhất, với sai số 1.4% khi bơm vào và 1.2% khi bơm ra.
Sự khác biệt trong quá trình bơm khí chủ yếu do ma sát tăng cao tại xi-lanh và trục quay khi bơm với tốc độ nhanh Khi áp suất thay đổi đột ngột, lượng khí thất thoát nhiều hơn so với bơm chậm Đặc biệt, sai số khi bơm vào thường lớn hơn sai số khi bơm ra, vì áp suất khi bơm vào cao hơn áp suất khí quyển, trong khi áp suất khi bơm ra thấp hơn Tăng áp suất làm gia tăng nguy cơ thất thoát khí khỏi hệ thống.
5.4.2 Khả năng ứng dụng của đề tài
Trong thử nghiệm, hệ thống cho thấy sai số lớn nhất là 1.4% khi vận tốc đường khí rất cao, nhưng trường hợp này ít có ý nghĩa thực tiễn cho việc hiệu chuẩn thể tích máy thở Đối với các vận tốc đường khí nhỏ hơn, sai số dần cải thiện gần 0%, cho thấy hệ thống hoạt động với độ chính xác cao Thuật toán đề xuất hoàn toàn phù hợp để xử lý hai sai số chính trong nguyên lý đo nước chiếm chỗ hiện tại, làm cho nó lý tưởng cho việc hiệu chuẩn thể tích máy thở tự chế trong các đại dịch.