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

PIC ภาษา C ตอน การขับเซอร์โวมอเตอร์


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


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

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

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


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

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


ตัวอย่างเซอร์โวมอเตอร์หมุนไปทางขวา

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

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


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


ตัวอย่างโปรแกรม สั่งให้เซอร์โวมอเตอร์หมุนไปทางขวา
#include <16F877.h>
#fuses HS,NOLVP,NOWDT,NOPROTECT
#use delay (clock = 10000000)
#use fast_io(b)
void main()
{
set_tris_b(0X00);
while (TRUE)
{
output_b(0X01);
delay_ms(1); //--------- สัญญาณพัลส์ 1ms
output_b(0X00);
delay_ms(20); //--------- สัญญาณพัลส์ 20ms
}
}
ส่วนจะมั่งให้เซอร์โวมอเตอร์ หนุนไปทิศทางใด ก็สามารถเปลี่ยนช่วงความกว้างของสัญญาณพัลส์ได้ตามที่ไปกล่าวไปแล้วในตอนต้นครับ
การประยุกต์ใช้งาน
เราสามารถนำเอาเซอร์โวมอเตอร์ไปบังคับควบคุมทิศทาง หรือ ตำแหน่งองศาต่างๆได้ โดยดูแนวทางจากคู่มือของผู้ผลิต


เขียนเมื่อ 29 เม.ย 2554