Mạch RC: tụ nạp xả, hằng số thời gian và đo điện dung bằng ESP32

Tụ nạp và xả qua điện trở, hằng số thời gian τ = R × C, các mốc 63,2 % và 5τ, ứng dụng lọc thông thấp, lọc PWM, chống dội nút nhấn, thí nghiệm đo τ và điện dung tụ bằng ESP32.

Một điện trở và một tụ điện ghép với nhau tạo thành mạch RC, mạch đơn giản nhưng có mặt ở rất nhiều nơi: làm trễ, lọc nhiễu, biến xung PWM thành điện áp, chống dội nút nhấn, định thời cho IC 555. Tất cả đều dựa trên một hiện tượng: tụ không nạp đầy hay xả hết ngay lập tức mà theo một đường cong, nhanh hay chậm tùy hằng số thời gian τ = R × C. Bài viết giải thích quá trình nạp xả, ý nghĩa của τ, các ứng dụng thường gặp, rồi làm thí nghiệm dùng ESP32 đo đường nạp xả của tụ, tính τ và suy ra điện dung của tụ.

1. Tụ nạp và xả qua điện trở

Hai đồ thị theo hằng số thời gian tau từ 0 đến 5 tau: khi nạp, điện áp tụ tăng theo đường cong đạt 63,2 phần trăm sau 1 tau, 86,5 phần trăm sau 2 tau, 95 phần trăm sau 3 tau, 99,3 phần trăm sau 5 tau, dòng nạp giảm dần từ lớn nhất về 0; khi xả, điện áp còn 36,8 phần trăm sau 1 tau, 13,5 phần trăm sau 2 tau, 5 phần trăm sau 3 tau
Đường nạp và xả của tụ điện qua điện trở (hình tự vẽ).
  • Nạp: nối tụ đã xả hết qua điện trở R vào nguồn U. Lúc đầu tụ chưa có điện áp nên toàn bộ U đặt lên điện trở, dòng nạp lớn nhất bằng U / R. Tụ nạp dần, điện áp trên tụ tăng, điện áp còn lại trên R giảm nên dòng nạp giảm dần. Điện áp tụ: u = U × (1 − e−t/τ).
  • Xả: nối tụ đầy qua R xuống đất. Dòng xả lớn nhất lúc đầu rồi giảm dần; điện áp tụ: u = U × e−t/τ.
  • Hằng số thời gian τ = R × C (ôm nhân fara ra giây). Sau 1τ, tụ nạp được 63,2 % (hoặc xả còn 36,8 %); sau 3τ được 95 %; sau khoảng 5τ coi như nạp đầy hay xả hết.
RCτ = R × CHay gặp ở đâu
10 kΩ100 µF1 sMạch trễ, thí nghiệm trong bài
10 kΩ1 µF10 msLọc PWM, mạch reset
10 kΩ100 nF1 msChống dội nút nhấn
1 kΩ100 nF0,1 msLọc nhiễu tần số cao

Một cách hiểu trực quan: tụ giống một bình nước được bơm đầy qua một ống hẹp. Lúc bình còn vơi, nước chảy vào mạnh; bình càng đầy, chênh lệch càng ít, nước chảy càng chậm. Ống càng hẹp (R lớn) hay bình càng to (C lớn) thì càng lâu đầy.

2. Các ứng dụng của mạch RC

Ba ứng dụng: lọc thông thấp RC với R 10 kΩ, C 1 µF, đồ thị biên độ giảm khi tần số tăng, tần số cắt khoảng 15,9 Hz; lọc PWM 65 phần trăm qua RC thành điện áp khoảng 2,1 V phẳng còn gợn nhỏ; chống dội nút nhấn với điện trở kéo lên 10 kΩ, nút nhấn và tụ 100 nF, tau bằng 1 ms
Lọc thông thấp, lọc PWM và chống dội nút nhấn (hình tự vẽ, sóng minh họa).
  • Lọc thông thấp: R nối tiếp, C xuống đất. Tín hiệu biến đổi chậm đi qua gần như nguyên vẹn, tín hiệu biến đổi nhanh (nhiễu) bị tụ "nuốt" bớt. Tần số cắt fc = 1 / (2π × R × C); ở tần số này biên độ còn khoảng 70 %. Với 10 kΩ và 1 µF, fc ≈ 15,9 Hz. Đặt một tụ nhỏ trước chân ADC để lọc nhiễu là ứng dụng hay gặp.
  • Biến PWM thành điện áp: chân PWM (bật tắt nhanh) qua bộ lọc RC cho ra điện áp gần phẳng bằng độ rộng xung nhân điện áp mức cao: PWM 65 % ở 3,3 V cho khoảng 2,1 V. τ phải lớn hơn chu kỳ PWM nhiều lần để gợn nhỏ; nhưng τ lớn thì điện áp thay đổi chậm.
  • Chống dội nút nhấn: tiếp điểm nút nhấn nảy nhiều lần trong vài ms; tụ 100 nF cùng điện trở kéo lên 10 kΩ (τ = 1 ms) làm mượt các xung nảy đó. Trên vi điều khiển cũng có thể chống dội bằng phần mềm.
  • Định thời, làm trễ: IC 555, mạch reset khi cấp nguồn, mạch tạo trễ relay đều dựa vào thời gian tụ nạp tới một ngưỡng (bài 25).

3. Thí nghiệm: đo đường nạp xả và tính điện dung bằng ESP32

Chân GPIO26 lần lượt lên 3,3 V (nạp) rồi xuống 0 V (xả) qua điện trở 10 kΩ; chân ADC GPIO34 đo điện áp trên tụ. Chương trình đo thời gian để điện áp đạt 63,2 % (khi nạp) và còn 36,8 % (khi xả), đó chính là τ; chia cho R ra điện dung của tụ.

Chuẩn bị

Sơ đồ: GPIO26 của ESP32 qua điện trở 10 kΩ tới nút đo, nút đo nối GPIO34 và chân dương của tụ hóa 100 µF, chân âm của tụ nối đất; ghi chú chân dương tụ nối nút đo, chân âm nối GND, tau dự kiến 1 s
Sơ đồ thí nghiệm (hình tự vẽ).

Cắm đúng cực tính của tụ hóa: chân dài (+) vào nút đo, chân có dải dấu trừ vào GND. Dòng nạp lớn nhất chỉ 3,3 V / 10 kΩ = 0,33 mA nên an toàn cho chân GPIO.

Chương trình

/*
  PYWORLD.VN - Đo đường nạp xả của tụ qua điện trở bằng ESP32, tính hằng số thời gian τ = R × C và suy ra điện dung
  Nối: GPIO26 -> R 10 kΩ -> nút đo (GPIO34) -> chân + tụ hóa 100 µF; chân − của tụ -> GND
  Mở Serial Monitor 115200, gõ "s" để đo lại
*/

#define CHAN_RA 26
#define CHAN_DO 34

const float R_NAP = 10000.0;         // Ôm, điện trở nạp xả (đo lại bằng đồng hồ vạn năng cho chính xác)
const float VCC_MV = 3300.0;         // Điện áp chân GPIO ở mức cao; đo chân 3V3 rồi sửa cho đúng
const uint32_t THOI_GIAN_DO_MS = 6000;   // Đo trong 6 s, khoảng 6τ với 10 kΩ và 100 µF
const uint32_t KHOANG_IN_MS = 1000;      // In một dòng mỗi giây

// Xả hết tụ trước khi đo nạp: đưa GPIO26 xuống thấp và chờ điện áp gần 0
void xaHetTu() {
  digitalWrite(CHAN_RA, LOW);
  while (analogReadMilliVolts(CHAN_DO) > 15) {
    delay(20);
  }
  delay(300);
}

// Đổi mức GPIO26 rồi theo dõi điện áp tụ; trả về thời gian (giây) để đạt mốc 63,2 % (nạp) hoặc 36,8 % (xả)
float theoDoi(bool nap) {
  float nguong = nap ? VCC_MV * 0.632 : VCC_MV * 0.368;
  uint32_t tMoc = 0;
  uint32_t lanIn = 0;
  uint32_t t0 = micros();
  digitalWrite(CHAN_RA, nap ? HIGH : LOW);
  while (true) {
    uint32_t t = micros() - t0;
    uint32_t u = analogReadMilliVolts(CHAN_DO);
    bool quaMoc = nap ? (u >= nguong) : (u <= nguong);
    if (tMoc == 0 && quaMoc) {
      tMoc = t;
    }
    if (t >= lanIn * KHOANG_IN_MS * 1000UL) {
      Serial.printf("%5.1f s  %4u mV\n", t / 1e6, (unsigned)u);
      lanIn++;
    }
    if (t > THOI_GIAN_DO_MS * 1000UL) {
      break;
    }
  }
  return tMoc / 1e6;
}

void doMotLan() {
  Serial.println();
  Serial.println("Xa het tu...");
  xaHetTu();

  Serial.println("NAP tu qua R:");
  float tauNap = theoDoi(true);
  Serial.printf("Moc 63,2%% sau %.3f s -> tau = %.3f s, C = tau / R = %.1f uF\n", tauNap, tauNap, tauNap / R_NAP * 1e6);

  Serial.println("XA tu qua R:");
  float tauXa = theoDoi(false);
  Serial.printf("Moc 36,8%% sau %.3f s -> tau = %.3f s, C = tau / R = %.1f uF\n", tauXa, tauXa, tauXa / R_NAP * 1e6);
}

void setup() {
  Serial.begin(115200);
  delay(500);
  analogReadResolution(12);
  pinMode(CHAN_RA, OUTPUT);
  doMotLan();
}

void loop() {
  if (Serial.available() && Serial.read() == 's') {
    doMotLan();
  }
}
  • xaHetTu() đưa GPIO26 xuống thấp và chờ tụ xả gần 0 V, để lần nạp bắt đầu từ 0.
  • theoDoi() đổi mức chân rồi đọc ADC liên tục; ghi lại thời điểm điện áp vượt qua mốc 63,2 % (nạp) hoặc xuống dưới 36,8 % (xả) của 3,3 V, và cứ mỗi giây in một dòng để thấy đường cong.
  • Thời gian ghi được chính là τ; điện dung C = τ / R. Với R = 10 kΩ, τ = 1 s ứng với 100 µF.

Kết quả mong đợi

Hình minh họa Serial Monitor: khi nạp, điện áp 0 mV ở 0 s, 2167 mV ở 1 s, 2911 mV ở 2 s, sau đó đứng ở 3150 mV vì giới hạn ADC, mốc 63,2 phần trăm sau 0,935 s, C bằng 93,5 µF; khi xả, 3150 mV ở 0 s, 1131 mV ở 1 s, 388 mV ở 2 s, 133 mV ở 3 s, mốc 36,8 phần trăm sau 0,933 s, C bằng 93,3 µF
Kết quả mong đợi trên Serial Monitor (hình minh họa theo công thức nạp xả và định dạng của chương trình; giả định tụ thật 94 µF).
  • Hai lần đo cho τ gần bằng nhau, khoảng 0,93 s, ứng với tụ khoảng 93 µF. Tụ hóa có sai số ±20 % nên tụ ghi 100 µF đo ra 80–120 µF đều bình thường.
  • Khi nạp, các số đo từ 3 s trở đi đứng ở khoảng 3150 mV dù tụ đã gần 3,3 V: ADC của ESP32 không đọc được điện áp sát 3,3 V. Mốc 63,2 % (khoảng 2,09 V) nằm trong vùng đo tốt nên không bị ảnh hưởng.
  • Thay tụ 220 µF, τ tăng lên khoảng 2,2 s; khi đó nên tăng THOI_GIAN_DO_MS lên khoảng 12 000 để kịp nạp đầy trước khi xả.

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

Hiện tượngNguyên nhân thường gặpCách xử lý
Kẹt ở "Xa het tu..."GPIO34 đang hở hoặc nối nhầm vào 3V3, điện áp không về gần 0Kiểm tra dây nút đo; tụ có xả qua R về GPIO26 không
τ gần bằng 0Tụ không được nối, cắm sai hàng breadboard, hoặc tụ hỏngKiểm tra tụ; đo điện dung bằng đồng hồ nếu có thang tụ
Điện áp nhảy lung tungDây lỏng, chân tụ to không chặt vào breadboardCắm lại hoặc nối bằng dây cắm
Tụ nóng, phồngCắm ngược cực tínhRút điện ngay, thay tụ khác và cắm đúng chiều

5. Tự kiểm tra

  1. R = 47 kΩ, C = 10 µF thì τ bằng bao nhiêu và sau bao lâu tụ coi như nạp đầy? (Đáp án: 0,47 s; khoảng 5τ ≈ 2,35 s.)
  2. Bộ lọc RC 1 kΩ và 100 nF có tần số cắt bao nhiêu? (Đáp án: 1 / (2π × 1000 × 10⁻⁷) ≈ 1,6 kHz.)
  3. Muốn chống dội nút nhấn với τ khoảng 5 ms và điện trở kéo lên 10 kΩ, chọn tụ nào? (Đáp án: C = 5 ms / 10 kΩ = 0,5 µF, chọn 470 nF.)

6. Xem thêm


Tin tức liên quan

IC 555: chế độ dao động và đơn ổn, cách tính tần số và thời gian
IC 555: chế độ dao động và đơn ổn, cách tính tần số và thời gian

IC 555 là gì, sơ đồ chân và cấu tạo bên trong, mạch đơn ổn tạo trễ và mạch dao động nháy LED, nguồn gốc công thức t = 1,1RC và f = 1,44/((R1 + 2R2)C), bảng giá trị và mạch tạo trễ relay.

Cách đọc giấy chứng nhận hiệu chuẩn: sai số, độ không đảm bảo, số hiệu chính và điểm cần kiểm tra
Cách đọc giấy chứng nhận hiệu chuẩn: sai số, độ không đảm bảo, số hiệu chính và điểm cần kiểm tra

Cách đọc giấy chứng nhận hiệu chuẩn: các phần bắt buộc theo ISO/IEC 17025, bảng sai số chiều tăng giảm, độ không đảm bảo và hệ số phủ k, áp dụng số hiệu chính và lỗi hay gặp.

Đố toán nhanh trên OLED 4 nút với ESP32: trò chơi luyện tính nhẩm cho học sinh
Đố toán nhanh trên OLED 4 nút với ESP32: trò chơi luyện tính nhẩm cho học sinh

Làm máy đố toán nhanh bằng ESP32 và màn hình OLED kèm 4 nút: cộng trừ đến 20, bảng nhân 2–9, 4 đáp án cho 4 nút, đếm câu đúng và thời gian, cách tạo đáp án sai gần đúng.

Công tắc, nút nhấn, cầu chì và relay: cách chọn, cách nối với ESP32
Công tắc, nút nhấn, cầu chì và relay: cách chọn, cách nối với ESP32

Các loại công tắc SPST, SPDT, nút nhấn 4 chân, điện trở kéo lên và chống dội, cầu chì và cách chọn, cấu tạo relay COM NO NC, thí nghiệm nút nhấn bật tắt module relay bằng ESP32.

Máy CNC là gì: nguyên lý, các loại máy CNC mini và lộ trình tự làm CNC, laser
Máy CNC là gì: nguyên lý, các loại máy CNC mini và lộ trình tự làm CNC, laser

Máy CNC là gì, hoạt động thế nào từ bản vẽ tới đường cắt, ba trục X Y Z, các loại máy CNC mini, laser, máy vẽ cho người tự làm, nên bắt đầu từ đâu và lộ trình 20 bài.

Hiệu chuẩn transmitter áp suất 4–20 mA: sơ đồ vòng, sai số theo khoảng đo, lúc nhận và sau chỉnh
Hiệu chuẩn transmitter áp suất 4–20 mA: sơ đồ vòng, sai số theo khoảng đo, lúc nhận và sau chỉnh

Hiệu chuẩn transmitter áp suất 4–20 mA: sơ đồ vòng dòng điện, công thức dòng và sai số theo phần trăm khoảng đo, trình tự lúc nhận và sau chỉnh, ví dụ 0–16 bar, lưu ý về HART và điểm 0.

Đặt gia công xốp chống sốc theo yêu cầu: cần chuẩn bị gì, quy trình ra sao
Đặt gia công xốp chống sốc theo yêu cầu: cần chuẩn bị gì, quy trình ra sao

Hướng dẫn đặt gia công xốp chống sốc theo yêu cầu tại PYWORLD: lập bảng kê thiết bị, đo kích thước, đọc bản bố trí khoang, chọn vali và năm bước từ gửi thông tin đến lắp thử.

RS-485 là gì: cặp dây vi sai, điện trở đầu cuối và cách dùng module MAX485 với ESP32
RS-485 là gì: cặp dây vi sai, điện trở đầu cuối và cách dùng module MAX485 với ESP32

Giải thích chuẩn RS-485: tín hiệu vi sai trên hai dây A, B, điện trở đầu cuối 120 Ω, truyền bán song công với chân DE, RE. Kèm sơ đồ nối module MAX485 và chương trình hỏi đáp giữa hai mạch ESP32.


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