การควบคุมมอเตอร์ Brushless ด้วย Arduino
ในบทความนี้จะอธิบายถึงหลักการและวิธีการสั่งงานมอเตอร์ Brushless โดยใช้บอร์ด Arduino มาดูกันว่าอุปกรณ์ที่เราต้องใช้มีอะไรบ้าง
❶ บอร์ด Arduino
❷ Electronic Speed Controller (ESC)
❸ มอเตอร์ Brushless
หลักการควบคุมตัว Electronic Speed Controller (ESC) จะคล้ายๆ กับการสั่งงานมอเตอร์ Servo ซึ่งจะควบคุมโดยความกว้างของสัญญาณ PWM ขนาด 50 เฮิรตซ์ ซึ่งโดยส่วนมากความกว้างของพัลซ์ที่ใช้จะอยู่ในช่วง 1-2 ms หรือ 0.5-2.5 ms สำหรับระยะเวลาของสัญญาณ 50 เฮิรตซ์ สามารถคำนวณได้จากสมการนี้นะครับ
Period = 1 / frequency
จากสมการ จะได้ Period = 1/50 = .02 วินาทีหรือ 20 มิลลิวินาที
ระยะเวลาของสัญญาณ 50 เฮิรตซ์ คือ 20 มิลลิวินาที แสดงว่า ESC ต้องได้รับสัญญาณเพื่อไปควบคุมและสั่งงานมอเตอร์ Brushless ทุกๆ 20 ms ดังแสดงในรูปแบบสัญญาณ PWM รูปที่ 1
รูปที่ 1 ความกว้างของสัญญาณ PWM
จากรูปที่ 1 จงหาคำตอบจากคำถามที่คุณสงสัย
❶ ความเร็วของมอเตอร์ Brushless ขึ้นอยู่กับอะไร?
ความกว้างของสัญญาณ PWM
❷ ถ้าความกว้างของสัญญาณน้อยเกิดอะไรขึ้น?
จะทำให้มอเตอร์ Brushless หมุนช้า หรือ หยุดหมุน
❸ ถ้าความกว้างของสัญญาณมากเกิดอะไรขึ้น?
จะทำให้มอเตอร์ Brushless หมุนเร็วและแรง ซึ่งขึ้นอยู่กับระดับความกว้างของสัญญาณ PWM
การสั่งงานมอเตอร์ Brushless โดยใช้บอร์ด Arduino เราต้องเชื่อมต่ออุปกรณ์ต่างๆ เข้าด้วยกัน ซึ่งรูปแบบการต่อก็ตามรูปเลยครับ
รูปที่ 2 การเชื่อมต่ออุปกรณ์
หลังจากเชื่อมต่ออุปกรณ์ต่างๆ เข้าด้วยกันเสร็จเรียบร้อย ทีนี้ก็ได้เวลาที่จะต้องมาลุยโปรแกรมกันแล้ว ซึ่งเราจะเรียกใช้งานไลบรารี่ servo.h มาดูกันครับว่ามีคำสั่งอะไรบ้างที่เราต้องใช้
เริ่มต้นด้วยการสร้าง Object เพื่อเรียกใช้งานคุณสมบัติต่างๆ ภายในคลาส
Servo esc;
กำหนด PIN ที่ใช้ในการควบคุมสัญญาณ PWM
esc.attach(6);
กำหนดค่าความกว้างของสัญญาณ PWM
esc.writeMicroseconds(2000); //Set Max Pulse-width
esc.writeMicroseconds(1000); //Set Min Pulse-width
เราสามารถกำหนดค่าความกว้างของสัญญาณ PWM เพื่อควบคุมความเร็วของมอเตอร์ Brushless โดยใช้คำสั่ง esc.writeMicroseconds(Pulse-width)
Note: Pulse-width อยู่ในช่วงตั้งแต่ 1000 us ถึง 2000 us
ในบทความนี้มีโค้ดโปรแกรมตัวอย่าง ให้ก็อปปี้โค้ดโปรแกรมตัวอย่างด้านล่างไปวางในโปรแกรม Arduino IDE และอัพโหลดไปที่บอร์ด Arduino ได้เลย
หลังจากอัพโหลดเสร็จ มอเตอร์ Brushless ก็จะเริ่มหมุน โดยจะค่อยๆ เพิ่มความเร็วขึ้นไปจนสุด จากนั้นจะค่อยๆ ลดความเร็วลงและหยุดหมุน เห็นไหมครับว่าเพียงแค่ไม่กี่คำสั่งก็จะทำให้เราสามารถสั่งงานมอเตอร์ Brushless ได้แล้ว ลองดูตัวอย่างวีดีโอด้านล่างครับ
สำหรับวันนี้ สิ่งที่ได้เขียนบรรยายไปก็คือความรู้ส่วนหนึ่งที่ได้มาจากพัฒนาผลงานและสิ่งประดิษฐ์ซึ่งเนื้อหานั้นอาจจะยังไม่คลอบคลุม หวังว่าบทความนี้จะเป็นประโยชน์มากสำหรับพี่ๆ เพื่อนๆ และน้องๆ ที่กำลังเรียนรู้และใช้งานบอร์ด Arduino กันอยู่
บทความนี้เขียนขึ้นมาโดยใช้ความรู้ความเข้าใจของผู้เขียน ที่เคยทำการศึกษาและทดลองใช้งานมา หากมีข้อผิดพลาดประการไดสามารถเสนอแนะมาได้เลยนะครับ
Hardware Specification
1) Arduino Mega 2560
2) Hobbywing SkyWalker 40A
3) EMAX MT2216-810KV
4) Lipo Battery 3000mAh 11.1V
บทความนี้เขียนขึ้นมาโดยใช้ความรู้ความเข้าใจของผู้เขียน ที่เคยทำการศึกษาและทดลองใช้งานมา หากมีข้อผิดพลาดประการไดสามารถเสนอแนะมาได้เลยนะครับ
แหล่งอ้างอิง
http://www.toptechboy.com/raspberry-pi/raspberry-pi-lesson-28-controlling-a-servo-on-raspberry-pi-with-python/
https://drive.google.com/file/d/1po-nuJaCpEofP028197MIVW6r6yB5msf/view?usp=sharing
บทความโดย รักการเขียนโค้ดดอทคอม lovecoding.com
กลับทางหมุนยังไงครับ
ตอบลบ