การใช้งาน Arduino Uno ควบคุม Servo Moto รุ่น SG90

บทความนี้จะสอนการใช้ Arduino Uon ส่งสัญญาณมาควบคุม Servo SG90 ให้หมุนตามองศาในตำแหน่งที่เราต้องการ ได้แก่ 0°, 45°, 90°, 135° และ 180° รับค่าคำสั่งผ่าน  Serial Monitor   ขาของ Arduino UNO R3 ที่สามารถควบคุม Servo SG90 ได้ จะต้องมีตัวหนอน (∼) คือ ขา 3 5 6 9 10 และ 11

Micro Servo motor 9g รุ่น SG90

Servo คือ อุปกรณ์มอเตอร์ ที่สามารถควบคุมการหมุนที่แม่นยำ เซอร์โวตัวนี้มีขนาดเล็กแรงบิด 1.2-1.4 KG/cm สีน้ำตาลเป็นสาย GND สีแดงเป็นไฟเข้า 4.8-7.2V สีส้มเป็นสัญญาณอินพุต หมุนได้ 0-180 องศา ส่วนใหญ่ต่อเข้ากับ Pin ดิจิตอล (Digital) ของ Arduino UNO ที่เป็น Pin ที่สามารถใช้งาน PWM Signal ได้ เช่น 3 , 5 , 6 , 9 , 10 , 11

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

ขอบคุณรูปภาพจาก www.miniarduino.blogspot.com

1. ELECTRIC MOTOR เป็นส่วนของตัวมอเตอร์

2. MOTOR CONTROL UNIT เป็นส่วนที่ควบคุมและประมวลผล

3. CONNETION CABLE เป็นส่วนเชื่อมต่อสายสัญญาณพัลซ์ควบคุมและสายไฟเลี้ยง

4. POTENTIOMETER TO CONTROL THE ANGLE เป็นส่วนควบคุมองศาในการหมุน

5. GEAR เป็นส่วนชุดเกียร์ทดแรง

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

  1. บอร์ด Arduino UNO
  2. SG90 Servo Motor
  3. สายไฟจัมเปอร์ ผู้-ผู้ 3 เส้น

การต่อวงจร

SG90 Servo Motor ⇒  Arduino UNO

สายสีแดง       →   5V

สายสีน้ำตาล   →   GND

สายสีส้ม         →   5

การติดตั้งโปรแกรม Arduino IDE  →  คลิก

โหลด Library 

Library Servo  →  คลิก

การติดตั้ง Library สำหรับโปรแกรม Arduino IDE  →  คลิก

ตัวอย่างโค้ด

#include <Servo.h>
Servo myservo;
char user_input ;
void setup() {
Serial.begin(9600);
myservo.attach(5); // กำหนดขา 5 ของ Servo
}
void loop() {
while (Serial.available()>0)
{
char select_mode = Serial.read();
user_input = select_mode;
if(user_input != select_mode)
{
user_input = select_mode;
}
else
{
user_input = user_input;
}
}
if (user_input == ‘0’) // สั่งให้ Servo หมุนไปที่ 0 องศา
{
Serial.println(“servo หมุน 0 องศา”);
myservo.write(0);
delay(1000);
}
else if (user_input == ‘1’) // สั่งให้ Servo หมุนไปที่ 45 องศา
{
Serial.println(“servo หมุน 45 องศา”);
myservo.write(45);
delay(1000);
}
else if (user_input == ‘2’) // สั่งให้ Servo หมุนไปที่ 90 องศา
{
Serial.println(“servo หมุน 90 องศา”);
myservo.write(90);
delay(1000);
}
else if (user_input == ‘3’) // สั่งให้ Servo หมุนไปที่ 135 องศา
{
Serial.println(“servo หมุน 135 องศา”);
myservo.write(135);
delay(1000);
}
else if (user_input == ‘4’) // สั่งให้ Servo หมุนไปที่ 180 องศา
{
Serial.println(“servo หมุน 180 องศา”);
myservo.write(180);
delay(1000);
}
}

ดาวโหลดโค้ด  → คลิก

เมื่ออัพโหลดโค้ดลงบอร์ดเรียบร้อยแล้ว ทำการทดสอบจะได้ผลดังรูป

1. เมื่อป้อนคำสั่งเลข 0-4 ผ่าน Serial Monitor จะผลดังรูป

2. servo หมุน ดังรูป

Banner Content

0 Comments

Leave a Comment