Lab.Vatli365
← Cấp độ 4 · Cảm biến có giao thức riêng

Bài 22 · Vật lí · Hóa học · Sinh học

Đo nhiệt độ môi trường
cảm biến đầu tiên đáng tin cậy

DS18B20 là cảm biến tôi khuyên mọi thầy cô bắt đầu. Nó rẻ, chống nước, một dây đi được vài chục mét, và quan trọng nhất — nó trả về thẳng số đo bằng độ C, không bắt bạn phải tự chuyển đổi gì cả.

Thời lượng
1 tiết, hoặc 2 tiết nếu làm cả phần hiệu chuẩn
Chi phí một nhóm
≈ 150 nghìn đồng
Cấp độ
4 / 12
Trạng thái
Đã chạy thật với học sinh
01

Mục tiêu và yêu cầu cần đạt

Nhiệt độ là đại lượng dễ đo nhất mà lại dùng được ở nhiều môn nhất. Một cảm biến DS18B20 phục vụ được bài nhiệt học của Vật lí, bài enthalpy của Hóa, bài hô hấp của Sinh, và bài vi khí hậu của Công nghệ.

Sau bài này học sinh làm được

  • Nối và đọc được cảm biến DS18B20 qua giao thức 1-Wire.
  • Giải thích được vì sao cảm biến số đáng tin hơn nhiệt kế thủy ngân trong việc theo dõi quá trình.
  • Hiệu chuẩn cảm biến bằng hai mốc nhiệt độ đã biết trước.
  • Xuất số liệu thành tệp CSV và vẽ được đường nhiệt độ theo thời gian.
  • Chỉ ra được vị trí đặt đầu dò ảnh hưởng tới kết quả như thế nào.
Gắn với chương trình
  • Vật lí 12 — Vật lí nhiệt: nội năng, nhiệt lượng, sự truyền nhiệt; thực hành đo nhiệt dung riêng.
  • Hóa học 10 — Năng lượng hóa học: thực hiện thí nghiệm xác định biến thiên enthalpy của phản ứng.
  • Sinh học 10 và 11 — ảnh hưởng của nhiệt độ tới hoạt tính enzyme; hô hấp tỏa nhiệt ở hạt nảy mầm.
  • Công nghệ 11 — vi khí hậu chuồng nuôi.

Trích nguyên văn yêu cầu cần đạt từ chương trình môn học trước khi đưa vào kế hoạch bài dạy.

02

Lí thuyết

Nhiệt kế thủy ngân cho điểm rời rạc, không cho quá trình

Nó đo rất tốt một giá trị tại một thời điểm. Nhưng phần lớn hiện tượng nhiệt ở phổ thông là một quá trình: nước nóng dần, đá tan, phản ứng tỏa nhiệt rồi nguội. Muốn thấy quá trình thì cần đường liên tục, không phải ba chấm điểm.

DS18B20 đọc mỗi giây một lần suốt hai mươi phút mà không ai phải ngồi canh.

DS18B20 là cảm biến SỐ

Khác hẳn nhiệt điện trở. Trong vỏ thép nhỏ có cả một con chip: bộ cảm nhiệt, bộ chuyển đổi sang số, hệ số hiệu chuẩn nạp sẵn từ nhà máy, và số hiệu riêng 64 bit. Nó không đưa một điện áp để ta tự đoán — nó đưa thẳng 26.44 và bảo: đây là độ C.

Vài con số cần nhớ
  • Dải đo: −55 đến +125 °C.
  • Sai số nhà máy: ±0,5 °C trong −10 đến +85 °C.
  • Độ phân giải: 12 bit → bước 0,0625 °C.
  • Thời gian đo: 750 ms ở 12 bit — con số hay bị quên nhất.
  • Chiều dài dây: vài chục mét, đặt cảm biến ngoài vườn mà bo vẫn trong phòng.

1-Wire — một dây vừa nhận lệnh vừa trả lời

Hai bên cùng kéo dây xuống mức thấp theo những khoảng thời gian có quy ước, bên kia đọc độ dài các khoảng ấy.

Để dây tự nhả về mức cao, phải có điện trở 4,7 kΩ nối lên 3,3 V. Thiếu nó thì dây thả nổi và chip đọc ra rác — chi tiết mà người mới nào cũng quên đúng một lần.

Nhiều cảm biến chung một dây

Mỗi con có số hiệu 64 bit khắc sẵn, không con nào trùng. Mắc song song năm con lên cùng một dây, chương trình vẫn gọi đúng từng con.

Bài nhiệt dung riêng cần đo nhiệt độ nước và nhiệt độ phòng cùng lúc mà chỉ tốn một chân GPIO.

03

Linh kiện

Linh kiệnMô tả, lưu ý khi muaSố lượng · giá
ESP32 DevKit V1Bo 30 chân1 · 90–150k
DS18B20 đầu dò chống nướcLoại dây thép bọc, dài 1 m. Ba dây: đỏ, đen, vàng1–2 · 15–35k
Điện trở 4,7 kΩBắt buộc, kéo dây dữ liệu lên 3V31 · 200đ
Breadboard và dây cắm1 bộ · 30k
Cốc thủy tinh chịu nhiệtDùng cho phần hiệu chuẩn2
Nước đáCàng nhiều đá càng tốtmột bát
04

Lắp mạch và sơ đồ nối dây

Đỏ · nguồn dương Đen · GND Vàng · SCL Xanh dương · SDA Trắng · tín hiệu Xanh lá · 1-Wire
KhốiNối dâyNguồn
DS18B20Dây đỏ → 3V3 · dây đen → GND · dây vàng → GPIO43,3 V
Điện trở kéo lênNối giữa dây vàng (GPIO4) và 3V3—
B11.1 Ảnh thực

Mạch trên breadboard: ESP32, đầu dò DS18B20, con điện trở 4,7 kΩ cắm giữa hàng GPIO4 và hàng 3V3. Chụp chếch 45°, thấy rõ con điện trở nằm ở đâu.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B11.2 Ảnh thực

Cận cảnh ba đầu dây của DS18B20 đã tuốt vỏ, kèm nhãn màu. Nhiều loại có màu dây khác nhau — chụp đúng loại thầy cô đang dùng.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B11.3 Ảnh thực

Cốc nước đá đang tan có que khuấy và đầu dò nhúng giữa cốc, màn hình bên cạnh hiện số gần 0 °C. Đây là ảnh minh chứng cho phần hiệu chuẩn.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có
B11.4 Ảnh thực

Ba đầu dò đặt ba vị trí trong cùng một cốc nước nóng: sát đáy, sát thành, giữa cốc. Màn hình hiện ba số khác nhau.

Khung giữ chỗ — thay bằng ảnh chụp thật khi có

Bốn bước

  1. Cắm ba dây của DS18B20 lên breadboard: đỏ vào hàng 3V3, đen vào hàng GND, vàng vào một hàng trống.
  2. Cắm điện trở 4,7 kΩ nối hàng dây vàng với hàng 3V3.
  3. Nối hàng dây vàng sang GPIO4 của ESP32.
  4. Kiểm tra lại một lần nữa trước khi cắm USB — đặc biệt là đừng đảo đỏ với đen.
Màu dây không phải lúc nào cũng giống nhau

Phần lớn đầu dò DS18B20 dùng đỏ–đen–vàng. Nhưng có lô dùng đỏ–đen–trắng, thậm chí có lô dùng xanh cho GND.

Nếu nghi ngờ, đo bằng đồng hồ vạn năng ở thang thông mạch: hai dây nguồn thường nối tới vỏ thép hoặc có điện trở rất nhỏ giữa chúng. Hoặc đơn giản hơn: mua loại đã hàn sẵn module có ghi chú chân.

Cắm ngược đỏ với đen thì cảm biến nóng lên rất nhanh trong vài giây rồi hỏng. Nếu chạm tay thấy đầu dò ấm bất thường, rút điện ngay.

Loại module đã hàn sẵn điện trở

Trên thị trường có loại DS18B20 bán kèm một bo mạch nhỏ xíu ở đầu dây, trên đó đã hàn sẵn con điện trở 4,7 kΩ. Đắt hơn mươi nghìn.

Với lớp học, tôi khuyên mua loại này. Bớt đi một con điện trở là bớt đi một chỗ học sinh cắm sai, và bớt một câu hỏi phải trả lời tám lần mỗi buổi. Còn khi dạy riêng về 1-Wire thì mới dùng loại dây trần để giải thích vai trò của điện trở kéo lên.

05

Mã nguồn

Mã đầy đủ tại kho GitHub, thư mục cap-2/bai-11-nhiet-do/. Có kèm bản ghi ra thẻ SD và bản gửi lên web.

Chương trình chính — đọc và in ra dạng CSV
# ------------------------------------------------------------
#  Bai 22 - Doc nhiet do DS18B20 va ghi thanh bang CSV
#  Phan cung: DS18B20 DATA -> GPIO4, dien tro 4,7k keo len 3V3
# ------------------------------------------------------------
from machine import Pin
import onewire, ds18x20, time

# ===== CAU HINH =====
CHAN_DATA = 4
CHU_KY_MS = 1000        # 1 giay mot lan doc
# ===== het phan cau hinh =====

bus = onewire.OneWire(Pin(CHAN_DATA))
cam_bien = ds18x20.DS18X20(bus)

dia_chi = cam_bien.scan()
if not dia_chi:
    raise RuntimeError("Khong thay DS18B20. Kiem tra dien tro 4,7k keo len.")
print("Tim thay", len(dia_chi), "cam bien tren cung mot day.")

print("t_s,T_degC")          # dong tieu de CSV
bat_dau = time.ticks_ms()

while True:
    cam_bien.convert_temp()
    time.sleep_ms(750)                     # DS18B20 can 750 ms de do xong
    t = time.ticks_diff(time.ticks_ms(), bat_dau) / 1000
    for dc in dia_chi:
        nhiet = cam_bien.read_temp(dc)
        print("{:.1f},{:.2f}".format(t, nhiet))
    time.sleep_ms(CHU_KY_MS)

Kết quả trên màn hình:

Tim thay 1 cam bien tren cung mot day.
t_s,T_degC
1.8,26.44
3.6,26.50
5.4,26.62
7.2,26.75
9.0,26.94

Để ý dòng đầu tiên là tiêu đề CSV có kèm đơn vị. Học sinh chỉ cần bôi đen toàn bộ cửa sổ, dán vào Google Sheets, chọn tách cột theo dấu phẩy là có ngay bảng số liệu để vẽ đồ thị.

Chương trình hiệu chuẩn hai điểm
# So sanh voi hai moc nhiet do da biet truoc
# - Nuoc da dang tan (hon hop nuoc + da, co khuay): 0,0 do C
# - Nuoc dang soi manh o do cao muc bien:          100,0 do C
#   (o Da Lat 1500 m thi chi khoang 95 do C - hoi hoc sinh vi sao)

from machine import Pin
import onewire, ds18x20, time

cb = ds18x20.DS18X20(onewire.OneWire(Pin(4)))
dc = cb.scan()[0]

def do_trung_binh(n=20):
    tong = 0
    for _ in range(n):
        cb.convert_temp()
        time.sleep_ms(750)
        tong += cb.read_temp(dc)
    return tong / n

input("Nhung dau do vao nuoc da dang tan, khuay deu, roi Enter...")
t0 = do_trung_binh()
print("Doc duoc o diem bang: {:.2f} do C  (lech {:+.2f})".format(t0, t0 - 0.0))

input("Nhung vao nuoc dang soi, roi Enter...")
t100 = do_trung_binh()
print("Doc duoc o diem soi : {:.2f} do C".format(t100))

print("Do lech goc  =", round(t0, 2), "do C")
print("Do doc       =", round((t100 - t0) / 100, 4))
06

Hiệu chuẩn và kiểm thử

Hai mốc nhiệt độ có sẵn trong mọi phòng học

Bạn không cần nhiệt kế chuẩn đắt tiền. Thiên nhiên đã cho sẵn hai mốc rất chính xác:

  • Nước đá đang tan: 0,0 °C. Điều kiện là phải có cả đá lẫn nước, và phải khuấy. Chỉ nước lạnh thôi thì không phải 0 °C; chỉ đá thôi cũng không phải.
  • Nước đang sôi mạnh: 100,0 °C ở ngang mực nước biển.
Một câu hỏi hay cho học sinh khá

Ở Đà Lạt cao 1500 m, nước sôi ở khoảng 95 °C chứ không phải 100 °C. Vậy nếu hiệu chuẩn cảm biến ở Đà Lạt mà vẫn lấy mốc 100 thì sai số hệ thống là bao nhiêu, và nó ảnh hưởng thế nào tới bài đo nhiệt dung riêng?

Đây là chỗ nối rất tự nhiên sang bài áp suất khí quyển và sang môn Địa lí.

Đọc kết quả hiệu chuẩn

Chạy chương trình hiệu chuẩn, bạn sẽ có hai con số. Cách diễn giải:

Kết quảNghĩa làLàm gì
Điểm băng đọc 0,0 ± 0,3Cảm biến tốtDùng thẳng, không cần bù
Điểm băng đọc lệch đều, ví dụ +0,8Sai số hệ thống về gốcTrừ đi 0,8 trong chương trình
Điểm băng đúng nhưng điểm sôi lệch nhiềuĐộ dốc sai — hiếm với DS18B20Nghi hàng nhái, thay cảm biến
Số nhảy loạn không ổn địnhTiếp xúc kém hoặc thiếu điện trở kéo lênKiểm tra lại mạch

Danh sách kiểm

  • Chương trình in ra "Tìm thấy 1 cảm biến" chứ không báo lỗi.
  • Đầu dò trong nước đá đang tan đọc trong khoảng −0,5 đến +0,5 °C.
  • Cầm đầu dò trong lòng bàn tay, số tăng lên rõ rệt trong 20 giây.
  • Số liệu dán được vào bảng tính và vẽ ra đồ thị.
07

Kinh nghiệm và cạm bẫy

Con số 750 mili giây

DS18B20 không đo tức thì. Sau lệnh convert_temp(), nó cần tới 750 ms để hoàn tất ở độ phân giải 12 bit.

Nếu bạn đọc sớm hơn, chương trình vẫn chạy và vẫn ra số đẹp — nhưng đó là số của lần đo trước. Đồ thị bị trễ một nhịp mà không ai nhận ra. Đây là loại lỗi khó chịu nhất vì nó không báo lỗi.

Muốn nhanh hơn thì hạ độ phân giải xuống 9 bit, chỉ mất 94 ms, đổi lại bước nhảy thành 0,5 °C. Với bài theo dõi nhiệt độ phòng thì được; với bài nhiệt dung riêng thì không.

Đặt đầu dò ở đâu quan trọng hơn cảm biến tốt tới đâu

Đây là bài học tôi phải học lại nhiều lần.

Cùng một cốc nước nóng, tôi đo được ba số khác nhau: sát đáy 68 °C, giữa cốc 63 °C, sát mặt nước 58 °C. Chênh nhau mười độ — lớn gấp hai mươi lần sai số của cảm biến.

Nghĩa là: mọi công sức chọn cảm biến chính xác đều vô nghĩa nếu đặt đầu dò sai chỗ. Ba quy tắc tôi dạy học sinh ngay từ buổi đầu:

  • Đặt giữa cốc, ngập khoảng hai phần ba chiều sâu nước.
  • Không chạm đáy, không chạm thành.
  • Phải khuấy. Không khuấy thì nước phân tầng, và con số bạn đọc chỉ là nhiệt độ của một điểm chứ không phải của cốc nước.

Tôi luôn bắt đầu bài nhiệt học bằng thí nghiệm ba đầu dò ở ba vị trí. Nó mất năm phút và dạy được nhiều hơn một tiết giảng về đối lưu.

Quán tính nhiệt của chính đầu dò

Vỏ thép của DS18B20 cũng cần thời gian để nóng lên bằng môi trường. Nhúng đột ngột từ không khí vào nước nóng, nó mất khoảng 8–15 giây mới ổn định.

Hệ quả thực tế: đừng nhúng đầu dò vào rồi đọc số ngay. Chờ số đứng yên đã. Và khi vẽ đồ thị nước nguội, đoạn dốc đứng ở đầu có thể là quán tính của cảm biến chứ không phải của nước.

Bản thân chuyện này lại là một thí nghiệm hay: cho học sinh vẽ đường "cảm biến đuổi theo nhiệt độ nước" và ước lượng hằng số thời gian của nó.

Bốn lỗi thường gặp
  • Báo "Không thấy DS18B20". Chín trên mười lần là thiếu điện trở 4,7 kΩ hoặc cắm nhầm chân.
  • Đọc ra đúng 85,00 °C. Đây là giá trị mặc định trong chip khi phép đo chưa hoàn tất. Bạn đọc quá sớm, hoặc nguồn không đủ.
  • Đọc ra −127,00 °C. Mất kết nối giữa chừng. Kiểm tra dây.
  • Số nhảy vài độ liên tục. Dây quá dài mà không có điện trở, hoặc breadboard rão.
08

Ứng dụng trong dạy học

Vật lí 12Hóa học 10Sinh học 10–11Công nghệ 11Toán

Vật lí — theo dõi một quá trình nhiệt

Bài mở đường cho toàn bộ chương Vật lí nhiệt. Ba thí nghiệm làm được ngay với đúng bộ này:

  • Đường nguội của nước. Rót nước nóng vào cốc, ghi 20 phút. Đường cong thu được chính là định luật làm nguội Newton. Vẽ ln(T − T_phòng) theo thời gian sẽ ra đường thẳng — nối thẳng sang bài hàm số mũ của môn Toán.
  • So sánh cách nhiệt. Hai cốc nước nóng như nhau, một cốc bọc khăn. Đường nào nguội chậm hơn và chậm hơn bao nhiêu?
  • Nhiệt độ nước đá trong lúc tan. Học sinh luôn ngạc nhiên khi thấy nhiệt độ đứng yên ở 0 °C suốt lúc đá đang tan, dù ta vẫn đun. Đây là cách hay nhất để dạy nhiệt nóng chảy.

Hóa học — phản ứng tỏa nhiệt và thu nhiệt

Cho hai chất an toàn phản ứng trong cốc xốp và ghi nhiệt độ theo thời gian: baking soda với giấm (thu nhiệt, nhiệt độ giảm), hoặc hòa tan NaOH loãng trong nước dưới sự giám sát chặt (tỏa nhiệt).

Điều mà nhiệt kế thủy ngân không cho thấy được: hình dạng của đường nhiệt độ. Phản ứng nhanh cho đỉnh nhọn, phản ứng chậm cho đỉnh tù. Từ đó nối sang bài tốc độ phản ứng.

Sinh học — sự sống tỏa nhiệt

Thí nghiệm kinh điển mà nay đo được: cho hạt đậu ngâm nảy mầm vào một phích giữ nhiệt, cắm đầu dò vào giữa khối hạt, để một phích đối chứng chứa hạt đã luộc chín. Ghi liên tục 24 giờ.

Phích hạt sống ấm hơn phích đối chứng một vài độ. Đó là hô hấp tế bào, đo được bằng một cảm biến mười lăm nghìn đồng.

Toán — dữ liệu thật để dạy hàm số

Bộ số liệu nguội của nước là bộ dữ liệu tốt nhất tôi biết để dạy hàm mũ. Nó không phải bài toán bịa; nó là nước trong cốc của chính các em. Và thao tác "lấy logarit để bẻ thẳng đường cong" trở nên có lí do.

Bài học STEM 5 hoạt động — "Chiếc bình giữ nhiệt tốt nhất lớp"

Hoạt động 1 — Xác định vấn đề. Quán trà sữa quảng cáo ly giữ nhiệt 6 giờ. Có thật không, và ly nào giữ nhiệt tốt nhất trong số các loại lớp mình có?

Tiêu chí sản phẩm: đo được đường nhiệt độ của ít nhất ba loại bình trong 30 phút; cùng thể tích nước, cùng nhiệt độ ban đầu ±2 °C; kết quả kèm sai số; và xếp hạng có căn cứ số liệu chứ không phải cảm tính.

Hoạt động 2 — Kiến thức nền. Ba cách truyền nhiệt; định luật làm nguội Newton; cách đọc đồ thị nhiệt độ theo thời gian.

Hoạt động 3 — Đề xuất phương án. Các nhóm bàn: đặt đầu dò ở đâu, đậy nắp hay không, khuấy hay không, đo bao lâu một lần. Đây là chỗ học sinh phải quyết định, và các quyết định khác nhau sẽ cho kết quả khác nhau — rất đáng để so.

Hoạt động 4 — Đo và xử lý. Chạy 30 phút, xuất CSV, vẽ ba đường trên cùng một đồ thị.

Hoạt động 5 — Báo cáo. Xếp hạng ba bình, giải thích bằng cấu tạo, và chỉ ra điều kiện nào trong thí nghiệm chưa thật công bằng.

Hướng mở rộng
  • Ghép với LCD của Bài 34 để hiện số tại chỗ, không cần máy tính.
  • Ghép với thẻ nhớ để chạy 24 giờ cho thí nghiệm hạt nảy mầm.
  • Thêm cảm biến thứ hai trên cùng dây để đo đồng thời trong và ngoài.
  • Lên Bài 77 (định luật làm nguội Newton) và Bài 83 (đường cong nóng lên và làm nguội) để làm sâu phần phân tích.
  • Hướng thi Khoa học kĩ thuật: khảo sát hiệu quả cách nhiệt của các vật liệu địa phương — xơ dừa, trấu, mút xốp — cho thùng vận chuyển nông sản.