MOSFET: logic-level, điện trở gate, đóng cắt tải dòng lớn bằng PWM của ESP32

MOSFET kênh N, kênh P là gì, vì sao chọn MOSFET logic-level cho ESP32 3,3 V, VGS(th) và RDS(on), mạch đóng cắt phía thấp có điện trở gate, PWM và thí nghiệm chỉnh độ sáng dải LED 12 V.

Transistor BJT làm công tắc tốt cho tải vài chục đến khoảng 150 mA. Với dải LED 12 V vài ampe, quạt, bơm, động cơ, lựa chọn tốt hơn là MOSFET: được điều khiển bằng điện áp nên gần như không lấy dòng từ chân GPIO, khi dẫn chỉ có điện trở vài phần trăm ôm nên ít nóng, và đóng cắt rất nhanh, hợp với PWM. Bài viết giải thích ký hiệu MOSFET kênh N, kênh P, vì sao phải chọn loại logic-level khi dùng với ESP32 3,3 V, các thông số VGS(th), RDS(on), mạch đóng cắt phía thấp với điện trở gate và điện trở kéo xuống, PWM và công suất trung bình, rồi làm thí nghiệm chỉnh độ sáng dải LED 12 V bằng PWM 20 kHz.

1. MOSFET là gì

Hai ký hiệu MOSFET: kênh N với drain ở trên, source ở dưới, gate bên trái và diode thân giữa source và drain, dẫn khi UGS lớn hơn ngưỡng, dùng phía thấp, mã logic-level AO3400, IRLZ44N, IRLB8721; kênh P với source ở trên, drain ở dưới, dẫn khi gate thấp hơn source, dùng phía cao, ví dụ AO3401, IRF9540
Ký hiệu MOSFET kênh N và kênh P (hình tự vẽ).
  • MOSFET (transistor hiệu ứng trường) có ba chân: G (gate, cổng), D (drain, máng) và S (source, nguồn). Gate cách điện với kênh dẫn bằng một lớp oxit rất mỏng; điện áp giữa G và S tạo điện trường "mở" kênh giữa D và S.
  • Vì gate cách điện, ở trạng thái đứng yên gate không lấy dòng một chiều (khác BJT cần dòng base liên tục). Gate chỉ như một tụ điện nhỏ, cần một xung dòng ngắn để nạp xả mỗi lần đổi trạng thái.
  • Kênh N dẫn khi gate cao hơn source quá một ngưỡng; dùng ở phía thấp (source nối GND), giống NPN. Kênh P dẫn khi gate thấp hơn source; dùng ở phía cao, và rất hay dùng làm mạch chống cắm ngược nguồn ít tổn hao.
  • MOSFET công suất luôn có một diode thân giữa S và D (theo chiều ngược). Diode này có ích (cho dòng cảm ứng chạy về) nhưng cũng có nghĩa là MOSFET không chặn được dòng ngược chiều.

2. Logic-level: chọn đúng MOSFET cho 3,3 V

Đồ thị dòng drain theo điện áp gate: MOSFET logic-level ngưỡng khoảng 1 đến 2 V đã dẫn gần hết dòng tải 30 A ở 3,3 V; MOSFET loại thường ngưỡng khoảng 2 đến 4 V gần như chưa dẫn ở 3,3 V; đường nét đứt đánh dấu mức GPIO ESP32 3,3 V; ghi chú VGS(th) chỉ là ngưỡng bắt đầu dẫn, cần xem RDS(on) ở 2,5 V hoặc 4,5 V
MOSFET logic-level và MOSFET loại thường ở mức gate 3,3 V (hình tự vẽ, mô hình gần đúng).
  • VGS(th) (điện áp ngưỡng) là mức gate tại đó MOSFET bắt đầu dẫn một dòng rất nhỏ (thường 250 µA), chưa phải dẫn hoàn toàn. Thấy VGS(th) = 2 V không có nghĩa 3,3 V là đủ.
  • Thông số quyết định là RDS(on) ghi ở mức UGS bao nhiêu. MOSFET logic-level ghi RDS(on) ở 4,5 V và tốt hơn nữa là ở 2,5 V (AO3400: khoảng 0,05 Ω ở 2,5 V). Loại thường như IRF540, IRFZ44N chỉ ghi ở 10 V: gate 3,3 V mở rất ít, MOSFET nóng hoặc gần như không dẫn.
  • Các thông số khác: VDS tối đa (chọn lớn hơn điện áp tải ít nhất 1,5–2 lần), ID tối đa (thực tế bị giới hạn bởi tản nhiệt), điện tích gate Qg (càng nhỏ càng dễ đóng cắt nhanh bằng chân vi điều khiển).
MãKiểuVDSDùng với ESP32 3,3 V
AO3400N, dán SOT-2330 VTốt, tải tới khoảng 2–3 A trên mạch in
IRLZ44N, IRLB8721N, TO-22055 V, 30 VĐược (logic-level), tải vài ampe, dòng lớn cần tản nhiệt
IRF540N, IRFZ44NN, TO-220100 V, 55 VKhông nên nối thẳng: cần gate 10 V qua mạch kích
AO3401P, dán SOT-23−30 VDùng phía cao, chống ngược nguồn

Thông số trong bảng là giá trị thường gặp; luôn kiểm tra datasheet của đúng mã và hãng sản xuất.

3. Mạch đóng cắt phía thấp với MOSFET kênh N

Sơ đồ: nguồn 12 V qua tải tới drain MOSFET kênh N logic-level, source xuống đất, diode 1N5819 song song tải khi tải là động cơ; chân GPIO PWM qua điện trở gate 100 Ω vào gate, điện trở 10 kΩ từ gate xuống đất; GND chung giữa ESP32 và nguồn 12 V; chú thích công dụng điện trở gate, điện trở kéo xuống, diode dập và công thức tỏa nhiệt
Mạch MOSFET kênh N đóng cắt phía thấp (hình tự vẽ).
  • Điện trở gate 100 Ω: gate là tụ điện, lúc chuyển trạng thái chân GPIO phải nạp xả nó; điện trở nhỏ hạn dòng tức thời và giảm dao động. 47–220 Ω là phổ biến.
  • Điện trở 10 kΩ từ gate xuống GND: khi chân GPIO chưa được cấu hình (khởi động, nạp chương trình) gate không bị bỏ lửng; thiếu nó, tải có thể tự bật hoặc MOSFET dẫn một nửa và nóng.
  • Diode dập song song với tải cuộn dây (động cơ, bơm, van). Với PWM tần số cao dùng diode Schottky như 1N5819. Dải LED không cần diode.
  • Tỏa nhiệt: P = ID² × RDS(on). Tải 3 A qua MOSFET 0,02 Ω chỉ tỏa 0,18 W; dùng BJT với UCE(sat) 0,3 V sẽ tỏa 0,9 W cộng thêm dòng base lớn.
  • GND của nguồn tải phải nối chung với GND của ESP32.

4. PWM: chỉnh công suất bằng độ rộng xung

Ba dạng sóng PWM 25, 50 và 75 phần trăm giữa 0 và 12 V với đường nét đứt trung bình khoảng 3 V, 6 V và 9 V; chu kỳ 50 µs ứng với 20 kHz
PWM và điện áp trung bình trên tải (hình tự vẽ).
  • MOSFET bật tắt tải rất nhanh; phần trăm thời gian bật trong mỗi chu kỳ (độ rộng xung, duty) quyết định công suất trung bình: 50 % ở 12 V tương đương khoảng 6 V trung bình. LED trông sáng một nửa, động cơ quay chậm lại.
  • Chọn tần số: dải LED 1–5 kHz là đủ, mắt và máy ảnh không thấy nhấp nháy; động cơ, quạt nên dùng khoảng 20 kHz để không nghe tiếng rít. Tần số càng cao, mỗi lần chuyển trạng thái càng tốn năng lượng (tổn hao đóng cắt) và chân GPIO càng khó nạp xả gate kịp.
  • Bộ LEDC của ESP32 tạo PWM 20 kHz với độ phân giải 10 bit (0–1023) dễ dàng.

5. Thí nghiệm: chỉnh độ sáng dải LED 12 V bằng ESP32

Chuẩn bị

  • ESP32 DevKit V1, breadboard, dây cắm.
  • MOSFET kênh N logic-level (IRLZ44N, IRLB8721 vỏ TO-220 cắm được breadboard; hoặc module MOSFET bán sẵn), điện trở 100 Ω và 10 kΩ.
  • Một đoạn dải LED 12 V ngắn (dưới khoảng 1 A để dây cắm breadboard không nóng) và adapter 12 V; có thể nối qua jack nguồn DC.
Sơ đồ: GPIO25 của ESP32 qua 100 Ω vào gate MOSFET AO3400 hoặc IRLZ44N, 10 kΩ từ gate xuống đất; tải dải LED 12 V nối giữa cực dương adapter 12 V và drain; source, cực âm adapter và GND ESP32 nối chung
Sơ đồ thí nghiệm (hình tự vẽ).

Kiểm tra thứ tự chân MOSFET theo datasheet: với phần lớn MOSFET TO-220 (nhìn mặt có chữ, chân hướng xuống) là G – D – S. Dòng tải đi qua dây cắm và breadboard: chỉ thử với dòng nhỏ; tải lớn phải hàn dây đủ tiết diện, có cầu chì.

Chương trình

/*
  PYWORLD.VN - Điều khiển tải 12 V (dải LED, quạt) bằng MOSFET kênh N logic-level và PWM của ESP32
  GPIO25 -> 100 Ω -> gate; gate -> 10 kΩ -> GND; source -> GND; tải nối từ +12 V tới drain (động cơ thêm diode dập)
  Gõ một số 0-100 vào Serial Monitor để đặt phần trăm công suất; chương trình tăng giảm dần tới mức mới
*/

#define CHAN_GATE 25

const uint32_t TAN_SO_PWM = 20000;    // 20 kHz: ngoài tai người nghe, quạt không rít
const uint8_t DO_PHAN_GIAI = 10;      // 10 bit: 0 đến 1023
const uint32_t DUTY_TOI_DA = (1 << DO_PHAN_GIAI) - 1;
const float U_TAI = 12.0;             // Điện áp nguồn tải, chỉ dùng để in điện áp trung bình ước tính

int phanTramDich = 0;                 // Mức người dùng yêu cầu
int phanTramHienTai = 0;              // Mức đang xuất ra, đổi dần từng 1 %
String dongNhan = "";

void xuatPhanTram(int pt) {
  uint32_t duty = (uint32_t)pt * DUTY_TOI_DA / 100;
  ledcWrite(CHAN_GATE, duty);
}

void setup() {
  Serial.begin(115200);
  ledcAttach(CHAN_GATE, TAN_SO_PWM, DO_PHAN_GIAI);
  xuatPhanTram(0);
  delay(300);
  Serial.println("MOSFET + PWM 20 kHz. Go 0-100 de dat phan tram cong suat");
}

void loop() {
  // Đọc một dòng số từ Serial Monitor
  while (Serial.available()) {
    char c = Serial.read();
    if (c == '\n' || c == '\r') {
      if (dongNhan.length() > 0) {
        int pt = dongNhan.toInt();
        phanTramDich = constrain(pt, 0, 100);
        Serial.printf("Dat muc moi: %d %%\n", phanTramDich);
        dongNhan = "";
      }
    } else if (isDigit(c)) {
      dongNhan += c;
    }
  }

  // Tăng giảm dần 1 % mỗi 15 ms để dải LED, động cơ không bị giật và nguồn không bị sụt đột ngột
  static uint32_t lanDoiCuoi = 0;
  if (phanTramHienTai != phanTramDich && millis() - lanDoiCuoi > 15) {
    lanDoiCuoi = millis();
    phanTramHienTai += (phanTramDich > phanTramHienTai) ? 1 : -1;
    xuatPhanTram(phanTramHienTai);
    if (phanTramHienTai == phanTramDich) {
      uint32_t duty = (uint32_t)phanTramHienTai * DUTY_TOI_DA / 100;
      Serial.printf("Da toi %3d %% | duty %4u/%u | U trung binh tren tai ~ %4.1f V\n", phanTramHienTai,
                    (unsigned)duty, (unsigned)DUTY_TOI_DA, U_TAI * phanTramHienTai / 100.0);
    }
  }
}
  • ledcAttach(CHAN_GATE, 20000, 10): PWM 20 kHz, 10 bit. ledcWrite nhận độ rộng xung 0–1023.
  • Gõ một số từ 0 đến 100 rồi Enter: chương trình tăng giảm dần 1 % mỗi 15 ms tới mức mới, tránh làm giật động cơ hay sụt nguồn đột ngột khi bật mạnh.
  • Khi tới mức mới, chương trình in độ rộng xung và điện áp trung bình ước tính trên tải.

Kết quả mong đợi

Hình minh họa Serial Monitor: dòng giới thiệu, sau đó Dat muc moi 25 phần trăm và Da toi 25 phần trăm duty 255 trên 1023 điện áp trung bình khoảng 3 V, tương tự 100 phần trăm duty 1023 khoảng 12 V, 50 phần trăm duty 511 khoảng 6 V, 0 phần trăm duty 0
Kết quả mong đợi trên Serial Monitor (hình minh họa theo công thức và định dạng của chương trình).

Dải LED sáng dần tới mức đặt. Độ sáng mắt cảm nhận không tỉ lệ thẳng với phần trăm (mắt nhạy hơn ở vùng tối), nên 10–20 % đã khá sáng. Sờ thử MOSFET khi chạy 100 %: với dải LED dưới 1 A, MOSFET logic-level gần như không ấm. Nếu MOSFET nóng nhanh, rất có thể đó là loại không phải logic-level.

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

Hiện tượngNguyên nhân thường gặpCách xử lý
Dải LED sáng yếu, MOSFET nóngMOSFET không phải logic-level (IRFZ44N, IRF540)Đổi sang IRLZ44N, IRLB8721, AO3400 hoặc dùng mạch kích gate
Dải LED luôn sángNhầm chân D và S, MOSFET chập, hoặc diode thân dẫn do nối ngượcKiểm tra thứ tự chân; đo MOSFET
Dải LED nhấp nháy khi ESP32 khởi độngThiếu điện trở 10 kΩ kéo gate xuốngThêm điện trở kéo xuống
Không sángThiếu GND chung giữa adapter và ESP32Nối cực âm adapter với GND ESP32
Động cơ kêu rítTần số PWM trong vùng nghe đượcGiữ 20 kHz trở lên

7. Xem thêm


Tin tức liên quan

Liên kết chuẩn đo lường (traceability): chuỗi hiệu chuẩn từ đơn vị SI tới thiết bị hiện trường
Liên kết chuẩn đo lường (traceability): chuỗi hiệu chuẩn từ đơn vị SI tới thiết bị hiện trường

Liên kết chuẩn đo lường là gì: chuỗi hiệu chuẩn không đứt đoạn từ đơn vị SI, chuẩn quốc gia tới thiết bị hiện trường, CIPM MRA, ILAC MRA, VILAS, các trường hợp chuỗi bị đứt và cách kiểm tra.

Cảm biến lưu lượng: tua bin, chênh áp, điện từ, siêu âm, Coriolis – cấu tạo, nguyên lý và chế tạo
Cảm biến lưu lượng: tua bin, chênh áp, điện từ, siêu âm, Coriolis – cấu tạo, nguyên lý và chế tạo

Cảm biến lưu lượng hoạt động thế nào: tua bin, thể tích, chênh áp, điện từ, siêu âm, xoáy, Coriolis, nhiệt; cách chế tạo và đo lít mỗi phút, tổng lít bằng cảm biến tua bin với ESP32.

Chạm tay bật đèn: nút cảm ứng trên ESP32 cho học sinh, không cần linh kiện
Chạm tay bật đèn: nút cảm ứng trên ESP32 cho học sinh, không cần linh kiện

Dự án STEM với chân cảm ứng của ESP32: nối một dây vào D4, đọc giá trị cảm ứng, chạm tay bật tắt đèn trên mạch, giải thích điện dung, giá trị nền, hai ngưỡng và thí nghiệm.

Vali chuyên dụng là gì? Các loại vali chống sốc đựng thiết bị và cách chọn
Vali chuyên dụng là gì? Các loại vali chống sốc đựng thiết bị và cách chọn

Vali chuyên dụng là vali vỏ cứng có xốp giữ chặt thiết bị. Bài giải thích cấu tạo, bốn nhóm vali thường gặp (nhựa PP, chống nước IP67, vali nhôm, hộp sẵn xốp) và cách chọn nhanh theo nhu cầu.

Đèn trung thu nhấp nháy với ESP32 và pin 18650: dự án STEM cho học sinh
Đèn trung thu nhấp nháy với ESP32 và pin 18650: dự án STEM cho học sinh

Làm đèn ông sao trung thu với ESP32, 3 LED và mô đun pin 18650: 4 hiệu ứng chạy vòng, thở, lung linh, chạm cán đổi hiệu ứng, PWM, cách làm vỏ đèn và an toàn với pin.

Vẽ đa giác và hoa văn bằng lập trình: học góc trong môn Toán với Scratch
Vẽ đa giác và hoa văn bằng lập trình: học góc trong môn Toán với Scratch

Dùng nhóm lệnh Bút vẽ của Scratch để vẽ đa giác đều, ngôi sao, hoa văn, xoắn ốc; hiểu vì sao xoay góc ngoài 360 : n, góc trong, và liên hệ với môn Toán ở tiểu học.

Jack USB Type-C: phân biệt loại 2, 4, 5, 6 dây và các kiểu lắp
Jack USB Type-C: phân biệt loại 2, 4, 5, 6 dây và các kiểu lắp

Jack USB Type-C loại 2, 4, 5, 6 dây khác nhau ở tín hiệu đưa ra: nguồn, dữ liệu D+ D−, chân CC. Bài giải thích từng loại, màu dây, các kiểu lắp tròn, oval, dẹt có tai và cách chọn cho mạch.

Modbus TCP/IP (phần 2): ESP32 làm máy khách và cổng chuyển đổi Modbus TCP sang RTU
Modbus TCP/IP (phần 2): ESP32 làm máy khách và cổng chuyển đổi Modbus TCP sang RTU

Hướng dẫn dùng ESP32 làm máy khách Modbus TCP đọc thanh ghi của một thiết bị trong mạng, và làm cổng chuyển đổi Modbus TCP sang Modbus RTU qua RS-485: cách đổi khung, mã thiết bị, thời gian chờ, mã lỗi 0x0B.


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