Raspberry Pi - Servo Motor

Diese Anleitung zeigt Ihnen, wie Sie Raspberry Pi zur Steuerung eines Servo Motors verwenden. Im Detail lernen wir:

Hardware Erforderlich

1×Raspberry Pi 5
1×Servo-Motor
1×Jumper Kabel
1×(Empfohlen) Schraubklemmenblock-Shield für Raspberry Pi
1×(Empfohlen) Raspberry Pi Prototyping-Grundplatte & Breadboard-Kit
1×(Empfohlen) HDMI-Touchscreen-Monitor für Raspberry Pi

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Kaufhinweis: Falls Sie mehrere Servomotoren verwenden möchten, empfehlen wir die Verwendung des PCA9685 16 Channel PWM Servo Driver Module, um MCU-Pins zu sparen und die Verdrahtung zu vereinfachen.

Über den Servo Motor

Ein Servo Motor ist ein Bauteil, das seine Welle in einem bestimmten Bewegungsbereich drehen kann, typischerweise zwischen 0 und 180 Grad. Er wird häufig verwendet, um die Winkelposition eines Objekts zu steuern.

Der Servo Motor Pinout

Der Servo Motor hat drei Pins:

  • VCC Pin (normalerweise rot), der an VCC (5V) angeschlossen werden muss
  • GND Pin (typischerweise schwarz oder braun), der an GND (0V) angeschlossen werden muss
  • Signal Pin (normalerweise gelb oder orange), der das PWM-Steuersignal von einem Raspberry Pi Pin empfängt.
servo motor pinout

Raspberry Pi - Servo Motor

Einige der Pins an einem Raspberry Pi können programmiert werden, um ein PWM-Signal zu erzeugen. Wir können einen Servo Motor steuern, indem wir seinen Signal Pin an einen der Raspberry Pi Pins anschließen und ihn programmieren, um ein PWM auf diesem Pin zu erzeugen.

Dank der Raspberry Pi Servo Bibliothek wird die Steuerung eines Servo Motors einfach gemacht. Wir müssen nicht verstehen, wie der Servo Motor funktioniert oder wie man ein PWM-Signal erzeugt. Alles was wir tun müssen, ist zu lernen, wie man die Bibliothek verwendet.

Schaltdiagramm

Raspberry Pi Servo Motor wiring diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Um die Dinge einfach zu halten, wird das obige Schaltdiagramm zum Testen und Lernen verwendet und ist für einen Servo Motor mit geringem Drehmoment geeignet. Wir empfehlen dringend, eine externe Stromversorgung für den Servo Motor zu verwenden. Das untenstehende Schaltdiagramm zeigt, wie man den Servo Motor an eine externe Stromquelle anschließt.

Raspberry Pi servo motor external power supply wiring diagram

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

Raspberry Pi Schraubklemmenblock-Shield

Raspberry Pi Code

Schnelle Schritte

  • Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi-kompatibles Betriebssystem auf Ihrem Pi installiert haben.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
  • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie Bibliotheken installieren müssen.
  • Falls dies das erste Mal ist, dass Sie Raspberry Pi verwenden, schauen Sie sich an, wie man den Raspberry Pi einrichtet
  • Verbinden Sie Ihren PC über SSH mit dem Raspberry Pi, indem Sie den integrierten SSH-Client unter Linux und macOS oder PuTTY unter Windows verwenden. Siehe wie Sie Ihren PC über SSH mit Raspberry Pi verbinden.
  • Stellen Sie sicher, dass Sie die RPi.GPIO Bibliothek installiert haben. Falls nicht, installieren Sie sie mit folgendem Befehl:
sudo apt-get update sudo apt-get install python3-rpi.gpio
  • Erstellen Sie eine Python-Skriptdatei servo_motor.py und fügen Sie folgenden Code hinzu:
# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-servo-motor import RPi.GPIO as GPIO import time # Set the GPIO mode (BCM or BOARD) GPIO.setmode(GPIO.BCM) # Define the GPIO pin connected to the servo motor SERVO_PIN = 18 # Set the servo pin as an output pin GPIO.setup(SERVO_PIN, GPIO.OUT) # Set up PWM pwm_frequency = 50 # Set PWM frequency to 50Hz (standard for most servos) pwm = GPIO.PWM(SERVO_PIN, pwm_frequency) pwm.start(0) def set_servo_angle(angle): duty_cycle = (angle / 18) + 2.5 pwm.ChangeDutyCycle(duty_cycle) time.sleep(0.3) # Give the servo time to reach the desired angle try: while True: # Rotate the servo from 0 to 180 degrees for angle in range(0, 181, 10): set_servo_angle(angle) # Rotate the servo back from 180 to 0 degrees for angle in range(180, -1, -10): set_servo_angle(angle) except KeyboardInterrupt: # If the user presses Ctrl+C, clean up the GPIO configuration pwm.stop() GPIO.cleanup()
  • Speichern Sie die Datei und führen Sie das Python-Skript aus, indem Sie folgenden Befehl im Terminal ausführen:
python3 servo_motor.py

Das Skript läuft in einer Endlosschleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

  • Überprüfen Sie das Ergebnis: Der Servo Motor rotiert mit langsamer Geschwindigkeit sowohl im Uhrzeigersinn als auch gegen den Uhrzeigersinn, bis zu 180°.

Code-Erklärung

Schauen Sie sich die zeilenweise Erklärung in den Kommentaren des Quellcodes an!

Wie man die Geschwindigkeit des Servo Motors steuert

# Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-servo-motor import RPi.GPIO as GPIO import time # Set the GPIO mode (BCM or BOARD) GPIO.setmode(GPIO.BCM) # Define the GPIO pin connected to the servo motor SERVO_PIN = 18 # Set the servo pin as an output pin GPIO.setup(SERVO_PIN, GPIO.OUT) # Set up PWM pwm_frequency = 50 # Set PWM frequency to 50Hz (standard for most servos) pwm = GPIO.PWM(SERVO_PIN, pwm_frequency) pwm.start(0) MOVING_TIME = 3000 # moving time is 3 seconds angle_start = 30 # 30° angle_stop= 90 # 90° move_start_ms = int(round(time.time() * 1000)) # start moving in milliseconds try: while True: # Get the elapsed time since the movement started progress = int(round(time.time() * 1000)) - move_start_ms if progress <= MOVING_TIME: # Calculate the current angle based on the progress angle = angle_start + (angle_stop- angle_start) * progress / MOVING_TIME pwm.ChangeDutyCycle(2.5 + (angle / 18)) # Convert angle to duty cycle time.sleep(0.05) # Adjust this delay to control the speed/smoothness of movement except KeyboardInterrupt: # If the user presses Ctrl+C, clean up the GPIO configuration pwm.stop() GPIO.cleanup()

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!