Gebruik van de SG90 -servomotor met de Raspberry Pi

Using the SG90 Servo Motor with the Raspberry Pi

De SG90 -servomotor is een kleine, lichtgewicht servo die vaak wordt gebruikt in robotica, automatisering en doe -het -zelfprojecten. Het maakt een precieze controle van de hoekpositie mogelijk met behulp van Pulsbreedtemodulatie (PWM). Deze gids laat je zien hoe je een SG90 -servomotor met een Raspberry Pi Python gebruiken.


Wat u nodig hebt

  1. Raspberry Pi (Elk model met GPIO -ondersteuning, bijvoorbeeld PI 3, PI 4)
  2. SG90 -servomotor
  3. Externe stroombron (5V, optioneel voor meerdere servo's)
  4. Breadboard en jumper draden
  5. Python geïnstalleerd Op de Raspberry Pi

Stap 1: De SG90 -servo bedraden naar de Raspberry Pi

De SG90 -servomotor heeft drie pennen:

SG90 -pin Raspberry Pi Pin Functie
VCC (rood) 5V (pin 2) Stroomvoorziening
GND (bruin) GND (pin 6) Grond
Signaal (oranje) Gpio18 (pin 12) PWM -signaalregeling

Opmerking: Gebruik een Externe 5V -voeding Om te voorkomen dat de 5V -pin van de Raspberry Pi wordt overbelast.


Stap 2: Schakel PWM in op de Raspberry Pi

De frambozen pi genereert PWM -signalen om de servo -positie te beheersen.

  1. Installeer de Raspberry Pi GPIO -bibliotheek (indien nog niet al geïnstalleerd):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Open een Python -scripteditor:
    nano servo_control.py
    
  3. Kopieer het volgende python -script naar Controleer de SG90 -servomotor:

Stap 3: Python -code om de servo te besturen

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

Stap 4: Het servo -besturingsscript uitvoeren

  1. Sla het script op en exit:

    • Drukken Ctrl+X, Dan Y, Dan BINNENKOMEN.
  2. Voer het script uit:

    python3 servo_control.py
    
  3. Voer hoeken tussen 0 en 180 in om de servo te verplaatsen.


Stap 5: PWM begrijpen voor servo -besturing

  • PWM -frequentie: De SG90 werkt op 50Hz.
  • Berekening van de dienstcyclus:
    • 0 ° → 2,5% duty cyclus
    • 90 ° → 7,5% duty cyclus
    • 180 ° → 12,5% duty cyclus
  • Formule: duty_cycle = (angle / 18) + 2.5

Stap 6: Toepassingen van SG90 Servo met Raspberry Pi

  1. Robotachtige armen - Controle gewrichten voor beweging.
  2. Geautomatiseerde deuren en sloten - Open/sluiten mechanismen met behulp van een servo.
  3. Pan-tilt camerasystemen - Verplaats camera's voor bewaking of fotografie.
  4. Smart Home Automation - Besturingshendels, sloten en schakelaars op afstand.

Problemen oplossen

  1. Servo niet bewegen?

    • Ervoor zorgen Correcte bedrading (VCC, GND en GPIO18 voor signaal).
    • Gebruik een Externe 5V -stroombron.
  2. Onregelmatige bewegingen?

    • Zorg voor stabiele kracht; gebruik condensatoren (100 µF) indien nodig.
    • Gebruik Hogere precisie PWM -controle, zoals een PCA9685 PWM -module voor meerdere servo's.
  3. Toestemming geweigerd fout?

    • Voer het script uit met sudo:
      sudo python3 servo_control.py
      

Conclusie

De SG90 -servomotor is een geweldige manier om toe te voegen bewegingscontrole om Raspberry PI -projecten te projecten. Door te gebruiken PWM -signalen, u kunt de positie van de servo precies beheersen voor Robotica, automatisering en IoT -applicaties. Experimenteer met verschillende invalshoeken en toepassingen om het volledige potentieel ervan te ontgrendelen! 🚀

Laat een reactie achter

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.