servo-motor คือ มอเตอร์ที่สามารถควบคุมองศาการหมุนได้ซึ่งแตกต่างจากมอเตอร์ทั่วไปที่สามารถควบคุมความเร็วได้ โดย servo-motor ใช้สัญญาณ PWM ในการควบคุม สัญญาณ PWM(พี่ดับเบิ้ลยูเอ็ม) ย่อมาจาก Pulse Width Modulation คือ คือการนําสัญญาณสามเหลี่ยม และสัญญาณที่ต้องการปรับความกว้างของพัลซ์มาเปรียบเทียบกัน ตัวย่างเช่น ถ้านําสัญญาณสามเหลี่ยมมาเปรียบเทียบกับสัญญานไฟฟ้ากระแสตรง จะได้ความกว่างของพัลซ์คงที่ และความกว้างของพัลซ์นั้นจะขึ้นอยู่กับแอมพลิจูดของสัญญาณไฟฟ้ากระแสตรง
servo-motor นั้นจะอาศัยใช้สัญญาณ PWM(พี่ดับเบิ้ลยูเอ็ม)ในการควบคุมเท่านั้น ซึ่งในบอร์ดมีขาสัญญาณ PWM เพียง1 ขา นั่นก็คือขา GPIO18(จี พี ไอ โอ 18)
จากในภาพด้านบน สายสีแดงต่อไฟ +5 โวลต์ สายสีดำต่อกราวด์ และสายสีขาวต่อกับขา GPIO18
และนี่เป็นตัวอย่าโค้ดภาษา ไพธอน สำหรับควบคุม servo motor
โค้ด: เลือกทั้งหมด
import RPi.GPIO as GPIO #อิมพอร์ตไลบารี่ในการควบคุมขาอุปกรณ์
import time #อิมพอร์ตไลบารี่ในการหน่วงเวลา
GPIO.setmode(GPIO.BCM) #ตั้งค่าลำดับขาโดยใช้มาตรฐานBCM
GPIO.setup(18,GPIO.OUT) #กำหนดขา GPIO18 เป็นเอาต์พุต
pwm = GPIO.PWM(18,50) #กำหนดขา GPIO18 เป็นเอาต์พุต PWM
pwm.start(0) #มอเตอร์หมุนไปองศาที่0
while 1: #ลูปไม่สิ้นสุด
for a in range (1,13): #ให้ a มีค่าตั้งแต่ 1-3
pwm.ChangeDutyCycle(a) #มอเตอร์หมุนไปทิศทางต่างๆตามค่า a ที่เปลี่ยนไป
print(a) #แสดงค่า a ที่เปลี่ยนไปในแต่ละรอบ
time.sleep(1) #หน่วงเวลาเพื่อให้servo motor ทำงานไปพร้อมๆกับโปรแกรม
อ้างอิงจาก
Thaieasyelec
unzeeen