Review Cytron MDD10A Dual Channel 10A DC Motor Driver

รีวิวพร้อมวิธีการใช้งาน

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 ของบอร์ด MDD10APin ของบอร์ด Arduino UNO R3
DIR12
PWM13 (PWM)
DIR24
PWM25 (PWM)
GNDGND

>> 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.

ผู้เขียนบทความ

ธนภณ ศุภอัศวโภคิน