ใบงานที่ 6 การควบคุม servo motor (SG90) ด้วย Arduino UNO R3

ผู้จัดทำ 


นางสาวจีรพร  ศรีบุญ  006
นางสาวพิมพ์พิชชา  แสงแจ่ม  037


ทฤษฎี servo motor


ซอร์โวมอเตอร์ (Servo Motor)

เซอร์โวมอเตอร์ (Servo Motor) เป็นมอเตอร์ที่มีการควบคุมการเคลื่อนที่ของมัน (State) ไม่ว่าจะเป็นระยะ ความเร็ว มุมการหมุน โดยใช้การควบคุมแบบป้อนกลับ (Feedback control) เป็นอุปกรณ์ที่สามารถควบคุมเครื่องจักรกล หรือระบบการทํางานนั้นๆ ให้เป็นไปตามความต้องการ  เช่น  ควบคุมความเร็ว (Speed), ควบคุมแรงบิด (Torque), ควบคุมแรงตําแหน่ง (Position), ระยะทางในการเคลื่อนที่(หมุน) (Position Control) ของตัวมอเตอร์ได้ ซึ่งมอเตอร์ทั่วไปไม่สามารถควบคุมในลักษณะงานเบื้องต้นได้ โดยให้ผลลัพธ์ตามความต้องการที่มีความแม่นยําสูง
ขนาดของ Servo Motor จะมีหน่วยในการบอกขนาดเป็นวัตต์ (Watt) Servo Motor ของPanasonic จะมีขนาดตั้งแต่ 50W-15kWทําให้ผู้ใช้งานมีความหลากหลายในการใช้งาน




รูปที่ 1 เซอร์โวมอเตอร์ (Servo Motor)

ประเภทของเซอร์โวมอเตอร์

โดยทั่วจะมีทั้งดีซีและเอซีเซอร์โว ในเครื่องจักรรุ่นเก่าๆเราจะพบว่า DC Servo Motor มีการใช้เครื่องจักรกลอุตสาหกรรมมากกว่า AC Servo Motor เนื่องจากช่วงที่ผ่านมาการควบคุมกระแสกระแสสูงๆนั้นจะต้องใช้ SCRs  แต่ปัจจุบันทรานซิสเตอร์ได้พัฒนาขีดความสามารถให้ตัดต่อกระแสสูงและใช้งานที่ความถี่ได้สูงๆขึ้น จึงทำให้ระบบควบคุมทางเอซีและระบบเซอร์โวได้ถูกนำมาใช้งานมากขึ้น ซึ่งสามารถแยกประเภทของเซอร์โวได้ดังนี้


 รูปที่ 2 นิยามตามคู่มืออ้างอิงเซอร์โวฉบับภาษาเยอรมัน

1. มอเตอร์ชนิดที่มีแปรงถ่าน
เซอร์โวมอเตอร์ชนิดนี้ที่สเตเตอร์จะเป็นแม่เหล็กถาวร ส่วนโรเตอร์ยังใช้แปรงถ่านและคอมมิวเตอร์เรียงกระแสเข้าสู่ขดลวดอาร์เมเจอร์ เหมือนกับดีซีมอเตอร์ทั่วไป
2. เซอร์โวมอเตอร์ชนิดที่ไม่มีแปรงถ่าน
          เซอร์โวมอเตอร์ในกลุ่มนี้ประกอบด้วยดีซีเซอร์โว (DC Brushless Servo ่โรเตอร์ทำด้วยแม่เหล็กถาวร) เอซีเซอร์โว (AC Servo) ซึ่งมีทั้งแบบซิงโครนัสเซอร์โว อะซิงโครนัสเซอร์โว  (การนำอินดัคชั่นมอเตอร์มาใช้ทำเป็นระบบขับเคลื่อนเซอร์โวมอเตอร์) และ สเตปปิ้งเซอร์โวมอเตอร์

โครงสร้างของเซอร์โวมอเตอร์
ข้อจำกัดอย่างหนึ่งของระบบควบคุมเซอร์โว ก็คือการใช้งานจะต้องเป็นแบบ  Closed loopเท่านั้น การใช้งานระบบควบคุมเซอร์โวไม่สามารถเลือกควบคุมเป็นแบบ Open loop ได้เหมือนกันระบบขับเคลื่อนเอซี (AC Drives) การตอบสนองของระบบเซอร์โว เช่น อัตราเร่ง แรงบิด และตำแหน่งที่ควบคุม จะไม่เป็นไปตามวัตถุประสงค์หากไม่มีสัญญาณป้อนกลับไปยังชุดขับเคลื่อนเซอร์โว
การควบคุมการทำงานในระบบนี้อุปกรณ์ป้อนกลับหรือเอ็นโค๊ดเตอร์ (Encoder) จะมีบทบาทความสำคัญอย่างยิ่งเสมือนกับเป็นของคู่กันชนิดที่เรียกว่าขาดซึ่งกันและกันไม่ได้ ในทางปฎิบัติจึงทำเซอร์โวมอเตอร์และเอ็นโค๊ดเตอร์ ถูกออกแบบและผลิตสร้างขึ้นมาคู่กันในลักษณะเป็นแพ็คเกจ (Package ซึ่งมี Encoder ติดอยู่ที่ส่วนท้ายของมอเตอร์ ดังรูป


รูปที่ 3 โครงสร้างของ AC servo Motor
Gearheads = เกียร์สำหรับลดความเร็วรอบเพื่อเพิ่มแรงบิด
Shafts = เพลาของมอเตอร์
Flanges = หน้าแปลนสำหรับติดตั้งมอเตอร์
Feed back = อุปกร์ป้อนกลับหรือ encoder
Connectorization = ขั้วต่อสายไฟเข้ามอเตอร์ และขั้วต่อสายสำหรับ Encoder
Breakes  = ชุดเบรก

หลักการทำงานของเซอร์โวมอเตอร์

การทำงานของเซอร์โวมอเตอร์ชนิดนี้จะคล้ายกับการทำงานของซิงโครนัสมอเตอร์ 3 เฟส กล่าวคือเมื่อมีการควบคุมให้คอนโทรลเลอร์จ่ายกระแสไฟฟ้าเข้าไปยังขดลวดที่สเตเตอร์  แกนเหล็กของสเตเตอร์จะกลายเป็นแม่เหล็กไฟฟ้า และหมุนเคลื่อนที่ด้วยความเร็วที่แปรผันตามความถี่ ซึ่งเรียกว่า ความเร็วซิงโครนัส (synchronous speed) หรือความเร็วสนามแม่เหล็กหมุน และจะดูดให้โรเตอร์ซึ่งเป็นแม่เหล็กถาวรหมุนเคลื่อนที่ตาม
จากลักษณะโครงสร้างของโรเตอร์และหลักการทำงานที่เหมือนกับซิงโครนัสมอเตอร์ซึ่งเป็นมอเตอร์แบบเอซี  แต่ไม่มีแปรงถ่าน (Brushless) ไม่มีซี่คอมมิวเตอรเตอร์ จึงทำให้มอเตอร์ชนิดนี้มีชื่อเรียกขานแตกต่างกันออกไป เช่น เรียกทับศัพท์ว่า Permanent Magnet Synchronous Motor(PMSM) ซึ่งหมายถึงซิงโครนัสมอเตอร์ที่ไม่มีแปรงถ่าน บ้างก็เรียกว่าเอซีเซอร์โวมอเตอร์ (AC Servo motor) หรือบ้างก็เรียกสั้นๆย่อๆว่า  AC Brushless หรือ Brushless Motor เป็นต้น




รูปที่ 5 โครงสร้างและการทำงานของ AC Servo Motor


อุปกรณ์ที่ใช้


1.บอร์ด Arduino
2.สายแพผู้-ผู้
3.สายอัปโหลด
4.Servo Motor SG90

รูปวงจร





Download คลิก


คำอธิบาย


          การต่อวงจรโดยใช้บอร์ด Arduino และ Servo Motor SG90 เป็นการต่อวงจรให้ Servo Motor SG90  SG90 โดยให้มอเตอร์หมุนจากซ้ายไปขวา เริ่มตั้งแต่ 0-180 องศา แล้วหมุนจากขวามาซ้าย จาก 180-0 องศา วนอย่างต่อเนื่อง


วิดีโอ


Code 0-180 องศา

#include <Servo.h>
Servo servo;
int angle = 0;
void setup()
{
  servo.attach(8);
  servo.write(angle);
}

void loop()
{
  //scan from 0 to 180 degrees
 for(angle =0; angle < 180; angle++)
 {
  servo.write(angle);
  delay (15);
 }
 //now scan back from 180 to 0 degrees
 for(angle =180; angle > 0; angle--)
 {
  servo.write(angle);
  delay (15);
 }
}
Download คลิก


คำอธิบาย


         การต่อวงจรโดยใช้บอร์ด Arduino และ Servo Motor SG90 เป็นการต่อวงจรให้ Servo Motor SG90  SG90 โดยให้มอเตอร์หมุนจากซ้ายไปขวา เริ่มตั้งแต่ 45-135 องศา แล้วหมุนจากขวามาซ้าย จาก 135-45 องศา วนอย่างต่อเนื่อง


วิดีโอ


Code 45-135 องศา
#include <Servo.h>
Servo servo;
int angle = 45;
void setup()
{
  servo.attach(8);
  servo.write(angle);
}
void loop() 
{
  //scan from 45 to 135 degrees
 for(angle =45; angle < 135; angle++) 
 {
  servo.write(angle);
  delay (15);
 }
 //now scan back from 135 to 45 degrees
 for(angle =135; angle > 45; angle--) 
 {
  servo.write(angle);
  delay (15);
 }
}
Download คลิก


คำอธิบาย


         การต่อวงจรโดยใช้บอร์ด Arduino และ Servo Motor SG90 เป็นการต่อวงจรให้ Servo Motor SG90  SG90 โดยให้มอเตอร์หมุนจากซ้ายไปขวา เริ่มตั้งแต่ 90-180 องศา แล้วหมุนจากขวามาซ้าย จาก 180-90 องศา วนอย่างต่อเนื่อง
วิดีโอ


Code 90-180 องศา
#include <Servo.h>
Servo servo;
int angle = 90;
void setup()
{
  servo.attach(8);
  servo.write(angle);
}
void loop() 
{
  //scan from 90 to 180 degrees
 for(angle =90; angle < 180; angle++) 
 {
  servo.write(angle);
  delay (15);
 }
 //now scan back from 180 to 90 degrees
 for(angle =180; angle > 90; angle--) 
 {
  servo.write(angle);
  delay (15);
 }
}
Download คลิก

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ใบงานที่ 4 การใช้งานเซนเซอร์วัดระยะทาง HC-SR04

ใบงานที่ 7 Measure Distance with Arduino and Ultrasonic Sensor