การใช้ raspberry pi 3 ร่วมกับ servo-motor
โพสต์แล้ว: 03/07/2018 3:16 pm
บทความนี้เเป็นบทความที่จัดทำขึ้นเพื่อแนะนำการใช้บอร์ด Raspberry pi3(ราสเบอรี่ ไพ3) ร่วมกับ servo-motor(เซอร์โวมอเตอร์) ซึ่งเป็นพื้นฐานในการควบคุม servo-motor ด้วยบอร์ด Raspberri pi โดยท่านสามารถหาความรู้เพิ่มเติมของบอร์ดได้จากที่นี่ครับ
servo-motor คือ มอเตอร์ที่สามารถควบคุมองศาการหมุนได้ซึ่งแตกต่างจากมอเตอร์ทั่วไปที่สามารถควบคุมความเร็วได้ โดย servo-motor ใช้สัญญาณ PWM ในการควบคุม สัญญาณ PWM(พี่ดับเบิ้ลยูเอ็ม) ย่อมาจาก Pulse Width Modulation คือ คือการนําสัญญาณสามเหลี่ยม และสัญญาณที่ต้องการปรับความกว้างของพัลซ์มาเปรียบเทียบกัน ตัวย่างเช่น ถ้านําสัญญาณสามเหลี่ยมมาเปรียบเทียบกับสัญญานไฟฟ้ากระแสตรง จะได้ความกว่างของพัลซ์คงที่ และความกว้างของพัลซ์นั้นจะขึ้นอยู่กับแอมพลิจูดของสัญญาณไฟฟ้ากระแสตรง
servo-motor นั้นจะอาศัยใช้สัญญาณ PWM(พี่ดับเบิ้ลยูเอ็ม)ในการควบคุมเท่านั้น ซึ่งในบอร์ดมีขาสัญญาณ PWM เพียง1 ขา นั่นก็คือขา GPIO18(จี พี ไอ โอ 18)
จากในภาพด้านบน สายสีแดงต่อไฟ +5 โวลต์ สายสีดำต่อกราวด์ และสายสีขาวต่อกับขา GPIO18
และนี่เป็นตัวอย่าโค้ดภาษา ไพธอน สำหรับควบคุม servo motor
อ้างอิงจาก
Thaieasyelec
unzeeen
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