** บทความและโครงงานนี้เป็นความคิดเห็นของผู้เขียนเอง ซึ่งผู้อ่านไม่จำเป็นต้องเห็นด้วยเสมอไปครับ
หาก มีข้อเสนอแนะ หรือพบข้อความใดๆ ผิก กรุณาแจ้งมายังผู้เขียนด้วยครับ จะได้ทำการแก้ไขข้อมุลให้
ถูกต้อง ครับ
กลับหน้าหลัก บทความ
 

Arduino กับ การขับเซอร์โวมอเตอร์เบื้องต้น

รู้จักเซอร์โวมอเตอร์

เซอร์โวมอเตอร์ เป็นมอเตอร์ที่ทำงานโดยใช้สัญญาณพัลส์ โดยภายในเซอร์โวมอเตอร์จะประกอบไปด้วย มอเตอร์ไฟฟ้ากระแสตรง ชุดเกียร์และส่วนควบคุม โดยจะประกอบกันอยู่ภายในชุดเดียวกัน ตัวเซอร์โวมอเตอร์จะมีสายสัญญาณ 3 เส้น คือ สานใช้งาน 1 เส้น อีก 2 เส้นจะเป็นสายสำหรับจ่ายไฟให้เซอร์โวมอเตอร์และสายสำหรับต่อลงกราวด์ ในการควบคุมเซอร์โวมอเอตร์นั้นจะทำให้หมุนไปทางซ้ายได้ 90 องศา ไปทางขวาได้ 90 องศา (180 องศา) และสามารถสั่งให้หมุนไปตามองศาที่กำหนดได้ (ในการที่จะทำให้หมุน 360 องศาจะต้องดัดแปลงแก้ไขส่วนประกอบภายใน ซึ่งจะไม่ขอกล่าวถึงในที่นี้)


เซอร์โวมอเตอร์


การใช้งานเซอร์โวมอเตอร์นั้นจะนำไปใช้ในที่ที่ต้องการความแม่ยำในเรื่ององศา หรือ การหมุนไปตามองศาที่ต้องการ เช่น ใช้เป็นมอเตอร์บังคับการเลี้ยวของหางเสือ เรือ หรือ การเลี้ยวของเครื่องบินบังคับวิทยุ แม้แต่สร้างเป็นหุ่นยนต์เดินขนาดเล็ก เพราะตัวเซอร์โวมอเอตร์เองจะมีแรงบิดค่อนข้างสูง (เพราะภายในจะมีชุดเกียร์อยู่แล้ว)

การควบคุมทำงานของเซอร์โวมอเตอร์

เซอร์โวมอเตอร์ที่ใช้ในการทดลองนี้จะเป็น RC เซอร์โว แบบทั่วไป คือ จะมีมุมในการหมุนจำกัดที่ 180 องศาเท่านั้น แต่จะมีเซอร?โว แบบที่มีการดัดแปลงวงจรภายใน ซึ่งสามรรถหมุนได้ถึง 360 องศารนอบตัวก็มีครับ


มุมในการหมุนจะจำกัดที่ 180 องศาเท่านั้น



การต่อใช้งานเซอร์โวมอเตอร์


ในการควบคุมเซอร์โวมอเตอร์นั้น ทำได้โดยอาศัยความกว้างของพัลส์ที่ทำการป้อนให้เซอร์โวมอเตอร์ โดยสัญญาณพัลส์นี้จะเป็นสัญญาณ TTL โดยระดับสูง หรือ 1 จะมีแรงดัน 5VDC ระดับ ต่ำ หรือ 0 จะมีแรงดัน 0 VDC

เซอร์โวมอเตอร์หมุนไปทางขวา หรือ ตามเข็มนาฬิกา จะต้องสร้างสัญญาณพัลส์ ขนาด 1 ms เมื่อเซอร์โวมอเตอร์หมุนไปทางขวาสุดแล้วมอเตอร์จะหยุดหมุนเอง ถ้าป้อนพัลส์เข้าไปอีกจะเซอร์โวมอเตอร์จะไม่ทำงาน

เซอร์โวมอเตอร์หมุนไปทางซ้าย หรือ ทวนเข็มนาฬิกา จะต้องสร้างสัญญาณพัลส์ ขนาด 2 ms เมื่อเซอร์โวมอเตอร์หมุนไปทางซ้ายสุดแล้วมอเตอร์จะหยุดหมุนเอง ถ้าป้อนพัลส์เข้าไปอีกจะเซอร์โวมอเตอร์จะไม่ทำงาน

เซอร์โวมอเตอร์ไปตำหแหน่งกึ่งกล่าง หากต้องการให้เซอร์โวมอเตอร์หนุนไปทางซ้าย หรือ ทวนเข็มนาฬิกา จะต้องสร้างสัญญาณพัลส์ ขนาด 1.5 ms


แสดงความกว้างของสัญญาณที่มีผลต่อการหมุนของมอเตอร์


เซอร์โวมอเตอร์แต่ละตัวจะมีการทำงานของความกว้างของพัลส์ไม่เท่ากัน ค่าดังกล่าวเป็นค่าประมาณเท่านั้น ดังนั้นถ้าต้องการค่าที่ถูกต้อง ต้องดูที่คู่มือด้วยทุกครั้ง และจำนวนลูกสัญญาณพัลส์จะมีผลต่อองศาในการหมุนด้วยเช่นเดียวกัน


จำนวนสัญญาณพัลส์มีผลต่อองศาของเซอร์โวมอเตอร์


หากป้อนจำนวนลูกสัญญาณพัลส์น้อย จะทำให้องศาในการหมุนน้อย


วงจรที่ใช้ในการทดลอง


ในงานที่ต้องการให้มอเตอร์การหมุนสลับไปมาซ้ายและขวา เซอร์โวมอเตอร์จึงเป็นตัวเลือกที่เหมาะสม แต่ราคาของมอเตอร์ชนิดนี้ค่อนข่างสูง สินค้าที่มีเซอร์โวมอเตอร์รวมอยู่ด้วยเช่น เครื่องบิน หรือ เรือบังคับวิทยุ ซึ่งจะใช้ตัวเซอร์โวมอเตอร์ในการบังคับทิศทางการเลี้ยว


รูปการทดลอง


การทดสอบและ code

ในการทดสอบนั้นจะให้เซอร์โมมอเตอร์หมุน ซ้าย ขวา และ หยุด สลับกันไปเรือยๆ

int led1 = 13;

void setup()
{
pinMode(led1,OUTPUT);

}
void loop()
{
for (int i=0; i <= 75; i++)
{
digitalWrite(led1,HIGH);
delayMicroseconds(1000);
digitalWrite(led1,LOW);
delay(19);
}

for (int i=0; i <= 100; i++)
{
digitalWrite(led1,HIGH);
delayMicroseconds(2000);
digitalWrite(led1,LOW);
delay(18);
}

for (int i=0; i <= 75; i++)
{
digitalWrite(led1,HIGH);
delayMicroseconds(1500);
digitalWrite(led1,LOW);
delay(19);
}
}




สำหรับเรื่องของมุมต่างๆนั้นเราก็สามารถทดสอบค่าได้แต่อาจจะใช้ตัว VR ช่วยในการปรับและหาค่ามุมแท้จริงได้โดยอาศัยการอ่านค่า ADC ร่วมกัน ซึ่งจะได้เขียนไว้ในบทความตอน


เขียนเมื่อ 28 พ.ค. 2556