หน้าแรก
เนื้อหาสาระ
กิจกรรม
ข้อมูลส่วนตัว
ลิงค์เพื่อน
กล่องข้อความ: Servo Motor

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

ส่วนประกอบภายนอก 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

ขนาดของเซอร์โวมอเตอร์

โดยปรกติขนาดของเซอร์โวจะมีอยู่ด้วยกัน 3 ขนาด คือ micro, standard และ giant หรือ 1/4 scale เพื่อที่จะให้ครอบคลุมการใช้งานของเครื่องบินบังคับวิทยุ ซึ่งมีการใช้งานที่แตกต่างกันไปแต่ในปัจจุบันก็ได้มีเซอร์โวที่มีขนาดที่หลากหลายเพื่อครอบคุมการใช้งานมากขึ้น
Speed และ Torque Ratings
  นอกเหนือจากขนาดภายนอกของเซอร์โวที่เราต้องพิจารณาในการใช้งานแล้วยังมีคุณลักษณะที่เราต้องพิจารณาอีกก็คือ speed(ความเร็ว) และ Torque (แรงบิด)

                                                                                                                                                                        Speed การวัดความเร็วของเซอร์โวก็คือเวลาที่เซอร์โวใช้ต่อองศาในการหมุนค่าหนึ่ง ซึ่งมุมมาตรฐานที่ใช้วัดกันทั่วไปคือ 60 องศา จึงกล่าวได้ว่า ความเร็วของเซอร์โวก็คือ เวลาที่ใช้ในการหมุนแขนของเซอร์โวไปจากตำแหน่งเดิมเป็นมุม 60 องศา ดังนั้น ตัวเลขเวลาที่มีค่าน้อยเท่าไหร่ หมายถึงเซอร์โวยิ่งมีความเร็วมากขึ้นเท่านั้น
    ยกตัวอย่างเช่น เซอร์โวตัวหนึ่งมีความเร็ว 0.12 sec/60° ซึ่งหมายถึงเซอร์โวตัวนี้ใช้เวลา 0.12 วินาที ในการหมุนแขนของเซอร์โวเป็นมุม 60 องศา ซึ่งถือว่าเป็นมีความเร็วเป็นสองเท่าของความเร็วของเซอร์โวมาตรฐานซึ่งมีความเร็วอยู่ที่ 0.24 sec/60° แต่สำหรับเซอร์โวที่ใช้ควบคุมหางของเฮลิคอปเตอร์วิทยุบังคับแล้วอาจต้องใช้เซอร์โวที่มีความเร็วที่มากขึ้นเช่น 0.06 sec/60°
   Torque แรงบิด หมายถึง แรงที่แขนของเซอร์โวสามารถกระทำได้ ซึ่งแรงนี้วัดกันในหน่วยของ ออนซ์ ต่อ นิ้ว(oz-in) หรือ กิโลกรัม ต่อ เซนติเมตร (kg-cm) ซึ่งตัวเลขที่มากหมายถึงแรงที่ที่เซอร์โวสามารถฉุดหรือผลักได้ โดยที่ standard servo แรงบิดจะอยู่ที่ประมาณ 40 oz-in สำหรับเซอร์โวประเภทแรงบิดสูง(high torque) อาจมีแรงบิดสูงถึง 200 oz-in  แล้ว 40 ounce-inches หมายถึงอะไร หมายถึง ถ้าแขนของเซอร์โวมีความยาวหนึ่งนิ้วจะมีแรงดึงหรือแรงฉุดขนาด 40 ounces ก่อนที่เซอร์โวจะมาสามรถหมุนได้อีก(Stalling) ดังนั้นหากแขนของเซอร์โวมีความยาก ½ นิ้ว ก็จะสามารถดึงหรือฉุดได้ 80 ounces และ หากแขนของเซอร์โวยาว 2 นิ้ว ก็จะสามารถฉุดหรือดึงได้ 20 ounces ตามหลักการคำนวนโมเมนต์

ความเร็วและแรงบิดของเซอร์โวจะมีค่าต่างกันเมื่อจ่ายแรงดันไฟฟ้าที่ต่างกันให้กับรีซีฟ โดยทั่วไปจะมีอยู่ 2ค่าคือ 4.8 โวลท์ และ 6.0 โวลท์ ซึ่งจะได้มาจากการจ่ายแรงดันไฟฟ้าของ BEC’s หรือ อุปกรณ์ปรับแรงดันไฟฟ้า(voltage regulator) และแน่นอนอยู่แล้วว่าแรงดันไฟฟ้าสูงกว่าย่อมให้ ความเร็วและแรงบิดที่สูงกว่า จึงได้มีเซอร์โวที่รองรับแรงดันไฟฟ้าได้ถึง 8.6 volts ซึ่งให้ ความเร็วและแรงบิดที่สูงมาก ทั้งยังสามารถรับแรงดันไฟฟ้าจากแบ็ต 2S Lipo ได้โดยไม่ต้องมีวงจรปรับแรงดันไฟฟ้าและแน่นอนว่ารีซีฟก็ต้องสามารถรองรับแรงดันไฟฟ้านี้ได้ด้วยซึ่งรีซีฟระบบ 2.4 GhZ ในปัจจุบันส่วนใหญ่ก็สามารถรองรับได้
   ส่วนองค์ประกอบที่ทำให้ต้องจำกัดของแรงดันไฟฟ้าสำหรับเฮลิคอปเตอร์ที่นอกเหนือจากเครื่องบินคือ ไจโร(Gyro) และ Gyro servo ซึ่งส่วนมากจะออกแบบมาให้ทำงานกับแรงดันไฟฟ้าไม่เกิน 5 โวลท์ แต่แนวโน้มในปัจจุบันก็ได้มีการผลิต Gyro ที่สามารถทำงานได้กับแรงดันไฟฟ้าที่สูงขึ้น

Servo motor ที่มีขายในปัจจุบันก็มีหลายแบบมากๆ เช่น แบบที่ประกอบด้วยมอเตอร์กระแสตรง (DC motor) แบบที่ใช้มอเตอร์กระแสสลับ (AC motor) ก็มี แบบ มอเตอร์ไร้แปรงถ่านก็มี  แถมมีหลากหลาย

วิธีการควบคุมด้วยครับ  แต่ข้อที่แตกต่างที่สำคัญ เอาเป็นว่าข้อดีของ Servo motor ได้แก่

แต่ข้อเสียก็มีครับ

สัญญาณ RC ในรูปแบบ PWM
            ตัว RC Servo Motor ออกแบบมาใช้สำหรับรับคำสั่งจาก Remote Control ที่ใช้ควบคุมของเล่นด้วยสัญญาณวิทยุต่างๆ เช่น เครื่องบินบังคับ รถบังบังคับ เรือบังคับ เป็นต้น ซึ่ง Remote จำพวกนี้ที่ภาครับจะแปลงความถี่วิทยุออกมาในรูปแบบสัญญาณ PWM (Pulse Width Modulation)

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

        ดังนั้นสามารถกำหนดองศาการหมุนของ RC Servo Motor ได้โดยการเทียบค่า เช่น RC Servo Motor สามารถหมุนได้ 180 องศา โดยที่ 0 องศาใช้ความกว้างพัลซ์เท่ากับ 1000 us ที่ 180 องศาความกว้างพัลซ์เท่ากับ 2000 us เพราะฉะนั้นค่าที่เปลี่ยนไป 1 องศาจะใช้ความกว้างพัลซ์ต่างกัน (2000-1000)/180 เท่ากับ 5.55 us
จากการหาค่าความกว้างพัลซ์ที่มุม 1 องศาข้างต้น หากต้องกำหนดให้ RC Servo Motor หมุนไปที่มุม 45 องศาจะหาค่าพัลซ์ที่ต้องการได้จาก 5.55 x 45 เท่ากับ 249.75 us แต่ที่มุม 0 องศาเราเริ่มที่ความกว้างพัลซ์ 1ms หรือ 1000 us เพราะฉะนั้นความกว้างพัลซ์ที่ใช้กำหนดให้ RC Servo Motor หมุนไปที่ 45 องศา คือ 1000 + 249.75 เท่ากับประมาณ 1250 us

วิธีควบคุม RC Servo Motor ด้วย Arduino
            Arduino มีไลบรารี่สำหรับสั่งงาน RC Servo Motor มาให้ใช้งานอยู่แล้วเป็นฟังก์ชั่นสำเร็จรูปและใช้งานได้ง่ายในหน้าเว็บไซต์ http://arduino.cc/en/reference/servo ได้ให้ข้อมูลไว้ว่า Servo Library ของ Arduino สามารถสั่งงาน RC Servo Motor ได้ทั้งแบบหมุนไป-กลับได้ 0-180 องศา (ที่กล่าวถึงตามตัวอย่างข้างต้น) และแบบต่อเนื่องที่หมุนครบรอบได้เรียกว่าเป็น Continuous Rotation Servo (ซึ่งในช่วงท้ายบทความจะกล่าวถึงเพิ่มเติม) โดยสามารถรองรับการเชื่อมต่อ RC Servo Motor ได้ถึง 12 ตัวกับบอร์ด Arduino UNO และรองรับสูงสุดถึง 48 ตัวหากใช้บอร์ด Arduino Mega 
ฟังก์ชั่นภายใน Servo Library
- attach()
- write()
- writeMicroseconds()
- read()
- attached()
- detach()
Description
          คือฟังก์ชั่นที่ใช้ในการกำหนดขาสัญญาณที่ Servo Motor ต่อกับ Arduino และกำหนดความกว้างของพัลซ์ที่ 0 องศาและ 180 องศา 
Syntax
          Servo.attach(pin)
          Servo.attach(pin,min,max)
Parameters
          Pin: คือ ขาสัญญาณของ Arduino ที่ใช้เชื่อมต่อกับ Servo Motor
          Min: คือ ความกว้างของพัลซ์ที่ 0 องศาของ Servo ตัวที่ใช้ในหน่วยไมโครวินาที (us) โดยปกติแล้วหากไม่มีการตั้งค่าโปรแกรมจะกำหนดค่าไว้ที่ 544 us
          Max: คือ ความกว้างของพัลซ์ที่ 180 องศาของ Servo ตัวที่ใช้ในหน่วยไมโครวินาที (us) โดยปกติแล้วหากไม่มีการตั้งค่าโปรแกรมจะกำหนดค่าไว้ที่ 2400 us


Description
          คือฟังก์ชั่นที่ใช้ควบคุมตำแหน่งที่ต้องการให้ Servo Motor หมุนไปยังองศาที่กำหนดสามารถกำหนดเป็นค่าองศาได้เลย คือ 0-180 องศา แต่ใน Servo Motor ที่เป็น Full Rotation คำสั่ง write จะเป็นการกำหนดความเร็วในการหมุน โดย 
          ค่าเท่ากับ 90 คือคำสั่งให้ Servo Motor หยุดหมุน
          ค่าเท่ากับ 0 คือการหมุนด้วยความเร็วสูงสุดในทิศทางหนึ่ง
          ค่าเท่ากับ 180 คือการหมุนด้วยความเร็วสูงสุดในทิศทางตรงกันข้าม
Syntax
          servo.write(angle)
Parameters
          Angle: คือมุมที่ต้องการให้ RC Servo Motor แบบ 0-180 องศาหมุนไป แต่หากเป็น RC Servo Motor แบบ Full Rotation ค่า Angle คือ การกำหนดความเร็วและทิศทางในการหมุน
Description
          คือฟังก์ชั่นที่ใช้ควบคุมตำแหน่งที่ให้ Servo Motor หมุนไปยังตำแหน่งองศาที่กำหนดโดยกำหนดเป็นค่าความกว้างของพัลซ์ในหน่วย us ซึ่งปกติแล้ว RC Servo Motor จะใช้ความกว้างของพัลซ์อยู่ที่ 1000-2000 us ตามที่ได้กล่าวไปข้างต้นแล้ว แต่ RC Servo Motor บางรุ่นหรือบางยี่ห้อไม่ได้ใช้ ช่วงความกว้างของพัลซ์ตามที่ได้กล่าวเอาไว้นี้ อาจจะใช้ช่วง 700-2300 แทนก็สามารถใช้ฟังก์ชั่น writeMicroseconds นี้เพื่อกำหนดความกว้างพัลซ์ได้เอง
         การใช้ฟังก์ชั่น writeMicroseconds สามารถกำหนดค่าได้อิสระ ตรงนี้ ”ต้องระวังในการใช้งาน” หากสั่งงาน RC Servo Motor (แบบ 0 - 180 องศา) จนหมุนไปเกินจุดสิ้นสุดคือเกินทั้งฝั่ง 0 หรือ 180 องศา จะทำให้เกิดเสียงครางดังจากการหมุนไปต่อไม่ได้และมอเตอร์จะกินกระแสสูงขึ้นด้วยในเวลาเดียวกันนั้น ซึ่งอาจทำให้ RC Servo Motor เกิดความเสียหายได้
Syntax
          servo.writeMicroseconds(uS)

Parameters
          uS: คือค่าความกว้างของพัลซ์ที่ต้องการกำหนดในหน่วยไมโครวินาที (โดยตัวแปร int)
Description
          คือฟังก์ชั่นอ่านค่าองศาที่สั่งเข้าไปด้วยฟังก์ชั่น write() เพื่อให้รู้ว่าตำแหน่งองศาสุดท้ายที่เราสั่งเข้าไปนั้นมีค่าเท่าไหร่ซึ่งค่าที่อ่านออกมานั้นจะมีค่าอยู่ในช่วง 0 - 180 
Syntax
          servo.read()
Parameters
          ไม่มี: จะ Return ค่า 0-180
Description
           คือฟังก์ชั่นตรวจสอบว่า Servo ที่เราต้องการใช้กำลังต่ออยู่กับขสัญญาณของ Arduino หรือไม่
Syntax
           servo.attached()
Parameters
           ไม่มี: จะ Return ค่า True ออกมา หาก Servo Motor เชื่อมต่ออยู่กับ Arduino แต่ถ้าหาก Return ออกมาเป็นค่าอื่นถือว่าไม่เชื่อมต่อ
Description
           คือฟังก์ชั่นคืนสถานะของขาที่เรากำหนดให้เป็นขาควบคุม Servo Motor ด้วยคำสั่ง attached() ให้กลับคือสู่การใช่งานปกติ
Syntax
           servo.detach()
Parameters
           ไม่มี

วิธีดู Comports  ภายในเครื่องคอมพิวเตอร์

กล่องข้อความ: คลิกขวาที่ My Computer  แล้วคลิกที่ Manage

วิธีดู Comports  ภายในเครื่องคอมพิวเตอร์

ตัวอย่างการเชื่อมต่อ RC Servo Motor เข้ากับบอร์ด Arduino

ผลการทำงานของโค้ด

myservo.write(0); 
delay(1000);
Servo Motor จะหมุนไปที่ตำแหน่ง 0 องศา และ หยุดเป็นเวลา 1 วินาที 

myservo.write(90); 
delay(1000);
Servo Motor จะหมุนไปที่ตำแหน่ง 90 องศา และ หยุดเป็นเวลา 1 วินาที

myservo.write(90); 
delay(1000);
Servo Motor จะหมุนไปที่ตำแหน่ง 180 องศา และ หยุดเป็นเวลา 1 วินาที
จากนั้นจะหมุนกลับไปที่ตำแหน่ง 0 องศา และวนรอบไปเช่นนี้เรื่อยๆ

วิธีควบคุม RC Servo Motor ด้วย Visual Basic
การออกแบบหน้าต่างโปรแกรม

โค้ดเขียนคำสั่งควบคุม Servo Moter

โค้ดเขียนคำสั่งควบคุม Servo Moter
Dim sl As Integer                          ประกาศตัวแปรจำนวนเต็มตัวเลข sl
Dim r1 As Double                                    กำหนดกำหนดตำแหน่งพอร์ต r1 ที่ใช้ต่อกับเซอร์โวมอเตอร์
Dim r2 As Double                                    กำหนดกำหนดตำแหน่งพอร์ต r2 ที่ใช้ต่อกับเซอร์โวมอเตอร์
Const vbPI = 3.141592654                    สร้างค่าคงที่ vbPI = 3.141592654
Const Deg2Rad = vbPI / 180 'Degrees to Radians                   สร้างค่าคงที่ Deg2Rad = vbPI  / 180
Dim cx As Integer, cy As Integer, r As Single                         ประกาศค่าตัวแปรเต็มตัวเลข cx,cy,r
Dim s As Double                                                  กำหนดตำแหน่งพอร์ต s ที่ใช้ต่อควบคุมเซอร์โวมอเตอร์

 

Private Sub Command1_Click()
MSComm1.Output = "9"                             ให้Mscomm1 เป็นเอาต์พุต 9
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 90     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 90 องศา
End Sub
Private Sub Command10_Click()
MSComm1.Output = "0"                             ให้Mscomm1 เป็นเอาต์พุต 0
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 5       อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 5 องศา
End Sub
Private Sub Command2_Click()
MSComm1.Output = "8"                             ให้Mscomm1 เป็นเอาต์พุต 8
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 85     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 85 องศา
End Sub
Private Sub Command3_Click()
MSComm1.Output = "7"                             ให้Mscomm1 เป็นเอาต์พุต 7
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 75     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 75 องศา
End Sub

Private Sub Command4_Click()
MSComm1.Output = "6"                             ให้Mscomm1 เป็นเอาต์พุต 6
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 65     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 65 องศา
End Sub
Private Sub Command5_Click()
MSComm1.Output = "5"                             ให้Mscomm1 เป็นเอาต์พุต 5
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 55     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 55 องศา
End Sub
Private Sub Command6_Click()
MSComm1.Output = "4"                             ให้Mscomm1 เป็นเอาต์พุต 4
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 45     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 45 องศา
End Sub

Private Sub Command7_Click()
MSComm1.Output = "3"                             ให้Mscomm1 เป็นเอาต์พุต 3
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 35     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 35 องศา
End Sub

Private Sub Command8_Click()
MSComm1.Output = "2"                             ให้Mscomm1 เป็นเอาต์พุต 2
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 25     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 25 องศา
End Sub
Private Sub Command9_Click()
MSComm1.Output = "1"                             ให้Mscomm1 เป็นเอาต์พุต 1
analogmeter 2, 2, 0, 100, 0, 30, 3, vbBlue, 0.1, 15     อ่านเป็นจํานวนตัวเลขโดยตรง 2, 1, 0, 100, 0, 30, 3, แสดง                              คอมโพเนนต์สีน้ำเงินของโค้ดสีที่ระบุ ,0.1  ขึ้นหน้าปัด ที่ 15 องศา
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True                               เปิดพอร์ต
End Sub
Private Sub Timer1_Timer()
Do
DoEvents                                                              ทำอีเว้นท์
rdet = rdet + MSComm1.Input
Loop Until Right(rdet, 1) = Chr(10)                ทำงานแบบวนซ้ำทางขวา

(rdet, 1) = Chr(10)   
Text1.Text = rdet                                         ให้ค่า rdet แสดงใน Text1
rdet = ""

'rea = Trim(Mid(rdet, InStr(rdet, "sp") + 3, 2))
รับข้อมูลผ่านทางคีย์บอร์ดหรือผ่านทางแฟ้มข้อมูล Trim(Mid(rdet, InStr(rdet, "sp") + 3, 2))
End Sub
Private Sub Timer2_Timer()
x = x + 1                                                                                 เวลา x+1
If x = 500 Then                                                                      ถ้า a=500 Then
Timer2.Enabled = False                                                    เปิดเวลาทำงาน
x = 0                                                                                       x=0
End If
a = 0                                                                                       a=0
End Sub
Private Sub Timer3_Timer()
a = a + 1                                                                               เวลา  a + 1
If a = 500 Then                                                                  ถ้า a=500 Then
Timer3.Enabled = False                                                  เปิดเวลาทำงาน
a = 0                                                                                        a=0
End If
x = 0                                                                                       x=0
End Sub

กล่องข้อความ: แหล่งข้อมูลอ้างอิง

http://www.thaieasyelec.com
http://www.arduitronics.com/article/arduino-and-motor-control-part-4-servo-motor
https://www.youtube.com/watch?v=bsoeSHhuEKY

กล่องข้อความ: คลิกที่ Device Manager
กล่องข้อความ: คลิกที่ Ports (COM & LPT)
Free Web Hosting