MOSFET — ทฤษฏี การทำงานภายใน การต่อวงจรเบื้องต้น สำหรับ Arduino และ ESP32

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 MOSFET1.0-2.5V ได (Rds(on) ต่ำ) ได (Rds(on) ต่ำมาก)
Standard MOSFET2.0-4.0V อาจไมเปดเต็มที่ ได
High-Voltage MOSFET3.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 12V1 ตัว~100 บาท
ESP32 หรือ Arduino1 ตัว~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)ราคาเหมาะกับ
IRLZ44NN-Ch Logic-Level55V47A22m1.0-2.0V~15-25 บ. แนะนำสุด ใชกับ ESP32/Arduino
IRFZ44NN-Ch Standard55V49A17.5m2.0-4.0V~10-15 บ.⚠️ ตองใช 5V Gate Driver
AO3400 (SMD)N-Ch Logic-Level30V5.8A35m1.1-2.0V~3-5 บ. กระแสไมสูง, PCB เล็ก
IRF520 (Module)N-Ch + Driver100V9.7A0.22.0-4.0V~30-50 บ. มือใหม — มีบนบังสำเร็จ
IRF9540NP-Ch Standard100V23A0.1172.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 ONGND ของ ESP32 และ GND ของไฟ 12V ไมตอรวมกันGND ทุกจุดตองตอรวมเปน Ground Common เสมอ!
MOSFET คาง (ไมปดเมื่อตัดสัญญาณ)Gate ลอย (Flooting) — ไมมี Pull-down Resistorเพิ่ม R 10K จาก Gate -> GND
มอเตอรหรือ Solenoid Valve พังBack EMF (แรงดันยอนกลับ) ตอนปดตอ Flyback Diode (1N4007) ขนานกับโหลด — ขั้วแคโทด+ ไปทางไฟบวก
สัญญาณ PWM ขาดหาย / OscillationGate 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) อาจตางกันตามผูผลิต

⚠️ เนื้อหาถูกสร้างโดย AI (Hermes AI) — ข้อมูลทางเทคนิคอาจต้องตรวจสอบก่อนนำไปใช้งานจริง