Kalman Filter Nodered Trong bối cảnh phát triển khoa học – công nghệ ngày nay, việc ứng dụng Internet of Things (IoT) vào đời sống, sản xuất ngày trở nên phong phú và đa dạng. Rất nhiều ứng dụng IoT đã đem lại kết quả tuyệt vời, trở thành một phần không thể thiếu trong thế giới thông minh. Đặc biệt sự kết hợp của IoT network với lĩnh vực tự động hóa, đem lại nhiều hướng nghiên cứu mới. Đề tài tập trung nghiên cứu giải thuật Kalman vào xử lý tín hiệu, điều khiển bộ PID dựa trên nền tảng IoT network.
CƠ SỞ LÝ THUYẾT
N ODE - RED
Node-RED là công cụ lập trình dựa trên NodeJS, giúp kết nối thiết bị phần cứng, API và dịch vụ trực tuyến một cách sáng tạo Nó cung cấp trình soạn thảo dựa trên trình duyệt, cho phép người dùng dễ dàng kết nối các luồng thông qua bảng màu các Node Node-RED hoạt động như một web server, cho phép cấu hình tùy chỉnh các chức năng gọi là “flow” từ bất kỳ trình duyệt nào trên máy tính.
Hình 2.2 Input-Output trong Node-red
Hình 2.3 Node-red có thể xem như là server
Hình 2.4 Giao diện làm việc của Node-red
G IAO THỨC MQTT
MQTT, viết tắt của Message Queue Telemetry Transport, là một giao thức truyền thông điệp theo mô hình publish/subscribe Giao thức này được thiết kế để sử dụng băng thông thấp, đảm bảo độ tin cậy cao và có khả năng hoạt động hiệu quả trong các điều kiện đường truyền không ổn định.
MQTT là giao thức nhắn tin nhẹ, được thiết kế để tối ưu hóa việc giao tiếp giữa các thiết bị và hệ thống máy tính, ban đầu phục vụ cho các mạng SCADA Hiện nay, MQTT ngày càng phổ biến nhờ sự phát triển của Internet-of-Things (IoT) Trong hệ thống này, broker đóng vai trò trung tâm, là điểm giao tiếp cho tất cả các kết nối từ client Nhiệm vụ chính của broker là nhận tin nhắn từ publisher, sắp xếp chúng theo hàng đợi và chuyển đến điểm đích Ngoài ra, broker còn đảm nhận một số chức năng bổ sung như bảo mật tin nhắn, lưu trữ và ghi lại nhật ký truyền thông.
Clients are categorized into two groups: publishers and subscribers These client software components operate on edge devices and are designed for flexibility and lightweight functionality Clients perform at least one of two key tasks: they either publish messages to a specific topic or subscribe to a topic to receive messages.
Hình 2.5 Mô hình Publish/Subscribe MQTT
MQTT là lựa chọn lý tưởng trong các môi trường:
• Những nơi giá mạng viễn thông đắt đỏ hoặc băng thông thấp hay thiếu tin cậy.
• Khi chạy trên thiết bị nhúng bị giới hạn về tài nguyên tốc độ và bộ nhớ.
Giao thức này lý tưởng cho các ứng dụng M2M (Machine to Machine) vì nó sử dụng băng thông thấp và hoạt động hiệu quả trong môi trường có độ trễ cao.
• MQTT cũng là giao thức được sử dụng trong Facebook Messenger.
C Ơ SỞ LÝ THUYẾT K ALMAN F ILTER
KF là mô hình bộ lọc tự động hồi quy hiệu quả, sử dụng ít bộ nhớ và chỉ cần lưu trữ dữ liệu cho một trạng thái trong hệ thống Mô hình này sử dụng dữ liệu thực tế để hiệu chỉnh kết quả đo, giúp phản ánh khách quan nhất Tốc độ hoạt động nhanh của KF rất phù hợp cho các vấn đề thời gian thực và ứng dụng trong tính toán biên của IoT Cốt lõi của KF là sử dụng các phương trình không gian-trạng thái để dự đoán trạng thái hệ thống tại thời điểm k dựa trên ước lượng tối ưu tại thời điểm k-1 Khi giá trị quan sát bị ảnh hưởng bởi lỗi và nhiễu, giá trị dự đoán cần được hiệu chỉnh để đạt được ước lượng tối ưu cho trạng thái hệ thống tại thời điểm k.
Thuật toán Kalman Filter (KF) là một phương pháp tiên tiến khác biệt so với các phương pháp dự đoán thời gian truyền thống, cho phép ước tính trạng thái của hệ thống từ các quan sát không đầy đủ hoặc bị nhiễu KF hoạt động như một mô hình bộ lọc đệ quy nhanh, chiếm ít bộ nhớ và chỉ cần lưu trữ dữ liệu cho trạng thái của hệ thống tại một thời điểm, thay vì trong một khoảng thời gian dài Kết quả ước tính được hiệu chỉnh dựa trên dữ liệu đo thực tế Mô hình bộ lọc Kalman một chiều được định nghĩa để thực hiện các phép ước lượng chính xác trong các ứng dụng khác nhau.
- x(t): Mực nước theo thời gian thực
- z (t ): Phép đo x (t ) của cảm biến
- σ w 2 : Nhiễu đo Ước tính Kalman x (t ) của mực nước x (t) có thể được tính toán đệ quy:
Trong đó: δ ^ x 2 (t) - phương sai ước lượng σ^ x (t)= ^σ x (t−1)=~σ x hội tụ:
Hình 2.6 Minh họa thuật toán Kalman Filter
Hình 2.7 Mô phỏng Kalman Filter một chiều hội tụ
T HUẬT TOÁN PID
Bộ điều khiển vi tích phân tỉ lệ (PID) là một cơ chế phản hồi vòng điều khiển quan trọng, tích hợp các thành phần tỉ lệ, tích phân và đạo hàm PID được sử dụng rộng rãi trong các hệ thống điều khiển công nghiệp và nhiều ứng dụng khác cần điều khiển liên tục Bộ điều khiển này hoạt động bằng cách tính toán sai số, tức là hiệu số giữa giá trị đo được và giá trị đặt mong muốn, từ đó điều chỉnh giá trị điều khiển đầu vào nhằm giảm thiểu sai số một cách tối đa.
Bộ điều khiển PID là lựa chọn tối ưu cho những ai không có nhiều kiến thức về quá trình điều khiển Để đạt hiệu quả tốt nhất, các thông số PID cần được điều chỉnh phù hợp với đặc tính của hệ thống, mặc dù phương pháp điều khiển là giống nhau Bộ điều khiển PID liên tục tính toán giá trị sai số e(t), là chênh lệch giữa giá trị điểm đặt (SP) và biến đo hồi tiếp (PV), và thực hiện điều chỉnh thông qua ba thông số: tỷ lệ (P), tích phân (I) và đạo hàm (D) Giá trị tỷ lệ xác định ảnh hưởng của sai số hiện tại, giá trị tích phân phản ánh tác động của tổng sai số trong quá khứ, và giá trị vi phân dự đoán sai số tương lai dựa vào tốc độ thay đổi hiện tại.
Hệ thống điều khiển vòng kín xác định sai số giữa trạng thái mong muốn và thực tế, từ đó tạo lệnh điều khiển để khắc phục sai số Điều khiển PID sử dụng ba phương pháp để phát hiện và điều chỉnh sai số: P, PI, PD, và PID, với PI là lựa chọn phổ biến nhờ khả năng đáp ứng nhạy với nhiễu đo lường Tuy nhiên, thiếu giá trị tích phân có thể làm cho hệ thống không đạt được giá trị mong muốn Việc "hiệu chỉnh" hệ thống yêu cầu lựa chọn giá trị thích hợp trong các phương pháp này.
Hình 2.8 Lưu đồ giải thuật PID
Bộ điều khiển PID sử dụng khâu tỉ lệ, tích phân và vi phân để tính toán đầu ra, được định nghĩa là u(t) Biểu thức cuối cùng của thuật toán PID là: u(t) = MV(t) = Kp e(t) + Ki ∫.
Sơ đồ điều khiển PID được hình thành từ ba khâu hiệu chỉnh chính, bao gồm Proportional (tỷ lệ), Integral (tích phân) và Derivative (vi phân), với tổng của ba khâu này tạo thành biến điều khiển (MV).
MV(t)=P out +I out +D out trong đó P out , I out , D out là các thành phần đầu ra từ ba khâu của bộ điều khiển PID
Khâu tỉ lệ, hay còn gọi là độ lợi, ảnh hưởng đến giá trị đầu ra theo tỷ lệ với giá trị sai số hiện tại Để điều chỉnh đáp ứng tỉ lệ, sai số này được nhân với một hằng số Kp, được biết đến là hệ số tỉ lệ.
Khâu tỉ lệ được cho bởi:
P out : thừa số tỉ lệ của đầu ra
K p : Hệ số tỉ lệ, thông số điều chỉnh e : sai số = SP –PV t : thời gian tức thời (hiện tại)
Hệ số của khâu tỉ lệ lớn phản ánh sự thay đổi lớn ở đầu ra trong khi sai số thay đổi nhỏ, nhưng nếu hệ số này quá cao, hệ thống sẽ trở nên không ổn định Ngược lại, hệ số nhỏ cho thấy đầu ra đáp ứng kém trong khi sai số đầu vào lớn, dẫn đến bộ điều khiển kém nhạy và đáp ứng chậm Nếu hệ số của khâu tỉ lệ quá thấp, tác động điều khiển sẽ không đủ mạnh để đối phó với các nhiễu trong hệ thống.
Phân phối của khâu tích phân, hay còn gọi là reset, tỉ lệ thuận với biên độ sai số và quảng thời gian xảy ra sai số Tổng sai số tức thời theo thời gian (tích phân sai số) cho phép chúng ta tích lũy bù đã được hiệu chỉnh trước đó Sai số tích lũy được nhân với độ lợi tích phân và cộng với tín hiệu đầu ra của bộ điều khiển Biên độ phân phối của khâu tích phân trên tất cả tác động điều chỉnh được xác định bởi độ lợi tích phân, K i.
Thừa số tích phân được cho bởi:
I out : Thừa số tích phân của đầu ra
K i : Độ lợi tích phân e : Sai số = SP – PV t : Thời gian hoặc thời gian tức thời ( hiện tại ) τ :Một biến tích phân trung gian
Khâu tích phân, khi kết hợp với khâu tỉ lệ, giúp tăng tốc độ chuyển động đến điểm đặt và khử số dư sai số ổn định dựa vào bộ điều khiển Tuy nhiên, do khâu tích phân phản ánh sai số tích lũy trong quá khứ, nó có thể gây ra tình trạng giá trị hiện tại vượt quá giá trị đặt, dẫn đến độ lệch với các hướng khác Để hiểu rõ hơn về cách điều chỉnh độ lợi tích phân và độ ổn định của bộ điều khiển, hãy tham khảo phần điều chỉnh vòng lặp.
Tốc độ thay đổi của sai số quá trình được xác định bằng cách tính độ dốc của sai số theo thời gian, tương ứng với đạo hàm bậc một theo thời gian Tốc độ này sau đó được nhân với độ lợi tỉ lệ K dτ Biên độ phân phối khâu vi phân, hay còn gọi là tốc độ, trên tất cả các hành vi điều khiển bị giới hạn bởi độ lợi vi phân K dτ.
Thừa số vi phân được cho bởi:
D out : Thừa số vi phân của đầu ra
K dτ : Độ lợi vi phân e : Sai số = SP – PV t : thời gian hoặc thời gian tức thời
Khâu vi phân trong bộ điều khiển làm chậm tốc độ thay đổi đầu ra, giúp đạt điểm đặt hiệu quả Nó được sử dụng để giảm biên độ vọt lố từ thành phần tích phân và cải thiện độ ổn định của hệ thống điều khiển hỗn hợp Tuy nhiên, việc vi phân tín hiệu có thể khuếch đại nhiễu, khiến cho khâu này nhạy cảm với sai số và có nguy cơ gây ra sự không ổn định nếu nhiễu và độ lợi vi phân quá cao Do đó, việc sử dụng một xấp xỉ của bộ vi sai với băng thông giới hạn, như mạch bù sớm pha, thường được ưa chuộng hơn.
THIẾT KẾ VÀ THI CÔNG
S Ơ ĐỒ KHỐI HỆ THỐNG
Hình 3.9 Sơ đồ khối hệ thống
3.1.1 Khối vi điều khiển ESP32
Thiết bị lập trình này có chức năng điều khiển các hệ thống tự động hóa, cho phép thực hiện các thuật toán điều khiển logic thông qua ngôn ngữ lập trình như C/C++, Python, NodeJS, và nhiều ngôn ngữ khác.
Thông số kỹ thuật của ESP32:
- Nhà sản xuất: Ai-Thinker
- Module trung tâm : Ai-Thinker ESP32-S
- Support interface: UART/SPI/SDIO/I2C/PWM/I2S/IR/ADC/DAC
- Tích hợp mạch nạp và giao tiếp UART CP2102
Hình 3.11 Sơ đồ chân của Module ESP32 NodeMCU-32
Chức năng: Là động cơ điều khiển lượng nước bơm vào bồn chứa
- Điện áp sử dụng: 6~12VDC
- Thời gian chạy liên tục: < 1h
- Đường kính đầu bơm: đường kính trong 6mm, đường kính ngoài 8.5mm
Hình 3.12Động Cơ DC Bơm Nước Water Pump P385 12VDC
3.1.3 Khối cảm biến đo mực nước
Chức năng: Cảm biến khoảng cách dùng để đo mực nước hiện có trong bồn.
Linh kiện chính: Cảm biến siêu âm HC-SR04
- Điện áp hoạt động: 5VDC
- Tín hiệu giao tiếp: TTL
- Chân tín hiệu: Echo, Trigger.
- Tần số phát sóng: 40Khz
Khoảng cách đo được của cảm biến là từ 2 đến 450 cm, với điều kiện lý tưởng là không gian trống và bề mặt vật thể phẳng Trong điều kiện bình thường, cảm biến cho kết quả chính xác nhất ở khoảng cách dưới 100 cm.
- Sai số: 0.3cm (khoảng cách càng gần, bề mặt vật thể càng phẳng sai số càng nhỏ).
- Kích thước: 43mm x 20mm x 17mm
Hình 3.13 Cảm biến siêu âm HC-SR04
Chức năng của hệ thống là nhận tín hiệu khoảng cách mực nước từ ESP32, thực hiện thuật toán Kalman để xử lý tín hiệu đo, và sau đó truyền lệnh điều khiển đến khối điều khiển Đồng thời, hệ thống cũng hiển thị trạng thái của bồn chứa một cách rõ ràng.
Hình 3.14 Giao diện Node-red
Chức năng: Quan sát trạng thái hoạt động và điều khiển hệ thống.
Hình 3.15 Giao diện khối giám sát
T HIẾT KẾ PHẦN CỨNG HỆ THỐNG
Hình 3.16 Mặt trước bồn chứa lỏng
T HIẾT KẾ GIẢI THUẬT K ALMAN F ILTER
Hình 3.17 Lưu đồ giải thuật Kalman Filter
Hình 3.18 Thuật toán Kalman đệ quy cho Mạng IoT trong Node-Red
Hình 3.19 Giải thuật bên trong khối Kalman 1D
Hình 3.20 Giải thuật bên trong khối Prediction
Hình 3.21 Giải thuật bên trong khối Kalman Gain
Hình 3.22 Giải thuật bên trong khối Estimation
1.1 Thiết kế bộ P trong PID
Hình 3.23 Lưu đồ thuật toán PID
Hình 3.24 Thuật toán PID trong Node-red
Hình 3.25 Thuật toán bên trong khối PID
Hình 3.26 Thuật toán bên trong khối System
Hình 3.27 Thuật toán bên trong khối Display
1.2 Thiết kế giải thuật PID sử dụng bộ lọc Kalman khử nhiễu
Hình 3.28 Lưu đồ giải thuật PID Kalman Filter
Hình 3.29 Giải thuật PID kết hợp Kalman Filter
Hình 3.30 Thiết kế giao diện phần mềm điều khiển
Hình 3.31 Giao diện phần mềm điều khiển
T HIẾT KẾ PHẦN MỀM
Bước 1: Cấp nguồn cho hệ thống.
Bước 2: Mở server Node-red
Bước 3: Thiết lập các thông số và mức nước mong muốn Bước 4: Kiểm tra kết quả bộ lọc Kalman
Bước 5: Kiểm tra kết quả điều khiển
Bước 1: Cấp nguồn cho hệ thống.
Bước 2: Mở server Node-red
Hình 4.32 Khởi động Node-red
THỰC NGHIỆM
C ÁC BƯỚC TIẾN HÀNH THỰC NGHIỆM
Bước 1: Cấp nguồn cho hệ thống.
Bước 2: Mở server Node-red
Bước 3: Thiết lập các thông số và mức nước mong muốn Bước 4: Kiểm tra kết quả bộ lọc Kalman
Bước 5: Kiểm tra kết quả điều khiển
K ẾT QUẢ THỰC NGHIỆM
Bước 1: Cấp nguồn cho hệ thống.
Bước 2: Mở server Node-red
Hình 4.32 Khởi động Node-red
Hình 4.33 Truy cập http://node-red-v2.herokuapp.com/admin đăng nhập
Hình 4.34 Giao diện thiết kế chương trình
Hình 4.35 Truy cập http://node-red-v2.herokuapp.com mở giao diện điều khiển
Bước 3: Thiết lập các thông số và mức nước mong muốn
Hình 4.36 Thiết lập các thông số
Bước 4: Kiểm tra kết quả bộ lọc Kalman
Hình 4.37Kết quả đo được khi không có bộ lọc Kalman
Hình 4.38 Sau khi có bộ lọc Kalman
Bước 5: Kiểm tra kết quả điều khiển
Hình 4.39 Tín hiệu đo không có bộ lọc giao động mạnh quanh giá trị mong muốn
Hình 4.40 Tín hiệu đo có sử dụng bộ lọc bám sát giá trị mong muốn