MOSFET và Relay - cho ESP32 điều khiển tải công suất lớn an toàn

GPIO chỉ cấp được 40 mA - muốn bật đèn, bơm, quạt cần MOSFET hoặc relay. Nguyên lý, chọn linh kiện logic-level, sơ đồ đấu và quy tắc an toàn điện AC. Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết và ứng dụng thực tế trong robot.
Bài toán: GPIO yếu, tải khỏe
Chân GPIO của ESP32 cấp tối đa ~40 mA ở 3.3V — đủ cho LED và tín hiệu. Nhưng dự án thật cần bật tắt những thứ "khỏe": bơm nước 12V 1A cho vườn tự tưới, quạt 12V, dải LED 5V 3A, van điện, đèn 220V. Nối thẳng vào GPIO: nhẹ thì không chạy, nặng thì chết chip.
Lời giải là tầng công suất trung gian: GPIO chỉ ra lệnh mức tín hiệu, một linh kiện chuyên đóng cắt gánh phần dòng lớn. Hai lựa chọn phổ biến: MOSFET (khóa bán dẫn) và relay (công tắc cơ điện). Bài này dạy chọn đúng và đấu đúng.
MOSFET vs Relay - bảng quyết định
| Tiêu chí | MOSFET (kênh N) | Relay cơ |
|---|---|---|
| Bản chất | Bán dẫn, không tiếp điểm | Nam châm điện hút tiếp điểm cơ khí |
| Tải phù hợp | DC: động cơ, LED, bơm, quạt | AC 220V và DC; tải cần cách ly hoàn toàn |
| PWM (băm xung) | Có — điều tốc, điều sáng | Không — chỉ bật/tắt (vài chục ms mỗi lần) |
| Tốc độ đóng cắt | Micro giây | 5-15 ms, nghe tách tách |
| Tuổi thọ | Gần vô hạn | ~100.000 lần đóng cắt |
| Cách ly điện | Không (chung mass) | Có — cuộn hút và tiếp điểm tách rời |
| Tiêu thụ khi giữ ON | ~0 | 60-80 mA nuôi cuộn hút liên tục |
| Giá | 5.000-15.000 đ | Module 1 kênh 15.000-25.000 đ |
Quy tắc nhớ nhanh: tải DC cần PWM → MOSFET; tải AC 220V hoặc cần cách ly → relay (module có opto).
MOSFET kênh N - khóa điện tử quốc dân
Nguyên lý 30 giây
MOSFET kênh N có 3 chân: G (Gate - cổng điều khiển), D (Drain), S (Source). Cấp điện áp dương vào G so với S vượt ngưỡng — kênh D-S mở cho dòng chạy qua. Ngắt áp G — kênh đóng. G gần như không ăn dòng (điều khiển bằng điện áp) nên GPIO lái trực tiếp được.
Chọn MOSFET cho ESP32: bắt buộc "logic-level"
Thông số then chốt: Vgs(th) và điều kiện đo Rds(on). MOSFET thường (như IRF540) cần 10V vào cổng mới mở bão hòa — GPIO 3.3V chỉ he hé mở, MOSFET nóng như bếp và chết dần. Chọn loại logic-level mở hết cỡ ở 2.5-3.3V:
| Mã | Dòng D-S tối đa | Rds(on) ở 3.3V | Ghi chú |
|---|---|---|---|
| AO3400 (SMD) | 5.7 A | ~30 mΩ | Rẻ, có sẵn trên module bán sẵn |
| IRLZ44N | 47 A | ~25 mΩ ở 4V (chấp nhận ở 3.3V với tải vừa) | Chân cắm TO-220, dễ hàn |
| IRLB8721 | 62 A | ~10 mΩ | Chuẩn mực cho tải nặng, lái được từ 3.3V |
| Module MOSFET D4184 | 15 A | thấp | Đủ trở kéo, ốc vít bắt dây — tiện nhất cho lớp học |
Chữ L trong IRL... là dấu hiệu logic-level (so với IRF... bản thường).
Sơ đồ đấu chuẩn (low-side switching)
Nguồn 12V (+) ──── Tải (bơm/quạt/LED) ────┬──── D
|
(diode flyback 1N5819 | ngược chiều, chỉ cần cho tải cuộn dây)
|
GPIO 25 ── điện trở 220Ω ──── G |
GND ESP32 ─────┬────────────── S ─────────┘
└── nối chung GND nguồn 12V
(thêm điện trở 10kΩ từ G xuống GND để MOSFET tắt chắc khi ESP32 khởi động)Bốn thành phần có lý do:
- 220Ω nối tiếp G: ghìm dòng nạp xả điện dung cổng, bảo vệ GPIO
- 10kΩ từ G xuống GND: giữ MOSFET TẮT khi ESP32 đang boot (GPIO thả nổi) — thiếu nó bơm có thể tự chạy lúc cấp nguồn
- Diode flyback ngược chiều song song tải cuộn dây (bơm, quạt, van, motor): thoát xung áp ngược khi ngắt — bài Mạch cầu H ở mục Kiến thức giải thích kỹ hiện tượng này
- Chung GND giữa nguồn tải và ESP32 — quên là không chạy
PWM qua MOSFET: ledcAttach(25, 5000, 8) rồi ledcWrite(25, duty) — điều tốc quạt, điều sáng dải LED mượt mà. Chi tiết LEDC trong bài PWM trên ESP32 ở mục Kiến thức.
Relay - công tắc vạn năng có cách ly
Module relay 5V phổ biến
Module 1-4 kênh gồm: relay 5V/10A, opto cách ly, transistor lái và LED báo. Chân vào: VCC (5V), GND, IN (tín hiệu). Đa số module là kích mức THẤP (active LOW): IN = LOW thì relay hút — để ý kẻo logic ngược.
Chân ra ba cọc:
- COM: chân chung
- NO (Normally Open): hở khi nghỉ, đóng khi kích — dùng cho hầu hết ứng dụng "bật thiết bị theo lệnh"
- NC (Normally Closed): ngược lại — dùng khi muốn thiết bị mặc định chạy, kích để ngắt
const int RELAY = 26; // module kích mức thấp
void setup() {
pinMode(RELAY, OUTPUT);
digitalWrite(RELAY, HIGH); // HIGH = tắt (active LOW)
}
void loop() {
digitalWrite(RELAY, LOW); // bật bơm
delay(5000);
digitalWrite(RELAY, HIGH); // tắt
delay(10000);
}Lưu ý nguồn: cuộn relay ăn 60-80 mA — module 4 kênh kích cùng lúc ăn hơn 300 mA, phải nuôi bằng nguồn 5V riêng, không ăn chân 3V3 của ESP32. Tín hiệu IN từ GPIO 3.3V kích được hầu hết module 5V (nhờ opto), một số module khó tính cần chuyển mức.
An toàn điện AC 220V - đọc kỹ trước khi đấu
Relay mở ra khả năng điều khiển thiết bị 220V — và cùng với nó là rủi ro thật sự:
- Học sinh dưới 18 tuổi không tự đấu mạch 220V — mọi thao tác phần AC phải do giáo viên/người lớn có hiểu biết thực hiện
- Ngắt cầu dao trước khi đấu; dùng bút thử điện xác nhận
- Dây AC đấu vào domino/cọc vít của relay, siết chặt, bọc kín phần cọc bằng hộp hoặc co nhiệt — không để tiếp điểm 220V trần trên bàn học
- Relay 10A danh định chỉ nên gánh tải ≤ 5A thực tế (đèn, quạt bàn); không đóng cắt lò sưởi, ấm siêu tốc
- Ưu tiên phương án an toàn hơn cho lớp học: ổ cắm WiFi thành phẩm hoặc dạy trên tải 12V DC mô phỏng — bài học logic giống hệt, rủi ro bằng không
Chọn nhanh theo dự án
| Dự án | Giải pháp | Vì sao |
|---|---|---|
| Vườn tự tưới (bơm 12V) | MOSFET IRLZ44N/module D4184 | DC, có thể PWM giảm lưu lượng |
| Dải LED 5V trang trí robot | MOSFET AO3400 | PWM hiệu ứng nhịp thở |
| Bật đèn bàn 220V khi trời tối | Relay module 1 kênh (opto) | Bắt buộc cách ly AC |
| Quạt thông gió nhà kính | MOSFET (12V) hoặc relay (nếu quạt AC) | Theo loại quạt |
| Khóa cửa điện từ 12V | Relay hoặc MOSFET + diode flyback | Cuộn hút — nhớ diode |
| Còi báo động 12V | MOSFET nhỏ (AO3400) | Đơn giản, rẻ |
Câu hỏi thường gặp
Transistor BJT (2N2222, TIP120) thay MOSFET được không?
Được cho tải nhỏ-vừa và vẫn phổ biến trong giáo trình cũ. Nhược so với MOSFET: ăn dòng điều khiển liên tục qua cực B, sụt áp C-E ~0.7-1V gây nóng ở dòng cao (TIP120 Darlington sụt tới 2V). Thời nay MOSFET logic-level rẻ ngang — nên học thẳng MOSFET.
Vì sao MOSFET của tôi nóng dù tải chỉ 2A?
Ba nghi phạm: không phải loại logic-level (mở nửa vời ở 3.3V — kiểm tra mã có chữ L); PWM tần số quá cao với MOSFET to (tổn hao chuyển mạch); hoặc thiếu trở kéo xuống làm cổng lơ lửng. MOSFET đúng loại, mở hết, dẫn 2A chỉ ấm nhẹ (P = I² x Rds ≈ 2² x 0.02 = 0.08 W).
Relay bán dẫn (SSR) có tốt hơn relay cơ không?
SSR không tiếng động, không mòn tiếp điểm, đóng cắt nhanh — hợp đóng cắt dày đặc và môi trường cần im lặng. Nhược: đắt hơn, nóng khi tải lớn (cần tản nhiệt), loại AC chỉ dùng cho AC. Lớp học dùng relay cơ có opto là đủ và trực quan hơn (nghe tách = biết chạy).
Một GPIO điều khiển được mấy relay/MOSFET?
Về tín hiệu: một GPIO kích song song vài cổng MOSFET thoải mái (cổng không ăn dòng tĩnh). Nhưng thiết kế tốt là mỗi tải một chân để điều khiển độc lập — ESP32 dư chân cho 8-10 kênh công suất trong dự án nhà thông minh điển hình.
Tài nguyên tải về
Tải bản PDF của bài viết để in giáo án hoặc gửi trước cho học viên.



