ทำไมต้องใช้ MOSFET ควบคุมปั๊ม?
ปั๊มน้ำ DC 12V เป็น Inductive Load — มีขดลวดมอเตอร์อยู่ข้างใน การใช้ Relay ควบคุมเปิด-ปิดนั้นทำได้ แต่มีข้อจำกัด:
- ❌ ไม่สามารถปรับความเร็วปั๊มได้ — เปิดก็เต็มที่ ปิดก็สนิท
- ❌ Relay มีอายุการใช้งานจำกัด (~100,000 ครั้ง) — ส่วนปั๊มรดน้ำวันละหลายรอบ Relay อาจพังใน 1-2 ปี
- ❌ เปิด-ปิดทันทีแบบ Full Speed — กระแสกระชากตอนสตาร์ทอาจทำให้ปั๊มกระแทก (Water Hammer) และอายุปั๊มสั้นลง
- ❌ ใช้กระแสเลี้ยงคอยล์ Relay มากกว่า (~40-80mA/ch)
MOSFET แก้ปัญหาเหล่านี้ได้:
- ✅ PWM ปรับความเร็ว — เปิดเบา ๆ ค่อย ๆ เร่ง ลด Water Hammer
- ✅ Solid State — ไม่มีชิ้นส่วนเคลื่อนไหว ไม่มีการสึกหรอ
- ✅ Soft Start — ค่อย ๆ เพิ่ม duty cycle ป้องกันกระแสกระชาก
- ✅ กระแสเลี้ยง Gate น้อยมาก — Arduino จ่ายได้สบาย
วงจรควบคุมปั๊มด้วย MOSFET
+12V ─────┬──────────── +12V ปั๊ม
│
[ FUSE 2A ]
│
└──────────── Drain ─┐
IRLZ44N │
Gate ───────┤ │
│ Source ──┼── GND
│ │ │
[R1 10kΩ] │ │
│ │ │
GND ──────────┘ │
│
[D1 1N4007]
──→──
│
GND ┘
Arduino Pin 9 (PWM) ────[R2 100Ω]──── Gate
อธิบายวงจร:
- IRLZ44N — Logic-Level N-Channel MOSFET (Gate 5V = เปิดเต็มที่)
- R1 (10kΩ) Pull-Down — ป้องกัน Gate ลอย ตอน Arduino ยังไม่เริ่มทำงาน ปั๊มจะไม่ทำงานเอง
- R2 (100Ω) Gate Resistor — จำกัดกระแสตอนชาร์จ Gate ลด noise และ ringing
- D1 (1N4007) Flyback Diode — ป้องกันแรงดันย้อนกลับจากมอเตอร์ตอนปิด ⚠️ ห้ามขาด!
- FUSE 2A — ป้องกันกระแสเกิน ถ้ามอเตอร์ล็อกหรือ短路
⚠️ Flyback Diode ห้ามลืม! มอเตอร์ปั๊มเป็น Inductive Load — ตอนที่ MOSFET ปิด กระแสในขดลวดจะพยายามไหลต่อไป ทำให้เกิดแรงดันย้อนกลับสูง (~50-100V) ถ้าไม่มีไดโอด จะพัง MOSFET ทันที
เลือก MOSFET ยังไง?
| รุ่น | Vds | Id | Rds(on) | Vgs(th) | Logic-Level? | ราคา |
|---|---|---|---|---|---|---|
| IRLZ44N | 55V | 47A | 22mΩ | 1-2V | ✅ ใช่ | ~15-30 |
| IRLB8721 | 30V | 62A | 8mΩ | 1-2V | ✅ ใช่ | ~20-40 |
| IRF540 | 100V | 28A | 77mΩ | 2-4V | ❌ ไม่ | ~10-20 |
| IRF520 | 100V | 9.2A | 200mΩ | 2-4V | ❌ ไม่ | ~8-15 |
แนะนำ: IRLZ44N — ถูกที่สุด เข้ากับ Arduino 5V ได้เลย ไม่ต้องใช้ Driver เพิ่ม สามารถควบคุมปั๊มได้ถึง ~5A โดยไม่ต้องใส่ Heat Sink (ถ้าใช้ PWM ไม่เต็ม 100% ตลอดเวลา)
⚠️ IRF540/IRF520 ไม่ใช่ Logic-Level — Gate ต้องการ ~10V จึงจะเปิดเต็มที่ ถ้าต่อกับ Arduino โดยตรง MOSFET จะเปิดไม่สุด Rds(on) สูง → ร้อน → พังได้
Source Code — Soft Start + PWM ควบคุมความเร็ว
// MOSFET Pump Control — Soft Start + Adjustable Speed
// Arduino Pin 9 → Gate (ผ่าน 100Ω)
const int PUMP_PWM = 9; // PWM Pin
const int START_BTN = 7; // ปุ่มกดเริ่มรดน้ำ (optional)
// รดน้ำแบบ Soft Start — ค่อย ๆ เพิ่มความเร็ว
void pumpSoftStart(int targetSpeed, int rampDelay = 30) {
// targetSpeed: 0-255
// rampDelay: ms ระหว่างแต่ละ step (ยิ่งมาก ยิ่งนุ่มนวล)
for (int s = 0; s <= targetSpeed; s += 5) {
analogWrite(PUMP_PWM, s);
delay(rampDelay);
}
}
// หยุดปั๊มแบบ Soft Stop — ค่อย ๆ ลดความเร็ว
void pumpSoftStop(int rampDelay = 30) {
int current = analogRead(PUMP_PWM); // อ่านค่าปัจจุบัน
for (int s = 255; s >= 0; s -= 5) {
analogWrite(PUMP_PWM, s);
delay(rampDelay);
}
digitalWrite(PUMP_PWM, LOW); // ปิดสนิท
}
// รดน้ำตามเวลาที่กำหนด ด้วยความเร็วที่กำหนด
void waterPlants(int speed, int durationMs) {
pumpSoftStart(speed);
delay(durationMs);
pumpSoftStop();
}
void setup() {
pinMode(PUMP_PWM, OUTPUT);
digitalWrite(PUMP_PWM, LOW); // เริ่มต้นปิด
pinMode(START_BTN, INPUT_PULLUP);
}
void loop() {
// ตัวอย่าง: รดน้ำทุกวันเวลา 7:00 น. ด้วยความเร็ว 80%
// (ใช้กับ RTC — ยกตัวอย่าง logic)
// waterPlants(200, 15000); // 15 วินาที ที่ ~80% speed
// หรือรดน้ำแบบปรับตามความชื้นดิน
// int moisture = analogRead(A0); // อ่าน Soil Moisture
// if (moisture < 400) {
// waterPlants(180, 10000);
// }
// หรือกดปุ่มรดน้ำ
if (digitalRead(START_BTN) == LOW) {
waterPlants(200, 10000); // รดน้ำ 10 วินาที
delay(1000); // Debounce
}
}
โหมดการควบคุม 3 แบบ
MOSFET ควบคุมปั๊มได้ยืดหยุ่นกว่า Relay มาก:
| โหมด | วิธี | ข้อดี | ข้อเสีย |
|---|---|---|---|
| 🔵 On/Off | digitalWrite(HIGH/LOW) | ง่ายสุด, เขียนโค้ดน้อย | ไม่ได้ใช้ประโยชน์จาก MOSFET |
| 🟢 Soft Start/Stop | ค่อยๆ เพิ่ม/ลด PWM | ยืดอายุปั๊ม, ลด Water Hammer | ต้องเขียนโค้ดเพิ่ม |
| 🟡 ปรับความเร็วตามเซ็นเซอร์ | PWM แปรผันตาม Soil Moisture | รดน้ำพอดี ไม่สิ้นเปลือง | ซับซ้อนขึ้น |
การเลือก Heat Sink
MOSFET IRLZ44N มี Rds(on) 22mΩ — ที่กระแส 2A จะเกิดความร้อน:
P = I² × R = 2² × 0.022 = 0.088W (ใช้ PWM 100%) P = 0.088W × 50% = 0.044W (ใช้ PWM 50%)
ความร้อน 0.04-0.09W น้อยมาก — ไม่ต้องใส่ Heat Sink ก็ได้ ถ้าควบคุมปั๊ม ~1-3A
แต่ถ้าควบคุมปั๊มใหญ่ (5A+) หรือใช้ PWM ต่ำ ๆ (~20-30%) เป็นเวลานาน — ควรใส่ Heat Sink ขนาดเล็ก (~10-20°C/W) เพื่อความปลอดภัย
Pro Tips
- 🔹 ใช้ Fuse เสมอ — ปั๊ม DC อาจล็อก (ถ้าตะกอนอุด) ถ้าไม่มี Fuse MOSFET จะไหม้ หรือไฟอาจลัดวงจร
- 🔹 สายไฟหนาพอ — ปั๊ม 12V 2A ใช้สาย 1.5mm² ขึ้นไป ถ้ายาวเกิน 5m ควรใช้ 2.5mm²
- 🔹 แยก Ground — ถ้าใช้ MOSFET หลายตัว (หลายปั๊ม) ควรแยก Source ของแต่ละตัว แล้วต่อ GND ร่วมที่จุดเดียว (Star Ground)
- 🔹 ถ้าปั๊มใหญ่เกิน 5A — ใช้ Relay แทน หรือใช้ MOSFET + Heat Sink + พัดลมระบายความร้อน
- 🔹 Flyback Diode ต้องเร็ว — 1N4007 ใช้ได้กับปั๊มทั่วไป แต่ถ้าปั๊มมี Brushless (BLDC) ให้ใช้ Schottky Diode (เช่น 1N5822) แทน
ราคาประมาณการ
| อุปกรณ์ | จำนวน | ราคา |
|---|---|---|
| MOSFET IRLZ44N | 1 | ~20 บาท |
| Resistor 100Ω | 1 | ~1 บาท |
| Resistor 10kΩ | 1 | ~1 บาท |
| Diode 1N4007 | 1 | ~2 บาท |
| Fuse 2A + Holder | 1 | ~15 บาท |
| Heat Sink (เล็ก) | 1 | ~5-10 บาท |
| PCB Prototype / Perfboard | 1 | ~10 บาท |
| รวม | ~50-60 บาท |
เทียบกับการใช้ Relay Module (~50-80 บาท) — ราคาพอๆ กัน แต่ได้ PWM, Soft Start, และอายุการใช้งานไม่จำกัด
⚠️ หมายเหตุ: เนื้อหานี้ค้นคว้าและเรียบเรียงโดย Hermes AI — ข้อมูลทางเทคนิคควรตรวจสอบก่อนนำไปใช้งานจริง การต่อวงจรไฟฟ้ามีความเสี่ยง ควรศึกษาข้อมูลเพิ่มเติมและปรึกษาผู้เชี่ยวชาญ