Menggunakan motor servo SG90 dengan raspberry pi

Using the SG90 Servo Motor with the Raspberry Pi

Itu SG90 Servo Motor adalah servo kecil, ringan yang biasa digunakan dalam proyek robotika, otomatisasi, dan DIY. Itu memungkinkan kontrol yang tepat dari posisi sudut menggunakan Modulasi Lebar Denyut (PWM). Panduan ini akan menunjukkan kepada Anda cara mengontrol Motor servo sg90 dengan pi raspberry Menggunakan Python.


Apa yang Anda Butuhkan

  1. Raspberry Pi (Model apa pun dengan dukungan GPIO, mis., Pi 3, pi 4)
  2. SG90 Servo Motor
  3. Sumber Daya Eksternal (5V, opsional untuk beberapa servos)
  4. Papan tempat memotong papan dan kabel jumper
  5. Python terpasang di raspberry pi

Langkah 1: Kabel SG90 Servo ke Raspberry Pi

Itu SG90 Servo Motor memiliki tiga pin:

Pin SG90 Raspberry Pi Pin Fungsi
VCC (merah) 5V (pin 2) Catu daya
GND (Brown) GND (pin 6) Tanah
Sinyal (oranye) Gpio18 (pin 12) Kontrol Sinyal PWM

Catatan: Jika menggunakan beberapa servo, gunakan Catu Daya 5V Eksternal Untuk menghindari kelebihan beban pin 5V Raspberry Pi.


Langkah 2: Aktifkan PWM di Raspberry Pi

Raspberry Pi menghasilkan sinyal PWM untuk mengontrol posisi servo.

  1. Instal Perpustakaan Raspberry Pi Gpio (jika belum diinstal):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Buka editor skrip Python:
    nano servo_control.py
    
  3. Salin skrip Python berikut Kontrol motor servo SG90:

Langkah 3: Kode Python untuk mengontrol servo

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()

Langkah 4: Menjalankan skrip kontrol servo

  1. Simpan skrip dan keluar:

    • Tekan Ctrl+x, Kemudian Y, Kemudian MEMASUKI.
  2. Jalankan skrip:

    python3 servo_control.py
    
  3. Masukkan sudut antara 0 dan 180 untuk memindahkan servo.


Langkah 5: Memahami PWM untuk Kontrol Servo

  • Frekuensi PWM: SG90 beroperasi di 50Hz.
  • Perhitungan Siklus Tugas:
    • 0 ° → 2,5% siklus tugas
    • 90 ° → 7,5% siklus tugas
    • 180 ° → 12,5% siklus tugas
  • Rumus: duty_cycle = (angle / 18) + 2.5

Langkah 6: Aplikasi SG90 Servo dengan Raspberry Pi

  1. Lengan robot - Kontrol sendi untuk pergerakan.
  2. Pintu & Kunci Otomatis - Mekanisme terbuka/tutup menggunakan servo.
  3. Sistem Kamera Pan-Tilt - Pindahkan kamera untuk pengawasan atau fotografi.
  4. Otomatisasi Rumah Cerdas - Kontrol tuas, kunci, dan sakelar dari jarak jauh.

Pemecahan masalah

  1. Servo tidak bergerak?

    • Memastikan kabel yang benar (VCC, GND, dan GPIO18 untuk sinyal).
    • Jika menggunakan beberapa servo, gunakan Sumber Daya 5V Eksternal.
  2. Gerakan yang tidak menentu?

    • Memastikan kekuatan yang stabil; menggunakan kapasitor (100μF) jika diperlukan.
    • Menggunakan Kontrol PWM presisi yang lebih tinggi, seperti a Modul PWM PCA9685 untuk beberapa servos.
  3. Izin ditolak kesalahan?

    • Jalankan skrip dengan sudo:
      sudo python3 servo_control.py
      

Kesimpulan

Itu SG90 Servo Motor adalah cara yang bagus untuk ditambahkan kontrol gerak untuk proyek Raspberry Pi. Dengan menggunakan Sinyal PWM, Anda dapat mengontrol posisi servo secara tepat Aplikasi Robotika, Otomasi, dan IoT. Bereksperimenlah dengan sudut dan aplikasi yang berbeda untuk membuka potensi penuhnya! 🚀

Tinggalkan komentar

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.