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.6 Motor
Einführung
In diesem Projekt lernen wir, wie man mit dem Fusion HAT+ einen Gleichstrommotor (DC-Motor) steuert, sodass er sich im Uhrzeigersinn und gegen den Uhrzeigersinn drehen kann.
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 erforderlich sind, um den Motor zu steuern.
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.6_Motor.py
Nach dem Ausführen des Skripts startet und stoppt der Motor, der mit Port M0 verbunden ist, wiederholt in einer Schleife. Zunächst stoppt er für 0,5 Sekunden, läuft dann mit −50 % Leistung für 1 Sekunde, stoppt erneut für 0,5 Sekunden und läuft schließlich mit 75 % Leistung für 1 Sekunde. Diese Sequenz wiederholt sich kontinuierlich. Wenn das Programm beendet wird, wird der Motor sicher gestoppt.
Code
Der folgende Python-Code steuert die Drehrichtung und die Laufzeit des Motors:
#!/usr/bin/env python3
from time import sleep
from fusion_hat.motor import Motor
# Motor on port M0, reverse direction if needed
motor = Motor("M0", is_reversed=True)
try:
while True:
motor.power(0)
sleep(0.5)
motor.power(-50)
sleep(1)
motor.power(0)
sleep(0.5)
motor.power(75)
sleep(1)
except KeyboardInterrupt:
# Ctrl + C to stop
print("\nStopped by user.")
finally:
# Always stop the motor safely
motor.stop()
sleep(0.1)
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 time import sleep from fusion_hat.motor import Motor
Initialisierung des Motors
Das
Motor-Objekt wird mit den M0-Pins erstellt.motor = Motor('M0', is_reversed=True)
Motorsteuerung
Die Motorleistung wird nacheinander auf 0, -50 und 75 gesetzt. Die Funktion
sleeppausiert das Programm jeweils für eine bestimmte Zeit.try: # Loop forever while True: motor.power(0) # Stop the motor sleep(0.5) # Wait 0.5 seconds motor.power(-50) # Run the motor at -50% power sleep(1) # Run for 1 second motor.power(0) # Stop again sleep(0.5) # Wait 0.5 seconds motor.power(75) # Run the motor at 75% power sleep(1) # Run for 1 second
Fehlerbehebung
Motor bewegt sich nicht
Ursache: Falsche Verdrahtung oder falsche GPIO-Pin-Konfiguration.
Lösung: Stellen Sie sicher, dass der Motor mit Strom versorgt wird und der Enable-Pin korrekt angeschlossen ist.
Nur eine Drehrichtung funktioniert
Ursache: Fehlerhafte Verbindung zum Vorwärts- oder Rückwärts-Pin.
Lösung: Überprüfen Sie, ob die Pins sicher mit dem Fusion HAT+ verbunden sind.
Motor dreht sich kontinuierlich ohne anzuhalten
Ursache: Die Funktion
stop()wird möglicherweise nicht korrekt ausgeführt.Lösung: Stellen Sie sicher, dass die Methode
motor.stop()aufgerufen wird.
Erweiterungsideen
Benutzergesteuerte Steuerung
Ermöglichen Sie dem Benutzer, den Motor in Echtzeit über Tastatureingaben zu steuern:
while True: num = int(input("The speed percentage (-100~100): ")) if num >= -100 and num <= 100: motor.speed(num) else: print("Invalid action!")
Zeitgesteuerte Motorsteuerung
Fügen Sie eine Funktion hinzu, mit der der Motor für eine vom Benutzer festgelegte Dauer läuft:
duration = int(input("Enter duration (seconds): ")) motor.speed(50) sleep(duration) motor.stop()
Fazit
Dieses Projekt zeigt, wie ein Gleichstrommotor mit dem Fusion HAT+ gesteuert werden kann. Das Verständnis der Motorsteuerung ist eine wichtige Grundlage für den Bau von Robotikprojekten und anderen bewegungsbasierten elektronischen Anwendungen.