Korzystanie z silnika serwomechanizmu SG90 z Raspberry Pi

Using the SG90 Servo Motor with the Raspberry Pi

Silnik SG90 Servo jest małym, lekkim serwo powszechnie stosowanym w projektach robotyki, automatyzacji i majsterkowania. Umożliwia precyzyjną kontrolę pozycji kątowej za pomocą Modulacja szerokości impulsu (PWM). Ten przewodnik pokaże, jak kontrolować Silnik SG90 z Raspberry Pi Za pomocą Pythona.


Czego będziesz potrzebować

  1. Raspberry Pi (Każdy model z obsługą GPIO, np. PI 3, PI 4)
  2. Silnik SG90 Servo
  3. Zewnętrzne źródło zasilania (5 V, opcjonalnie dla wielu serwomotów)
  4. Druty chleba i skoczków
  5. Zainstalowany Python na Raspberry Pi

Krok 1: Okablowanie serwomechanizmu SG90 do Raspberry Pi

. Serwo SG90 ma trzy szpilki:

SG90 PIN Pin Raspberry Pi Funkcjonować
VCC (czerwony) 5v (pin 2) Zasilacz
GND (Brown) GND (pin 6) Grunt
Sygnał (pomarańczowy) GPIO18 (PIN 12) Kontrola sygnału PWM

Notatka: Jeśli używasz wielu serwotesów, użyj Zewnętrzny zasilacz 5V Aby uniknąć przeciążenia pinem Raspberry Pi.


Krok 2: Włącz PWM na Raspberry Pi

Raspberry Pi Generuje sygnały PWM Aby kontrolować pozycję serwomechanizmu.

  1. Zainstaluj Biblioteka Raspberry Pi GPIO (jeśli jeszcze nie zainstalowane):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Otwórz redaktor skryptów Python:
    nano servo_control.py
    
  3. Skopiuj następujący skrypt Pythona do Kontroluj silnik serwo SG90:

Krok 3: Kod Pythona do kontrolowania serwomechanizmu

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

Krok 4: Uruchamianie skryptu sterowania serwo

  1. Zapisz skrypt i wyjdź:

    • Naciskać Ctrl+x, Następnie Y, Następnie WCHODZIĆ.
  2. Uruchom skrypt:

    python3 servo_control.py
    
  3. Wprowadź kąty od 0 do 180 poruszyć serwo.


Krok 5: Zrozumienie PWM dla kontroli serwomechanizmu

  • Częstotliwość PWM: SG90 działa na 50 Hz.
  • Obliczanie cyklu pracy:
    • 0 ° → 2,5% cykl pracy
    • 90 ° → 7,5% cykl pracy
    • 180 ° → 12,5% cykl pracy
  • Formuła: duty_cycle = (angle / 18) + 2.5

Krok 6: Zastosowania serwomechanizmu SG90 z Raspberry Pi

  1. Robotyczne ramiona - Kontrola połączeń ruchu.
  2. Zautomatyzowane drzwi i zamki - Mechanizmy otwarte/zamknięte za pomocą serwomechanizmu.
  3. Systemy kamer na patelni - Przenieś kamery do nadzoru lub fotografii.
  4. Automatyzacja inteligentnej domu - Zdalnie sterować dźwigni, zamków i przełączników.

Rozwiązywanie problemów

  1. Servo nie porusza się?

    • Zapewnić Prawidłowe okablowanie (VCC, GND i GPIO18 dla sygnału).
    • Jeśli używasz wielu serwotesów, użyj Zewnętrzne źródło zasilania 5V.
  2. Nieregularne ruchy?

    • Zapewnić stabilną moc; używać kondensatory (100 µF) W razie potrzeby.
    • Używać Kontrola PWM o wyższej precyzji, takie jak Moduł PCA9685 PWM dla wielu serwomosów.
  3. Uprawnienie odrzucone błąd?

    • Uruchom skrypt z sudo:
      sudo python3 servo_control.py
      

Wniosek

. Silnik SG90 Servo to świetny sposób na dodanie kontrola ruchu do Raspberry Pi Projects. Za pomocą Sygnały PWM, możesz dokładnie kontrolować pozycję serwomechanizmu aplikacje robotyczne, automatyzacja i IoT. Eksperymentuj z różnymi kątami i aplikacjami, aby odblokować pełny potencjał! 🚀

Zostaw komentarz

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.