Biến trở, quang trở và nhiệt điện trở NTC: cách dùng và đọc bằng ESP32

Cấu tạo và cách mắc biến trở, biến trở B10K và A10K, quang trở LDR, nhiệt điện trở NTC, PTC, phương trình B, thí nghiệm đọc biến trở, LDR, NTC bằng ADC của ESP32 và chỉnh độ sáng LED.

Điện trở ở bài trước có giá trị cố định. Bài này nói về ba loại điện trở thay đổi được, rất hay gặp trong mạch thực tế: biến trở (thay đổi theo tay vặn), quang trở LDR (thay đổi theo ánh sáng) và nhiệt điện trở NTC (thay đổi theo nhiệt độ). Bài viết giải thích cấu tạo, ký hiệu, cách đọc thông số, cách mắc vào mạch, rồi làm thí nghiệm đọc cả ba bằng ADC của ESP32, tính ra phần trăm góc xoay, điện trở của quang trở và nhiệt độ từ NTC, đồng thời dùng biến trở để chỉnh độ sáng LED trên bo.

1. Biến trở (chiết áp)

Bên trái: bên trong biến trở xoay có rãnh than hình cung, con chạy nối trục ở giữa và ba chân 1, 2, 3; bên phải: đồ thị điện trở giữa chân 1 và chân 2 theo góc xoay, biến trở B tuyến tính là đường thẳng, biến trở A kiểu log là đường cong tăng chậm lúc đầu rồi tăng nhanh
Cấu tạo biến trở và hai kiểu thay đổi điện trở (hình tự vẽ, đường log là gần đúng).
  • Biến trở có một rãnh vật liệu điện trở (than hoặc gốm kim loại) hình cung nối giữa chân 1 và chân 3, và một con chạy (chân 2) trượt trên rãnh khi vặn trục. Điện trở giữa chân 1 và 3 luôn bằng tổng trở ghi trên thân; con chạy chia tổng trở này thành hai phần.
  • Mắc làm cầu phân áp (cách dùng phổ biến nhất): chân 1 nối nguồn, chân 3 nối GND, chân 2 ra điện áp từ 0 tới điện áp nguồn theo góc vặn. Đây là cách đọc núm vặn bằng vi điều khiển.
  • Mắc làm điện trở biến đổi (chỉ dùng chân 1 và 2): để chỉnh dòng nhỏ, chỉnh hệ số khuếch đại. Không dùng biến trở nhỏ để chỉnh dòng lớn (độ sáng bóng đèn, tốc độ động cơ): con chạy chỉ chịu được dòng nhỏ và biến trở sẽ cháy; việc đó cần PWM và transistor (bài 19, 20).
  • Chữ trên thân: B10K là 10 kΩ tuyến tính (điện trở tăng đều theo góc vặn), A10K là kiểu log dùng cho núm âm lượng (tai nghe cảm nhận âm lượng theo thang log). Đọc cảm biến, chỉnh mức ngưỡng thì dùng loại B.
  • Ngoài biến trở xoay có trục còn có biến trở trượt, biến trở tinh chỉnh (trimmer, vặn bằng tuốc nơ vít, thường thấy màu xanh trên các module) và biến trở nhiều vòng cho chỉnh chính xác.
Ảnh chụp biến trở xoay loại phổ biến: trục kim loại có khía, đai ốc lắp bảng, vỏ kim loại tròn và ba chân hàn nhô ra trên tấm nhựa đỏ
Biến trở xoay ba chân loại lắp bảng điều khiển. Ảnh: Iainf, CC BY 2.5, Wikimedia Commons, đã thu nhỏ.

2. Quang trở (LDR)

  • Quang trở là một lớp bán dẫn cadmi sunfua có điện trở giảm khi được chiếu sáng: trong tối có thể lên hàng trăm kΩ đến vài MΩ, dưới ánh đèn phòng khoảng vài kΩ đến vài chục kΩ, dưới nắng còn vài trăm Ω.
  • Quang trở rẻ, dễ dùng nhưng chậm, phi tuyến và mỗi con lệch nhau khá nhiều. Đủ để phân biệt sáng hay tối (bật đèn khi trời tối, bài 30); muốn đo độ rọi chính xác thì dùng cảm biến số.
  • Cách đọc: mắc nối tiếp với một điện trở cố định thành cầu phân áp. Đặt quang trở ở phía trên (nối nguồn) thì điện áp ra tăng khi sáng hơn.

Cấu tạo, đường đặc tính và cách hiệu chuẩn quang trở được trình bày kỹ trong bài cảm biến ánh sáng: quang trở, photodiode, BH1750.

3. Nhiệt điện trở NTC và PTC

Đồ thị điện trở NTC 10 kΩ hệ số B 3950 theo nhiệt độ từ âm 20 tới 100 độ C trên thang log, điện trở giảm dần; bảng: 0 độ C khoảng 33,6 kΩ, 25 độ C 10 kΩ, 50 độ C 3,59 kΩ, 75 độ C 1,49 kΩ, 100 độ C khoảng 698 Ω, kèm điện áp tương ứng ở chân ADC và phương trình B
Điện trở của NTC 10 kΩ, B = 3950 theo nhiệt độ (hình tự vẽ theo phương trình B).
  • NTC (hệ số nhiệt âm) là gốm bán dẫn oxit kim loại có điện trở giảm mạnh khi nóng lên. Loại hay dùng để đo nhiệt là NTC 10 kΩ (10 kΩ ở 25 °C) với hệ số B = 3950 hoặc 3435; giá trị B ghi trong datasheet.
  • Quan hệ điện trở và nhiệt độ gần đúng theo phương trình B: 1/T = 1/T0 + ln(R/R0) / B, với T tính bằng độ K, T0 = 298,15 K (25 °C), R0 là điện trở ở 25 °C. Chính xác hơn thì dùng phương trình Steinhart–Hart hoặc bảng tra của hãng.
  • NTC công suất (ví dụ loại 47D-15 trong ảnh dưới) dùng để hạn dòng khởi động: lúc mới bật, NTC nguội có điện trở vài ôm, chặn dòng nạp tụ quá lớn; khi có dòng chạy, NTC nóng lên và điện trở giảm còn rất nhỏ.
  • PTC (hệ số nhiệt dương) tăng điện trở khi nóng. Loại phổ biến nhất là cầu chì tự phục hồi (polyfuse): khi quá dòng, PTC nóng lên, điện trở tăng vọt, cắt gần hết dòng; nguội lại thì dẫn bình thường.
Ảnh chụp hai nhiệt điện trở NTC hình đĩa màu đen in chữ NTC 47D-15, hai chân dài, đặt trên mặt bàn gỗ
NTC loại hạn dòng khởi động 47D-15 (5 Ω, đường kính 15 mm). Ảnh: Abbasbkz, CC BY-SA 4.0, Wikimedia Commons, đã cắt và thu nhỏ.

4. Thí nghiệm: đọc ba cảm biến kiểu điện trở bằng ESP32

Chuẩn bị

  • ESP32 DevKit V1, breadboard, dây cắm.
  • Một biến trở 10 kΩ (loại B), một quang trở (loại GL5528 hoặc tương tự), một NTC 10 kΩ B = 3950 (loại hạt nhỏ hoặc đầu dò bọc kim loại), hai điện trở 10 kΩ.
Sơ đồ: biến trở 10 kΩ nối giữa 3V3 và GND, chân giữa mang nhãn GPIO34; quang trở nối từ 3V3 xuống nút GPIO35 rồi qua điện trở 10 kΩ xuống GND; điện trở 10 kΩ nối từ 3V3 xuống nút GPIO32 rồi qua NTC 10 kΩ xuống GND; ESP32 có các chân 3V3, GPIO34, GPIO35, GPIO32, GND và LED trên bo ở GPIO2
Sơ đồ nối, dùng nhãn tên cho ba đường tín hiệu (hình tự vẽ).
Cảm biếnCách nốiChân ESP32
Biến trở 10 kΩChân 1 vào 3V3, chân 3 vào GND, chân giữa raGPIO34
Quang trở3V3 – quang trở – điểm giữa – 10 kΩ – GNDGPIO35 (điểm giữa)
NTC 10 kΩ3V3 – 10 kΩ – điểm giữa – NTC – GNDGPIO32 (điểm giữa)
LED trên boCó sẵn trên DevKit V1GPIO2

Chương trình

/*
  PYWORLD.VN - Đọc biến trở, quang trở (LDR) và nhiệt điện trở NTC bằng ADC của ESP32; biến trở chỉnh độ sáng LED trên bo
  Biến trở 10 kΩ: hai đầu nối 3V3 và GND, chân giữa vào GPIO34. LDR: 3V3 -> LDR -> GPIO35 -> 10 kΩ -> GND
  NTC 10 kΩ (B = 3950): 3V3 -> 10 kΩ -> GPIO32 -> NTC -> GND. LED xanh trên bo DevKit V1 ở GPIO2
*/

#include <math.h>

#define CHAN_BIEN_TRO 34
#define CHAN_LDR 35
#define CHAN_NTC 32
#define CHAN_LED 2

const float VCC_MV = 3300.0;      // Đo chân 3V3 bằng đồng hồ vạn năng rồi sửa cho đúng
const float R_CO_DINH = 10000.0;  // Ôm, điện trở cố định trong hai cầu phân áp
const float NTC_R0 = 10000.0;     // Ôm, điện trở NTC ở 25 °C
const float NTC_B = 3950.0;       // Hệ số B của NTC (ghi trên datasheet)
const float T0_K = 298.15;        // 25 °C tính theo độ K
const int SO_LAN_DOC = 32;

float docTrungBinhMv(uint8_t chan) {
  uint32_t tong = 0;
  for (int i = 0; i < SO_LAN_DOC; i++) {
    tong += analogReadMilliVolts(chan);
  }
  return (float)tong / SO_LAN_DOC;
}

void setup() {
  Serial.begin(115200);
  delay(500);
  analogReadResolution(12);
  ledcAttach(CHAN_LED, 5000, 8);   // PWM 5 kHz, 8 bit (0 đến 255)
  Serial.println("Doc bien tro, quang tro LDR va NTC bang ESP32");
}

void loop() {
  // Biến trở: điện áp chân giữa tỉ lệ với góc xoay
  float uBienTro = docTrungBinhMv(CHAN_BIEN_TRO);
  float phanTram = constrain(uBienTro / VCC_MV * 100.0, 0.0, 100.0);
  ledcWrite(CHAN_LED, (uint32_t)(phanTram * 255.0 / 100.0));

  // Quang trở ở phía trên cầu phân áp: sáng hơn thì R nhỏ đi, điện áp tăng
  float uLdr = docTrungBinhMv(CHAN_LDR);
  float rLdr = (uLdr > 5) ? R_CO_DINH * (VCC_MV - uLdr) / uLdr : -1;

  // NTC ở phía dưới cầu phân áp: nóng hơn thì R nhỏ đi, điện áp giảm
  float uNtc = docTrungBinhMv(CHAN_NTC);
  float rNtc = (VCC_MV - uNtc > 5) ? R_CO_DINH * uNtc / (VCC_MV - uNtc) : -1;
  float nhietDo = -273.15;
  if (rNtc > 0) {
    // Phương trình B: 1/T = 1/T0 + ln(R/R0) / B
    nhietDo = 1.0 / (1.0 / T0_K + log(rNtc / NTC_R0) / NTC_B) - 273.15;
  }

  Serial.printf("Bien tro %4.0f mV %3.0f %% | LDR %4.0f mV %5.1f kOhm | NTC %4.0f mV %5.2f kOhm %5.1f C\n",
                uBienTro, phanTram, uLdr, rLdr / 1000.0, uNtc, rNtc / 1000.0, nhietDo);
  delay(500);
}
  • Biến trở: điện áp chân giữa chia cho điện áp nguồn ra phần trăm góc xoay. Phần trăm này đưa vào PWM (bộ LEDC, 8 bit) để chỉnh độ sáng LED trên bo: vặn biến trở là LED sáng dần.
  • Quang trở nằm phía trên cầu phân áp: R = R_cố_định × (Vcc − U) / U.
  • NTC nằm phía dưới cầu phân áp: R = R_cố_định × U / (Vcc − U); sau đó tính nhiệt độ bằng phương trình B. Hàm log() trong C là logarit tự nhiên (ln).
  • Đo chân 3V3 bằng đồng hồ vạn năng rồi sửa VCC_MV để kết quả chính xác hơn; sai số 1 % của điện trở 10 kΩ gây sai khoảng 0,25 °C ở nhiệt độ phòng.

Kết quả mong đợi

Hình minh họa Serial Monitor: biến trở 812 mV 25 phần trăm, 1655 mV 50 phần trăm, 3142 mV 95 phần trăm; LDR khoảng 4,3 kΩ dưới đèn phòng, 69,5 kΩ khi lấy tay che, 1,2 kΩ khi chiếu đèn pin; NTC khoảng 9 kΩ ứng với 27,4 độ C, khi kẹp giữa hai ngón tay còn 6,84 kΩ ứng với 33,8 độ C
Kết quả mong đợi trên Serial Monitor (hình minh họa theo công thức của chương trình; số đo là ví dụ).
  • Vặn biến trở: điện áp và phần trăm tăng đều, LED xanh trên bo sáng dần.
  • Lấy tay che quang trở: điện trở tăng lên hàng chục kΩ; chiếu đèn pin: giảm còn khoảng 1 kΩ.
  • Kẹp NTC giữa hai ngón tay: điện trở giảm, nhiệt độ tăng dần lên khoảng 32–34 °C sau vài chục giây (NTC cần thời gian để nóng theo tay).

5. Chọn điện trở cố định cho cầu phân áp

Với cảm biến có điện trở thay đổi từ Rmin tới Rmax, điện áp ra thay đổi nhiều nhất khi điện trở cố định bằng khoảng √(Rmin × Rmax). Ví dụ NTC dùng để đo trong khoảng 0–50 °C (33,6 kΩ tới 3,59 kΩ): √(33,6 × 3,59) ≈ 11 kΩ, nên dùng 10 kΩ. Quang trở dùng ở trong nhà (khoảng 2 kΩ tới 50 kΩ): √(2 × 50) = 10 kΩ.

6. Xử lý lỗi thường gặp

Hiện tượngNguyên nhân thường gặpCách xử lý
Biến trở chỉ đổi ở một đoạn ngắn rồi đứng yênDùng biến trở loại A (log), hoặc nối nhầm chân giữa ra ngoàiDùng loại B; chân giữa là con chạy
Nhiệt độ NTC sai vài chục độĐảo vị trí NTC và điện trở 10 kΩ so với công thức, hoặc NTC có B, R0 khácĐối chiếu sơ đồ; sửa NTC_R0, NTC_B theo datasheet
LDR báo -0.0 kOhm hoặc số rất lớnĐứt dây, quang trở cắm lệch, hoặc trời rất tốiKiểm tra dây; ở chỗ tối dùng điện trở cố định lớn hơn
LED trên bo không sángBo không có LED ở GPIO2Nối LED ngoài qua điện trở 330 Ω vào GPIO2

7. Xem thêm


Tin tức liên quan

Cách chọn vali chống sốc đựng thiết bị: 7 điều cần xem trước khi mua
Cách chọn vali chống sốc đựng thiết bị: 7 điều cần xem trước khi mua

Bảy điều cần xem khi chọn vali chống sốc đựng thiết bị: kích thước lọt lòng, độ sâu nắp và đáy, vật liệu vỏ, chống nước, khóa, xốp, khối lượng; kèm danh sách kiểm tra trước khi mua.

Mức logic 3,3 V và 5 V: khi nào cần chuyển mức và cách nối an toàn với ESP32
Mức logic 3,3 V và 5 V: khi nào cần chuyển mức và cách nối an toàn với ESP32

Giải thích mức logic 3,3 V và 5 V: ngưỡng mức thấp, mức cao của ESP32, Arduino và các họ IC; khi nào nối thẳng được, khi nào cần mạch chia áp hoặc mạch chuyển mức MOSFET. Kèm chương trình đo kiểm tra.

Jack Type-C đực: sơ đồ chân, điện trở CC và cách hàn dây
Jack Type-C đực: sơ đồ chân, điện trở CC và cách hàn dây

Jack Type-C đực (đầu cắm) chỉ có một chân CC ở A5 và một cặp D+ D−. Bài trình bày sơ đồ chân đầu đực, điện trở 56 kΩ hoặc 5,1 kΩ cần gắn ở chân CC cho từng kiểu dây và các bước hàn dây vào pad.

Hiệu chỉnh độ chính xác máy CNC, máy laser tự chế: bước/mm, vuông góc, độ rơ, phay phẳng, dò Z
Hiệu chỉnh độ chính xác máy CNC, máy laser tự chế: bước/mm, vuông góc, độ rơ, phay phẳng, dò Z

Đo và hiệu chỉnh máy CNC, máy laser tự chế: số bước mỗi milimét, độ vuông góc bằng hai đường chéo, độ rơ bằng đồng hồ so, phay phẳng tấm lót, dò Z bằng G38.2, kèm chương trình Python.

Cảm biến tiệm cận cảm ứng từ: cấu tạo, nguyên lý dòng xoáy, cách chế tạo và nối với ESP32
Cảm biến tiệm cận cảm ứng từ: cấu tạo, nguyên lý dòng xoáy, cách chế tạo và nối với ESP32

Cảm biến tiệm cận cảm ứng từ hoạt động thế nào: cuộn dây lõi ferit, dao động tắt dần do dòng xoáy, khoảng tác động theo vật liệu, NPN, PNP, cách chế tạo và đếm vòng quay bằng ESP32.

Thực hành hiệu chuẩn thước điện trở bằng căn mẫu với ADS1115, ESP32: đo tỉ lệ, độ tuyến tính, độ trễ
Thực hành hiệu chuẩn thước điện trở bằng căn mẫu với ADS1115, ESP32: đo tỉ lệ, độ tuyến tính, độ trễ

Hiệu chuẩn thước điện trở 50 mm bằng chồng căn mẫu: ADS1115 đo tỉ lệ, ESP32 ghi điểm đi lên và đi xuống, khớp đa thức, tính sai số tuyến tính, độ trễ và độ không đảm bảo.

Đèn giao thông ngã tư với ESP32: dự án STEM chủ đề giao thông cho học sinh
Đèn giao thông ngã tư với ESP32: dự án STEM chủ đề giao thông cho học sinh

Làm đèn giao thông ngã tư thu nhỏ với ESP32: 6 đèn LED cho hai hướng, bảng 6 pha, millis không dùng delay dài, dây cảm ứng làm nút xin qua đường và mô hình bìa cứng.

Vali đựng máy ảnh, ống kính chống sốc: chọn cỡ theo bộ máy và cách xếp xốp
Vali đựng máy ảnh, ống kính chống sốc: chọn cỡ theo bộ máy và cách xếp xốp

Chọn vali đựng máy ảnh, ống kính: liệt kê những gì bộ máy cần chỗ, xếp xốp, đặt ống kính đứng hay nằm, gợi ý cỡ vali chống nước theo bộ máy, chống ẩm và mang lên xe, máy bay.


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