ควบคุมความเร็ว มอเตอร์ด้วยโค้ดสั้นนิดเดียว Arduino PWM

สามารถควบคุมได้ด้วยบอร์ด arduino และ mosfet drive เนื่องจาก arduino ไม่สามารถขับมอเตอร์ได้โดยตรงจึงให้ mosfet ทำหน้าที่เป็นสวิตซ์ เปิด-ปิด
โดยสามารถใช้คำสั่ง สั้นๆได้ดังนี้
 analogWrite(pinout, 255); 

 pinout คือ ขาออกของสัญญาณ บนตัวบอร์ด arduino

255 คือ สามารถระบุค่าได้ตั้งแต่ 1 - 255 ซึ่งหมายถึงความเร็วของมอเตอร์จาก 0 - 100%

ค่า (0-255)

ความเร็วเปอร์เซ็นต์ (%)

0 0%
25 10%
51 20%
76 30%
102 40%
127 50%
153 60%
178 70%
204 80%
229 90%
255 100%



อุปกรณ์

  1. บอร์ด arduino uno r3
  2. เฟต irfz44
  3. มอเตอร์ขนาด 12V หรือ พัดลมคอมก็ได้ (ไม่ควรเกิน 500W หรือ 40A เนื่องจาก mosfet เบอร์นี้ทนกระแสได้ 49A)
  4. ตัวต้านทานลดการกระเพื่อมของสัญญาณ ให้กับขา(G) ของเฟต ค่า 220Ω
[ตัวอย่าง บอร์ด arduino UNO R3]
[ตัวอย่าง อุปกรณ์ mosfet irfz44]
[ตัวอย่าง ตัวต้านทาน ค่า 220Ω]



วงจร

การต่อวงจร จะต่อขา(D) เข้ากับมอเตอร์(-) ข้างนึง และ ต่อขา(S) เข้ากับลบหรือกราวด์เชื่อมผ่าน R10k ไปยังขา(D3 ของบอร์ด arduino) ของแหล่งจ่าย ส่วนขาอีกข้างของมอเตอร์ ต่อเข้ากับไฟบวก
#define MOSFET_PIN 3  // กำหนดขา D3 ให้ควบคุม MOSFET

void setup() {
    pinMode(MOSFET_PIN, OUTPUT);
}

void loop() {
    analogWrite(MOSFET_PIN, 128); // ส่งสัญญาณ PWM 50% (0-255)
    delay(1000);
    analogWrite(MOSFET_PIN, 255); // เปิดเต็มที่ (100%)
    delay(1000);
    analogWrite(MOSFET_PIN, 0);   // ปิด
    delay(1000);
}


อธิบายการทำงาน:

analogWrite(pin, value); ส่งสัญญาณ PWM (0-255) ไปที่ขา D3
  • ค่า 0 = ปิด MOSFET
  • ค่า 255 = เปิดเต็มที่ (5V PWM)
  • ค่า 128 = เปิดครึ่งหนึ่ง (50% Duty Cycle)
ถ้าคุณใช้ MOSFET N-Channel ควบคุมโหลดที่ต่อกับ GND ให้ขา Drain ของ MOSFET ต่อกับลบของโหลด และ Source ต่อกับ GND ของ Arduino

ถ้าต้องการควบคุมอุปกรณ์ที่ต้องการกระแสสูง เช่น มอเตอร์ หรือ หลอดไฟ 12V+ ให้ใช้ MOSFET ที่รองรับกระแสสูง และอาจต้องมี ตัวต้านทาน Pull-down (10kΩ) ที่ขา Gate ไป GND เพื่อป้องกันการเปิดค้าง

แสดงความคิดเห็น

0 ความคิดเห็น