ที่ SG90 Servo Motor เป็นเซอร์โวขนาดเล็กน้ำหนักเบาที่ใช้กันทั่วไปในหุ่นยนต์ระบบอัตโนมัติและโครงการ DIY ช่วยให้สามารถควบคุมตำแหน่งเชิงมุมได้อย่างแม่นยำโดยใช้ การปรับความกว้างพัลส์ (PWM)- คู่มือนี้จะแสดงวิธีการควบคุมไฟล์ เซอร์โวมอเตอร์ SG90 พร้อม Raspberry Pi ใช้ Python
สิ่งที่คุณต้องการ
- Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
- SG90 Servo Motor
- แหล่งพลังงานภายนอก (5V เป็นตัวเลือกสำหรับหลายเซอร์โว)
- เครื่องหั่นขนมปังและสายจัมเปอร์
- ติดตั้ง Python บนราสเบอร์รี่ pi
ขั้นตอนที่ 1: การเดินสายเซอร์โว SG90 ไปยังราสเบอร์รี่ pi
ที่ SSG90 Servo Motor มีสามพิน:
sg90 pin | Raspberry Pi Pin | การทำงาน |
---|---|---|
VCC (สีแดง) | 5V (พิน 2) | แหล่งจ่ายไฟ |
GND (สีน้ำตาล) | GND (พิน 6) | พื้น |
สัญญาณ (สีส้ม) | GPIO18 (พิน 12) | การควบคุมสัญญาณ PWM |
บันทึก: หากใช้หลายเซอร์โวให้ใช้ไฟล์ แหล่งจ่ายไฟ 5V ภายนอก เพื่อหลีกเลี่ยงการใช้พิน 5V ของ Raspberry Pi มากเกินไป
ขั้นตอนที่ 2: เปิดใช้งาน PWM บน Raspberry Pi
ราสเบอร์รี่ pi สร้างสัญญาณ PWM เพื่อควบคุมตำแหน่งเซอร์โว
- ติดตั้ง ห้องสมุด Raspberry Pi GPIO (ถ้ายังไม่ได้ติดตั้ง):
sudo apt update && sudo apt install python3-rpi.gpio
- เปิดตัวแก้ไขสคริปต์ Python:
nano servo_control.py
- คัดลอกสคริปต์ Python ต่อไปนี้ไปที่ ควบคุมมอเตอร์เซอร์โว SG90:
ขั้นตอนที่ 3: รหัส Python เพื่อควบคุมเซอร์โว
import RPi.GPIO as GPIO
import time
# Set up the GPIO pin for PWM
SERVO_PIN = 18 # Use GPIO18 (Pin 12)
GPIO.setmode(GPIO.BCM)
GPIO.setup(SERVO_PIN, GPIO.OUT)
# Start PWM with 50Hz frequency
pwm = GPIO.PWM(SERVO_PIN, 50)
pwm.start(0)
def set_angle(angle):
duty_cycle = (angle / 18) + 2.5 # Convert angle to duty cycle
GPIO.output(SERVO_PIN, True)
pwm.ChangeDutyCycle(duty_cycle)
time.sleep(0.5) # Wait for servo to move
GPIO.output(SERVO_PIN, False)
pwm.ChangeDutyCycle(0)
try:
while True:
angle = int(input("Enter angle (0-180): "))
if 0 <= angle <= 180:
set_angle(angle)
else:
print("Invalid angle! Enter a value between 0 and 180.")
except KeyboardInterrupt:
print("Exiting...")
pwm.stop()
GPIO.cleanup()
ขั้นตอนที่ 4: เรียกใช้สคริปต์ควบคุมเซอร์โว
-
บันทึกสคริปต์และออก:
- กด ctrl+x, แล้ว y, แล้ว เข้า.
-
เรียกใช้สคริปต์:
python3 servo_control.py
-
ป้อนมุมระหว่าง 0 ถึง 180 เพื่อย้ายเซอร์โว
ขั้นตอนที่ 5: ทำความเข้าใจ PWM สำหรับการควบคุมเซอร์โว
- ความถี่ PWM: SG90 ทำงานที่ 50Hz.
-
การคำนวณวัฏจักรหน้าที่:
- 0 °→วัฏจักรหน้าที่ 2.5%
- 90 °→วัฏจักรหน้าที่ 7.5%
- 180 °→รอบการทำงาน 12.5%
-
สูตร:
duty_cycle = (angle / 18) + 2.5
ขั้นตอนที่ 6: แอพพลิเคชั่นของ SG90 Servo กับ Raspberry Pi
- แขนหุ่นยนต์ - ข้อต่อควบคุมสำหรับการเคลื่อนไหว
- ประตูและล็อคอัตโนมัติ - กลไกเปิด/ปิดโดยใช้เซอร์โว
- ระบบกล้องแบบเอียง - ย้ายกล้องเพื่อเฝ้าระวังหรือถ่ายภาพ
- ระบบอัตโนมัติในบ้านอัจฉริยะ - ควบคุมคันโยกล็อคและสวิตช์จากระยะไกล
การแก้ไขปัญหา
-
เซอร์โวไม่เคลื่อนไหว?
- ทำให้มั่นใจ แก้ไขสายไฟ (VCC, GND และ GPIO18 สำหรับสัญญาณ)
- หากใช้หลายเซอร์โวให้ใช้ไฟล์ แหล่งพลังงาน 5V ภายนอก.
-
การเคลื่อนไหวที่ผิดปกติ?
- สร้างความมั่นใจในพลังงานที่มั่นคง ใช้ ตัวเก็บประจุ (100µF) หากจำเป็น
- ใช้ การควบคุม PWM ที่มีความแม่นยำสูงกว่าเช่น โมดูล PCA9685 PWM สำหรับหลายเซอร์โว
-
การอนุญาตถูกปฏิเสธข้อผิดพลาด?
- เรียกใช้สคริปต์ด้วย
sudo
:sudo python3 servo_control.py
- เรียกใช้สคริปต์ด้วย
บทสรุป
ที่ SG90 Servo Motor เป็นวิธีที่ดีในการเพิ่ม การควบคุมการเคลื่อนไหว ไปยังโครงการ Raspberry Pi โดยใช้ สัญญาณ PWMคุณสามารถควบคุมตำแหน่งของเซอร์โวได้อย่างแม่นยำ แอปพลิเคชันหุ่นยนต์ระบบอัตโนมัติและ IoT- ทดลองกับมุมและแอพพลิเคชั่นที่แตกต่างกันเพื่อปลดล็อกศักยภาพอย่างเต็มที่! 🚀