Lesson 08 — Dự án tổng hợp: Hệ điều khiển nhiệt độ tự động

Mô phỏng tương tác toàn hệ nhúng: cảm biến → ADC → MCU → actuator → hiển thị. Thay đổi nhiệt độ môi trường và quan sát hệ phản ứng theo logic hysteresis.

1. Sơ đồ khối hệ thống (Sense → Process → Act)

Luồng dữ liệu trong hệ được chiếu sáng theo trạng thái hiện tại. Bấm Chạy mô phỏng để xem hệ thống hoạt động tự động.

CẢM BIẾN Thermistor NTC 10kΩ 37.5°C ADC 10-bit V_A0 → số 383 MCU Arduino Uno Hysteresis logic OK SP=37.5°C ±0.5 MOSFET+Quạt IRLZ44N, 12V TẮT Relay+Sưởi 5V relay, 220V AC TẮT OLED I2C 128×64 vòng phản hồi (feedback loop)

2. Bảng điều khiển tương tác

Kéo thanh để thay đổi nhiệt độ môi trường (25–45 °C)
Hysteresis nhỏ → nhạy hơn nhưng dễ chattering
T: 37.5 C
Set:37.5C Hys:0.5
IN RANGE
|#########|
LED đỏ (HEATING)
LED xanh (COOLING)
Cảnh báo
IN RANGE
ADC: 383 V_A0: 1.875 V R_NTC: 5993 Ω Tính toán: B-param Steinhart-Hart

3. Đồ thị nhiệt độ theo thời gian

Đồ thị hiển thị nhiệt độ dao động quanh setpoint với hysteresis. Vùng xanh lá = trong ngưỡng cho phép, chứng minh hysteresis ngăn chattering.

Nhiệt độ thực
Setpoint
Vùng trễ (hysteresis band)
Đang sưởi
Đang làm mát
Chạy mô phỏng tự động để thấy nhiệt độ dao động và hysteresis hoạt động.

4. Phân tích Hysteresis — vì sao tránh được chattering

Hình dưới minh họa hai trường hợp: không có hysteresis (ON/OFF đơn giản) so với có hysteresis. Quan sát số lần relay đóng/ngắt.

BANG-BANG (không hysteresis) SP Relay: Số lần đóng/ngắt: ... HYSTERESIS (bài này dùng) +h -h SP Relay: Số lần đóng/ngắt: ...
Kết luận: Bang-bang đóng/ngắt relay rất nhiều lần khi nhiệt độ dao động nhỏ quanh setpoint. Hysteresis tạo "vùng im lặng" rộng = h °C mỗi phía — relay chỉ đóng/ngắt khi nhiệt độ thực sự vượt ngưỡng.

5. Máy tính ADC — Thermistor NTC

Nhập giá trị ADC (0–1023) đọc được từ Arduino, hệ tính ngay ra điện áp V_A0, điện trở R_NTC và nhiệt độ °C.

Chỉnh slider ADC để xem kết quả...
Nhiệt độ (°C) R_NTC (Ω) V_A0 (V) ADC (0–1023) Ghi chú