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 |
|---|---|
- |
|
Raspberry Pi |
- |
Schaltplan
Das folgende Schaltbild zeigt die Verbindungen, die zum Steuern des Servomotors erforderlich sind.
Verdrahtungsdiagramm
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:
Der Servo bewegt sich von −90 Grad bis 90 Grad in 10-Grad-Schritten.
Zwischen jeder Bewegung pausiert er für 0,1 Sekunden.
Anschließend kehrt er die Richtung um und bewegt sich von 90 Grad zurück zu −90 Grad, ebenfalls in 10-Grad-Schritten.
Dieser Vorgang wiederholt sich unbegrenzt.
Den Code verstehen
Bibliotheken importieren
Die Bibliothek
fusion_hatvereinfacht die Interaktion mit den GPIO-Pins, während die BibliothektimeFunktionen 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
Initialisierung des Servos
Das
Servo-Objekt wird mit PWM 0 initialisiert.servo = Servo(0)
Servo-Bewegung
Der Servo wird in einer Schleife auf verschiedene Winkel bewegt. Die Methode
anglesetzt die Position des Servos, undsleeppausiert 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
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.
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
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)
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.