รีวิวพร้อมวิธีการใช้งาน
Cytron MDD10A Dual Channel 10A DC Motor Driver
บอร์ดขับมอเตอร์ไฟกระแสตรง 2 ช่อง 10A

คลิกดูหน้าสินค้า EFDV520 Cytron Dual Channel 10A DC Motor Driver Rev 2.0
บอร์ดขับมอเตอร์ไฟกระแสตรงขนาดสูงสุด 25V 10A สามารถควบคุมได้ทั้งทิศทางและความเร็ว
ง่ายต่อการใช้งาน เหมาะกับงานหุ่นยนต์โดยเฉพาะ
MDD10A เป็นชื่อรุ่นของบอร์ดขับมอเตอร์ซึ่งผลิตโดยบริษัท Cytron Technologies ในประเทศมาเลเซีย โดยบอร์ดสามารถขับมอเตอร์ไฟกระแสตรงได้สูงสุด 25V 10A ขับมอเตอร์ได้พร้อมกันถึง 2 ตัว และใช้งานควบคู่กับบอร์ดไมโครคอนโทรลเลอร์ได้ทุกตระกูล
คุณสมบัติทางเทคนิค:
- ควบคุมได้ 2 ทิศทางสำหรับมอเตอร์กระแสตรงชนิดแบบมีแปรงถ่าน (Brushed Motor)
- รองรับมอเตอร์ที่ใช้แรงดันได้ในช่วง 5V ถึง 25V
- ขับกระแสไฟต่อเนื่องได้สูงสุด 10A และขับกระแสไฟได้ถึงค่าสูงสุด (Peak) 30A ต่อเนื่องนานถึง 10 วินาที ในแต่ละช่อง
- ใช้โซลิดคาปาซิเตอร์ เพื่อช่วยให้การตอบสนองที่รวดเร็ว และมีความคงทนช่วยให้มีอายุการใช้งานที่ยืนยาว
- ใช้ NMOS H-Bridge โดยไม่จำเป็นต้องต่อ Heat sink ระบายความร้อน
- ควบคุมความถี่ PWM (Pulse Width Modulation) สูงสุด 20kHz และรองรับการทำงาน PWM ทั้งแบบ Locked-Antiphase และ Sign-Magnitude
- มีปุ่มกดสำหรับทดสอบการหมุนของมอเตอร์ได้ 2 ทิศทางในแต่ละช่อง เพื่อความรวดเร็วในการทดสอบ ไม่จำเป็นต้องต่อวงจรเพิ่มเติม หรือใช้ไมโครคอนโทรลเลอร์ควบคุม
- ขนาดบอร์ด กว้าง 84.5 มม. และยาว 62 มม.
ส่วนประกอบของบอร์ด MDD10A:

1. หลอดไฟ LED สีแดงแสดงสถานะการทำงานของมอเตอร์ที่ช่อง 1
2. ช่องเสียบมอเตอร์ของช่อง 1 โดยเป็น Output Pin ของบอร์ด
3. ช่องเสียบแหล่งจ่ายไฟ
4. ช่องเสียบมอเตอร์ของช่อง 2 โดยเป็น Output Pin ของบอร์ด
5. หลอดไฟ LED สีแดงแสดงสถานะการทำงานของมอเตอร์ที่ช่อง 2
6. หลอดไฟ LED สีเขียวแสดงสถานะไฟที่จ่ายให้กับบอร์ด
7. ปุ่มทดสอบการควบคุมทิศทางการหมุนของมอเตอร์ช่อง 1
8. ช่องเสียบ Input Pin ใช้สำหรับควบคุมการทำงานด้วยบอร์ดไมโครคอนโทรลเลอร์
9. ปุ่มทดสอบการควบคุมทิศทางการหมุนของมอเตอร์ช่อง 2
วิธีการใช้งาน:
วิธีการใช้งานสามารถใช้งานได้ 2 วิธีด้วยกัน
1. วิธีใช้โดยไม่ต่อวงจร หรือไมโครคอนโทรลเลอร์เพิ่มเติม ซึ่งวิธีนี้จะใช้สำหรับทดสอบการควบคุมทิศทางการหมุนของมอเตอร์ในเบื้องต้นเท่านั้น โดยเราสามารถต่อมอเตอร์เข้ากับบอร์ดและจ่ายไฟได้โดยตรง แล้วกดปุ่ม M1A, M1B หรือ M2A, M2B บนบอร์ดตามช่องที่เราได้ต่อมอเตอร์ไว้ ก็สามารถใช้ควบคุมทิศทางการหมุนของมอเตอร์ได้เลยทันที
2. วิธีใช้ไมโครคอนโทรลเลอร์ควบคุมทิศทาง และความเร็ว ซึ่งวิธีนี้จะเป็นวิธีที่นำไปใช้งานที่ต้องการควบคุมทั้งทิศทางและความเร็วของมอเตอร์ สามารถนำไปประยุกต์ใช้งานอื่น ๆ ได้ เช่น หุ่นยนต์, รถบังคับ เป็นต้น
ตัวอย่างการทดลองกับมอเตอร์กระแสตรง 12V:
ในการทดลองนี้จะใช้มอเตอร์กระแสตรง 12V ความเร็วรอบ 120 รอบ/นาที (RPM) ที่แรงดัน 12V ยี่ห้อ Japan Namiki รุ่น 22CL-3501PG ซึ่ง Stall Current ของมอเตอร์รุ่นนี้อยู่ที่ 1.8A และ Stall Torque เท่ากับ 1.6Nm (16 Kg.cm) ตัวอย่างดังรูปที่ 1

รูปที่ 1 มอเตอร์กระแสตรง 12V ยี่ห้อ Japan Namiki รุ่น 22CL-3501PG
แหล่งที่มารูปภาพ : http://www.ebay.com/itm/Japan-Namiki-Coreless-Robot-Car-Servo-Gear-Motor-DC-12V-120RPM-With-Encoder-80-1-/252033447105
ทดลองด้วยวิธีโดยไม่ต่อวงจร หรือไมโครคอนโทรลเลอร์เพิ่มเติม:
การทดลองนี้จะไม่ต่อวงจร หรือไมโครคอนโทรลเลอร์เพิ่มเติม สามารถต่อวงจรได้ดังรูปที่ 2 ซึ่งวิธีนี้จะเหมาะกับการใช้เพื่อทดสอบทิศทางการหมุนของมอเตอร์ในแต่ละช่อง

รูปที่ 2 วิธีการใช้งานเพื่อการทดสอบมอเตอร์
เมื่อต่อวงจรดังรูปที่ 2 เสร็จเรียบร้อยแล้ว ป้อนแหล่งจ่ายไฟกระแสตรง 12V ให้กับบอร์ด แล้วทดลองกดปุ่ม M1A บนบอร์ด MDD10A ค้างไว้มอเตอร์ 1 ก็จะหมุนทันที เมื่อปล่อยปุ่มกดมอเตอร์ 1 ก็จะหยุดหมุนทันที หากกดปุ่ม M1B ทิศทางการหมุนของมอเตอร์ก็จะหมุนทิศทางตรงกันข้ามกันกับการกดปุ่ม M1A ซึ่งขั้นตอนนี้จะเป็นขั้นตอนทดสอบมอเตอร์ 1 ที่ช่อง 1 ของบอร์ด MDD10A ในขณะเดียวกันก็สามารถกดปุ่ม M2A และ M2B ได้มอเตอร์ 2 ก็จะทำงานทันที และเราสามารถให้มอเตอร์ 1 และ 2 ทำงานพร้อมกันได้เมื่อกดปุ่มของมอเตอร์ช่อง 1 และช่อง 2 พร้อมกัน แต่ไม่สามารถกดปุ่ม M1A และ M1B หรือ M2A และ M2B พร้อมกันได้ หากกดปุ่มพร้อมกัน 2 ปุ่มในช่องเดียวกันมอเตอร์จะหยุดหมุน
ทดลองด้วยวิธีการควบคุมทิศทางและความเร็ว ด้วยไมโครคอนโทรเลอร์:
การทดลองนี้จะใช้ไมโครคอนโทรลเลอร์มาควบคุมทิศทางและความเร็วของมอเตอร์ ซึ่งบอร์ดไมโครคอนโทรเลอร์ที่ใช้จะเป็นบอร์ด Arduino UNO R3 (รหัสสินค้า EADN014) ตัวอย่างดังรูปที่ 3 ซึ่งสามารถต่อวงจรใช้งานบอร์ดได้ดังรูปที่ 4

รูปที่ 3 บอร์ด Arduino UNO R3
แหล่งที่มารูปภาพ : http://www.thaieasyelec.com/dev-board/arduino-uno-r3-detail.html
การใช้งานร่วมกับบอร์ด Arduino UNO R3:
บอร์ดขับมอเตอร์ MDD10A ใช้งานร่วมกับบอร์ด Arduino UNO R3 สามารถต่อวงจรได้ดังรูปที่ 4

รูปที่ 4 การต่อวงจรใช้งานร่วมกับบอร์ด Arduino UNO R3
จากรูปที่ 4 จะมีรายละเอียดการต่อ Input Pin ของบอร์ด MDD10A กับบอร์ด Arduino ดังนี้
Pin ของบอร์ด MDD10A | Pin ของบอร์ด Arduino UNO R3 |
DIR1 | 2 |
PWM1 | 3 (PWM) |
DIR2 | 4 |
PWM2 | 5 (PWM) |
GND | GND |
>> DIR1, DIR2 จะเป็น Pin สำหรับการควบคุมทิศทางการหมุนของมอเตอร์ 1 และ 2 ตามลำดับ
>> PWM1, PWM2 จะเป็น Pin สำหรับควบคุมความเร็วการหมุนของมอเตอร์ 1 และ 2 ตามลำดับ
>> GND จะเป็น Pin ของ Ground บอร์ด
ตัวอย่างโค้ดโปรแกรมการควบคุมมอเตอร์ 1 และ 2 อย่างง่าย:
#define DIR_1 2 // PIN ควบคุมทิศทางการหมุนของมอเตอร์ 1 #define PWM_1 3 // PIN ความเร็วของมอเตอร์ 1 #define DIR_2 4 // PIN ควบคุมทิศทางการหมุนของมอเตอร์ 2 #define PWM_2 5 // PIN ความเร็วของมอเตอร์ 2 #define SPEED_MOTOR_1 255 // ค่าความเร็วมอเตอร์ 1 มีค่าตั้งแต่ 0 – 255 (Duty Cycle) #define SPEED_MOTOR_2 255 // ค่าความเร็วมอเตอร์ 2 มีค่าตั้งแต่ 0 – 255 (Duty Cycle) void setup() { pinMode(DIR_1, OUTPUT); // ตั้งค่า DIR_1 ของมอเตอร์ 1 เป็น Output pinMode(PWM_1, OUTPUT); // ตั้งค่า PWM_1 ของมอเตอร์ 1 เป็น Output pinMode(DIR_2, OUTPUT); // ตั้งค่า DIR_2 ของมอเตอร์ 2 เป็น Output pinMode(PWM_2, OUTPUT); // ตั้งค่า PWM_2 ของมอเตอร์ 2 เป็น Output analogWrite(PWM_1, SPEED_MOTOR_1); // สร้างสัญญาณ PWM เป็น Output ให้กับมอเตอร์ 1 analogWrite(PWM_2, SPEED_MOTOR_2); // สร้างสัญญาณ PWM เป็น Output ให้กับมอเตอร์ 2 } void loop() { digitalWrite(DIR_1, LOW); // กำหนดทิศทางให้มอเตอร์ 1 หมุนตามเข็มนาฬิกา digitalWrite(DIR_2, LOW); // กำหนดทิศทางให้มอเตอร์ 2 หมุนตามเข็มนาฬิกา delay(1000); // หน่วงเวลา 1 วินาที digitalWrite(DIR_1, HIGH); // กำหนดทิศทางให้มอเตอร์ 1 หมุนทวนเข็มนาฬิกา digitalWrite(DIR_2, HIGH); // กำหนดทิศทางให้มอเตอร์ 2 หมุนทวนเข็มนาฬิกา delay(1000); // หน่วงเวลา 1 วินาที }
จากโค้ดโปรแกรมการควบคุมมอเตอร์ 1 และ 2 อย่างง่าย จะเป็นการกำหนดให้มอเตอร์ 1 และ 2 หมุนไปในทิศทางตามเข็มนาฬิกาเป็นเวลา 1 วินาที และหลังจากนั้นจะหมุนทวนเข็มนาฬิกาอีกเป็นเวลา 1 วินาที ด้วยความเร็วการหมุนสูงสุด และจะกระทำเช่นนี้สลับกันไปเรื่อย ๆ ซึ่งจากโค้ดดังกล่าวจะเป็นการใช้ฟังก์ชัน analogWrite เป็นตัวสร้างสัญญาณ PWM ด้วยความถี่ประมาณ 490 Hz ยกเว้น PWM ที่ Pin 5 และ 6 ความถี่จะประมาณ 980 Hz ทั้งนี้เพื่อควบคุมความเร็วการหมุนของมอเตอร์ และใช้ฟังก์ชัน digitalWrite เป็นตัวกำหนดทิศทางการหมุนของมอเตอร์
แหล่งอ้างอิง
[1] “Dual Channel 10A DC Motor Driver.”. [Online]. Available: https://docs.google.com/document/d/1ol8nICCTTw5dAHHE_hju08cCVH2GN5_Y3cGC6B4Gbas/edit?usp=sharing, Accessed 10 May 2016. [2] “Japan Namiki Coreless Servo Gear Motor DC 12V 120RPM Gearmotor With Encoder.” .[Online]. Available: http://www.ebay.com/itm/Japan-Namiki-Coreless-Robot-Car-Servo-Gear-Motor-DC-12V-120RPM-With-Encoder-80-1-/252033447105, Accessed 10 May 2016. [3] “The Definitive Arduino Uno Pinout Diagram.”. [Online]. Available: http://jobs.arduinoexperts.com/wp-content/uploads/2013/03/ARDUINO_V2.png, Accessed 10 May 2016. [4] “Atmel 8-bit Microcontroller with 4/8/16/32KBYTES In-system Programmable Flash Datasheet.”. [Online]. Available: http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a-48pa-88a-88pa-168a-168pa-328-328p_datasheet_complete.pdf, Accessed 10 May 2016. [5] “Secrets of Arduino PWM.”. [Online]. Available: https://www.arduino.cc/en/Tutorial/SecretsOfArduinoPWM, Accessed 10 May 2016. [6] “AnalogWrite.”. [Online]. Available: https://www.arduino.cc/en/Reference/AnalogWrite, Accessed 10 May 2016.ผู้เขียนบทความ
ธนภณ ศุภอัศวโภคิน