การใช้ raspberry pi 3 ร่วมกับ servo-motor

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

prakon
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 561
ลงทะเบียนเมื่อ: 02/07/2018 10:45 am

การใช้ raspberry pi 3 ร่วมกับ servo-motor

โพสต์ที่ยังไม่ได้อ่าน โดย prakon »

บทความนี้เเป็นบทความที่จัดทำขึ้นเพื่อแนะนำการใช้บอร์ด Raspberry pi3(ราสเบอรี่ ไพ3) ร่วมกับ servo-motor(เซอร์โวมอเตอร์) ซึ่งเป็นพื้นฐานในการควบคุม servo-motor ด้วยบอร์ด Raspberri pi โดยท่านสามารถหาความรู้เพิ่มเติมของบอร์ดได้จากที่นี่ครับ
pi2modb1gb_-comp_320x181.jpg
pi2modb1gb_-comp_320x181.jpg (17.67 KiB) Viewed 3839 times
servo_240x240.jpg
servo_240x240.jpg (10.62 KiB) Viewed 3865 times

servo-motor คือ มอเตอร์ที่สามารถควบคุมองศาการหมุนได้ซึ่งแตกต่างจากมอเตอร์ทั่วไปที่สามารถควบคุมความเร็วได้ โดย servo-motor ใช้สัญญาณ PWM ในการควบคุม
Phase-Correct-PWM_320x206.jpg
Phase-Correct-PWM_320x206.jpg (14.46 KiB) Viewed 3848 times
สัญญาณ 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
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 80