หลักการทำงาานของเซอร์โวมอเตอร์แบบมาตรฐาน
เซอร์โวมอเตอร์มีสัญญาณควบคุมที่เป็นพัลส์ส่งมาจากภายนอก จะถูกส่งเข้าไปยังวงจรเปรียบเทียบ เพื่อเปรียบเทียบค่าความต่างกับค่าปัจจุบันของตำแหน่งมอเตอร์ ถ้าเกิดค่าความต่าง ในช่วงบวก (+error) จะสั่งขับมอเตอร์ให้หมุนไปในทิศทางตามเข็มนาฬิกา มอเตอร์จะหมุนเฟืองทด ไปจนถึงเฟืองทดตัวสุดท้ายจะมีส่วนกลไกที่เชื่อมต่อกับตัวต้านทานปรับค่าได้ ค่าจากตัวต้านทานนี้จะถูกส่งเป็นค่าตำแหน่งของเซอร์โวมอเตอร์ เพื่อเปรียบเทียบ จนค่าของมอเตอร์กับค่าสัญญาณควบคุมมีค่าตรงกัน ไม่เกิด error มอเตอร์ก็จะหยุดหมุน
จากรูปจะเห็นถึงรูปแบบสัญญาณเพื่อใช้ควบคุมตำแหน่งของเซอร์โวมอเตอร์ ถ้าเป็นบอร์ดควบคุมของ inex
(POP-XT,POP-X2,IPST-SE,ATX2) จะมีคำสั่งควบคุมด้วยคำสั่ง servo ให้ผลตำแหน่งองศาตามรูป
servo(CH,POS);
CH คือ ช่องเซอร์โวมอเตอร์
POS คือ ตำแหน่งที่ต้องการให้เซอร์โวมอเตอร์เคลื่อนที่ไป 0-180 ค่า -1 แทนการหยุดส่งค่าให้เซอร์โวมอเตอร์
เซอร์โวมอเตอร์แบบหมุนได้รอบตัว
เซอร์โวมอเตอร์แบบหมุนได้รอบตัว 360 องศา เป็นการดัดแปลงเซอร์โวมอเตอร์มาตรฐานเดิมให้หมุนได้รอบตัว โดยตัดตัวต้านทานปรับค่าได้เดิมออก ให้กลายเป็นตัวต้านทานปรับค่าได้ภายนอก เพื่อปรับตำแหน่งหยุดหมุนของมอเตอร์ ข้อดีของการใช้มอเตอร์ 360 องศาคือ
- ชุดเซอร์โวมอเตอร์มีวงจรขับมอเตอร์ในตัว ไม่ต้องพึ่งพาวงจรขับมอเตอร์ภายนอก
- การควบคุมการทำงานของมอเตอร์ใช้สายสัญญาณจากไมโครคอนโทรลเลอร์เพียงเส้นเดียว
- สามารถส่งคำสั่งเพื่อให้มอเตอร์หยุดหรือกลับทิศทางการหมุนได้ง่าย
- ไม่สามารถควบคุมตำแหน่งได้ ควบคุมได้เฉพาะทิศทางและความเร็วเท่านั้น
คุณสมบัติของเซอร์โวมอเตอร์ DS3109 mg รุ่น 360 องศา
- มีช่องสำหรับปรับค่าตัวต้านทานปรับค่าได้เพื่อหาจุดหยุดหมุนของมอเตอร์
- ความเร็ว 0.14 วินาที/60 องศา ที่แรงดัน 4.8V
- ความเร็ว 0.12 วินาที/60 องศา ที่แรงดัน 6V
- แรงบิด 9 กิโลกรัม.เซนติเมตร ที่แรงดัน 4.8V
- แรงบิด 10 กิโลกรัม.เซนติเมตร ที่แรงดัน 6V
- ทำงานที่แรงดัน 4.8V-8.4V
- ใช้ชุดเฟืองเป็นเฟืองโลหะ แข็งแรงทนทาน
- มีชุดลูกปืน 2 ชุดที่เฟืองตัวสุดท้าย
- มีวงจรควบคุมและวงจรขับด้วย MOSFET
- เสียงขณะทำงานมีน้อยมาก
- ขนาด 40x20x40.5 มิลลิเมตร
- น้ำหนัก 60 กรัม
- ความยาวสาย 320 มม.
การควบคุมเซอร์โวมอเตอร์แบบหมุนได้รอบตัว
เซอร์โวมอเตอร์แบบ 360 องศาจะควบคุมตำแหน่งไม่ได้ แต่ควบคุมทิศทางได้ และสั่งให้มอเตอร์หยุดได้ ดังแสดงในรูป ค่าที่ควรให้เซอร์โวมอเตอร์หยุดหมุนคือ 90 องศา
ตัวอย่างโปรแกรมทดสอบการหมุนของเซอร์โวมอเตอร์
#include <ipst.h> // IPST-SE Board int x; void setup() { setTextSize(2); glcdMode(1); } void loop() { x=knob(180); // อ่านค่าจากตัวต้านทานปรับค่าได้ glcd(0,0,"POS=%d ",x); // แสดงค่าออกจอภาพ servo(1,x); // ส่งค่าออกเซอร์โวมอเตอร์ }
ตัวอย่างโค้ดนี้เป็นการนำค่าที่ได้จากตัวต้านทานปรับค่าได้ (knob) มาเป็นตัวกำหนดค่าที่ส่งให้เซอร์โวมอเตอร์ ให้ทดลองปรับค่าแล้วดูผลการหมุนของเซอร์โวมอเตอร์ จากนั้นให้ปรับค่าให้เป็น 90 ซึ่งเป็นตำแหน่งกึ่งกลาง เซอร์โวมอเตอร์จะต้องหยุดหมุน ถ้าไม่หยุดหมุนให้ใช้ไขควงสี่แฉกตัวเล็ก ๆ ปรับเบาๆ ในช่องจุดปรับแต่งของเซอร์โวมอเตอร์ จนเซอร์โวมอเตอร์หยุดนิ่ง
สรุป
ค่า 180 เพื่อให้เซอร์โวมอเตอร์หมุนทวนเข็มนาฬิกาเร็วที่สุด
ค่า 90 เพื่อให้เซอร์โวมอเตอร์หยุดนิ่ง
ค่า 0 เพื่อให้เซอร์โวมอเตอร์หมุนตามเข็มนาฬิกาเร็วที่สุด
การปรับความเร็วของเซอร์โวมอเตอร์ 360 องศา
จากการทดลองในตัวอย่างก่อนหน้านี้จะเห็นว่าเมื่อปรับค่าเซอร์โวมอเตอร์ เข้าใกล้ค่า 90 ความเร็วของเซอร์โวมอเตอร์จะลดลง ดังนั้น
ค่าระหว่าง 90-0 เป็นการปรับค่ามอเตอร์ค่อย ๆ เร็วขึ้นทิศทางตามเข็มนาฬิกา
ค่าระหว่าง 90-180 เป็นการปรับค่ามอเตอร์ค่อย ๆ เร็วขึ้นทิศทางทวนเข็มนาฬิกา