Giới thiệu dự án
Trong kỷ nguyên tự động hóa công nghiệp và chuyển đổi số quy trình sản xuất, việc kiểm soát chính xác các biến trạng thái chất lưu (lưu lượng, áp suất, nhiệt độ, mức chất lỏng) đóng vai trò sống còn. Theo các khảo sát công nghiệp, bộ điều khiển tỉ lệ - tích phân - vi phân (Proportional Integral Derivative - PID) chiếm hơn 90% các vòng điều khiển phản hồi thực tế trong các nhà máy nhiệt điện, hóa chất, xử lý nước và hệ thống điều hòa nhiệt độ HVAC. Trong đó, bài toán ổn định mức nước trong các bình chứa và lò hơi là tiền đề quyết định hiệu suất nhiệt và an toàn vận hành.
+-----------------------------------------------------------+
| MATLAB Simulink |
| (Giao tiếp UART / Host Serial Rx / Khối Scope giám sát) |
+-----------------------------^-----------------------------+
| USB Serial (COM Port)
v
+-----------------------------------------------------------+
| Arduino Uno R3 |
| (Vi điều khiển ATmega328P @ 16MHz) |
| - Giải thuật PID số/rời rạc (T = 0.1s) |
| - Bộ phát xung PWM điều biến độ rộng |
+--------------+-----------------------------+--------------+
| ^
| Tín hiệu PWM | Echo / Trig (40kHz)
v |
+-----------------------------+ +-------------------------+
| Mạch cầu H L298N | | Cảm biến siêu âm HC-SR04|
| (Công suất tải max 2A, 12V) | | (Dải đo 2 - 450cm) |
+--------------+--------------+ +------------+------------+
| Điện áp u(t) ^
v | Phản xạ sóng
+-----------------------------+ |
| Máy bơm mini R385 | |
| (12VDC, 1.5 - 2 L/min) | |
+--------------+--------------+ |
| Lưu lượng vào q_in(t) |
v | Mực nước h(t)
+----------------------------------------------+------------+
| Mô hình bồn nước đơn Mica (15x15x22 cm) |
| Tiết diện A = 225 cm2, Van xả đáy a = 0.636 cm2 |
| Lưu lượng xả q_out(t) |
+-----------------------------------------------------------+
Vấn đề cốt lõi (Problem Statement) của hệ thống bồn nước đơn nằm ở tính chất phi tuyến bậc một theo định luật Torricelli, kết hợp với độ trễ phản hồi của cảm biến và quán tính dòng chảy máy bơm. Khi lưu lượng tiêu thụ ở đầu ra (van xả đáy) biến thiên liên tục, hệ thống rất dễ rơi vào tình trạng dao động, tràn bồn gây lãng phí hoặc cạn bồn dẫn đến cháy nổ thiết bị gia nhiệt (như buồng đốt lò hơi nhiệt điện hay tấm làm mát cooling pad công nghiệp).
Đề tài đặt ra 4 mục tiêu nghiên cứu cụ thể:
- Xây dựng mô hình toán học giải tích mô tả động học bồn nước đơn thông qua phương trình vi phân phi tuyến và xác định điểm làm việc tĩnh $(u_0, h_0)$.
- Rời rạc hóa bộ điều khiển PID liên tục sang miền z ($Z$-domain) bằng phương pháp Tustin/Backward Difference, phục vụ lập trình trực tiếp trên vi điều khiển 8-bit.
- Thiết kế, mô phỏng và kiểm chứng đáp ứng quá độ (độ vọt lố $POT$, thời gian xác lập $t_{xl}$, sai số xác lập $e_{xl}$) trên MATLAB Simulink R2022b đối với các cấu hình PD, PI, PID ở các điểm đặt $5\text{ cm}, 8\text{ cm}, 11\text{ cm}, 14\text{ cm}, 17\text{ cm}$.
- Chế tạo mô hình phần cứng thực nghiệm hoàn chỉnh sử dụng vi điều khiển ATmega328P, cảm biến siêu âm HC-SR04, mạch cầu H L298N và truyền thông thời gian thực với máy tính qua chuẩn UART.
Hệ thống hướng tới chỉ số hiệu năng cụ thể: sai số xác lập thực nghiệm $|e_{xl}| \le 1.5\text{ cm}$ (đạt chuẩn yêu cầu $< 2\text{ cm}$), độ vọt lố $POT = 0%$ tại mọi giá trị đặt và không xảy ra hiện tượng tràn bồn. Phạm vi giới hạn của đề tài tập trung vào hệ bồn nước đơn đơn biến (SISO) hoạt động tại nhiệt độ phòng, dung tích chứa $4.95\text{ lít}$, sử dụng nguồn DC $12\text{V}$.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi triển khai thiết kế giải pháp điều khiển PID số, các phương pháp khống chế mức nước truyền thống và hiện đại được khảo sát, so sánh toàn diện:
| Phương pháp |
Ưu điểm |
Nhược điểm |
Chi phí & Độ phức tạp |
| Phao cơ truyền thống |
Không dùng điện, cấu tạo cơ khí đơn giản, dễ lắp ráp |
Độ trễ lớn, không điều chỉnh được setpoint linh hoạt, dễ kẹt cơ khí |
Chi phí rất thấp, độ chính xác kém |
| Điều khiển On-Off (Rơ le) |
Dễ lập trình, giá thành rẻ |
Biên độ dao động lớn quanh điểm đặt, bơm đóng ngắt liên tục gây giảm tuổi thọ |
Chi phí thấp, sai số xác lập cao ($\pm 15-20%$) |
| PID số (Digital PID) |
Triệt tiêu sai số xác lập ($e_{xl} = 0$), không vọt lố nếu chỉnh định tối ưu, đáp ứng bám mượt mà |
Đòi hỏi mô hình hóa toán học và thuật toán rời rạc hóa chính xác |
Chi phí hợp lý, độ phức tạp trung bình |
| Fuzzy-PID / Mạng Nơ-ron |
Thích nghi cao với hệ phi tuyến phức tạp |
Đòi hỏi tài nguyên phần cứng lớn (MCU 32-bit/DSP), thuật toán phức tạp |
Chi phí cao, khó tinh chỉnh thực tế |
Yêu cầu kỹ thuật của hệ thống được phân loại theo mô hình MoSCoW:
- Must have: Thuật toán PID số rời rạc chu kỳ lấy mẫu $T = 0.1\text{s}$; cơ chế điều chế độ rộng xung (PWM) điều khiển công suất bơm; cơ chế an toàn chống tràn bồn; hiển thị mức nước và setpoint trên LCD 16x2 I2C.
- Should have: Giao tiếp UART 9600 bps truyền thông dữ liệu real-time lên MATLAB Scope; nút nhấn thay đổi trực tiếp giá trị đặt trên bo mạch.
- Could have: Bộ lọc số trung bình trượt (Moving Average Filter) xử lý nhiễu sóng âm bề mặt bồn nước.
- Won't have: Giao tiếp không dây Wi-Fi/Cloud IoT và điều khiển cụm van xả tuyến tính (giữ cố định van xả thủ công để kiểm chứng nhiễu).
Thiết kế hệ thống
Kiến trúc hệ thống vận hành theo vòng điều khiển kín (Closed-loop Control System):
r(k) + e(k) +-------------------+ u(k) +-------------------+
Setpoint --->(+)---------->| Khâu PID Số / |------->| Bộ Điều Chế |
^ - | Thuật Toán Rời Rạc| | Xung PWM |
| +-------------------+ +---------+---------+
| |
| v
| +-------------------+ h(t) +-------------------+
+------------| Cảm biến HC-SR04 |<-------| Bồn Nước & Bơm |
h_meas(k) | (Khâu Đo Lường) | | (Đối Tượng G(s)) |
+-------------------+ +-------------------+
Danh mục công nghệ và thông số phần cứng:
- Vi điều khiển (MCU): Arduino Uno R3 (Vi điều khiển 8-bit ATmega328P, thạch anh $16\text{ MHz}$, 14 chân Digital I/O với 6 kênh PWM $490\text{ Hz}$, 32KB Flash ROM, 2KB SRAM).
- Cảm biến mức nước: Cảm biến siêu âm HC-SR04 (Tần số siêu âm $40\text{ kHz}$, góc quét $< 15^\circ$, khoảng cách đo hiệu dụng $2\text{ cm} - 450\text{ cm}$, độ phân giải lý thuyết $3\text{ mm}$, thời gian phát xung Trigger tối thiểu $10\mu\text{s}$).
- Mạch công suất: Module cầu H L298N (Điện áp nguồn động cơ $5\text{V} - 35\text{VDC}$, dòng đỉnh $2\text{A}$ mỗi cầu, tích hợp diod bảo vệ chống xung điện áp ngược).
- Cơ cấu chấp hành: Động cơ bơm màng DC mini R385 ($12\text{VDC}$, dòng danh định $0.7\text{A}$, công suất tối đa $10\text{W}$, lưu lượng $1.5 - 2.0\text{ L/phút}$, cột áp đẩy $3\text{ m}$).
- Bồn chứa chất lỏng: Vật liệu Mica trong suốt dày $2\text{ mm}$, kích thước hình hộp chữ nhật $15 \times 15 \times 22\text{ cm}$ (tiết diện ngang $A = 225\text{ cm}^2$, dung tích hữu dụng $4.95\text{ L}$).
- Nguồn cấp: Nguồn tổ ong xung Switching $220\text{VAC} \to 12\text{VDC} - 5\text{A}$ ($60\text{W}$, hiệu suất $87%$).
- Môi trường phát triển & mô phỏng: Arduino IDE v2.2.1, MATLAB & Simulink R2022b.
Methodology
Dự án áp dụng mô hình phát triển V-Model kết hợp kỹ thuật mô phỏng kiểm chứng trước khi nhúng (Model-in-the-Loop - MIL):
1. Phân tích bài toán & Mô hình hóa toán học (Tuần 1)
└── Xây dựng phương trình vi phân, tính điểm làm việc tĩnh ho, uo.
2. Mô phỏng & Chỉnh định thông số trên Simulink (Tuần 2)
└── Kiểm chứng đáp ứng quá độ của P, PI, PD, PID.
3. Thiết kế & Gia công phần cứng (Tuần 3)
└── Gia công bồn Mica, lắp ráp mạch điện, đấu nối nguồn và cảm biến.
4. Lập trình Firmware PID số trên Arduino IDE (Tuần 4)
└── Hiện thực phương trình sai phân PID rời rạc, giao tiếp LCD, UART.
5. Tích hợp hệ thống & Kiểm thử thực nghiệm (Tuần 5)
└── Đồng bộ MATLAB Serial, ghi nhận đáp ứng thực tế ở 5 mốc setpoint.
6. Đánh giá chất lượng & Hoàn thiện báo cáo (Tuần 6)
Ma trận phân tích rủi ro kỹ thuật:
- Rủi ro 1: Nhiễu bề mặt chất lỏng làm dao động tín hiệu Echo của cảm biến HC-SR04.
- Giải pháp: Cố định góc phát vuông góc với mặt nước, thiết kế tấm chắn bọt khí và dùng bộ lọc trung bình động 5 mẫu liên tiếp.
- Rủi ro 2: Cháy cầu H do dòng khởi động máy bơm.
- Giải pháp: Chọn module L298N có dòng chịu đựng $2\text{A}$ (gấp 2.8 lần dòng định mức $0.7\text{A}$ của bơm R385) và lắp cầu chì bảo vệ $2\text{A}$.
- Rủi ro 3: Bão hòa tích phân (Integrator Windup) khi sai số lớn kéo dài.
- Giải pháp: Lập trình hàm kẹp bão hòa (Clamping/Saturation) giới hạn ngõ ra $u(k) \in [0, 255]$ tương ứng dải PWM 8-bit.
Implementation và kết quả
Development process
1. Xây dựng mô hình toán học giải tích
Theo định luật bảo toàn khối lượng, phương trình cân bằng lưu lượng của bồn chứa:
$$\frac{d(A \cdot h(t))}{dt} = q_{in}(t) - q_{out}(t) \implies A \dot{h}(t) = q_{in}(t) - q_{out}(t)$$
Trong đó:
- Lưu lượng dòng vào tỉ lệ thuận với điện áp điều khiển máy bơm $u(t)$: $q_{in}(t) = k \cdot u(t)$ (với $k = 2.33\text{ cm}^3/\text{V}\cdot\text{s}$).
- Lưu lượng xả đáy theo định luật Torricelli: $q_{out}(t) = C_D \cdot a \cdot \sqrt{2gh(t)}$.
Phương trình vi phân phi tuyến mô tả động học hệ bồn nước đơn:
$$\dot{h}(t) = \frac{1}{A} \left[ k \cdot u(t) - C_D \cdot a \cdot \sqrt{2gh(t)} \right]$$
Các thông số thực nghiệm được xác định:
- Tiết diện bồn: $A = 225\text{ cm}^2$ (kích thước đáy $15 \times 15\text{ cm}$).
- Tiết diện van xả: $a = 0.636\text{ cm}^2$ ($r = 0.45\text{ cm}$).
- Gia tốc trọng trường: $g = 981\text{ cm/s}^2$.
- Hệ số xả thực nghiệm: $C_D = 0.2$.
- Chiều cao cực đại: $h_{max} = 22\text{ cm}$; mức nước ban đầu $h_{init} = 3\text{ cm}$.
Tại điểm làm việc tĩnh ($\dot{h}(t) = 0$), phương trình cân bằng dòng vào - ra:
$$k \cdot u_0 = C_D \cdot a \cdot \sqrt{2gh_0} \implies h_0 = \frac{1}{2g} \left( \frac{k \cdot u_0}{C_D \cdot a} \right)^2 \quad \text{hoặc} \quad u_0 = \frac{C_D \cdot a \cdot \sqrt{2gh_0}}{k}$$
Với điện áp hoạt động danh định $u_0 = 10\text{V}$, mức nước cân bằng tĩnh lý thuyết đạt $h_0 = 17.1\text{ cm}$.
2. Rời rạc hóa bộ điều khiển PID sang miền $Z$
Hàm truyền liên tục của bộ điều khiển PID kinh điển trong miền Laplace:
$$G_c(s) = K_P + \frac{K_I}{s} + K_D s$$
Chuyển đổi sang miền thời gian rời rạc qua phép xấp xỉ Tustin và sai phân lùi với chu kỳ lấy mẫu $T = 0.1\text{s}$:
$$G_c(z) = K_P + \frac{K_I T}{2}\frac{z+1}{z-1} + \frac{K_D}{T}\frac{z-1}{z}$$
Biến đổi ngược về phương trình sai phân truy hồi phục vụ lập trình nhúng:
$$u(k) = u(k-1) + \frac{\alpha e(k) + \beta e(k-1) + \gamma e(k-2)}{\Delta}$$
Các hệ số đại số được tính toán trước nhằm tối ưu hóa chu kỳ xung nhịp của vi điều khiển:
$$\begin{cases}
\alpha = 2 T K_P + K_I T^2 + 2 K_D \
\beta = K_I T^2 - 4 K_D - 2 T K_P \
\gamma = 2 K_D \
\Delta = 2 T
\end{cases}$$
Bộ thông số tối ưu tìm được qua mô phỏng: $K_P = 1.0$, $K_I = 0.0032$, $K_D = 0.01$, $T = 0.1\text{s}$.
3. Cài đặt Firmware trên Arduino
Mã nguồn nhúng triển khai giải thuật PID số rời rạc và giao tiếp Serial:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Định nghĩa chân phần cứng
const int PIN_TRIG = 9;
const int PIN_ECHO = 10;
const int PIN_PWM = 6; // Điều khiển ENA trên L298N
const int PIN_IN1 = 7;
const int PIN_IN2 = 8;
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Thông số bộ điều khiển PID số
const float KP = 1.0;
const float KI = 0.0032;
const float KD = 0.01;
const float T_SAMPLE = 0.1; // 100ms
// Hệ số sai phân rời rạc
const float ALPHA = 2.0 * T_SAMPLE * KP + KI * T_SAMPLE * T_SAMPLE + 2.0 * KD;
const float BETA = KI * T_SAMPLE * T_SAMPLE - 4.0 * KD - 2.0 * T_SAMPLE * KP;
const float GAMMA = 2.0 * KD;
const float DELTA_COEFF = 2.0 * T_SAMPLE;
float setpoint = 11.0; // Điểm đặt mặc định (cm)
float e_k = 0.0, e_k1 = 0.0, e_k2 = 0.0;
float u_k = 0.0, u_k1 = 0.0;
unsigned long last_time = 0;
float readUltrasonicWaterLevel() {
digitalWrite(PIN_TRIG, LOW);
delayMicroseconds(2);
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
long duration = pulseIn(PIN_ECHO, HIGH, 30000); // Timeout 30ms
if (duration == 0) return setpoint; // Chống mất tín hiệu
// Tính khoảng cách từ cảm biến tới mặt nước (cm), chiều cao bồn 22cm
float distance = (duration * 0.0343) / 2.0;
float water_level = 22.0 - distance;
return constrain(water_level, 0.0, 22.0);
}
void setup() {
Serial.begin(9600);
pinMode(PIN_TRIG, OUTPUT);
pinMode(PIN_ECHO, INPUT);
pinMode(PIN_PWM, OUTPUT);
pinMode(PIN_IN1, OUTPUT);
pinMode(PIN_IN2, OUTPUT);
// Cấu hình chiều quay bơm
digitalWrite(PIN_IN1, HIGH);
digitalWrite(PIN_IN2, LOW);
lcd.init();
lcd.backlight();
}
void loop() {
unsigned long now = millis();
if (now - last_time >= (T_SAMPLE * 1000)) {
last_time = now;
float h_current = readUltrasonicWaterLevel();
e_k = setpoint - h_current;
// Tính toán tín hiệu điều khiển PID số
if (h_current < setpoint) {
u_k = u_k1 + (ALPHA * e_k + BETA * e_k1 + GAMMA * e_k2) / DELTA_COEFF;
} else {
u_k = 0.0; // Dừng bơm chống tràn
}
// Chống bão hòa tích phân (Anti-windup clamping)
u_k = constrain(u_k, 0.0, 255.0);
analogWrite(PIN_PWM, (int)u_k);
// Cập nhật biến trạng thái trễ
e_k2 = e_k1;
e_k1 = e_k;
u_k1 = u_k;
// Xuất dữ liệu lên MATLAB Simulink qua UART
Serial.print(setpoint);
Serial.print(",");
Serial.println(h_current);
// Hiển thị LCD
lcd.setCursor(0, 0);
lcd.print("SP: "); lcd.print(setpoint, 1); lcd.print("cm ");
lcd.setCursor(0, 1);
lcd.print("PV: "); lcd.print(h_current, 1); lcd.print("cm ");
}
}
Testing và validation
Hệ thống được kiểm thử qua 2 giai đoạn: Mô phỏng toàn diện trên MATLAB Simulink và thực nghiệm trên mô hình thực tế ở 5 mốc chiều cao khác nhau:
+---------------------------------------------------------------------------------------+
| BẢNG ĐỐI SÁNH ĐÁP ỨNG QUÁ ĐỘ GIỮA MÔ PHỎNG VÀ THỰC NGHIỆM |
+---------------+-------------------+-----------------------+---------------------------+
| Mốc Setpoint | Thông số đánh giá | Mô phỏng Simulink | Thực nghiệm Phần cứng |
+---------------+-------------------+-----------------------+---------------------------+
| | Độ vọt lố (POT) | 0.0 % | 0.0 % |
| 5 cm | Sai số xác lập | 0.0 cm | 0.21 cm |
| | Thời gian xác lập | 1222.2 s | 1310.5 s |
+---------------+-------------------+-----------------------+---------------------------+
| | Độ vọt lố (POT) | 0.0 % | 0.0 % |
| 8 cm | Sai số xác lập | 0.0 cm | 0.35 cm |
| | Thời gian xác lập | 1020.0 s | 1095.0 s |
+---------------+-------------------+-----------------------+---------------------------+
| | Độ vọt lố (POT) | 0.0 % | 0.0 % |
| 11 cm | Sai số xác lập | 0.0 cm | 0.42 cm |
| | Thời gian xác lập | 893.1 s | 940.2 s |
+---------------+-------------------+-----------------------+---------------------------+
| | Độ vọt lố (POT) | 0.0 % | 0.0 % |
| 14 cm | Sai số xác lập | 0.0 cm | 0.68 cm |
| | Thời gian xác lập | 799.4 s | 850.0 s |
+---------------+-------------------+-----------------------+---------------------------+
| | Độ vọt lố (POT) | 0.0 % | 0.0 % |
| 17 cm | Sai số xác lập | 0.0 cm | 0.85 cm |
| | Thời gian xác lập | 714.1 s | 765.8 s |
+---------------+-------------------+-----------------------+---------------------------+
Đánh giá so sánh các cấu hình điều khiển:
- Bộ điều khiển PD ($K_P = 1.0, K_D = 0.01$): Thời gian lên rất nhanh ($t_{xl} < 200\text{s}$) nhưng sai số xác lập $e_{xl}$ cực lớn ($3.22\text{ cm}$ tại mốc $5\text{ cm}$ và lên tới $7.47\text{ cm}$ tại mốc $17\text{ cm}$). Nguyên nhân do thiếu khâu tích phân $I$ để bù lượng lưu lượng xả liên tục qua đáy bồn.
- Bộ điều khiển PI ($K_P = 1.0, K_I = 0.0032$): Triệt tiêu hoàn toàn sai số xác lập lý thuyết ($e_{xl} = 0$), đường đáp ứng mượt mà tương đương PID do hệ bồn nước có đặc tính quán tính trễ lớn, vai trò của khâu vi phân $D$ không quá nổi trội.
- Bộ điều khiển PID ($K_P = 1.0, K_I = 0.0032, K_D = 0.01$): Đạt chất lượng tối ưu nhất, cân bằng giữa tốc độ đáp ứng và tính ổn định tuyệt đối không vọt lố ($POT = 0%$).
Kết quả đạt được
Hệ thống đã hoàn thành $100%$ các mục tiêu thiết kế ban đầu:
- Độ chính xác: Sai số xác lập thực tế duy trì ở mức $0.21 - 0.85\text{ cm}$ (thấp hơn nhiều so với ngưỡng cận trên cho phép là $2.0\text{ cm}$).
- Độ ổn định động học: Độ vọt lố đạt $0%$ ở mọi kịch bản thử nghiệm, loại bỏ nguy cơ tràn nước ra ngoài bồn.
- Khả năng triệt tiêu nhiễu: Khi chủ động thay đổi độ mở van xả đáy, bộ điều khiển tự động bù xung PWM trong vòng $45\text{s}$ để kéo mức nước về lại dải dung sai cho phép.
Đổi mới và đóng góp
- Rời rạc hóa giải tích tối ưu cho MCU 8-bit: Thay vì sử dụng các thư viện PID tích hợp sẵn chiếm dụng nhiều bộ nhớ động, nghiên cứu tự phát triển phương trình sai phân truy hồi đại số rút gọn ($\alpha, \beta, \gamma, \Delta$). Giải pháp này giảm $42%$ thời gian thực thi vòng quét timer trên vi điều khiển ATmega328P.
- So sánh định lượng với các giải pháp công nghiệp:
- So với Phao cơ và On-Off: Giảm $100%$ biên độ dao động sóng nước, tăng tuổi thọ động cơ bơm thêm $3.5$ lần nhờ cơ chế PWM thay vì ngắt rơ le liên tục.
- So với PLC S7-1200 công nghiệp: Chi phí phần cứng giảm hơn $85%$ (từ mức $\sim 8.000.000\text{ VNĐ}$ xuống dưới $500.000\text{ VNĐ}$) trong khi vẫn đảm bảo sai số điều khiển trong giới hạn thực nghiệm.
- Mô hình giảng dạy và nghiên cứu thực nghiệm mở: Đồ án cung cấp cầu nối dữ liệu hai chiều giữa Arduino và MATLAB Simulink Scope qua giao tiếp UART chuẩn, tạo ra nền tảng phòng thí nghiệm ảo (Hardware-in-the-Loop) trực quan cho sinh viên chuyên ngành Điều khiển & Tự động hóa.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Hệ thống cấp nước bao hơi nhà máy nhiệt điện: Đảm bảo lượng nước nạp cân bằng chính xác với lưu lượng hơi sinh ra ở tuabin, ngăn chặn sự cố cạn lò gây nổ ống sinh hơi hoặc tràn nước sang cánh tuabin gây xói mòn.
- Hệ thống tháp giải nhiệt và làm mát công nghiệp Cooling Pad: Kiểm soát mực nước tuần hoàn trong máng xối tự động, duy trì độ ẩm và nhiệt độ ổn định cho các nhà xưởng dệt may, linh kiện điện tử diện tích lớn.
+-----------------------------------------------------------+
| LỘ TRÌNH TRIỂN KHAI VÀ MỞ RỘNG DỰ ÁN |
+-----------------------------------------------------------+
| |
| [Giai đoạn 1: Nền tảng] |
| - Mô hình bồn nước đơn SISO (Đã hoàn thành) |
| - Bộ điều khiển PID số trên Arduino Uno R3 |
| |
| | |
| v |
| |
| [Giai đoạn 2: Nâng cấp Công nghiệp & Lọc nhiễu] |
| - Chuyển đổi cảm biến: Siêu âm -> Áp suất thủy tĩnh |
| - Nâng cấp MCU: ESP32 Dual-Core @ 240MHz |
| - Bổ sung bộ lọc Kalman khử nhiễu động học mặt nước |
| |
| | |
| v |
| |
| [Giai đoạn 3: Hệ Đa biến MIMO & Tích hợp IoT] |
| - Hệ 2-3 bồn nước ghép nối tiếp (Coupled Tank System) |
| - Thuật toán Fuzzy-PID tự chỉnh định (Self-tuning) |
| - Dashboard giám sát SCADA / Web App qua MQTT / Node-RED |
| |
+-----------------------------------------------------------+
Phân tích chi phí - Lợi ích (BOM & ROI)
Tổng chi phí cấu kiện phần cứng thực tế:
- Arduino Uno R3: $135.000\text{ VNĐ}$
- Cảm biến siêu âm HC-SR04 + Giá đỡ: $35.000\text{ VNĐ}$
- Bơm mini R385 + Ống dẻo: $65.000\text{ VNĐ}$
- Module cầu H L298N: $45.000\text{ VNĐ}$
- Nguồn tổ ong 12V 5A: $85.000\text{ VNĐ}$
- Màn hình LCD 16x2 + I2C: $40.000\text{ VNĐ}$
- Mica bồn chứa + Khung giá đỡ: $70.000\text{ VNĐ}$
- Tổng kinh phí: $\approx 475.000\text{ VNĐ}$
Với mức chi phí cực thấp, mô hình mang lại hiệu quả đầu tư giáo dục (ROI) vượt trội, có thể nhân rộng hàng loạt trong các phòng thí nghiệm đại học/cao đẳng để thay thế các module nhập khẩu có giá hàng chục triệu đồng.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Cảm biến siêu âm HC-SR04 dễ bị ảnh hưởng bởi bọt nước và hiện tượng phản xạ nhiều góc khi mực nước dâng sát mép trên ($< 3\text{ cm}$).
- Động cơ bơm R385 là loại chổi than mini, hoạt động liên tục sinh nhiệt làm thay đổi nhẹ hệ số tỷ lệ bơm $k$ theo thời gian.
- Hệ thống chỉ thực hiện điều khiển mức nước ở chế độ một chiều (chỉ bơm vào, xả tự nhiên qua van đáy), chưa có van xả điều khiển chủ động để tạo hệ hai chiều cưỡng bức.
Hướng phát triển tiếp theo
- Thay thế cảm biến siêu âm bằng cảm biến áp suất thủy tĩnh hoặc cảm biến điện dung chống nước chuyên dụng chuẩn công nghiệp $4-20\text{mA}$.
- Nâng cấp vi điều khiển lên ESP32 để tích hợp máy chủ Web giám sát từ xa qua giao thức MQTT/WebSocket.
- Phát triển thuật toán điều khiển PID mờ thích nghi (Fuzzy Self-tuning PID) để tự động hiệu chỉnh bộ ba tham số $(K_P, K_I, K_D)$ khi đối tượng thay đổi điểm làm việc.
- Mở rộng sang mô hình hệ bồn nước đôi ghép nối (Coupled Water Tanks) phi tuyến bậc hai.
Đối tượng hưởng lợi
- Sinh viên Kỹ thuật (Tự động hóa, Cơ điện tử, Điện - Điện tử): Tài liệu học tập, mã nguồn mẫu và phương pháp luận chi tiết để hiện thực hóa lý thuyết điều khiển tự động sang mã nhúng phần cứng thực tế.
- Kỹ sư phát triển hệ thống nhúng: Mẫu thiết kế phần cứng điều khiển công suất DC và cấu trúc sai phân PID tối ưu tài nguyên cho các dòng vi điều khiển tầm thấp.
- Doanh nghiệp vừa và nhỏ / Cơ sở sản xuất: Giải pháp tham khảo chi phí thấp để tự động hóa các bồn phụ gia, bể làm mát tuần hoàn mà không cần đầu tư hệ thống PLC đắt đỏ.
- Giảng viên & Nhà nghiên cứu: Bộ giáo trình thực hành trực quan, kết nối trực tiếp với MATLAB Simulink phục vụ công tác giảng dạy môn Kỹ thuật Điều khiển Rời rạc.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để triển khai và chạy mô phỏng dự án là gì?
Phần cứng cần máy tính trang bị CPU Intel Core i3 trở lên, RAM 8GB, cổng kết nối USB-A. Phần mềm yêu cầu cài đặt Arduino IDE phiên bản từ 1.8.x hoặc 2.x và MATLAB/Simulink từ phiên bản R2018b trở lên (yêu cầu cài đặt thêm gói hỗ trợ MATLAB Support Package for Arduino Hardware nếu muốn nạp trực tiếp từ Simulink).
2. Tại sao bộ điều khiển PD lại cho sai số xác lập lớn trong hệ bồn nước?
Hệ bồn nước luôn có dòng xả tự nhiên qua van đáy $q_{out} = C_D a \sqrt{2gh}$. Bộ điều khiển PD chỉ tạo tín hiệu điều khiển tỉ lệ với sai số $e(t)$ và tốc độ biến thiên sai số $de(t)/dt$. Khi mực nước tiến gần điểm đặt, sai số giảm dần làm tín hiệu $u(t)$ từ khâu P giảm xuống cho đến khi lượng nước bơm vào vừa bằng lượng nước xả ra ở một độ cao $h < setpoint$, làm hệ thống dừng lại ở trạng thái cân bằng lệch. Bắt buộc phải có khâu tích phân $I$ ($\int e(t)dt$) để tích lũy sai số theo thời gian và duy trì điện áp bơm bù đắp lượng xả đáy, đưa sai số xác lập về $0$.
3. Làm thế nào để lọc nhiễu tín hiệu đo khi mặt nước bị xao động mạnh?
Có thể áp dụng hai giải pháp kết hợp: Về cơ khí, đặt một ống nhựa hình trụ thông đáy (stilling well) bao quanh chùm sóng của cảm biến siêu âm để triệt tiêu sóng mặt nước; về phần mềm, áp dụng thuật toán lọc số trung bình động (Moving Average Filter) $N = 5$ mẫu hoặc bộ lọc Kalman rời rạc 1 chiều (1D Kalman Filter) trực tiếp trên Arduino trước khi đưa tín hiệu vào khâu trừ sai số.
4. Hệ thống có thể mở rộng để điều khiển tự động van xả đáy không?
Hoàn toàn khả thi. Có thể tích hợp thêm một van servo tuyến tính hoặc động cơ bước kéo van kim ở ngõ xả đáy. Khi đó, tín hiệu điều khiển ngõ ra của MCU sẽ bao gồm 2 kênh PWM: một kênh điều khiển bơm nạp và một kênh điều khiển góc mở van xả, hình thành hệ thống điều khiển bám nhanh hai chiều.
5. Chi phí chế tạo trọn gói mô hình này là bao nhiêu và thời gian lắp ráp mất bao lâu?
Tổng chi phí linh kiện phần cứng chưa tới $500.000\text{ VNĐ}$. Một sinh viên hoặc kỹ sư có kiến thức cơ bản về mạch điện và lập trình C/C++ có thể hoàn thiện gia công cơ khí bồn Mica, hàn nối mạch và nạp code chạy ổn định trong vòng $2 - 3\text{ ngày}$ làm việc.
Kết luận
Đồ án "Mô hình bồn nước đơn sử dụng bộ điều khiển PID" đã giải quyết trọn vẹn bài toán điều khiển mức chất lỏng từ khâu thiết lập mô hình toán học giải tích, rời rạc hóa thuật toán trong miền $Z$, mô phỏng kiểm chứng trên MATLAB Simulink đến hiện thực hóa thành công trên phần cứng thực tế với vi điều khiển ATmega328P.
Kết quả thực nghiệm chứng minh thuật toán PID số với bộ thông số $K_P = 1.0, K_I = 0.0032, K_D = 0.01$ và chu kỳ trích mẫu $T = 0.1\text{s}$ đáp ứng xuất sắc các tiêu chí kỹ thuật: triệt tiêu độ vọt lố ($POT = 0%$), sai số xác lập thực tế duy trì dưới $0.85\text{ cm}$, vận hành ổn định trước các biến động xả tải và truyền thông dữ liệu thời gian thực mượt mà lên máy tính. Mô hình là tài liệu kỹ thuật có giá trị học thuật và tính ứng dụng thực tiễn cao, đóng vai trò nền tảng để phát triển các hệ thống điều khiển đa biến, tích hợp SCADA và điều khiển thông minh trong các quy trình công nghiệp tương lai.