วันนี้เรามาว่าต่อกันเรื่องของมอเตอร์อีกซักสัปดาห์ครับ มอเตอร์ชนิดที่ผมจะพูดถึงวันนี้คือ Servo motor ครับ เป็นมอเตอร์อีกชนิดที่เป็นที่นิยมใช้กันมากๆในหมู่วิศวกรไฟฟ้า เมคาทรอนิกส์ หุ่นยนต์ ไปจนถึงระดับอุตสาหกรรมที่ต้องคุมคุมการเคลื่อนไหวต่างๆ ของอุปกรณ์ครับ
ก่อนอื่นอยากจะให้เข้าใจกันก่อนว่าอย่างไรเรียกว่า Servo motor แล้วแบบไหนใช่ไม่ใช่ ดีเสียต่างกับมอเตอร์อื่น และใช้งานต่างกันอย่างไร กลับไปที่สัปดาห์ก่อนที่พูดเรื่อง Servo motor ไปซะยาว แล้วมันต่างกันกับ servo motor ยังไง ติดตามทางนี้นะครับ
สำหรับ Servo motor นั้น นิยามของมันคือ เป็นมอเตอร์ที่มีการควบคุมการเคลื่อนที่ของมัน (State) ไม่ว่าจะเป็นระยะ ความเร็ว มุมการหมุน โดยใช้การควบคุมแบบป้อนกลับ (Feedback control) ถ้าลองไปค้นดูในตำรา หรือ ใน google จะพบว่า การควบคุมแบบป้อนกลับเป็น keyword สำคัญที่ทำให้มอเตอร์ตัวนั้นๆ เรียกว่าเป็นแบบ Servo รึเปล่านะครับ ซึ่งข้อแตกต่างนี้ชัดเจนระหว่าง Servo motor กับ Servo motor นะครับ
Stepper motor จะไม่มีการป้อนกลับ แต่ควบคุมการเคลื่อนที่แบบระบบเปิด โดยการส่งสัญญาณไปที่ตัว Stator ให้เคลื่อนที่ไปเป็น step ที่ตายตัว เช่น ทีละ 1.5 องศา เป็นต้น (ความละเอียดของการเคลื่อนที่ขึ้นกับคุณสมบัติของ Stepper motor และเทคนิคการควบคุม) ในขณะที่ Servo motor ต้องการสัญญาณป้อนกลับเพื่อใช้ในการประเมินตำแหน่ง หรือ ความเร็ว หรือ State อื่นๆ เพื่อไปประมวลการเคลื่อนไหวที่เหมาะสม เทียบกับตำแหน่งที่ผู้ใช้ระบุ โดยอาจจะใช้การควบคุมแบบปิดได้หลายๆ แบบ แล้วแต่ผู้ผลิต แต่แบบที่นิยมมากที่สุดก็คือ Propotional Integral Derivative (PID Control)
Servo motor ที่มีขายในปัจจุบันก็มีหลายแบบมากๆ เช่น แบบที่ประกอบด้วยมอเตอร์กระแสตรง (DC motor) แบบที่ใช้มอเตอร์กระแสสลับ (AC motor) ก็มี แบบ มอเตอร์ไร้แปรงถ่านก็มี แถมมีหลากหลายวิธีการควบคุมด้วยครับ แต่ข้อที่แตกต่างที่สำคัญ เอาเป็นว่าข้อดีของ Servo motor ได้แก่
แต่ข้อเสียก็มีครับ
*** ภาพจาก http://www.pyroelectro.com/ ***
ที่ว่ามาทั้งหมดก่อนหน้าเป็นทฤษฎีทั่วไปเกี่ยวกับ Servo motor นะครับ ต่อไปจากนี้ ผมจะพูดถึงเฉพาะ Servo motor ขนาดเล็ก แบบที่เห็นด้านบนนะครับ เราจะใช้ Servo motor แบบนี้กันมากในงานอดิเรก เช่น เครื่องบินบังคับ รถบังคับ แนวๆ นี้ครับ แต่หลักการที่ใช้จะคล้ายกับ Servo motor แบบอื่นๆนะครับ และที่พูดไปซะยาวว่าเป็นการควบคุมแบบป้อนกลับ (Feedback control) ฟังดูแล้วจะยากซักหน่อย แต่ไม่ต้องห่วงครับ ผู้ผลิตเขาออกแบบมาให้เราใช้แบบง่ายๆ เลยครับ เดี๋ยวอ่านต่อแล้วจะเข้าใจ โดยการควบคุมแบบป้อนกลับนั้นจะอยู่ภายในวงจร ซึ่งจะมีการตรวจสอบ State ของการควบคุมตลอดเวลาโดยใช้ Encoder แบบต่างๆ (แบบใช้แสง ใช้ potentiometer หรือ อื่นๆ แล้วแต่ผู้ผลิต) เพื่อป้อนค่า State (ตำแหน่ง มุม ความเร็ว ระยะ) ปัจจุบัน ให้วงจรควบคุมตัดสินใจการทำงานของ DC motor
สำหรับมอเตอร์แบบที่ใช้เพื่อควบคุมการเคลื่อนที่เชิงมุมของมอเตอร์ (หมุนไปกี่องศา) เช่น การควบคุมข้อพับของแขนหุ่นยนต์ ควบคุมมุมของปีกเครื่องบิน เราใช้ Servo motor ที่มีการควบคุมโดยใช้ Pulse Width Modulation (PWM) ครับ
Servo motor จะต้องมีการส่งพัลส์ไปให้มันทุกๆ 20 มิลลิวินาที (คาบ) โดยความกว้างของพัลส์จะใช้ในการควบคุมมุมที่มันจะเคลื่อนที่ครับ) |
และพัลส์จะมีช่วงเวลาเปิด (ton) 0.5 ถึง 2 มิลลิวินาที โดยจะมอเตอร์จะแปรความเป็นมุมที่ผู้ใช้งานสั่่งไปดังรูปครับ
สายไฟที่มาจาก Servo motor ก็มีความหมายดังนี้ครับ
สีส้ม -> สัญญานควบคุม
สีแดง -> VDD
สีน้ำตาล -> GND
ลอง Sketch ตัวอย่างกันนะครับ
// Servo Potentiometer Angle control// by Mountain A (www.arduitronics.com)// www.facebook.com/arduitronics#include <Servo.h>Servo myservo; // create servo object to control a servoint val;int potpin = 0; // Pin to potentiometervoid setup(){Serial.begin(9600);delay(400);myservo.attach(9); // attaches the servo on pin 9 to the servo control pin (orange)delay(300);}void loop(){val = analogRead(potpin); // define analog read pinval = map(val, 0, 1023, 0, 140); // scaling input to 0 - 180 degreeSerial.println(val);myservo.write(val); // position of servo armdelay(15); // adjust for selecting movement speed} |
โดยให่้ต่อกับ Potetiometer ที่มีแรงดันปรับค่าได้ตามความต้านทานเข้าที่ Analog Pin 0 และต่อสายสัญญาณควบคุมออกจากขา D9 ดังรูปครับ
ถ้าต่อได้ถูกต้อง เราก็จะเห็นว่าการหมุนของ Servo motor มีลักษระการหมุนเดียวกับ potentiometer นะครับ โดยเราจะสามารถปรับค่า Gain ของการหมุนให้กว้างหรือแคบได้จาก Scaling และความเร็วในการหมุนของ Servo motor จาก delay นะครับ
ลองดูตัวอย่างได้เพิ่มเติม ในนี้นะครับ และ ในนี้ครับ
ทางร้านของเรามีจำหน่าย Servo motor อยู่ 2 แบบนะครับ
Weight: 13.4g
Dimension: 22.8*12.2*28.5mm
Stall torque: 1.8kg/cm(4.8V )2.2kg/cm(6V)
Operating speed: 0.1sec/60degree(4.8v), 0.08sec/60degree(6v)
Operating voltage: 4.8-6.0V
Dead band width: 5us
all servo come with arm set
ขนาดใหญ่หน่อย Tower Pro MG9995
MG995 weight- 55.0g
Dimension 40.7*19.7*42.9mm
Stall torque 8.5kg/cm(4.8V),10kg/cm(6V)
Operating speed 0.20sec/60degree(4.8v), 0.16sec/60degree(6v)
Operating voltage 4.8-7.2V
Temperature range 0℃_ 55℃
Dead band width 5us
นอกจากนี้ยังมีในชุด Kit 3 ครับ (ชุดนี้จะมีทั้ง Stepper พร้อมชุดขับและ Servo แจ๋วจริงๆ)
สุดท้ายครับ
เวลาใช้งานต้องระวังหน่อยนะครับ
วันนี้พอแค่นี้ครับ พบกันใหม่สัปดาห์หน้าครับ
ผู้ที่สนใจอ่านบทความมอเตอร์อื่นๆ ก็ตามนี้นะครับ
Arduino and Motor Control : Part 1
Arduino and Motor Control : Part 2
Arduino and Motor Control : Part 3 (Stepper Motor)
โดย Mountain "A"
หน้านี้เป็นสารบัญของบทความที่ปรากฏในเว็บของ Arduitronics.com นะครับ จะขอแบ่งออกเป็นหัวข้อตามกลุ่มของสินค้าในร้านดังต่อไปนี้
หน้าที่เข้าชม | 15,417,779 ครั้ง |
ผู้ชมทั้งหมด | 5,920,859 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 3 ต.ค. 2568 |