MOSFET คืออะไร — ทำไมต้องเรียน?
MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor) คืออุปกรณ์สวิตชิ่งอิเล็กทรอนิกส์ที่ใช้กันแพร่หลายในวงจร Arduino/ESP32 เพื่อควบคุมโหลด DC ที่ใช้กระแสสูงกว่า GPIO จะจ่ายได้โดยตรง เช่น ปั๊มน้ำ 12V, Solenoid Valve, LED Strip 12V, มอเตอร์ DC
เข้าใจหลักการของ MOSFET จะช่วยให้คุณออกแบบวงจรเปิด-ปิดโหลด 12V ได้ด้วยสัญญาณ 3.3V หรือ 5V จาก MCU อย่างถูกต้องและปลอดภัย
หลักการทำงานภายใน (Theory)
MOSFET เป็นอุปกรณ์ประเภท Voltage-Controlled — ต่างจาก BJT (Bipolar Junction Transistor) ที่เป็น Current-Controlled MOSFET ใช้แรงดันไฟฟ้าที่ Gate เพื่อควบคุมการไหลของกระแสระหว่าง Drain และ Source
โครงสร้างภายใน MOSFET (N-Channel Enhancement Mode):
Gate (G) — ขั้วควบคุม ทำจาก Polysilicon
|
[SiO2 — Silicon Dioxide = ฉนวนบาง ~1-10nm]
|
+----+----+ Drain (D) — ขั้วรับไฟเข้า
| P-Type | |
| Substrate | +--+--+
| (Body) | | N+ | — N-type ที่เจือหนัก
+----+----+ +-----+
| N-Channel |
| (ช่องเชื่อมต่อ) |
+----+----+ +-----+
| P-Type | | N+ |
| | +--+--+
+----+----+ |
Source (S) — ขั้วต่อ GND
เมื่อ Gate +V: สรางสนามไฟฟากระจาย N-Channel
ใหกระแสไหลจาก Drain -> Source
เมื่อ Gate 0V: N-Channel หายไป (Pinch-off)
ตัดการไหลของกระแส
หลักการทำงานแบบง่าย
| ส่วนประกอบ | อุปมา | หนาที่ |
|---|---|---|
| Gate (G) | ประตูน้ำ / สวิทชควบคุม | จายแรงดันไฟฟาเพื่อเปด-ปด — ไมมีกระแสไหลเขา Gate (ตางจาก BJT) |
| Drain (D) | ทองน้ำขาเขา | ตอเขากับแหลงจายไฟ (+12V หรือ +5V) — กระแสโหลดไหลเขาทางนี้ |
| Source (S) | ทองน้ำขาออก | ตอลง GND — กระแสโหลดไหลออกทางนี้ |
| Body Diode | ไดโอดในตัว | ไดโอดภายใน D->S (ปองกันกระแสยอนกลับ) — มักมีอยูในตัว MOSFET ทุกตัว |
Gate Threshold Voltage (Vth) — สำคัญที่สุด!
MOSFET จะเริ่มเปดเมื่อแรงดัน Gate-Source (Vgs) ถึงคา Vgs(th) (Threshold Voltage) — คานี้กำหนดวาสัญญาณ 3.3V หรือ 5V จาก ESP32/Arduino จะสามารถขับ MOSFET ไดหรือไม
| ประเภท | Vgs(th) ทั่วไป | ขับดวย 3.3V (ESP32) | ขับดวย 5V (Arduino) |
|---|---|---|---|
| Logic-Level MOSFET | 1.0-2.5V | ได (Rds(on) ต่ำ) | ได (Rds(on) ต่ำมาก) |
| Standard MOSFET | 2.0-4.0V | อาจไมเปดเต็มที่ | ได |
| High-Voltage MOSFET | 3.0-5.0V | ❌ เปดไมถึง | ตองใช Gate Driver |
สำคัญมาก! ถาใช ESP32 (3.3V Output) ตองเลือก MOSFET แบบ Logic-Level (Vgs(th) < 2V) เทานั้น มิฉะนั้น MOSFET จะเปดไมเต็มที่ -> Rds(on) สูง -> รอน -> พัง
2 ประเภทหลัก — N-Channel vs P-Channel
N-Channel MOSFET (แนะนำสำหรับมือใหม่)
- ตอ Source ลง GND, Drain ตอโหลด, Gate รับสัญญาณ
- Rds(on) ต่ำกวา P-Channel (ประสิทธิภาพดีกวา)
- ราคาถูกกวา หางายกวา
- ใชกับวงจร Low-Side Switch (สวิตชดานต่ำ)
P-Channel MOSFET
- ตอ Source กับไฟบวก (+12V), Drain ตอโหลด, Gate รับสัญญาณกลับขั้ว
- Rds(on) สูงกวา N-Channel (รอนกวา)
- ราคาแพงกวา
- ใชกับวงจร High-Side Switch (สวิตชดานสูง) — ไมตองให GND โหลดรวมกับ MCU
ไดอะแกรมการตอ — N-Channel Low-Side Switch (แบบที่ใชบอยที่สุด)
วงจร Low-Side Switch ดวย N-Channel MOSFET (IRLZ44N / AO3400):
+12V
|
+---+---+
| โหลด | (ปั๊ม / Solenoid Valve / LED Strip)
+---+---+
|
Drain (D)
+---+---+
3.3V --+ Gate | N-Channel MOSFET
(ESP32) | (G) | (IRLZ44N / AO3400)
+---+---+
|
Source (S)
|
GND
สวนประกอบเพิ่มเติม:
- R1 = 10K (Pull-down Gate->GND) ปองกัน Gate ลอย
- R2 = 100-330 (Gate Series Resistor) ั จำกัดกระแสตอน Gate Charge
- ไดโอด Flyback (1N4007 / 1N4148) ขนานกับโหลด Inductive (มอเตอร, Solenoid)
การตอวงจรจริงบน Breadboard พรอม Source Code
อุปกรณที่ตองใชทดลอง
| อุปกรณ | จำนวน | ราคา |
|---|---|---|
| IRLZ44N (Logic-Level N-Channel MOSFET) หรือ AO3400 (SMD) | 1 ตัว | ~10-20 บาท |
| Resistor 10KΩ (Pull-down) | 1 ตัว | ~1 บาท |
| Resistor 220Ω (Gate Resistor — ปองกัน Oscillation) | 1 ตัว | ~1 บาท |
| ไดโอด 1N4007 (Flyback — สำหรับโหลด Inductive) | 1 ตัว | ~2 บาท |
| LED + 220Ω (โหลดทดสอบ) | 1 ชุด | ~5 บาท |
| แบต 12V หรือ Adapter 12V | 1 ตัว | ~100 บาท |
| ESP32 หรือ Arduino | 1 ตัว | ~150 บาท |
แผนผังการตอบน Breadboard (ทดสอบดวย LED 12V):
ESP32 Pin Breadboard
-------- -----------
GPIO32 ---[220R]---+--- Gate (IRLZ44N)
|
[10K]
|
GND
+12V --- LED ---[220R]---+--- Drain (IRLZ44N)
Source (IRLZ44N) --- GND
*** GND ของ ESP32 ตองตอรวมกับ GND ของไฟ 12V ***
(Ground Common — สำคัญที่สุด!)
Source Code — ทดสอบ MOSFET PWM และ ON/OFF
// ทดสอบ MOSFET N-Channel (IRLZ44N) — ESP32
// 1. เปิด-ปิด LED 12V
// 2. PWM ปรับความสวาง
// 3. วัดแรงดันที่ Drain ดวยมัลติมิเตอร์
#define MOSFET_PIN 32 // GPIO ตอ Gate (ผาน 220R)
void setup() {
Serial.begin(115200);
pinMode(MOSFET_PIN, OUTPUT);
digitalWrite(MOSFET_PIN, LOW); // เริ่มตนดวย OFF
Serial.println("=== ทดสอบ MOSFET IRLZ44N ===");
Serial.println("1. เปิด-ปิด LED 12V (อนาล็อก)");
Serial.println("2. PWM Fade");
Serial.println("3. วัด Drain Voltage");
}
void loop() {
// ----- ทดสอบ 1: ON/OFF -----
Serial.println("ON");
digitalWrite(MOSFET_PIN, HIGH); // Gate = 3.3V -> MOSFET ON
delay(3000);
Serial.println("OFF");
digitalWrite(MOSFET_PIN, LOW); // Gate = 0V -> MOSFET OFF
delay(2000);
// ----- ทดสอบ 2: PWM Fade -----
Serial.println("PWM Fade Up");
for (int duty = 0; duty <= 255; duty++) {
analogWrite(MOSFET_PIN, duty);
delay(10);
}
Serial.println("PWM Fade Down");
for (int duty = 255; duty >= 0; duty--) {
analogWrite(MOSFET_PIN, duty);
delay(10);
}
// ----- ทดสอบ 3: อานคา Analog ที่ Drain (ผาน Voltage Divider) -----
// ถาตอ Voltage Divider จาก Drain -> GPIO34
// int drainV = analogRead(34);
// Serial.printf("Drain Voltage Raw: %d\n", drainV);
delay(2000);
}
MOSFET vs Relay — ควรใชอะไร?
| หัวขอ | MOSFET (N-Channel) | Relay Module 5V |
|---|---|---|
| หลักการ | สวิตช Solid-State ไมมีชิ้นสวนเคลื่อนที่ | สวิตชกล (Coil + หนาสัมผัส) |
| อายุ | ไมมีหมดอายุ (ถาไมเกิน Spec) | ❌ ~10,000-100,000 ครั้ง (หนาสัมผัสกรอน) |
| ความเร็ว | MHz (PWM 20kHz+ ได) | ❌ ~10-20ms (ชามาก) |
| PWM | ได (ปรับความเร็ว/ความสวาง) | ❌ ไมได |
| กระแสสูงสุด | ~30-100A (ตามรุ่น) | ~10A (ตามรุ่น) |
| แรงดันสูงสุด | ~30-100V (ตามรุ | ~250VAC (เหมาะกับไฟบาน) |
| วงจรแยก (Isolation) | ❌ Gate-ไมแยกจากโหลด (Ground รวม) | Coil แยกจากหนาสัมผัส (ปลอดภัยกวา) |
| ราคา | ~10-30 บาท | ~20-30 บาท (รวม Optocoupler) |
| ขับดวย ESP32 3.3V | Logic-Level MOSFET (IRLZ44N) | Optocoupler IN 3.3V ได |
| กินไฟตอน ON | ~0 mA (Gate ไมกินกระแส) | ⚠️ ~50-100 mA (Coil) |
| เหมาะกับ | PWM, โหลด DC, ON/OFF ถๆ | โหลด AC, วงจรแยก |
MOSFET ยอดนิยมสำหรับงาน Arduino/ESP32
| รุ่น | ชนิด | Vds(max) | Id(max) | Rds(on) | Vgs(th) | ราคา | เหมาะกับ |
|---|---|---|---|---|---|---|---|
| IRLZ44N | N-Ch Logic-Level | 55V | 47A | 22m | 1.0-2.0V | ~15-25 บ. | แนะนำสุด ใชกับ ESP32/Arduino |
| IRFZ44N | N-Ch Standard | 55V | 49A | 17.5m | 2.0-4.0V | ~10-15 บ. | ⚠️ ตองใช 5V Gate Driver |
| AO3400 (SMD) | N-Ch Logic-Level | 30V | 5.8A | 35m | 1.1-2.0V | ~3-5 บ. | กระแสไมสูง, PCB เล็ก |
| IRF520 (Module) | N-Ch + Driver | 100V | 9.7A | 0.2 | 2.0-4.0V | ~30-50 บ. | มือใหม — มีบนบังสำเร็จ |
| IRF9540N | P-Ch Standard | 100V | 23A | 0.117 | 2.0-4.0V | ~15-25 บ. | High-Side Switch |
IRLZ44N ตัวเลือกที่ดีที่สุด! — หาซื้องายตามรานอิเล็กทรอนิกส, ราคาถูก ~15-25 บาท, ใชกับ ESP32 3.3V ไดทันที (Logic-Level), Rds(on) ต่ำมาก 22m กินไฟตอน ON = 0mA, รับกระแสไดถึง 47A, แรงดันไดถึง 55V — เพียงพอกับปั๊ม 12V, Solenoid Valve, LED Strip 12V
IRF520 MOSFET Module — ทางเลือกสำหรับมือใหม
IRF520 Module เปนบอรดสำเร็จที่มีวงจร Gate Driver + ไดโอด + Terminal Block ในตัว เพียงตอ 3 สาย:
IRF520 Module: VCC -> ESP32 3.3V หรือ 5V (ไฟเลี้ยงวงจร Driver) GND -> ESP32 GND SIG -> ESP32 GPIO32 V+ -> 12V (ไฟเขาสำหรับโหลด) V- -> โหลด + (ปั๊ม/Solenoid) โหลด - -> GND (รวมกับ GND 12V)
ขอเสีย: IRF520 ไมใช Logic-Level — ถา ESP32 3.3V อาจขับ Gate ไมเต็มที่ ตองใชเลข VCC = 5V เพื่อให Driver จายไฟ Gate 5V แทน
ขอควรระวังและปญหาที่พบบอย
| ปญหา | สาเหตุ | วิธีแก |
|---|---|---|
| MOSFET รอนจับไมได | Rds(on) สูงเพราะ Gate ไดรับแรงดันไมพอ | ใช Logic-Level MOSFET (IRLZ44N), หรือเพิ่ม Gate Driver |
| โหลด 12V ไมทำงานเมื่อ MOSFET ON | GND ของ ESP32 และ GND ของไฟ 12V ไมตอรวมกัน | GND ทุกจุดตองตอรวมเปน Ground Common เสมอ! |
| MOSFET คาง (ไมปดเมื่อตัดสัญญาณ) | Gate ลอย (Flooting) — ไมมี Pull-down Resistor | เพิ่ม R 10K จาก Gate -> GND |
| มอเตอรหรือ Solenoid Valve พัง | Back EMF (แรงดันยอนกลับ) ตอนปด | ตอ Flyback Diode (1N4007) ขนานกับโหลด — ขั้วแคโทด+ ไปทางไฟบวก |
| สัญญาณ PWM ขาดหาย / Oscillation | Gate Resistor ไมพอ — Gate Capacitance ทำให Oscillate | เพิ่ม R 100-220Ω ระหวาง ESP32 GPIO -> Gate |
| MOSFET เสีย (ลัดวงจร D-S ตลอด) | Gate รับแรงดันเกิน Vgs(max) ~±20V | ไมควรใชไฟ >12V กับ Gate โดยตรง หรือใส Zener Diode 15V ปองกัน |
| ESP32 Boot ลมเหลวเมื่อตอไว | GPIO ที่ Boot มีผล (GPIO 0, 2, 12) — MOSFET Pull-up/Pull-down ไปกระทบ | เลี่ยงใช GPIO 0, 2, 12 สำหรับ MOSFET; ใช GPIO 32, 33, 25, 26 แทน |
สรุป — จำแคนี้ก็พอ
- MOSFET = สวิตชไฟที่ใช แรงดัน ควบคุม — ไมใชกระแส (ตางจาก BJT)
- N-Channel + Low-Side = แบบที่ใชบอยที่สุด (Source->GND, Drain->Load)
- Logic-Level MOSFET (IRLZ44N) = ตองใชกับ ESP32 3.3V
- GND ทุกจุด ตองรวมกัน! — Ground Common เปนสิ่งสำคัญที่สุดในการตอวงจร MOSFET
- Rds(on) ยิ่งต่ำ ยิ่งดี — ไมรอน, ประหยัดไฟ
- IRLZ44N = ~15-25 บาท — แนะนำที่สุดสำหรับงาน Arduino/ESP32
แหลงซื้อ
- Shopee / Lazada: คนหา "IRLZ44N" ~15-25 บาท, "IRF520 Module" ~30-50 บาท
- รานอิเล็กทรอนิกส: อิ้นเทค (INEX), เฮียหลี, บานอิเล็กทรอนิกส
- AliExpress: "IRLZ44N TO-220" ~$1-2 ตอ 5-10 ตัว
หมายเหตุ: เนื้อหานี้คนควาและเรียบเรียงโดย Hermes AI — ควรตรวจสอบ Datasheet จริงของ MOSFET ที่ซื้อ เพราะพารามิเตอร (Vgs(th), Rds(on), Id) อาจตางกันตามผูผลิต