Data logger là gì: chọn data logger quan trắc theo số kênh, độ phân giải, nguồn pin và chống sét

Data logger là gì, gồm những gì; các loại ngõ vào 4–20 mA, mV, nhiệt độ, dây rung, xung, RS-485; cách tính độ phân giải ADC, bộ nhớ, pin, tấm pin mặt trời; chống sét, chống nước ngoài trời.

Data logger là gì? Data logger (bộ ghi dữ liệu) là thiết bị tự đo các cảm biến theo chu kỳ và ghi lại số liệu kèm thời gian, chạy một mình nhiều ngày tới nhiều năm: đo nhiệt độ kho lạnh, mực nước giếng quan trắc, áp lực đất, biến dạng công trình, lượng mưa, điện năng. Bài này giải thích cấu tạo của một data logger, các loại ngõ vào cảm biến, cách tính độ phân giải ADC, dung lượng bộ nhớ, thời gian chạy pin, tấm pin mặt trời, và các biện pháp chống sét, chống nước khi đặt ngoài trời, kèm script Python tính nhanh.

1. Data logger gồm những gì

Sơ đồ khối data logger: cảm biến 4–20 mA nhiệt độ xung, mạch bảo vệ TVS cách ly, ADC 16–24 bit, vi điều khiển có đồng hồ RTC, bộ nhớ thẻ SD flash, truyền 4G LoRa RS-485, nguồn pin sạc và tấm pin mặt trời
Đo, ghi, gửi, và tự lo nguồn.

Khác với một mạch đo thông thường, data logger phải tự chạy lâu không có người: ngủ phần lớn thời gian để tiết kiệm điện, thức dậy đúng giờ (nhờ đồng hồ thời gian thực RTC), cấp nguồn cho cảm biến, đo, ghi vào bộ nhớ không mất khi mất điện, thỉnh thoảng gửi số liệu về máy chủ. Temperature data logger (bộ ghi nhiệt độ) là loại đơn giản nhất: một hoặc vài cảm biến nhiệt, pin, bộ nhớ, thường dùng cho kho lạnh, xe chở vắc-xin, thực phẩm.

2. Các loại ngõ vào

Bảng các loại ngõ vào data logger: dòng 4–20 mA cho áp suất mực nước, điện áp 0–10 V và mV cho cầu điện trở load cell, nhiệt độ cặp nhiệt RTD NTC, dây rung cho áp lực đất biến dạng, xung đếm cho đo mưa lưu lượng, số RS-485 Modbus SDI-12
Đếm đủ kênh theo từng loại, dư vài kênh để mở rộng.

Logger thương mại ghi rõ số kênh từng loại; logger tự làm thì phải có mạch tương ứng cho từng loại: điện trở đo cho 4–20 mA (xem bài vòng dòng 4–20 mA), đầu vào vi sai cho tín hiệu mV, mạch kích riêng cho cảm biến dây rung. Cảm biến số RS-485 Modbus ngày càng phổ biến vì chống nhiễu tốt và một đôi dây nối được nhiều cảm biến.

3. Tính độ phân giải, bộ nhớ, pin

Bảng tính cho trạm 8 kênh: 4–20 mA cần 16 bit, nhiệt độ cần 13 bit, 1 năm đo 10 phút một lần cần 2,1 MB, tiêu thụ 210 mAh mỗi ngày, 2 pin 18650 chạy 23 ngày không nắng, tấm pin mặt trời 2 W
Ví dụ trạm 8 kênh ở công trường.
  • Độ phân giải: số bit cần ≈ log₂(khoảng đo ÷ bước nhỏ nhất muốn thấy), cộng thêm vài bit vì nhiễu làm mất các bit thấp. ADC 12 bit của vi điều khiển chỉ đủ cho đo thô; đo 4–20 mA, cầu điện trở nên dùng ADC 16 bit như ADS1115 hoặc 24 bit.
  • Bộ nhớ: ghi dạng số nhị phân rất ít tốn chỗ; 8 kênh, 10 phút một lần cả năm chỉ khoảng 2 MB. Ghi dạng chữ CSV tốn gấp vài lần nhưng vẫn nhỏ so với thẻ nhớ.
  • Pin: phần tốn nhất thường là cấp nguồn cho cảm biến (vòng 4–20 mA ở 24 V) và gửi qua 4G, không phải vi điều khiển. Chỉ bật nguồn cảm biến vài giây lúc đo, gửi gom theo giờ thay vì mỗi lần đo.
  • Tấm pin mặt trời: năng lượng mỗi ngày chia cho số giờ nắng tương đương (miền Nam khoảng 4–5, miền Bắc mùa đông thấp hơn nhiều) và hệ số tổn hao, rồi nhân dư nhiều lần cho những ngày mưa liên tiếp.
# PYWORLD.VN - Tính nhanh khi chọn data logger quan trắc: độ phân giải ADC cần, dung lượng bộ nhớ, thời gian chạy pin, công suất tấm pin mặt trời
# PYWORLD.VN - Ví dụ: 8 kênh (4–20 mA, nhiệt độ), đo 10 phút một lần, gửi 4G mỗi giờ, chạy pin có sạc mặt trời ở công trường
# PYWORLD.VN - Chạy: python chon_data_logger.py      (sửa các số trong phần __main__ theo hệ của bạn)
import math


def bit_can(khoang_do: float, do_phan_giai_can: float, du_phong_nhieu: int = 2) -> int:
    """Số bit ADC cần để thấy được do_phan_giai_can trên khoảng đo; cộng thêm vài bit vì nhiễu làm mất bit thấp."""
    return math.ceil(math.log2(khoang_do / do_phan_giai_can)) + du_phong_nhieu


def bo_nho_mb(so_kenh: int, chu_ky_phut: float, so_ngay: float, byte_moi_kenh: int = 4, byte_thoi_gian: int = 8) -> float:
    so_lan = so_ngay * 24 * 60 / chu_ky_phut
    return so_lan * (so_kenh * byte_moi_kenh + byte_thoi_gian) / 1e6


def nang_luong_ngay_mah(ngu_ma: float, do_ma: float, t_do_s: float, chu_ky_do_s: float, gui_ma: float, t_gui_s: float, chu_ky_gui_s: float) -> float:
    """Dung lượng tiêu thụ mỗi ngày (mAh): ngủ phần lớn thời gian, thức dậy đo, thỉnh thoảng gửi."""
    ngay = 86400
    t_do = ngay / chu_ky_do_s * t_do_s
    t_gui = ngay / chu_ky_gui_s * t_gui_s
    return (ngu_ma * (ngay - t_do - t_gui) + do_ma * t_do + gui_ma * t_gui) / 3600


def tam_pin_w(mah_ngay: float, v_pin: float = 3.7, gio_nang: float = 3.5, he_so: float = 0.6) -> float:
    """Công suất tấm pin mặt trời: năng lượng ngày ÷ (giờ nắng tương đương × hệ số tổn hao: bộ sạc, bụi, góc nghiêng, nhiệt)."""
    return mah_ngay / 1000 * v_pin / (gio_nang * he_so)


if __name__ == "__main__":
    print(f"4-20 mA qua 150 Ohm (0,6-3 V), muon thay 0,01 % thang: can {bit_can(2.4, 2.4 * 1e-4)} bit")
    print(f"Nhiet do -20..80 C, muon thay 0,05 C: can {bit_can(100, 0.05)} bit")
    print(f"8 kenh, 10 phut/lan, 1 nam: {bo_nho_mb(8, 10, 365):.1f} MB")
    # lúc đo: ESP32 80 mA + 8 cảm biến 4–20 mA (tối đa 20 mA ở 24 V) qua mạch tăng áp hiệu suất 80 % từ pin 3,7 V
    dong_cam_bien = 8 * 0.020 * 24 / (3.7 * 0.8) * 1000
    mah = nang_luong_ngay_mah(ngu_ma=0.15, do_ma=80 + dong_cam_bien, t_do_s=3, chu_ky_do_s=600, gui_ma=250, t_gui_s=25, chu_ky_gui_s=3600)
    print(f"Luc do: {80 + dong_cam_bien:.0f} mA trong 3 s (cam bien chiem {dong_cam_bien:.0f} mA)")
    print(f"Tieu thu: {mah:.0f} mAh/ngay -> pin 18650 x2 song song (6000 mAh, dung 80 %): {6000 * 0.8 / mah:.0f} ngay khong co nang")
    w = tam_pin_w(mah)
    print(f"Tam pin mat troi toi thieu {w:.2f} W; nhan 5 lan cho ngay mua, mua dong: {math.ceil(w * 5)} W")

ESP32 ngủ sâu chỉ tốn khoảng vài µA tới vài chục µA tùy mạch (mạch DevKit có đèn, chip USB thì tốn hơn nhiều); xem bài Deep Sleep trên ESP32.

4. Chống sét và bảo vệ ngoài trời

Bảng chống sét và bảo vệ data logger ngoài trời: TVS hoặc ống phóng khí ở từng đầu vào, thiết bị chống sét lan truyền ở tủ nguồn, cách ly hoặc đo vi sai chống vòng đất, hộp IP65, che nắng thông gió, bộ nhớ không mất và RTC giữ giờ
Sét, nước, nhiệt là nguyên nhân hỏng chính.
  • Dây cảm biến dài hàng chục mét ở công trường, bờ kè là "ăng-ten" bắt xung sét. Mỗi đầu vào cần linh kiện kẹp xung (TVS, ống phóng khí) nối về một điểm đất chung bằng dây ngắn; cổng nguồn 220 V cần thiết bị chống sét lan truyền.
  • Nhiều cảm biến ở xa nhau thì đất mỗi nơi một khác: cách ly ngõ vào hoặc đo vi sai để tránh vòng đất.
  • Hộp IP65 trở lên, dây vào qua ống luồn và đầu siết cáp; có lỗ thông hơi chống đọng nước. Hộp đen phơi nắng có thể nóng trên 60 °C: pin Li-ion không được sạc khi quá nóng.

5. Mua hay tự làm

Quan trắc có yêu cầu pháp lý (môi trường, công trình theo hợp đồng) thường phải dùng thiết bị có chứng nhận, hiệu chuẩn. Đo phục vụ nghiên cứu, theo dõi nội bộ, nông nghiệp thì tự làm bằng ESP32 vừa rẻ vừa linh hoạt: ESP32 làm bộ điều khiển, ADS1115 hoặc ADC 24 bit làm phần đo, module thẻ nhớ Micro SD làm bộ nhớ (xem bài dùng thẻ Micro SD với ESP32), pin 18650 kèm mạch sạc mặt trời.

Mạch dùng trong bài: ESP32 DevKit V1 30 chân.

Bài cùng cụm chủ đề: tự làm data logger nhiều kênh với ESP32 và ADC 24 bit ADS1256; đo nhiệt độ bê tông khối lớn; vòng đất và cáp chống nhiễu.


Tin tức liên quan

HTTPS trên ESP32: nhúng chứng chỉ gốc đúng cách và vì sao setInsecure() nguy hiểm
HTTPS trên ESP32: nhúng chứng chỉ gốc đúng cách và vì sao setInsecure() nguy hiểm

HTTPS bảo vệ được gì, chuỗi tin cậy của chứng chỉ, nhúng chứng chỉ gốc ISRG Root X1 vào ESP32, vì sao setInsecure() mở đường cho tấn công xen giữa, chương trình thử ba trường hợp.

Cảm biến pH: cấu tạo điện cực thủy tinh, nguyên lý Nernst, cách chế tạo và đo pH bằng ESP32
Cảm biến pH: cấu tạo điện cực thủy tinh, nguyên lý Nernst, cách chế tạo và đo pH bằng ESP32

Cảm biến pH hoạt động thế nào: thang pH, điện cực thủy tinh kết hợp, phương trình Nernst và bù nhiệt độ, hiệu chuẩn, bảo quản, cách chế tạo điện cực và đo pH bằng module với ESP32.

Thuật toán qua trò chơi cho trẻ: đoán số, xếp hàng, tìm đường ngắn nhất (kiểu đề Bebras)
Thuật toán qua trò chơi cho trẻ: đoán số, xếp hàng, tìm đường ngắn nhất (kiểu đề Bebras)

Ba trò chơi giúp trẻ hiểu thuật toán: đoán số bằng chia đôi, xếp hàng bằng sắp xếp nổi bọt, tìm đường ngắn nhất kiểu Dijkstra, kèm câu đố kiểu Bebras có lời giải từng bước.

Chu kỳ hiệu chuẩn và kiểm tra giữa kỳ: ai quyết định, dùng lịch sử độ trôi và biểu đồ kiểm soát
Chu kỳ hiệu chuẩn và kiểm tra giữa kỳ: ai quyết định, dùng lịch sử độ trôi và biểu đồ kiểm soát

Chu kỳ hiệu chuẩn do ai quyết định, các yếu tố cần xét, dùng lịch sử độ trôi, phương pháp theo ILAC-G24/OIML D 10, kiểm tra giữa kỳ bằng biểu đồ kiểm soát cho lực, chuyển vị, áp suất, rung.

Ampe kìm là gì: đo dòng AC, DC, dòng rò, kẹp đúng dây, chọn loại và tự làm với SCT-013, ESP32
Ampe kìm là gì: đo dòng AC, DC, dòng rò, kẹp đúng dây, chọn loại và tự làm với SCT-013, ESP32

Ampe kìm đo dòng không cần cắt dây: nguyên lý biến dòng và cảm biến Hall, kẹp một dây hay dây đôi, đo dòng rò, chọn ampe kìm AC, AC/DC, True RMS; tự đo dòng AC bằng SCT-013 và ESP32.

Chuẩn lực: máy tải trọng chết, đòn bẩy, khuếch đại thủy lực, máy so sánh và gia tốc trọng trường
Chuẩn lực: máy tải trọng chết, đòn bẩy, khuếch đại thủy lực, máy so sánh và gia tốc trọng trường

Bốn kiểu máy chuẩn lực: tải trọng chết, đòn bẩy, khuếch đại thủy lực, máy so sánh; cách tính lực từ quả cân, vì sao g tại Việt Nam lệch 0,25 % và chuỗi liên kết chuẩn lực.

ESP32 và ESP8266 khác nhau thế nào: khi nào chọn Wemos D1 R2, mạch ESP8266 có OLED hay ESP32
ESP32 và ESP8266 khác nhau thế nào: khi nào chọn Wemos D1 R2, mạch ESP8266 có OLED hay ESP32

So sánh ESP32 và ESP8266: tốc độ, RAM, Bluetooth, số chân, ADC, cách lập trình bằng Arduino IDE và khi nào nên chọn Wemos D1 R2, mạch ESP8266 có OLED hay mạch ESP32.

An toàn pin lithium-ion: vì sao cháy nổ, cách sạc, bảo quản, mang lên máy bay và xử lý sự cố
An toàn pin lithium-ion: vì sao cháy nổ, cách sạc, bảo quản, mang lên máy bay và xử lý sự cố

An toàn pin lithium-ion: thoát nhiệt là gì, nguyên nhân cháy nổ thường gặp, sạc và bảo quản đúng cách, dấu hiệu pin hỏng, xử lý khi pin bốc cháy, mang pin lên máy bay theo Wh, script kiểm tra pin.


Bình luận
Đã thêm vào giỏ hàng