วันพฤหัสบดีที่ 29 มีนาคม พ.ศ. 2561

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

นางสาวจริญญา แสงวงศ์ 1 สทค 2 รหัส 6031280026
นางสาวจิรนันท์ จานศิลา 1 สทค 2 รหัส 6031280028


 การควบคุม Servo Motor (SG90) 

ด้วย Arduino UNO R3

SG90 Servo Motor มาตรฐาน

Servo เป็นคำศัพท์ที่ใช้กันทั่วไปในระบบควบคุมอัตโนมัติ มาจากภาษาละตินคำว่า Sevus หมายถึง “ทาส” (Slave) ในเชิงความหมายของ Servo Motor ก็คือ Motor ที่เราสามารถสั่งงานหรือตั้งค่า แล้วตัว Motor จะหมุนไปยังตำแหน่งองศาที่เราสั่งได้เองอย่างถูกต้อง โดยใช้การควบคุมแบบป้อนกลับ (Feedback Control) 
Servo คืออุปกรณ์มอเตอร์ ที่สามารถควบคุมการหมุนที่แม่นยำ เซอร์โว SG90 มีขนาดเล็กแรงบิด 1.2-1.4 kg/cm KG/cm สีน้ำตาลเป็นสายกราวด์ สีแดงเป็นไฟเข้า 4.8-7.2 V สีส้มเป็นสัญญาณอินพุต  หมุน 0-180องศา ถ้าทำให้หมุน 360 ต่อเนื่อง องศาให้ใช้ 2.2 K ohm Tower Pro SG90 Mini Micro Servo
Servo motor รุ่นนี้เหมาะสำหรับการใช้งานกับ RC คอปเตอร์ หรือ งานที่ต้องการมอเตอร์น้ำหนักเบา (เฟืองเป็นพลาสติด) ให้ทอร์กที่ 1.8 kg-cm  ที่แรงดัน 4.8 V
 Feedback Control คือ ระบบควบคุมที่มีการวัดค่าเอาต์พุตของระบบนำมาเปรียบเทียบกับค่าอินพุตเพื่อควบคุมและปรับแต่งให้ค่าเอาต์พุตของระบบให้มีค่า เท่ากับ หรือ ใกล้เคียงกับค่าอินพุต 

ผลการค้นหารูปภาพสำหรับ Tower Pro SG90
  • ขนาด 21.5 mm x 11.8 mm x 22.7 mm
  • น้ำหนัก 9 กรัม
  • ความเร็วเมื่อไม่มีโหลด 0.12 วินาที/60องศา (4.8 V)
  • แรงบิด 1.2-1.4 kg/cm (4.8 V)
  • ทำงานที่อุณหภูมิ -30-60 องศาเซลเซียส
  • เวลาหยุดก่อนรับคำสั่งใหม่ 7 มิลลิวินาที
  • ทำงานที่ไฟ 4.8 V - 6 V

ส่วนประกอบภายนอก RC Servo Motor


- Case ตัวถัง หรือ กรอบของตัว Servo Motor
- Mounting Tab ส่วนจับยึดตัว Servo กับชิ้นงาน

- Output Shaft เพลาส่งกำลัง

- Servo Horns ส่วนเชื่อมต่อกับ Output shaft เพื่อสร้างกลไกล

- Cable สายเชื่อมต่อเพื่อ จ่ายไฟฟ้า และ ควบคุม Servo Motor จะประกอบด้วยสายไฟ 3 เส้น และ ใน RC Servo Motor จะมีสีของสายแตกต่างกันไปดังนี้ 

         o สายสีแดง คือ ไฟเลี้ยง (4.8-6V)

         o สายสีดำ หรือ น้ำตาล คือ กราวด์

         o สายสีเหลือง (ส้ม ขาว หรือฟ้า) คือ สายส่งสัญญาณพัลซ์ควบคุม (3-5V) 
- Connector จุดเชื่อมต่อสายไฟ 

ส่วนประกอบภายใน RC Servo Motor


  1.  Motor เป็นส่วนของตัวมอเตอร์
  2.  Gear Train หรือ Gearbox เป็นชุดเกียร์ทดแรง
  3. Position Sensor เป็นเซ็นเซอร์ตรวจจับตำแหน่งเพื่อหาค่าองศาในการหมุน
  4. Electronic Control System เป็นส่วนที่ควบคุมและประมวลผล 


Servo Motor Block Diagram










หลักการทำงานของ  Servo Motor 

             เมื่อจ่ายสัญญาณพัลซ์เข้ามายัง  Servo Motor ส่วนวงจรควบคุม (Electronic Control System) ภายใน Servo จะทำการอ่านและประมวลผลค่าความกว้างของสัญญาณพัลซ์ที่ส่งเข้ามาเพื่อแปลค่าเป็นตำแหน่งองศาที่ต้องการให้ Motor หมุนเคลื่อนที่ไปยังตำแหน่งนั้น แล้วส่งคำสั่งไปทำการควบคุมให้ Motor หมุนไปยังตำแหน่งที่ต้องการ โดยมี Position Sensor เป็นตัวเซ็นเซอร์คอยวัดค่ามุมที่ Motor กำลังหมุน เป็น Feedback กลับมาให้วงจรควบคุมเปรียบเทียบกับค่าอินพุตเพื่อควบคุมให้ได้ตำแหน่งที่ต้องการอย่างถูกต้องแม่นยำ




นิยมใช้ร่วมกับ
  • Mounting Bracket for Servo SG90
  • Switching Power supply แหล่งจ่ายไฟ 5 V 5.5 A
  • Switching Power supply แหล่งจ่ายไฟ 5 V 10 A
  • Switching Power supply แหล่งจ่ายไฟ 5 V 20 A
              




ตัวอย่างการใช้งาน
  • Servo -> Arduino
  • สายสีน้ำตาล ->  GND
  • สายสีแดง ->5V
  • สายสีส้ม -> Pin 8


อ้างอิงข้อมูลจาก : http://www.myarduino.net/product/29/sg90-servo-motor-มาตรฐาน
https://www.arduitronics.com/product/283/tower-pro-sg90-mini-micro-servo
http://www.thaieasyelec.com/article-wiki/review-product-article/บทความตัวอย่างการควบคุม-rc-servo-motor-ด้วย-arduino.html



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

1.บอร์ด Arduino                      1 ตัว
2.สาย USB                              1 เส้น
3.Servo Motor (SG90)            1 ตัว
4.สายไฟผู้-ผู้                            3 เส้น
5.โปรแกรม Arduino
6.PC / NoteBook





รูปการต่อวงจร (Fritzing)


... ในการต่อครั้งนี้จะใช้การต่อเหมือนกันทั้ง 3 วงจร  แต่จะแตกต่างกันที่ Code ...




























คลิก Download เพื่อดาวน์โหลดรูปไปแก้เพิ่มเติม แต่ทั้งนี้ต้องมีโปรแกรม Fritzing อยู่ในเครื่องคอม ฯ ของเราก่อนนะคะ หากไม่มีสามารถโหลดได้ที่ DownloadProgramFritzing 


Code และคำอธิบายการทำงานของวงจรในโปรแกรม Arduino

เขียนโปรแกรมให้ servo motor ทำงานแบบวนลูป 3 วงจร ดังนี้

          - แบบที่ 1 ให้ Servo Motor (SG90) หมุน จากซ้ายไปขวา โดยเริ่มจาก 0 องศา - 180 องศา และจากขวามาซ้ายโดยเริ่มจาก 180 องศา มาหา 0 องศา (Code6.1) 

Code แบบที่ 1

 #include <Servo.h>
Servo servo;
int angle;


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);     
  }
}








           - แบบที่ 2 ให้ Servo Motor (SG90) หมุน จากซ้ายไปขวา โดยเริ่มจาก 45 องศา - 135 องศา และจากขวามาซ้ายโดยเริ่มจาก 135 องศา มาหา 45 องศา  (Code6.2)

Code แบบที่ 2

#include <Servo.h>
Servo servo;
int angle;


void setup() {
  servo.attach(8);
  servo.write(angle);
}

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





         - แบบที่ 3 ให้ Servo Motor (SG90) หมุน จากซ้ายไปขวา โดยเริ่มจาก 90 องศา - 180 องศา และจากขวามาซ้ายโดยเริ่มจาก 180 องศา มาหา 90 องศา  (Code6.3)

Code แบบที่ 3 

#include <Servo.h>
Servo servo;
int angle;


void setup() {
  servo.attach(8);
  servo.write(angle);
}

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






คลิก DownloadCode6.1  DownloadCode6.2  DownloadCode6.3 เพื่อนำไปแก้ไขเพิ่มเติม แต่ทั้งนี้ต้องมีโปรแกรม Arduino อยู่ในเครื่องคอม ฯ ของเราก่อนนะคะ หากไม่มีสามารถโหลดได้ที่ DownloadArduino 






ใบงานที่ 8 Ultrasonic Object Radar System

นางสาวจริญญา แสงวงศ์ 1 สทค 2 รหัส 6031280026 นางสาวจิรนันท์ จานศิลา 1 สทค 2 รหัส 6031280028    Ultrasonic Object Radar System ...