Chống đọng sương trong hộp thiết bị ngoài trời: van thông hơi, gel, sưởi
Vì sao hộp IP65 vẫn có nước và cách chống đọng sương hộp điện: tính điểm sương, chênh áp khi hộp nguội, mô phỏng 30 ngày so sánh van thông hơi, gói hút ẩm, sưởi, cách lắp van.
Hộp đạt IP65, gioăng còn tốt, nhưng sau vài tháng mở ra vẫn thấy nước ở đáy và mạch bị ăn mòn: đó thường là đọng sương, không phải nước mưa lọt thẳng vào. Bài này dùng phép tính điểm sương và một mô phỏng ẩm theo từng phút để so sánh các cách chống đọng sương hộp điện: van thông hơi, gói hút ẩm, sưởi, đóng nắp nơi khô. Kết quả có một điểm dễ hiểu sai: van thông hơi rất nên dùng, nhưng tự nó không ngăn được đọng sương.
1. Vì sao hộp kín vẫn có nước

Nước đọng khi một bề mặt lạnh hơn điểm sương của không khí quanh nó. Khí 30 °C, 80 % có điểm sương 26,2 °C và chứa 24,2 g/m³ hơi nước. Hộp 5 lít đóng nắp trong không khí đó chứa khoảng 0,12 g nước: ít, nhưng đủ để tạo một lớp ẩm trên chân IC.
Đường thứ hai quan trọng không kém. Khi hộp nóng nắng 60 °C gặp mưa rào và nguội còn 30 °C, áp suất trong hộp kín giảm khoảng 91 hPa, tương đương cột nước 0,93 m. Nước đang đọng trên mép gioăng bị hút vào theo chênh áp đó, trong khi phép thử IP65 chỉ phun nước, không tính chênh áp này.
2. Khi nào vỏ hộp lạnh hơn điểm sương

Tính điểm sương bằng công thức Magnus:
γ = ln(RH/100) + 17,62 × T / (243,12 + T); Td = 243,12 × γ / (17,62 − γ)
3. So sánh các cách làm bằng mô phỏng
Script dưới đây tính cân bằng hơi nước trong hộp 5 lít theo từng phút, 30 ngày, ở hai kiểu thời tiết: nóng ẩm có nắng và mưa kéo dài. Nước đọng trên vỏ khi hơi vượt mức bão hòa ở nhiệt độ vỏ, bay hơi lại khi vỏ ấm lên. Một phút được tính là "ướt" khi còn trên 0,5 mg nước.
# PYWORLD.VN - Mô phỏng theo từng phút lượng nước đọng trong hộp thiết bị 5 lít ngoài trời, 30 ngày khí hậu nóng ẩm giả lập
# PYWORLD.VN - So sánh hộp kín tuyệt đối, hộp có khe rò, van thông hơi, van + sưởi, và gói hút ẩm; hàng ngày vỏ hộp lạnh hơn không khí lúc gần sáng
# PYWORLD.VN - Chạy: python mo_phong_dong_suong.py (chỉ cần Python, không cần thư viện ngoài)
import math
THE_TICH = 0.005 # m³
PHUT = 60.0
def ap_bao_hoa(t: float) -> float:
"""Áp suất hơi bão hòa (hPa), công thức Magnus."""
return 6.112 * math.exp(17.62 * t / (243.12 + t))
def am_tuyet_doi(t: float, rh: float) -> float:
"""g/m³ hơi nước ở nhiệt độ t, độ ẩm rh %."""
return 216.7 * ap_bao_hoa(t) * rh / 100 / (273.15 + t)
def diem_suong(t: float, rh: float) -> float:
g = math.log(rh / 100) + 17.62 * t / (243.12 + t)
return 243.12 * g / (17.62 - g)
def thoi_tiet(gio: float) -> tuple[float, float, float]:
"""Trả về nhiệt độ không khí, độ ẩm, nhiệt độ vỏ hộp."""
pha = math.cos(2 * math.pi * (gio - 14) / 24)
t = 28 + 5 * pha
rh = 76 - 18 * pha
# Ban ngày nắng làm vỏ nóng hơn, gần sáng bức xạ làm vỏ lạnh hơn không khí 3 K.
vo = t + (9 * max(0.0, math.sin(2 * math.pi * (gio - 6) / 24)) ** 1.5 if 6 <= gio < 18 else -3 * min(1.0, abs(math.sin(2 * math.pi * (gio - 18) / 24)) + 0.3))
return t, rh, vo
def mua_keo_dai(gio: float) -> tuple[float, float, float]:
"""Mưa nhiều ngày: không có nắng, ẩm cao, vỏ luôn lạnh hơn không khí 1 K."""
t = 26 + 1.5 * math.cos(2 * math.pi * (gio - 14) / 24)
return t, 96.0, t - 1
def chay(ten: str, ro_lhr: float = 0.0, trao_doi_1h: float = 0.0, suoi_k: float = 0.0, hut_am_g: float = 0.0, ngay: int = 30,
khi_hau=thoi_tiet, dong_hop: tuple[float, float] | None = None) -> dict:
t0, rh0, vo0 = khi_hau(0)
# dong_hop: nhiệt độ, độ ẩm của nơi đóng nắp; mặc định đóng ngay ngoài trời.
hoi = am_tuyet_doi(*(dong_hop or (t0, rh0))) * THE_TICH # g hơi nước trong không khí của hộp
nuoc = 0.0 # g nước lỏng đọng trên vỏ
con_hut = hut_am_g # gam gel còn hút được, tỉ lệ 25 % khối lượng
trong = vo0
gio_uot = 0
dau_ngay = []
cuc_dai = 0.0
for phut in range(ngay * 1440):
gio = (phut / 60) % 24
t, rh, vo = khi_hau(gio)
vo_hieu_dung = vo + suoi_k
t_moi = vo_hieu_dung
ngoai = am_tuyet_doi(t, rh) * THE_TICH
# Hít vào khi nguội, đẩy ra khi nóng: lượng khí đổi theo nhiệt độ tuyệt đối.
if ro_lhr:
dv = (t_moi - trong) / (273.15 + trong)
if dv < 0:
hoi += -dv * ngoai
else:
hoi -= dv * hoi
# Thở qua khe nhỏ và khuếch tán rất chậm.
if ro_lhr:
hoi += (ngoai - hoi) * ro_lhr / 60
if trao_doi_1h:
hoi += (ngoai - hoi) * (1 - math.exp(-trao_doi_1h / 60))
trong = t_moi
# Gel hút ẩm: giữ độ ẩm trong hộp gần 40 % khi còn sức.
if con_hut > 0:
muc = am_tuyet_doi(t_moi, 40) * THE_TICH
lay = max(0.0, hoi - muc)
lay = min(lay, con_hut * 0.25)
hoi -= lay
con_hut -= lay / 0.25
bh = am_tuyet_doi(vo_hieu_dung, 100) * THE_TICH
if hoi > bh:
nuoc += hoi - bh
hoi = bh
elif nuoc > 0:
bay = min(nuoc, (bh - hoi) * 0.2) # bay hơi chậm hơn đọng
nuoc -= bay
hoi += bay
if nuoc > 0.0005:
gio_uot += 1
cuc_dai = max(cuc_dai, nuoc)
if phut % 1440 == 1439:
dau_ngay.append(nuoc)
return {"ten": ten, "gio_uot_ngay": gio_uot / 60 / ngay, "nuoc_cuoi_g": nuoc, "cuc_dai_g": cuc_dai, "gel_con_g": con_hut, "theo_ngay": dau_ngay}
TRUONG_HOP = [
("Kín, đóng ngoài trời", {}),
("Kín, đóng phòng lạnh", {"dong_hop": (25, 50)}),
("Khe rò ở gioăng", {"ro_lhr": 0.05}),
("Lỗ hở tự do", {"trao_doi_1h": 2.0}),
("Van thông hơi", {"trao_doi_1h": 0.5}),
("Van + sưởi 5 K", {"trao_doi_1h": 0.5, "suoi_k": 5}),
("Kín + 10 g gel", {"hut_am_g": 10}),
("Khe rò + 10 g gel", {"ro_lhr": 0.05, "hut_am_g": 10}),
]
if __name__ == "__main__":
print("Bang diem suong")
for t, rh in ((25, 60), (25, 80), (30, 60), (30, 80), (30, 95), (35, 70)):
print(f" {t} C {rh} %: diem suong {diem_suong(t, rh):.1f} C, {am_tuyet_doi(t, rh):.1f} g/m3")
print("Khi tho khi nhiet do doi 30 K: the tich khi vao ra", round(30 / 303 * 100, 1), "%")
for ten_kh, kh in (("Nang am, 30 ngay", thoi_tiet), ("Mua keo dai, 30 ngay", mua_keo_dai)):
print(ten_kh)
print(f"{'Truong hop':<24}{'gio uot/ngay':>13}{'nuoc cuoi g':>13}{'cuc dai g':>11}{'gel con g':>11}")
for ten, ts in TRUONG_HOP:
k = chay(ten, khi_hau=kh, **ts)
print(f"{k['ten']:<24}{k['gio_uot_ngay']:>13.1f}{k['nuoc_cuoi_g']:>13.3f}{k['cuc_dai_g']:>11.3f}{k['gel_con_g']:>11.2f}")
print("Chenh ap khi hop kin nguoi 30 K:", round(1013 * 30 / 333), "hPa, tuong duong cot nuoc", round(1013 * 30 / 333 / 98.1, 2), "m")

- Nơi đóng nắp có tác dụng lớn nhất với hộp thực sự kín: đóng trong phòng máy lạnh 25 °C, 50 %, điểm sương còn khoảng 14 °C, hộp không ướt ngày nào.
- Van thông hơi một mình không làm khô. Thời tiết nóng ẩm, hộp ướt 8,7 giờ mỗi ngày, nhiều hơn hộp kín. Mưa dài: gần cả ngày, tích tới 0,645 g.
- Van kèm sưởi nhẹ cho kết quả tốt nhất trong các hộp có trao đổi khí: bề mặt ấm hơn 5 K là đủ trong mô phỏng này.
- Gói hút ẩm tốt khi hộp kín: 10 g gel gần như chưa dùng sau 30 ngày. Nếu có khe rò, gel hết sức trong khoảng một tháng mưa.
Vậy van thông hơi dùng để làm gì? Để chặn đường thứ hai: áp suất trong và ngoài luôn bằng nhau, gioăng không bị hút nước vào, nắp không bị phồng ép. Đây là lý do nên lắp van cho hộp lớn hoặc hộp đổi nhiệt mạnh, kết hợp cách khác để giảm đọng sương.
4. Chọn và lắp van thông hơi
- Van có màng ePTFE cho khí đi qua, chặn nước lỏng. Chọn van có cấp IP không thấp hơn hộp, ren theo lỗ đã khoan, thường M12.
- Gắn ở thành bên phần thấp hoặc đáy, không gắn trên đỉnh, tránh hướng tia nước trực tiếp.
- Không sơn hay phủ keo lên màng. Bụi nhiều thì thêm mái che, màng bị bít sẽ mất tác dụng.
- Không thay van bằng một lỗ khoan trần: côn trùng, bụi và nước vào theo.
5. Chọn cách làm theo tình huống

- Tận dụng nhiệt của thiết bị: nguồn và mạch tỏa 3–5 W chạy liên tục đã làm bề mặt trong ấm hơn. Hộp nhựa 5 lít, diện tích khoảng 0,18 m², hệ số truyền nhiệt khoảng 5,5 W/m²·K, cần cỡ 5 W để ấm thêm 5 K. Thiết bị ngủ sâu dùng pin không có nguồn nhiệt này.
- Bảo vệ lớp cuối: mạch có lớp phủ vẫn chịu được màng ẩm mỏng, xem bài cùng cụm về conformal coating.
- Đặt mạch cách vỏ, không đặt ngay dưới mặt nắp. Dây vào từ dưới lên, có vòng nhỏ giọt.
- Theo dõi: một cảm biến nhiệt độ, độ ẩm trong hộp cho biết sớm khi nào độ ẩm tăng cao, trước khi mạch hỏng.
Với cách chọn cấp IP và cách đưa dây vào hộp, xem Chuẩn IP67 là gì và đưa ESP32 vào hộp.
6. Xem thêm
- Bài cùng cụm về hộp điện chống nước và ốc siết cáp.
- Bài cùng cụm về đổ keo bảo vệ mạch và conformal coating.
Xem thêm