การใช้มอเตอร์เซอร์โว SG90 กับ Raspberry Pi

Using the SG90 Servo Motor with the Raspberry Pi

ที่ SG90 Servo Motor เป็นเซอร์โวขนาดเล็กน้ำหนักเบาที่ใช้กันทั่วไปในหุ่นยนต์ระบบอัตโนมัติและโครงการ DIY ช่วยให้สามารถควบคุมตำแหน่งเชิงมุมได้อย่างแม่นยำโดยใช้ การปรับความกว้างพัลส์ (PWM)- คู่มือนี้จะแสดงวิธีการควบคุมไฟล์ เซอร์โวมอเตอร์ SG90 พร้อม Raspberry Pi ใช้ Python


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน GPIO เช่น PI 3, PI 4)
  2. SG90 Servo Motor
  3. แหล่งพลังงานภายนอก (5V เป็นตัวเลือกสำหรับหลายเซอร์โว)
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. ติดตั้ง 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 เพื่อควบคุมตำแหน่งเซอร์โว

  1. ติดตั้ง ห้องสมุด Raspberry Pi GPIO (ถ้ายังไม่ได้ติดตั้ง):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. เปิดตัวแก้ไขสคริปต์ Python:
    nano servo_control.py
    
  3. คัดลอกสคริปต์ 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: เรียกใช้สคริปต์ควบคุมเซอร์โว

  1. บันทึกสคริปต์และออก:

    • กด ctrl+x, แล้ว y, แล้ว เข้า.
  2. เรียกใช้สคริปต์:

    python3 servo_control.py
    
  3. ป้อนมุมระหว่าง 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

  1. แขนหุ่นยนต์ - ข้อต่อควบคุมสำหรับการเคลื่อนไหว
  2. ประตูและล็อคอัตโนมัติ - กลไกเปิด/ปิดโดยใช้เซอร์โว
  3. ระบบกล้องแบบเอียง - ย้ายกล้องเพื่อเฝ้าระวังหรือถ่ายภาพ
  4. ระบบอัตโนมัติในบ้านอัจฉริยะ - ควบคุมคันโยกล็อคและสวิตช์จากระยะไกล

การแก้ไขปัญหา

  1. เซอร์โวไม่เคลื่อนไหว?

    • ทำให้มั่นใจ แก้ไขสายไฟ (VCC, GND และ GPIO18 สำหรับสัญญาณ)
    • หากใช้หลายเซอร์โวให้ใช้ไฟล์ แหล่งพลังงาน 5V ภายนอก.
  2. การเคลื่อนไหวที่ผิดปกติ?

    • สร้างความมั่นใจในพลังงานที่มั่นคง ใช้ ตัวเก็บประจุ (100µF) หากจำเป็น
    • ใช้ การควบคุม PWM ที่มีความแม่นยำสูงกว่าเช่น โมดูล PCA9685 PWM สำหรับหลายเซอร์โว
  3. การอนุญาตถูกปฏิเสธข้อผิดพลาด?

    • เรียกใช้สคริปต์ด้วย sudo:
      sudo python3 servo_control.py
      

บทสรุป

ที่ SG90 Servo Motor เป็นวิธีที่ดีในการเพิ่ม การควบคุมการเคลื่อนไหว ไปยังโครงการ Raspberry Pi โดยใช้ สัญญาณ PWMคุณสามารถควบคุมตำแหน่งของเซอร์โวได้อย่างแม่นยำ แอปพลิเคชันหุ่นยนต์ระบบอัตโนมัติและ IoT- ทดลองกับมุมและแอพพลิเคชั่นที่แตกต่างกันเพื่อปลดล็อกศักยภาพอย่างเต็มที่! 🚀

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.