LƯU ĐỒ VÀ THUẬT TOÁN CHƯƠNG TRÌNH

Một phần của tài liệu Thiết kế và thi công bơm tiêm điện đa chức năng (Trang 50)

4.3.1 Tóm tắt các chức năng của hệ thống bơm tiêm điện

Để phục vụ cho việc viết lưu đồ và lập trình, cần phải tóm tắt các chức năng của hệ thống bơm tiêm điện. Hệ thống bơm tiêm điện của đề tài 3 chức năng chính:

- Chức năng bơm tiêm thông thường: Đối với chức năng bơm tiêm thông thường, người sử dụng nhập 2 giá trị thể tích muốn truyền và thời gian muốn truyền, bơm tiêm sẽ hoạt động với 2 giá trị được nhập đó. Ví dụ, người dùng muốn bơm tiêm truyền 5ml trong vòng 30s, thì nhập giá trị thời gian là 30s, giá trị thể tích là 5ml, sau khi nhấn OK thì bơm tiêm sẽ bắt đầu truyền, đủ thời gian và thể tích mong muôn thì bơm tiêm sẽ dừng. Trong chức năng này, có 3 loại bơm tiêm được sử dụng là bơm tiêm 5ml, 10ml và 50ml để đa dạng thể tích truyền. - Chức năng kiểm soát đau: Chức năng này dùng để kiểm soát đau cho bệnh nhân sau mỗi lần phẫu thuật. Đa số sau mỗi lần phẫu thuật, khi mà thuốc giảm đau hết tác dụng thì đây là khoảng thời gian bệnh nhân bắt đầu cảm giác đau vì vết mổ. Để kiểm soát điều này, bác sĩ sẽ cài đặt liều lượng thuốc đau để bệnh nhân tự truyền, hay nói cách khác, khi nào bệnh nhân cảm giác đau thì nhấn nút truyền, thuốc giảm đau sẽ tự truyền vào cơ thể. Trong chức năng này, có 2 giá trị được nhập vào tương tự như chức năng bơm tiêm liên tục, đó là thời gian

CHƯƠNG 4. THI CÔNG HỆ THỐNG

truyền và thể tích truyền. Tuy nhiên, tâm lý của bệnh nhân là mỗi lần thấy đau sẽ nhấn nút để tiêm, điều này sẽ gây nguy hiểm khi bệnh nhân truyền một lượng lớn thuốc giảm đau vào cơ thể trong một thời gian ngắn. Vì vậy, để bảo vệ bệnh nhân, giá trị thời gian giữa 2 lần truyền liên tiếp được cài đặt, nói cách khác, khi bác sĩ cài đặt khoảng thời gian này thì cho dù bệnh nhân có nhấn nút truyền bơm tiêm cũng sẽ không hoạt động (bị khoá chức năng truyền). Sau khi đủ thời gian thì chức năng truyền mới hoạt động trở lại. Ví dụ, người dùng muốn truyền một lượng 5ml thuốc giảm đau trong thời gian 100s, và giá trị cài đặt giữa 2 lần truyền là 10 phút, như vậy kể từ khi nhấn nút truyền thì trong khoảng 10 phút đó, cho dù đã truyền xong 5ml trong thời gian 100s thì người dùng muốn truyền lần nữa cũng không được, phải đợi đủ 10 phút thì mới truyền được lần tiếp theo. Giá trị 10 phút được tính từ thời điểm nhấn nút truyền của lần truyền trước. Đối với chức năng này, nhóm sử dụng 1 loại kim tiêm 10ml.

- Chức năng sử dụng ngân hàng thuốc: Đối với một số thuốc nhất định, quy định về liều lượng và thời gian tiêm thuốc đối với thể trạng mỗi người là điều bắt buộc và khác nhau, trong trường hợp sử dụng sai liều lượng sẽ nguy hiểm đến tính mạng của bệnh nhân. Chức năng sử dụng thư viện thuốc giúp bác sĩ kiểm soát được liều lượng thuốc đối với mỗi bệnh. Người sử dụng chỉ cần nhập cân nặng của bệnh nhân, loại thuốc sử dụng thì bơm tiêm sẽ tự tính ra liều lượng đối với mỗi trường hợp bệnh nhân. Đối với chức năng này, nhóm chỉ lập trình sử dụng một loại thuốc là: Propofol 1% (10mg/ml). Sở dĩ sử dụng loại thuốc này là vì thuộc loại thuốc phổ biến trong phòng phẩu thuật, có chức năng an thần gây ngủ, tạo quá trình khởi mê và duy trì mê. Propofol 1% (10mg/ml) sử dụng trong quá trình gây mê được chia thành 2 giai đoạn, giai đoạn khởi mê và giai đoạn duy trì mê, liều lượng của 2 giai đoạn này là khác nhau, tuy nhiên nhóm sẽ quan tâm đến giai đoạn duy trì mê. Liều lượng của quá trình duy trì mê sẽ là: 8mg/kg thể trọng/giờ (hay 0,8ml/kg thể trọng/giờ) [22]. Chức năng này nhóm sẽ sử dụng loại kim tiêm 30ml vì thể tích truyền trong quá trình duy trì mê là tương đối lớn.

Phần trên chỉ nói về các chức năng của hệ thống bơm tiêm điện, để thuận tiện cho việc lập trình thì cần phải tóm tắt quy trình hoạt động của hệ thống. Sau khi được cấp

CHƯƠNG 4. THI CÔNG HỆ THỐNG

nguồn hoạt động, cần 2 nút nhấn để điều chỉnh tới hoặc lùi vị trí giá đỡ của bơm tiêm điện. Sỡ dĩ phải cần tới 2 nút nhấn này là vì giúp cố định kim tiêm lên giá đỡ.

Hình 4.16 Vị trí 2 nút nhấn, nút nhấn số 1: dịch chuyển bơm tiêm sang trái, nút nhấn số 2: dịch chuyển bơm tiêm sang phải.

Vị trí số 1 và số 2 là 2 nút nhấn tới lùi để điều chỉnh cố định kim tiêm. Sau khi cố định xong kim tiêm thì thực hiện việc lựa chọn loại kim tiêm, là sử dụng loại kim tiêm 5ml, 10ml hay 50ml, sau khi chọn xong loại kim tiêm thì lựa chọn loại chức năng của hệ thống bơm tiêm điện. Đối với từng loại chức năng sẽ nhập các giá trị theo yêu cầu. Sau khi nhập xong, nhấn nút OK thì quá trình truyền sẽ bắt đầu hoạt động.

4.3.2 Lưu đồ giải thuật chính của chương trình

Sau khi trình bày các chức năng của bơm tiêm điện, tóm tắt quá trình hoạt động và thuật toán của đề tài thì sẽ tiến hành vẽ lưu đồ giải thuật chính cho đề tài. Phần lưu đồ chính chủ yếu sẽ liên quan đến việc chọn loại chức năng và các công thức tính toán giá trị tổng số bước và thời gian quay một bước.

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Hình 4.17 Lưu đồ chính cho đề tài.

Sau khi điều chỉnh xong vị trí và lựa chọn loại kim tiêm, thì tới việc lựa chọn chức năng cho đề tài. Hệ thống có 3 chức năng và sẽ kiểm tra người sử dụng chọn chức năng nào:

- Nếu chọn chức năng 1 là tiêm bình thường thì chương trình bắt đầu chạy các chương trình con nhập thể tích, nhập thời gian tiêm, sau đó tính toán giá trị nhập vào để chuyển thành 2 giá trị tổng số bước và thời gian quay một bước; sau khi tính toán xong thì điều khiển motor bước hoạt động để tiêm thuốc theo giá trị được nhập vào.

- Nếu chọn chức năng số 2 là kiểm soát đau thì chương trình bắt đầu chạy các chương trình con nhập thể tích, nhập thời gian tiêm, nhập thời gian giữa 2 lần tiêm và tính toán các giá trị. Sau đó, chương trình sẽ kiểm tra phím TIÊM có được nhấn hay không, khi có nhấn thì motor bước được điều khiển để tiêm thuốc. Khi tiêm xong chương trình con trì hoãn thời gian giữa 2 lần tiêm được thực hiện và cuối cùng quay lại thao tác kiểm tra phím TIÊM.

CHƯƠNG 4. THI CÔNG HỆ THỐNG

- Nếu chọn chức năng số 3 thì chương trình bắt đầu chạy các chương trình con là nhập cân nặng, tính toán các giá trị và cuối cùng là điều khiển motor bước hoạt động để tiêm thuốc.

Sau khi thực hiện xong một trong ba chức năng thì ta nhấn nút quay về màn hình chính và thực hiện các công việc tiếp theo.

Lưu đồ chương trình con nhập thể tích

Hình 4.18 Lưu đồ chương trình con nhập thể tích. ● Giải thích lưu đồ:

Chương trình thực hiện kiểm tra ba phím nhấn là phím UP, phím DW và phím RI. Nếu phím UP được nhấn, chương trình sẽ kiểm tra biến cột đang ở vị trí nào, nếu ở vị trí của biến chục thì tăng biến chục lên một đơn vị, ở vị trí đơn vị thì tăng biến đơn vị lên một đơn vị, ở vị trí thập phân thì tăng biến thập phân lên một đơn vị, sau đó gán phím biến P_UP = 0 để kiểm tra việc có nhấn phím nữa hay không. Tương tự với phím

CHƯƠNG 4. THI CÔNG HỆ THỐNG

DW, biến cột đang ở vị trí nào thì giảm giá trị của biến tại đó xuống 1 đơn vị. Khi nhấn phím RI, thì giá trị biến cột được thay đổi, nghĩa là vị trí của biến sẽ thay đổi giá trị khi nhấn UP hoặc DW sẽ được thay đổi khi nhấn phím RI. Một cách dễ hiểu, nếu ta đang thay đổi giá trị ở hàng chục, khi nhấn phím RI một lần, thì lúc đó giá trị mà ta đang thay đổi là hàng đơn vị, tương tự khi nhấn lần tiếp theo là hàng thập phân. Sau đó các giá trị chục, đơn vị và thập phân được hiển thị trên LCD với dạng số lớn, và thể tích được tính theo công thức T_TICH=CHUC*100 + DV*10 + TP; (Gấp 10 lần so với thực tế, dễ dàng cho việc tính toán các thông số).

Chức năng chương trình cũng tương tự với các chương trình con nhập thời gian (biến T_GIAN), nhập cân nặng (biến C_NANG). Giá trị cuối cùng được tính đều là số nguyên.

Lưu đồ chương trình con điều khiển motor bước

Hình 4.19 Lưu đồ chương trình con điều khiển motor bước. ● Giải thích lưu đồ:

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Ở chương trình này, ta ràng buộc vòng lặp thông qua biến CHAY, khi biến chạy có giá trị là 0 thì chương trình sẽ thực hiện liên tục. Nếu timer 1 tràn, với thời gian cho một lần tràn là 1ms được tính toán như sau: từ đầu ta set timer với giá trị là 64911 có nghĩa timer 1 sẽ đếm số xung từ 64911 đến 65536 là 625 xung, mỗi chu kì xung là 1,6µs vậy nên mỗi lần tràn là timer đếm 625 xung tương ứng với thời gian là 625x1,6µs = 1000µs = 1ms. Khi đó ta trì hoãn một khoản thời gian là TIME_DELAY được tính ở chương trình con tính toán các giá trị để đảm bảo không bị hao hụt thời gian cho mỗi lần tràn, tăng biến LANTRAN lên một đơn vị và set lại giá trị timer 1 và gán cờ tràn lại bằng 0. Khi biến LANTRAN bằng biến SOLANTRAN, có nghãi là thời gian cần cho một lần tạo nửa xung đã đủ thì ta cho chân RC5 là chân cấp xung đảo trạng thái, gán biến LANTRAN lại bằng 0 để thực hiện tiếp lần đảo chân tiếp theo. Trong chương trình sử dụng biến X1 tăng lên một đơn vị cho mỗi lần đảo chân để kiểm soát xem số lần đảo chân đã đủ chưa, khi X1 tăng lên giá trị bằng giá trị của biến SONUAXUNG thì lúc này ta tắt chế độ định thời timer 1, hiển thị LCD là quá trình hoàn tất và gán biến CHAY bằng 1 để kết thúc chương trình con điều khiển motor bước.

Lưu đồ chương trình con tính toán giá trị

Hình 4.20 Lưu đồ chương trình con tính toán giá trị. ● Giải thích lưu đồ:

CHƯƠNG 4. THI CÔNG HỆ THỐNG

Chương trình con thực hiện tính toán các thông số đã được giải thích ở Chương 3, các thông số được tính toán từ các giá trị nhập vào ở các chương trình con trước đó là nhập thể tích, nhập thời gian và cân nặng. Cụ thể như sau: Biến BUOC là biến tính số bước cần quay của motor bước. Trong đó, biến TILE là hệ số dịch chuyển bơm 1ml thuốc của bơm tiêm (với mỗi loại bơm tiêm sẽ có một hệ số khác nhau), biến T_TICH là biến được tính toán thông qua chương trình con nhập thể tích, số 4000 là số bước quay được 10 vòng của motor bước, và số 175 là số mm quay được sau 100 vòng. Ở lưu đồ sử dụng biến C_NANG để tính toán số bước, ta lấy biến C_NANG nhân 8 để tính thể tích cần bơm. Motor bước quay một bước khi có một xung, chương trình sử dụng timer nên mỗi lần đảo chân là nửa xung để cấp cho motor bước, vậy nên biến SONUAXUNG được sử dụng để giới hạn số lần đảo của chân cấp xung quay cho motor bước.

Chương trình điều khiển motor bước sử dụng timer 1 định thời với thời gian mỗi lần tràn là 1ms, vậy nên để tính thời gian cho một lần đảo chân tạo nửa xung ta cần tính bội số của 1ms, ở đây biến SOLANTRAN được tính với công thức trong lưu đồ. Biến T_GIAN được tính qua chương trình con nhập thời gian nhân với 500 là đổi đơn vị từ giây qua mili giây, vì giảm đi một nửa do biến ta chia là biến BUOC. Ở công thức này, ta lấy phần nguyên để tạo số lần tràn cho mỗi lần đảo chân tạo xung vì vậy sẽ còn sự mất mát khoảng vài trăm micro giây, vì vậy công thức tính TIME_DELAY là để tính số micro giây cần phải trì hoãn cho mỗi lần tràn ở timer để đảm bảo thời gian thực hiện một lần đảo chân là chính xác. Ở lưu đồ sau, thời gian mặc định là 1 giờ tương ứng 3600 giây vì vậy công thức có sử dụng biến T_GIAN ta thay bằng số mặc định là 3600 giây (sử dụng cho chức năng số 3 là thuốc được tiêm trong vòng 1 giờ).

4.4 PHẦN MỀM SỬ DỤNG LẬP TRÌNH

Trong quá trình thực hiện đề tài, nhóm sử dụng phần mềm lập trình CCS để viết code. Phần mền CCS là trình biên dịch lập trình ngôn ngữ C cho vi điều khiển PIC của hãng Microchip. Ngoài ra, nhóm còn sử dụng phần mềm PICkit2 để nạp code cho vi điều khiển.

Khi viết xong thì cần phải chuyển file code thành file có đuôi chấm hex. Sử dụng file code đuôi chấm hex thông qua phần mềm PICkit2 để nạp code cho PIC. Thao tác

CHƯƠNG 5. KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ

Chương 5. KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ

Chương này sẽ trình bày những kiến thức tiếp thu, học tập được trong quá trình thực hiện đề tài, so sánh kết quả của đề tài với mục tiêu đặt ra để nhận xét, đánh giá đề tài đạt hay không đạt, cần cải thiện những gì.

5.1 ĐÁNH GIÁ CHỨC NĂNG TỪNG KHỐI 5.1.1 Khối nguồn 5.1.1 Khối nguồn

Đối với khối nguồn, nhóm sử dụng LM7805 để giảm áp từ 12V xuống 5V. Đặc điểm của IC này là phát sinh nhiệt trong quá trình hoạt động. Lúc đầu nhóm đã không sử dụng tản nhiệt cho LM7805, quá trình hoạt động trong thời gian dài dẫn đến bị quá nhiệt và bị hỏng. Để khắc phục tình trạng này, nhóm đã lắp thêm phần tản nhiệt và không còn hiện tượng quá nhiệt xảy ra nữa. Nhìn chung, khối nguồn đáp ứng được yêu cầu đặt ra, cung cấp nguồn nuôi 5V và 12V cho cả hệ thống hoạt động trong thời gian dài (đã được trình bày ở chương 4).

CHƯƠNG 5. KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ

Vị trí đánh dấu ở hình 5.1 là đế tản nhiệt giúp tăng diện tích tiếp xúc với không khí, do đó giúp nhiệt lượng tỏa ra dễ dàng truyền đi bởi không khí.

5.1.2 Khối vi điều khiển

Qua đề tài, nhóm đã hiểu rõ hơn về việc sử dụng phần mềm CCS lập trình vi điều khiển Pic 16f877A, cụ thể là hiểu rõ hơn về cách thức hoạt động timer1. Để hoạt động ở chế độ timer nói chung và timer1 nói riêng, cần phải thực hiện theo trình tự 3 bước như sau:

1, Khởi tạo timer (chọn loại timer, chọn chế độ đếm xung nội/ngoại, chọn hệ số chia)

2, Set giá trị bắt đầu đếm cho timer 1. (Gán giá trị bắt đầu đếm của timer) 3, Kiểm tra cờ tràn, nếu cờ tràn thì thực hiện công việc.

Giá trị bắt đầu đếm có liên quan đến tổng số xung đếm, và liên quan đến cờ tràn. Khi timer đếm đủ xung thì sẽ báo cờ tràn, khi có tín hiệu báo cờ tràn nghĩa là đã đếm đủ số thời gian đã cài đặt trước, tiến hành thực hiện công việc. Trong suốt quá trình lập trình, nhóm không bị mắc lỗi ở việc lập trình timer.

5.1.3 LCD

Qua đề tài, nhóm đã hiểu được cách lập trình LCD, cách truyền dữ liệu lên LCD. Để truyền được dữ liệu, đầu tiên là xác định vị trí truyền dữ liệu (truyền tại vị trí hàng mấy cột mấy của LCD?), thứ hai là truyền dữ liệu. Trong thời gian lập trình, nhóm gặp phải lỗi là LCD hiển thị không đúng nội dung như nhóm mong muốn.

Hình 5.2 Lỗi hiện thị của LCD mà nhóm gặp phải.

Hình 5.1 trên cho ta thấy, LCD hiển thị như vậy thay vì hiển thị nội dung “DIEU CHINH VI TRI” . Nguyên nhân của lỗi này là do nhóm xác định sai vị trí truyền dữ liệu,

CHƯƠNG 5. KẾT QUẢ, NHẬN XÉT, ĐÁNH GIÁ

LCD 20x4 là có 4 hàng, mỗi hàng chỉ hiển thị tối đa 20 ký tự, vì lý do xác định vị trí

Một phần của tài liệu Thiết kế và thi công bơm tiêm điện đa chức năng (Trang 50)