Bemerkung

Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Sneak Peeks.

  • Sonderrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Bereit, mit uns zu entdecken und zu gestalten? Klicken Sie auf [here] und treten Sie noch heute bei!

1.7 Servo

Einführung

In diesem Projekt lernen wir, wie man einen Servomotor mit einem Raspberry Pi steuert. Servomotoren werden häufig in der Robotik und Automatisierung eingesetzt, um Winkelbewegungen präzise zu steuern.


Benötigte Komponenten

Um dieses Projekt durchzuführen, benötigen Sie die folgenden Komponenten:

KOMPONENTE

KAUFLINK

Servo

BUY

Fusion HAT+

-

Raspberry Pi

-


Schaltplan

Das folgende Schaltbild zeigt die Verbindungen, die zum Steuern des Servomotors erforderlich sind.

../_images/1.3.2_sch.png

Verdrahtungsdiagramm

../_images/1.3.2_bb.png

Beispiel ausführen

Der gesamte Beispielcode, der in diesem Tutorial verwendet wird, befindet sich im Verzeichnis ai-lab-kit. Folgen Sie diesen Schritten, um das Beispiel auszuführen:

cd ~/ai-lab-kit/python/
sudo python3 1.7_Servo.py

Nach dem Ausführen des Skripts bewegt sich der an PWM 0 angeschlossene Servo gleichmäßig von −90° bis 90° in 10-Grad-Schritten und pausiert kurz bei jeder Position. Anschließend bewegt er sich auf die gleiche Weise wieder von 90° zurück zu −90°. Diese Hin- und Herbewegung wiederholt sich kontinuierlich.


Code

Der folgende Python-Code zeigt, wie der Servomotor gesteuert wird, indem er zwischen verschiedenen Winkeln bewegt wird:

#!/usr/bin/env python3
from fusion_hat.servo import Servo   # Import Servo class
from time import sleep               # Import sleep for delays

# Initialize servo on channel 0
servo = Servo(0)

try:
   while True:
      # Sweep from -90° to +90° in steps of 10°
      for angle in range(-90, 91, 10):
            servo.angle(angle)
            sleep(0.1)   # Smooth movement delay

      # Sweep back from +90° to -90° in steps of 10°
      for angle in range(90, -91, -10):
            servo.angle(angle)
            sleep(0.1)

except KeyboardInterrupt:
   # Stop the program safely when Ctrl+C is pressed
   servo.angle(0)        # Return servo to center position
   sleep(0.1)

Dieses Python-Skript steuert einen Servomotor, der mit PWM 0 verbunden ist. Beim Ausführen passiert Folgendes:

  1. Der Servo bewegt sich von −90 Grad bis 90 Grad in 10-Grad-Schritten.

  2. Zwischen jeder Bewegung pausiert er für 0,1 Sekunden.

  3. Anschließend kehrt er die Richtung um und bewegt sich von 90 Grad zurück zu −90 Grad, ebenfalls in 10-Grad-Schritten.

  4. Dieser Vorgang wiederholt sich unbegrenzt.


Den Code verstehen

  1. Bibliotheken importieren

    Die Bibliothek fusion_hat vereinfacht die Interaktion mit den GPIO-Pins, während die Bibliothek time Funktionen für Zeitverzögerungen bereitstellt.

    from fusion_hat.servo import Servo   # Import the Servo class for controlling servos
    from time import sleep               # Import sleep for timing delays
    
  2. Initialisierung des Servos

    Das Servo-Objekt wird mit PWM 0 initialisiert.

    servo = Servo(0)
    
  3. Servo-Bewegung

    Der Servo wird in einer Schleife auf verschiedene Winkel bewegt. Die Methode angle setzt die Position des Servos, und sleep pausiert die Schleife für eine bestimmte Zeit.

    while True:
       # Sweep from -90° to +90° in steps of 10°
       for angle in range(-90, 91, 10):
             servo.angle(angle)
             sleep(0.1)   # Smooth movement delay
    
       # Sweep back from +90° to -90° in steps of 10°
       for angle in range(90, -91, -10):
             servo.angle(angle)
             sleep(0.1)
    

Fehlerbehebung

  1. Servo bewegt sich nicht

    • Ursache: Falsche GPIO-Pin-Verbindung oder Probleme mit der Stromversorgung.

    • Lösung: Stellen Sie sicher, dass der Servo mit PWM 0 verbunden ist und überprüfen Sie die Stromversorgung.

  2. Servo-Bewegung ist unregelmäßig oder reagiert nicht

    • Ursache: Unzureichende Stromversorgung des Servos.

    • Lösung: Verwenden Sie eine externe Stromquelle für den Servo, wenn das Fusion HAT+ nicht genügend Leistung liefert.


Erweiterungsideen

  1. Benutzergesteuerter Servo

    Ermöglichen Sie es dem Benutzer, die Servo-Position interaktiv über die Tastatur zu steuern:

    while True:
       position = float(input("Enter position (-90 to 90): "))
       servo.angle(position)
    
  2. Aufzeichnen der Servo-Position

    Zeichnen Sie die Servo-Position über die Zeit auf und stellen Sie die Bewegung grafisch dar:

    positions = []
    for i in range(-90, 91, 10):
       servo.angle(i)
       sleep(0.1)
       positions.append(servo.angle())
    plt.plot(positions)
    plt.show()
    

Fazit

Dieses Projekt zeigt, wie ein Servomotor gesteuert werden kann. Das Verständnis der Servosteuerung eröffnet viele Möglichkeiten für den Bau von Robotern, mechanischen Armen und anderen bewegungsbasierten Projekten.